aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS4
-rw-r--r--Rpmdrake/edit_urpm_sources.pm6
2 files changed, 8 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index d668e51a..da813afb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+- edit-urpm-sources:
+ o prevent crashing if one click on a media checkbox while another
+ one is being processed (gtk+ was reentering the callback when we
+ were processing refreshing events...) (#46727)
- rpmdrake
o fix searching on just names (#54339)
diff --git a/Rpmdrake/edit_urpm_sources.pm b/Rpmdrake/edit_urpm_sources.pm
index 5fb3d3c0..d02cdeb9 100644
--- a/Rpmdrake/edit_urpm_sources.pm
+++ b/Rpmdrake/edit_urpm_sources.pm
@@ -1055,10 +1055,12 @@ sub mainwindow() {
$list_tv->append_column(Gtk2::TreeViewColumn->new_with_attributes(N("Medium"),
Gtk2::CellRendererText->new,
'text' => $col{mainw}{name}));
-
- $tr->signal_connect(
+ my $id;
+ $id = $tr->signal_connect(
toggled => sub {
my (undef, $path) = @_;
+ $tr->signal_handler_block($id);
+ my $_guard = before_leaving { $tr->signal_handler_unblock($id) };
my $iter = $list->get_iter_from_string($path);
$urpm->{media}[$path]{ignore} = !$urpm->{media}[$path]{ignore} || undef;
$list->set($iter, $col{mainw}{is_enabled}, !$urpm->{media}[$path]{ignore});