diff options
author | Guillaume Cottenceau <gc@mandriva.com> | 2003-02-19 20:16:03 +0000 |
---|---|---|
committer | Guillaume Cottenceau <gc@mandriva.com> | 2003-02-19 20:16:03 +0000 |
commit | 79055c1961a1f2155632a2d19f5135bda8e93f5a (patch) | |
tree | 4a1bc1c25679e99a9772d893c5b166f488c41639 /perl-install/ugtk2.pm | |
parent | 0e5a578902f70b8531bcf888a4411509c45b4d20 (diff) | |
download | drakx-79055c1961a1f2155632a2d19f5135bda8e93f5a.tar drakx-79055c1961a1f2155632a2d19f5135bda8e93f5a.tar.gz drakx-79055c1961a1f2155632a2d19f5135bda8e93f5a.tar.bz2 drakx-79055c1961a1f2155632a2d19f5135bda8e93f5a.tar.xz drakx-79055c1961a1f2155632a2d19f5135bda8e93f5a.zip |
fix some segfaults caused by still calling destroy
or other gtk functions after a destroy has been
already done, triggered by the user clicking on
the WM's "close this application" button (#1651)
Diffstat (limited to 'perl-install/ugtk2.pm')
-rw-r--r-- | perl-install/ugtk2.pm | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/perl-install/ugtk2.pm b/perl-install/ugtk2.pm index 950801ae9..07d6fbfb4 100644 --- a/perl-install/ugtk2.pm +++ b/perl-install/ugtk2.pm @@ -746,7 +746,7 @@ sub new { $o->{rwindow}->set_position('center-always') if $::isStandalone; $o->{rwindow}->set_modal(1) if ($grab || $o->{grab} || $o->{modal}) && !$::isInstall; $o->{rwindow}->set_transient_for($o->{transient}) if $o->{transient}; - + $o->{rwindow}->signal_connect(destroy => sub { $o->{destroyed} = 1 }); $o->{pop_it} ||= $pop_it || $::WizardTable && do { my @l = $::WizardTable->get_children; @@ -840,7 +840,7 @@ sub main { do { Gtk2->main; - } while ($o->{retval} ? $completed && !$completed->() : $canceled && !$canceled->()); + } while (!$o->{destroyed} && ($o->{retval} ? $completed && !$completed->() : $canceled && !$canceled->())); $o->destroy; $o->{retval} } @@ -852,7 +852,6 @@ sub show($) { sub destroy($) { my ($o) = @_; $o->{rwindow}->destroy if !$o->{destroyed}; - $o->{destroyed} = 1; #- the perl DESTROY will call us, so avoid Gtk-CRITICAL if user explicitely called us before gtkset_mousecursor_wait(); flush(); } |