From a3bcda98b48834cbdcc0404c1a634bac78c01d99 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Wed, 27 Aug 2014 17:49:46 +0200 Subject: fix crashing when choosing to save file aka port from FileSelection to FileChooser (FileSelection no more exists in Gtk3...) --- NEWS | 1 + gurpmi | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index 097786ee..583c9ddb 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ improves installing gnome in a chroot from 14m to 11m - update bash completion - gurpmi: + o fix crashing when choosing to save file o fix segfaulting when managing exceptions o report crashes through drakbug - fix some warnings with perl 5.20 diff --git a/gurpmi b/gurpmi index a7929588..2fae94e2 100755 --- a/gurpmi +++ b/gurpmi @@ -18,7 +18,7 @@ use utf8 'valid'; use Encode '_utf8_on'; use Gtk3; use gurpmi; -use urpm::util 'basename'; +use urpm::util qw(basename member); # For other distros w/o exception support: eval { Glib->enable_exceptions3 }; @@ -123,19 +123,20 @@ Proceed?", all_descriptions(@all_rpms)) proceed(); }); $save_button and $save_button->signal_connect(clicked => sub { - my $file_dialog = Gtk3::FileSelection->new(N("Choose location to save file")); + my $file_dialog = Gtk3::FileChooserDialog->new(N("Choose location to save file"), $mainw, 'select_folder', N("Cancel") => 'cancel', N("Ok") => 'ok'); $file_dialog->set_modal(1); $file_dialog->set_position('center'); my $filename = @$srpms > 0 ? $srpms->[0] : $rpms->[0]; $file_dialog->set_filename($filename); - $file_dialog->hide_fileop_buttons; - $file_dialog->ok_button->signal_connect(clicked => sub { + $file_dialog->show; + my $answer = $file_dialog->run; + if (member($answer, qw(apply ok yes))) { my $location = $file_dialog->get_filename; quit(); $location and exec '/bin/mv', '-f', $filename, $location; - }); - $file_dialog->cancel_button->signal_connect(clicked => \&quit); - $file_dialog->show; + } elsif (member($answer, qw(cancel delete-event))) { + quit(); + } }); $ccel_button->signal_connect(clicked => \&cancel_n_quit); add_button_box($mainbox, grep { defined $_ } $inst_button, $save_button, $ccel_button); -- cgit v1.2.1