[gnome-software] app addon row: Only emit the "selected" signal for user clicks
- From: Kalev Lember <klember src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] app addon row: Only emit the "selected" signal for user clicks
- Date: Thu, 8 Dec 2016 12:40:01 +0000 (UTC)
commit 8a74ff3b24817e35ade8d78fdff36d50229fb5c5
Author: Kalev Lember <klember redhat com>
Date: Thu Dec 8 13:39:33 2016 +0100
app addon row: Only emit the "selected" signal for user clicks
The calling code (the details page) expects to only get the signal for
user actions and can try to inadvertently remove/install addons if we
emit it otherwise.
src/gs-app-addon-row.c | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
---
diff --git a/src/gs-app-addon-row.c b/src/gs-app-addon-row.c
index 9682a97..f8af884 100644
--- a/src/gs-app-addon-row.c
+++ b/src/gs-app-addon-row.c
@@ -46,6 +46,12 @@ enum {
PROP_SELECTED
};
+static void
+checkbox_toggled (GtkWidget *widget, GsAppAddonRow *row)
+{
+ g_object_notify (G_OBJECT (row), "selected");
+}
+
/**
* gs_app_addon_row_get_summary:
*
@@ -110,6 +116,7 @@ gs_app_addon_row_refresh (GsAppAddonRow *row)
}
/* update the checkbox */
+ g_signal_handlers_block_by_func (row->checkbox, checkbox_toggled, row);
switch (gs_app_get_state (row->app)) {
case AS_APP_STATE_QUEUED_FOR_INSTALL:
gtk_widget_set_sensitive (row->checkbox, TRUE);
@@ -138,6 +145,7 @@ gs_app_addon_row_refresh (GsAppAddonRow *row)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (row->checkbox), FALSE);
break;
}
+ g_signal_handlers_unblock_by_func (row->checkbox, checkbox_toggled, row);
}
GsApp *
@@ -245,12 +253,6 @@ gs_app_addon_row_class_init (GsAppAddonRowClass *klass)
}
static void
-checkbox_toggled (GtkWidget *widget, GsAppAddonRow *row)
-{
- g_object_notify (G_OBJECT (row), "selected");
-}
-
-static void
gs_app_addon_row_init (GsAppAddonRow *row)
{
gtk_widget_set_has_window (GTK_WIDGET (row), FALSE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]