summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Jon McCann <jmccann@redhat.com>2008-10-14 00:07:30 +0000
committerWilliam Jon McCann <mccann@src.gnome.org>2008-10-14 00:07:30 +0000
commit36ef74814d527049ffa954868369fd8251335990 (patch)
tree4c5b47fb7f673c68d6280708fcf78f7cc76387f6
parentb18c6f4ef2c6ace9dd58f1eb2a821549ed3e30ce (diff)
downloadgdm-36ef74814d527049ffa954868369fd8251335990.tar.gz
Add System Preferences menu item.
2008-10-13 William Jon McCann <jmccann@redhat.com> * gui/user-switch-applet/applet.c (on_control_panel_activate), (create_sub_menu): Add System Preferences menu item. svn path=/trunk/; revision=6568
-rw-r--r--ChangeLog6
-rw-r--r--gui/user-switch-applet/applet.c61
2 files changed, 65 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index af62ef32..bb08ac9a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2008-10-13 William Jon McCann <jmccann@redhat.com>
+ * gui/user-switch-applet/applet.c (on_control_panel_activate),
+ (create_sub_menu):
+ Add System Preferences menu item.
+
+2008-10-13 William Jon McCann <jmccann@redhat.com>
+
* gui/user-switch-applet/applet.c (menu_style_set_cb),
(menuitem_destroy_cb), (do_switch), (update_switch_user),
(on_manager_user_added), (on_manager_user_removed),
diff --git a/gui/user-switch-applet/applet.c b/gui/user-switch-applet/applet.c
index 258f476d..76556d29 100644
--- a/gui/user-switch-applet/applet.c
+++ b/gui/user-switch-applet/applet.c
@@ -56,6 +56,7 @@ typedef struct _GdmAppletData
GtkWidget *menubar;
GtkWidget *menuitem;
GtkWidget *menu;
+ GtkWidget *control_panel_item;
GtkWidget *separator_item;
GtkWidget *lock_screen_item;
GtkWidget *login_screen_item;
@@ -757,6 +758,48 @@ on_manager_users_loaded (GdmUserManager *manager,
}
static void
+on_control_panel_activate (GtkMenuItem *item,
+ gpointer data)
+{
+ char *args[2];
+ GError *error;
+ GdkScreen *screen;
+ gboolean res;
+ GdmAppletData *adata;
+
+ adata = data;
+
+ args[0] = g_find_program_in_path ("gnome-control-center");
+ if (args[0] == NULL) {
+ return;
+ }
+ args[1] = NULL;
+
+ if (gtk_widget_has_screen (GTK_WIDGET (adata->applet))) {
+ screen = gtk_widget_get_screen (GTK_WIDGET (adata->applet));
+ } else {
+ screen = gdk_screen_get_default ();
+ }
+
+ error = NULL;
+ res = gdk_spawn_on_screen (screen,
+ g_get_home_dir (),
+ args,
+ NULL,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ &error);
+ if (! res) {
+ g_warning (_("Can't lock screen: %s"), error->message);
+ g_error_free (error);
+ }
+
+ g_free (args[0]);
+}
+
+static void
on_lock_screen_activate (GtkMenuItem *item,
gpointer data)
{
@@ -783,8 +826,6 @@ on_login_screen_activate (GtkMenuItem *item,
static void
create_sub_menu (GdmAppletData *adata)
{
- GSList *users;
-
adata->menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (adata->menuitem), adata->menu);
g_signal_connect (adata->menu, "style-set",
@@ -806,6 +847,22 @@ create_sub_menu (GdmAppletData *adata)
G_CALLBACK (on_manager_user_added),
adata);
+
+ adata->control_panel_item = gtk_image_menu_item_new_with_label (_("System Preferences..."));
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->control_panel_item),
+ gtk_image_new ());
+ gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu),
+ adata->control_panel_item);
+ g_signal_connect (adata->control_panel_item, "style-set",
+ G_CALLBACK (menuitem_style_set_cb), adata);
+ g_signal_connect (adata->control_panel_item, "destroy",
+ G_CALLBACK (menuitem_destroy_cb), adata);
+ g_signal_connect (adata->control_panel_item, "activate",
+ G_CALLBACK (on_control_panel_activate), adata);
+ adata->items = g_slist_prepend (adata->items, adata->control_panel_item);
+ gtk_widget_show (adata->control_panel_item);
+
+
adata->separator_item = gtk_separator_menu_item_new ();
gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), adata->separator_item);
g_signal_connect (adata->separator_item, "destroy",