Merge lp:~ted/indicator-applet/sensitivity-isnt-always-a-good-thing into lp:indicator-applet/0.4

Proposed by Ted Gould
Status: Merged
Merged at revision: 365
Proposed branch: lp:~ted/indicator-applet/sensitivity-isnt-always-a-good-thing
Merge into: lp:indicator-applet/0.4
Diff against target: 81 lines (+27/-0)
1 file modified
src/applet-main.c (+27/-0)
To merge this branch: bzr merge lp:~ted/indicator-applet/sensitivity-isnt-always-a-good-thing
Reviewer Review Type Date Requested Status
Cody Russell (community) Approve
Review via email: mp+29118@code.launchpad.net

Description of the change

Fix sensitivity of menus.

To post a comment you must log in.
Revision history for this message
Cody Russell (bratsche) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/applet-main.c'
2--- src/applet-main.c 2010-06-04 16:07:46 +0000
3+++ src/applet-main.c 2010-07-02 19:34:25 +0000
4@@ -206,10 +206,21 @@
5 }
6
7 static void
8+sensitive_cb (GObject * obj, GParamSpec * pspec, gpointer user_data)
9+{
10+ g_return_if_fail(GTK_IS_WIDGET(obj));
11+ g_return_if_fail(GTK_IS_WIDGET(user_data));
12+
13+ gtk_widget_set_sensitive(GTK_WIDGET(user_data), gtk_widget_get_sensitive(GTK_WIDGET(obj)));
14+ return;
15+}
16+
17+static void
18 entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, GtkWidget * menubar)
19 {
20 g_debug("Signal: Entry Added");
21 gboolean something_visible = FALSE;
22+ gboolean something_sensitive = FALSE;
23
24 GtkWidget * menuitem = gtk_menu_item_new();
25 GtkWidget * box = (packdirection == GTK_PACK_DIRECTION_LTR) ?
26@@ -224,8 +235,14 @@
27 something_visible = TRUE;
28 }
29
30+ if (gtk_widget_get_sensitive(GTK_WIDGET(entry->image))) {
31+ something_sensitive = TRUE;
32+ }
33+
34 g_signal_connect(G_OBJECT(entry->image), "show", G_CALLBACK(something_shown), menuitem);
35 g_signal_connect(G_OBJECT(entry->image), "hide", G_CALLBACK(something_hidden), menuitem);
36+
37+ g_signal_connect(G_OBJECT(entry->image), "notify::sensitive", G_CALLBACK(sensitive_cb), menuitem);
38 }
39 if (entry->label != NULL) {
40 switch(packdirection) {
41@@ -241,12 +258,19 @@
42 break;
43 }
44 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(entry->label), FALSE, FALSE, 0);
45+
46 if (gtk_widget_get_visible(GTK_WIDGET(entry->label))) {
47 something_visible = TRUE;
48 }
49
50+ if (gtk_widget_get_sensitive(GTK_WIDGET(entry->label))) {
51+ something_sensitive = TRUE;
52+ }
53+
54 g_signal_connect(G_OBJECT(entry->label), "show", G_CALLBACK(something_shown), menuitem);
55 g_signal_connect(G_OBJECT(entry->label), "hide", G_CALLBACK(something_hidden), menuitem);
56+
57+ g_signal_connect(G_OBJECT(entry->label), "notify::sensitive", G_CALLBACK(sensitive_cb), menuitem);
58 }
59 gtk_container_add(GTK_CONTAINER(menuitem), box);
60 gtk_widget_show(box);
61@@ -268,6 +292,7 @@
62 if (something_visible) {
63 gtk_widget_show(menuitem);
64 }
65+ gtk_widget_set_sensitive(menuitem, something_sensitive);
66
67 g_object_set_data(G_OBJECT(menuitem), MENU_DATA_INDICATOR_ENTRY, entry);
68 g_object_set_data(G_OBJECT(menuitem), MENU_DATA_INDICATOR_OBJECT, io);
69@@ -288,10 +313,12 @@
70 if (entry->label != NULL) {
71 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(something_shown), widget);
72 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(something_hidden), widget);
73+ g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(sensitive_cb), widget);
74 }
75 if (entry->image != NULL) {
76 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(something_shown), widget);
77 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(something_hidden), widget);
78+ g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(sensitive_cb), widget);
79 }
80
81 gtk_widget_destroy(widget);

Subscribers

People subscribed via source and target branches

to status/vote changes: