[gnome-panel] wncklet: Monitor locked-down property to update prefs visibility
- From: Vincent Untz <vuntz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel] wncklet: Monitor locked-down property to update prefs visibility
- Date: Wed, 23 Feb 2011 10:31:46 +0000 (UTC)
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]