ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #01824
[Branch ~indicator-applet-developers/indicator-applet/applet] Rev 365: Fixing sensitivity handling.
Merge authors:
Ted Gould (ted)
Related merge proposals:
https://code.launchpad.net/~ted/indicator-applet/sensitivity-isnt-always-a-good-thing/+merge/29118
proposed by: Ted Gould (ted)
review: Approve - Cody Russell (bratsche)
------------------------------------------------------------
revno: 365 [merge]
committer: Ted Gould <ted@xxxxxxxx>
branch nick: applet
timestamp: Tue 2010-07-06 10:20:44 -0500
message:
Fixing sensitivity handling.
modified:
src/applet-main.c
--
lp:indicator-applet
https://code.launchpad.net/~indicator-applet-developers/indicator-applet/applet
Your team ayatana-commits is subscribed to branch lp:indicator-applet.
To unsubscribe from this branch go to https://code.launchpad.net/~indicator-applet-developers/indicator-applet/applet/+edit-subscription
=== modified file 'src/applet-main.c'
--- src/applet-main.c 2010-06-04 16:07:46 +0000
+++ src/applet-main.c 2010-07-02 17:22:26 +0000
@@ -206,10 +206,21 @@
}
static void
+sensitive_cb (GObject * obj, GParamSpec * pspec, gpointer user_data)
+{
+ g_return_if_fail(GTK_IS_WIDGET(obj));
+ g_return_if_fail(GTK_IS_WIDGET(user_data));
+
+ gtk_widget_set_sensitive(GTK_WIDGET(user_data), gtk_widget_get_sensitive(GTK_WIDGET(obj)));
+ return;
+}
+
+static void
entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, GtkWidget * menubar)
{
g_debug("Signal: Entry Added");
gboolean something_visible = FALSE;
+ gboolean something_sensitive = FALSE;
GtkWidget * menuitem = gtk_menu_item_new();
GtkWidget * box = (packdirection == GTK_PACK_DIRECTION_LTR) ?
@@ -224,8 +235,14 @@
something_visible = TRUE;
}
+ if (gtk_widget_get_sensitive(GTK_WIDGET(entry->image))) {
+ something_sensitive = TRUE;
+ }
+
g_signal_connect(G_OBJECT(entry->image), "show", G_CALLBACK(something_shown), menuitem);
g_signal_connect(G_OBJECT(entry->image), "hide", G_CALLBACK(something_hidden), menuitem);
+
+ g_signal_connect(G_OBJECT(entry->image), "notify::sensitive", G_CALLBACK(sensitive_cb), menuitem);
}
if (entry->label != NULL) {
switch(packdirection) {
@@ -241,12 +258,19 @@
break;
}
gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(entry->label), FALSE, FALSE, 0);
+
if (gtk_widget_get_visible(GTK_WIDGET(entry->label))) {
something_visible = TRUE;
}
+ if (gtk_widget_get_sensitive(GTK_WIDGET(entry->label))) {
+ something_sensitive = TRUE;
+ }
+
g_signal_connect(G_OBJECT(entry->label), "show", G_CALLBACK(something_shown), menuitem);
g_signal_connect(G_OBJECT(entry->label), "hide", G_CALLBACK(something_hidden), menuitem);
+
+ g_signal_connect(G_OBJECT(entry->label), "notify::sensitive", G_CALLBACK(sensitive_cb), menuitem);
}
gtk_container_add(GTK_CONTAINER(menuitem), box);
gtk_widget_show(box);
@@ -268,6 +292,7 @@
if (something_visible) {
gtk_widget_show(menuitem);
}
+ gtk_widget_set_sensitive(menuitem, something_sensitive);
g_object_set_data(G_OBJECT(menuitem), MENU_DATA_INDICATOR_ENTRY, entry);
g_object_set_data(G_OBJECT(menuitem), MENU_DATA_INDICATOR_OBJECT, io);
@@ -288,10 +313,12 @@
if (entry->label != NULL) {
g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(something_shown), widget);
g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(something_hidden), widget);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(entry->label), G_CALLBACK(sensitive_cb), widget);
}
if (entry->image != NULL) {
g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(something_shown), widget);
g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(something_hidden), widget);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(entry->image), G_CALLBACK(sensitive_cb), widget);
}
gtk_widget_destroy(widget);