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
=== modified file 'src/applet-main.c'
--- src/applet-main.c 2010-06-04 16:07:46 +0000
+++ src/applet-main.c 2010-07-02 19:34:25 +0000
@@ -206,10 +206,21 @@
206}206}
207207
208static void208static void
209sensitive_cb (GObject * obj, GParamSpec * pspec, gpointer user_data)
210{
211 g_return_if_fail(GTK_IS_WIDGET(obj));
212 g_return_if_fail(GTK_IS_WIDGET(user_data));
213
214 gtk_widget_set_sensitive(GTK_WIDGET(user_data), gtk_widget_get_sensitive(GTK_WIDGET(obj)));
215 return;
216}
217
218static void
209entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, GtkWidget * menubar)219entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, GtkWidget * menubar)
210{220{
211 g_debug("Signal: Entry Added");221 g_debug("Signal: Entry Added");
212 gboolean something_visible = FALSE;222 gboolean something_visible = FALSE;
223 gboolean something_sensitive = FALSE;
213224
214 GtkWidget * menuitem = gtk_menu_item_new();225 GtkWidget * menuitem = gtk_menu_item_new();
215 GtkWidget * box = (packdirection == GTK_PACK_DIRECTION_LTR) ?226 GtkWidget * box = (packdirection == GTK_PACK_DIRECTION_LTR) ?
@@ -224,8 +235,14 @@
224 something_visible = TRUE;235 something_visible = TRUE;
225 }236 }
226237
238 if (gtk_widget_get_sensitive(GTK_WIDGET(entry->image))) {
239 something_sensitive = TRUE;
240 }
241
227 g_signal_connect(G_OBJECT(entry->image), "show", G_CALLBACK(something_shown), menuitem);242 g_signal_connect(G_OBJECT(entry->image), "show", G_CALLBACK(something_shown), menuitem);
228 g_signal_connect(G_OBJECT(entry->image), "hide", G_CALLBACK(something_hidden), menuitem);243 g_signal_connect(G_OBJECT(entry->image), "hide", G_CALLBACK(something_hidden), menuitem);
244
245 g_signal_connect(G_OBJECT(entry->image), "notify::sensitive", G_CALLBACK(sensitive_cb), menuitem);
229 }246 }
230 if (entry->label != NULL) {247 if (entry->label != NULL) {
231 switch(packdirection) {248 switch(packdirection) {
@@ -241,12 +258,19 @@
241 break;258 break;
242 } 259 }
243 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(entry->label), FALSE, FALSE, 0);260 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(entry->label), FALSE, FALSE, 0);
261
244 if (gtk_widget_get_visible(GTK_WIDGET(entry->label))) {262 if (gtk_widget_get_visible(GTK_WIDGET(entry->label))) {
245 something_visible = TRUE;263 something_visible = TRUE;
246 }264 }
247265
266 if (gtk_widget_get_sensitive(GTK_WIDGET(entry->label))) {
267 something_sensitive = TRUE;
268 }
269
248 g_signal_connect(G_OBJECT(entry->label), "show", G_CALLBACK(something_shown), menuitem);270 g_signal_connect(G_OBJECT(entry->label), "show", G_CALLBACK(something_shown), menuitem);
249 g_signal_connect(G_OBJECT(entry->label), "hide", G_CALLBACK(something_hidden), menuitem);271 g_signal_connect(G_OBJECT(entry->label), "hide", G_CALLBACK(something_hidden), menuitem);
272
273 g_signal_connect(G_OBJECT(entry->label), "notify::sensitive", G_CALLBACK(sensitive_cb), menuitem);
250 }274 }
251 gtk_container_add(GTK_CONTAINER(menuitem), box);275 gtk_container_add(GTK_CONTAINER(menuitem), box);
252 gtk_widget_show(box);276 gtk_widget_show(box);
@@ -268,6 +292,7 @@
268 if (something_visible) {292 if (something_visible) {
269 gtk_widget_show(menuitem);293 gtk_widget_show(menuitem);
270 }294 }
295 gtk_widget_set_sensitive(menuitem, something_sensitive);
271296
272 g_object_set_data(G_OBJECT(menuitem), MENU_DATA_INDICATOR_ENTRY, entry);297 g_object_set_data(G_OBJECT(menuitem), MENU_DATA_INDICATOR_ENTRY, entry);
273 g_object_set_data(G_OBJECT(menuitem), MENU_DATA_INDICATOR_OBJECT, io);298 g_object_set_data(G_OBJECT(menuitem), MENU_DATA_INDICATOR_OBJECT, io);
@@ -288,10 +313,12 @@
288 if (entry->label != NULL) {313 if (entry->label != NULL) {
289 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(something_shown), widget);314 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(something_shown), widget);
290 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(something_hidden), widget);315 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(something_hidden), widget);
316 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(sensitive_cb), widget);
291 }317 }
292 if (entry->image != NULL) {318 if (entry->image != NULL) {
293 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(something_shown), widget);319 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(something_shown), widget);
294 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(something_hidden), widget);320 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(something_hidden), widget);
321 g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(sensitive_cb), widget);
295 }322 }
296323
297 gtk_widget_destroy(widget);324 gtk_widget_destroy(widget);

Subscribers

People subscribed via source and target branches

to status/vote changes: