summaryrefslogtreecommitdiffstats
path: root/perl-install/ugtk2.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/ugtk2.pm')
-rw-r--r--perl-install/ugtk2.pm15
1 files changed, 10 insertions, 5 deletions
diff --git a/perl-install/ugtk2.pm b/perl-install/ugtk2.pm
index 5d5808465..88756f5b1 100644
--- a/perl-install/ugtk2.pm
+++ b/perl-install/ugtk2.pm
@@ -1088,11 +1088,16 @@ sub _ask_okcancel($@) {
sub _ask_file {
my ($o, $title, $path) = @_;
- my ($modality, $position) = ($o->{rwindow}->get_modal, $o->{rwindow}->get('window-position'));
- my $f = $o->{rwindow} = $o->{window} = Gtk2::FileSelection->new($title);
- $f->set_modal($modality);
- $f->set_position($position);
- $path and $f->set_filename($path);
+ my $f = Gtk2::FileSelection->new($title);
+ if ($o->{rwindow}->isa('Gtk2::Window')) {
+ my ($modality, $position) = ($o->{rwindow}->get_modal, $o->{rwindow}->get('window-position'));
+ $f->set_modal($modality);
+ $f->set_position($position);
+ }
+ my $bg = $o->{window};
+ $o->{rwindow} = $o->{window} = $f;
+ $f->set_filename($path) if $path;
+ $f->signal_connect(destroy => sub { eval { $bg->destroy } });
$f->ok_button->signal_connect(clicked => sub { $o->{retval} = $f->get_filename; Gtk2->main_quit });
$f->cancel_button->signal_connect(clicked => sub { Gtk2->main_quit });
$f->grab_focus;