From d5b10a973bd4ec474edf3bfa29df4458d2519e85 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Mon, 18 Aug 2008 11:34:18 +0000 Subject: (new,may_destroy) track windows in order to be able to set the proper transient hint (really fixing focus bug (#42750) which got unfixed after fixing vivication) --- perl-install/NEWS | 2 ++ perl-install/mygtk2.pm | 8 +++++++- perl-install/ugtk2.pm | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/perl-install/NEWS b/perl-install/NEWS index cef919ff0..e092bd311 100644 --- a/perl-install/NEWS +++ b/perl-install/NEWS @@ -1,3 +1,5 @@ +- reakky fix another focus bug (#42750) + Version 11.10.1 - 18 August 2008 - fix another focus bug (#42750) diff --git a/perl-install/mygtk2.pm b/perl-install/mygtk2.pm index 3067df65f..8cb691002 100644 --- a/perl-install/mygtk2.pm +++ b/perl-install/mygtk2.pm @@ -1182,7 +1182,13 @@ sub flush() { sub may_destroy { my ($w) = @_; - $w->destroy if $w; + return if !$w; + @::main_windows = difference2(\@::main_windows, [ $w->{real_window} ]); + if ($::main_window eq $w->{real_window}) { + undef $::main_window; + $::main_window = $::main_windows[-1]; + } + $w->destroy; } sub root_window() { diff --git a/perl-install/ugtk2.pm b/perl-install/ugtk2.pm index ef5c5801d..33d7abc54 100644 --- a/perl-install/ugtk2.pm +++ b/perl-install/ugtk2.pm @@ -728,6 +728,7 @@ sub new { my $icon = find { _find_imgfile($_) } $::isInstall ? 'empty-banner' : $opts{icon}; my $banner_title = $opts{banner_title}; $title = uc($title) if $::isInstall; + $o->{transient} ||= $::main_window if $::main_window; my $window = gtknew( 'MagicWindow', title => $title || '', @@ -740,6 +741,7 @@ sub new { if_(!$::isInstall, icon_no_error => wm_icon()), if_($o->{transient}, transient_for => $o->{transient}), ); + push @::main_windows, $::main_window = $window->{real_window}; $window->set_border_width(10) if !$window->{pop_it} && !$::noborderWhenEmbedded; $o->{rwindow} = $o->{window} = $window; -- cgit v1.2.1