[gnome-panel] wncklet: Monitor locked-down property to update prefs visibility



commit ecdb801884317a5dfd45de111386d8eb0623c1fb
Author: Vincent Untz <vuntz gnome org>
Date:   Wed Feb 23 10:55:43 2011 +0100

    wncklet: Monitor locked-down property to update prefs visibility
    
    We want the prefs item in the context menu to appear when needed, and
    only when needed.

 applets/wncklet/window-list.c        |   40 +++++++++++++++++++++++----------
 applets/wncklet/workspace-switcher.c |   40 +++++++++++++++++++++++----------
 2 files changed, 56 insertions(+), 24 deletions(-)
---
diff --git a/applets/wncklet/window-list.c b/applets/wncklet/window-list.c
index f835fb3..b8788ca 100644
--- a/applets/wncklet/window-list.c
+++ b/applets/wncklet/window-list.c
@@ -39,6 +39,8 @@ typedef struct {
 	int size;
 
         GtkIconTheme *icon_theme;
+
+	GtkActionGroup *action_group;
   
 	/* Properties: */
 	GtkWidget *properties_dialog;
@@ -136,6 +138,20 @@ applet_change_background (PanelApplet     *applet,
 }
 
 static void
+applet_locked_down_notified (PanelApplet  *applet,
+			     GParamSpec   *pspec,
+			     TasklistData *tasklist)
+{
+	gboolean   locked_down;
+	GtkAction *action;
+
+	locked_down = panel_applet_get_locked_down (applet);
+
+	action = gtk_action_group_get_action (tasklist->action_group, "TasklistPreferences");
+	gtk_action_set_visible (action, !locked_down);
+}
+
+static void
 applet_change_pixel_size (PanelApplet  *applet,
 			  gint          size,
 			  TasklistData *tasklist)
@@ -166,6 +182,9 @@ destroy_tasklist(GtkWidget * widget, TasklistData *tasklist)
 	if (tasklist->properties_dialog)
 		gtk_widget_destroy (tasklist->properties_dialog);
 
+	if (tasklist->action_group)
+		g_object_unref (tasklist->action_group);
+
 	if (tasklist->about)
 		gtk_widget_destroy (tasklist->about);
 
@@ -438,7 +457,6 @@ gboolean
 window_list_applet_fill (PanelApplet *applet)
 {
 	TasklistData *tasklist;
-	GtkActionGroup *action_group;
 	gchar *ui_path;
 	GError *error;
 	GConfValue *value;
@@ -529,28 +547,26 @@ window_list_applet_fill (PanelApplet *applet)
 			  "change_background",
 			  G_CALLBACK (applet_change_background),
 			  tasklist);
+	g_signal_connect (G_OBJECT (tasklist->applet),
+			  "notify::locked-down",
+			  G_CALLBACK (applet_locked_down_notified),
+			  tasklist);
 
 	panel_applet_set_background_widget (PANEL_APPLET (tasklist->applet),
 					    GTK_WIDGET (tasklist->applet));
 
-	action_group = gtk_action_group_new ("Tasklist Applet Actions");
-	gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
-	gtk_action_group_add_actions (action_group,
+	tasklist->action_group = gtk_action_group_new ("Tasklist Applet Actions");
+	gtk_action_group_set_translation_domain (tasklist->action_group, GETTEXT_PACKAGE);
+	gtk_action_group_add_actions (tasklist->action_group,
 				      tasklist_menu_actions,
 				      G_N_ELEMENTS (tasklist_menu_actions),
 				      tasklist);
 	ui_path = g_build_filename (WNCK_MENU_UI_DIR, "window-list-menu.xml", NULL);
 	panel_applet_setup_menu_from_file (PANEL_APPLET (tasklist->applet),
-					   ui_path, action_group);
+					   ui_path, tasklist->action_group);
 	g_free (ui_path);
 
-	if (panel_applet_get_locked_down (PANEL_APPLET (tasklist->applet))) {
-		GtkAction *action;
-
-		action = gtk_action_group_get_action (action_group, "TasklistPreferences");
-		gtk_action_set_visible (action, FALSE);
-	}
-	g_object_unref (action_group);
+	applet_locked_down_notified (applet, NULL, tasklist);
 
 	gtk_widget_show (tasklist->applet);
 	
diff --git a/applets/wncklet/workspace-switcher.c b/applets/wncklet/workspace-switcher.c
index a118b09..0f59c17 100644
--- a/applets/wncklet/workspace-switcher.c
+++ b/applets/wncklet/workspace-switcher.c
@@ -52,6 +52,8 @@ typedef struct {
 	WnckScreen *screen;
 	PagerWM     wm;
 
+        GtkActionGroup *action_group;
+
 	/* Properties: */
 	GtkWidget *properties_dialog;
 	GtkWidget *workspaces_frame;
@@ -215,6 +217,20 @@ applet_change_background (PanelApplet               *applet,
 }
 
 static void
+applet_locked_down_notified (PanelApplet *applet,
+			     GParamSpec  *pspec,
+			     PagerData   *pager)
+{
+	gboolean   locked_down;
+	GtkAction *action;
+
+	locked_down = panel_applet_get_locked_down (applet);
+
+	action = gtk_action_group_get_action (pager->action_group, "PagerPreferences");
+	gtk_action_set_visible (action, !locked_down);
+}
+
+static void
 destroy_pager(GtkWidget * widget, PagerData *pager)
 {
 	GConfClient *client = gconf_client_get_default ();
@@ -232,6 +248,9 @@ destroy_pager(GtkWidget * widget, PagerData *pager)
 	if (pager->properties_dialog)
 		gtk_widget_destroy (pager->properties_dialog);
 
+	if (pager->action_group)
+		g_object_unref (pager->action_group);
+
 	if (pager->about)
 		gtk_widget_destroy (pager->about);
 
@@ -368,7 +387,6 @@ gboolean
 workspace_switcher_applet_fill (PanelApplet *applet)
 {
 	PagerData *pager;
-        GtkActionGroup *action_group;
         gchar *ui_path;
 	GError *error;
 	gboolean display_names;
@@ -458,30 +476,28 @@ workspace_switcher_applet_fill (PanelApplet *applet)
 			  "change_background",
 			  G_CALLBACK (applet_change_background),
 			  pager);
+	g_signal_connect (G_OBJECT (pager->applet),
+			  "notify::locked-down",
+			  G_CALLBACK (applet_locked_down_notified),
+			  pager);
 
 	gtk_widget_show (pager->applet);
 
 	panel_applet_set_background_widget (PANEL_APPLET (pager->applet),
 					    GTK_WIDGET (pager->applet));
 
-        action_group = gtk_action_group_new ("WorkspaceSwitcher Applet Actions");
-        gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
-        gtk_action_group_add_actions (action_group,
+        pager->action_group = gtk_action_group_new ("WorkspaceSwitcher Applet Actions");
+        gtk_action_group_set_translation_domain (pager->action_group, GETTEXT_PACKAGE);
+        gtk_action_group_add_actions (pager->action_group,
                                       pager_menu_actions,
                                       G_N_ELEMENTS (pager_menu_actions),
                                       pager);
         ui_path = g_build_filename (WNCK_MENU_UI_DIR, "workspace-switcher-menu.xml", NULL);
 	panel_applet_setup_menu_from_file (PANEL_APPLET (pager->applet),
-					   ui_path, action_group);
+					   ui_path, pager->action_group);
         g_free (ui_path);
 
-	if (panel_applet_get_locked_down (PANEL_APPLET (pager->applet))) {
-                GtkAction *action;
-
-                action = gtk_action_group_get_action (action_group, "PagerPreferences");
-                gtk_action_set_visible (action, FALSE);
-	}
-        g_object_unref (action_group);
+	applet_locked_down_notified (applet, NULL, pager);
 
 	return TRUE;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]