diff options
Diffstat (limited to 'MandrivaUpdate')
-rwxr-xr-x | MandrivaUpdate | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/MandrivaUpdate b/MandrivaUpdate index 21678716..4f5f6e69 100755 --- a/MandrivaUpdate +++ b/MandrivaUpdate @@ -79,6 +79,8 @@ sub refresh_packages_list { if (!$initialized) { $pkgs->{$_}{selected} = 0 foreach @requested; my @selectable = grep { !$pkgs->{$_}{pkg}->flag_skip } @requested; + # adjust boolean to reality of selected state: + toggle($list, @selectable) if @selectable; toggle($list, @selectable) if @selectable; $initialized = 1; } @@ -131,6 +133,17 @@ sub quit() { Gtk2->main_quit; } +sub select_n_refresh { + my ($list, $info, $update_button, $value) = @_; + toggle_all({ + widgets => { + detail_list => $list, + detail_list_model => $list->get_model + }, + }, $value); + refresh_packages_list($list, $info, $update_button); +} + sub run_treeview_dialog { my ($callback_action) = @_; @@ -175,15 +188,11 @@ sub run_treeview_dialog { ), 0, gtksignal_connect( Gtk2::Button->new(but_(N("Select all"))), - clicked => sub { - toggle_all({ - widgets => { - detail_list => $list, - detail_list_model => $list->get_model - }, - }, 1); - refresh_packages_list($list, $info, $update_button); - }, + clicked => sub { select_n_refresh($list, $info, $update_button, 1) }, + ), + 0, gtksignal_connect( + Gtk2::Button->new(but_(N("Unselect all"))), + clicked => sub { select_n_refresh($list, $info, $update_button, 0) }, ), 1, gtknew('Label'), 0, my $action_button = gtksignal_connect( |