summaryrefslogtreecommitdiffstats
path: root/perl-install/interactive_newt.pm
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2002-07-07 16:07:25 +0000
committerPascal Rigaux <pixel@mandriva.com>2002-07-07 16:07:25 +0000
commit56f71590d8582780ca7a44b33c2f5d3975999398 (patch)
tree5288bf5396221a68132e40ba737663096e701842 /perl-install/interactive_newt.pm
parent1294daaae9eeece73029f63e425f1c17ccffe61f (diff)
downloaddrakx-backup-do-not-use-56f71590d8582780ca7a44b33c2f5d3975999398.tar
drakx-backup-do-not-use-56f71590d8582780ca7a44b33c2f5d3975999398.tar.gz
drakx-backup-do-not-use-56f71590d8582780ca7a44b33c2f5d3975999398.tar.bz2
drakx-backup-do-not-use-56f71590d8582780ca7a44b33c2f5d3975999398.tar.xz
drakx-backup-do-not-use-56f71590d8582780ca7a44b33c2f5d3975999398.zip
make the buttons work in all cases
- workaround segfaults - ensure the perl values are set when calling the clicked_may_quit callback
Diffstat (limited to 'perl-install/interactive_newt.pm')
-rw-r--r--perl-install/interactive_newt.pm28
1 files changed, 12 insertions, 16 deletions
diff --git a/perl-install/interactive_newt.pm b/perl-install/interactive_newt.pm
index 431a39930..d930b9f29 100644
--- a/perl-install/interactive_newt.pm
+++ b/perl-install/interactive_newt.pm
@@ -193,26 +193,22 @@ sub ask_fromW {
local $::setstep = 1;
$form->RunForm;
};
- foreach (@widgets) {
- if ($$r == ${$_->{w}}) {
- $destroyed = 1;
- $form->FormDestroy;
- Newt::PopWindow;
- my $v = do {
- local $::setstep = 1;
- $_->{e}{clicked_may_quit}();
- };
- $v or return ask_fromW($o, $common, $l, $l2);
- }
- }
$canceled = $cancel && $$r == $$cancel;
+ if (my ($button) = grep { $$r == ${$_->{w}} } @widgets) {
+ $get_all->();
+ my $v = do {
+ local $::setstep = 1;
+ $button->{e}{clicked_may_quit}();
+ };
+ $form->FormDestroy;
+ Newt::PopWindow;
+ return $v || &ask_fromW;
+ }
} until ($check->($common->{callbacks}{$canceled ? 'canceled' : 'complete'}));
- if (!$destroyed) {
- $form->FormDestroy;
- Newt::PopWindow;
- }
+ $form->FormDestroy;
+ Newt::PopWindow;
!$canceled;
}