diff options
author | William Jon McCann <jmccann@redhat.com> | 2008-10-14 00:07:30 +0000 |
---|---|---|
committer | William Jon McCann <mccann@src.gnome.org> | 2008-10-14 00:07:30 +0000 |
commit | 36ef74814d527049ffa954868369fd8251335990 (patch) | |
tree | 4c5b47fb7f673c68d6280708fcf78f7cc76387f6 | |
parent | b18c6f4ef2c6ace9dd58f1eb2a821549ed3e30ce (diff) | |
download | gdm-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-- | ChangeLog | 6 | ||||
-rw-r--r-- | gui/user-switch-applet/applet.c | 61 |
2 files changed, 65 insertions, 2 deletions
@@ -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", |