gdm r5888 - in trunk: . gui/user-switch-applet
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gdm r5888 - in trunk: . gui/user-switch-applet
- Date: Wed, 27 Feb 2008 19:06:39 +0000 (GMT)
Author: mccann
Date: Wed Feb 27 19:06:38 2008
New Revision: 5888
URL: http://svn.gnome.org/viewvc/gdm?rev=5888&view=rev
Log:
2008-02-27 William Jon McCann <jmccann redhat com>
* gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml:
* gui/user-switch-applet/Makefile.am:
* gui/user-switch-applet/applet.c: (get_glade_xml),
(menubar_button_press_event_cb), (help_cb), (set_menuitem_icon),
(applet_style_set_cb), (gdm_applet_data_free), (sort_menu),
(menu_style_set_cb), (menuitem_destroy_cb),
(menuitem_style_set_cb), (maybe_lock_screen), (do_switch),
(user_item_activate_cb), (user_sessions_changed_cb), (add_user),
(manager_user_added_cb), (login_screen_activate_cb),
(client_notify_applet_func), (client_notify_global_func),
(fill_applet), (applet_factory):
* gui/user-switch-applet/gdm-user-switch-applet.schemas.in:
Remove gconf settings from user switch applet - simplifies
code dramatically. Fix crash when adding multiple applets
to panel.
Removed:
trunk/gui/user-switch-applet/gdm-user-switch-applet.schemas.in
Modified:
trunk/ChangeLog
trunk/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml
trunk/gui/user-switch-applet/Makefile.am
trunk/gui/user-switch-applet/applet.c
Modified: trunk/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml
==============================================================================
--- trunk/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml (original)
+++ trunk/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml Wed Feb 27 19:06:38 2008
@@ -9,19 +9,9 @@
name="Users and Groups Admin Item"
verb="GdmUsersGroupsAdmin"
_label="_Edit Users and Groups"/>
- <menuitem
- name="GDM Setup Item"
- verb="GdmGdmSetup"
- _label="_Setup Login Screen"/>
<separator
name="GdmSeparator"/>
<menuitem
- name="Preferences Item"
- verb="GdmPreferences"
- _label="_Preferences"
- pixtype="stock"
- pixname="gtk-properties"/>
- <menuitem
name="Help Item"
verb="GdmHelp"
_label="_Help"
Modified: trunk/gui/user-switch-applet/Makefile.am
==============================================================================
--- trunk/gui/user-switch-applet/Makefile.am (original)
+++ trunk/gui/user-switch-applet/Makefile.am Wed Feb 27 19:06:38 2008
@@ -31,12 +31,6 @@
$(APPLET_LIBS) \
$(NULL)
-schemasdir = @GCONF_SCHEMA_FILE_DIR@
-schemas_in_files = gdm-user-switch-applet.schemas.in
-schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
-
- INTLTOOL_SCHEMAS_RULE@
-
gladedir = $(pkgdatadir)
glade_DATA = \
gdm-user-switch-applet.glade \
@@ -61,7 +55,6 @@
@INTLTOOL_SERVER_RULE@
EXTRA_DIST = \
- $(schemas_in_files) \
$(glade_DATA) \
$(ui_DATA) \
GNOME_FastUserSwitchApplet.server.in.in \
@@ -69,22 +62,9 @@
DISTCLEANFILES = \
$(server_in_files) \
- $(schemas_DATA) \
$(server_DATA) \
$(NULL)
MAINTAINERCLEANFILES = \
*~ \
Makefile.in
-
-if GCONF_SCHEMAS_INSTALL
-# don't do this if we are building in eg. rpm
-install-data-local: $(schemas_DATA)
- if test -z "$(DESTDIR)" ; then \
- for p in $(schemas_DATA) ; do \
- GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_builddir)/gui/user-switch-applet/$$p ; \
- done \
- fi
-else
-install-data-local:
-endif
Modified: trunk/gui/user-switch-applet/applet.c
==============================================================================
--- trunk/gui/user-switch-applet/applet.c (original)
+++ trunk/gui/user-switch-applet/applet.c Wed Feb 27 19:06:38 2008
@@ -43,15 +43,6 @@
#include "gdm-user-manager.h"
#include "gdm-user-menu-item.h"
-#define DISPLAY_KEY "display_style"
-#define USE_XNEST_KEY "use_xnest"
-#define LOCK_KEY "lock_screen_after_switch"
-
-#define GLOBAL_DIR "/apps/gdm-user-switch-applet"
-#define SHOW_WINDOW_KEY "/apps/gdm-user-switch-applet/show_window_item"
-#define SHOW_SCREEN_KEY "/apps/gdm-user-switch-applet/show_screen_item"
-#define ACTIVE_ONLY_KEY "/apps/gdm-user-switch-applet/show_active_users_only"
-
#define LOCKDOWN_DIR "/desktop/gnome/lockdown"
#define LOCKDOWN_KEY LOCKDOWN_DIR "/disable_user_switching"
@@ -62,18 +53,13 @@
GConfClient *client;
GdmUserManager *manager;
- GtkWidget *prefs;
-
GtkWidget *menubar;
GtkWidget *imglabel;
GtkWidget *menu;
GtkWidget *separator_item;
GtkWidget *login_screen_item;
- GtkWidget *login_window_item;
GSList *items;
- guint client_notify_applet_id;
- guint client_notify_global_id;
guint client_notify_lockdown_id;
guint user_notify_id;
GQuark user_menu_item_quark;
@@ -88,16 +74,15 @@
} SelectorResponseData;
static GtkTooltips *tooltips = NULL;
-static GnomeProgram *program = NULL;
-static gboolean applet_fill_cb (PanelApplet *applet,
+static gboolean applet_factory (PanelApplet *applet,
const char *iid,
- GdmAppletData *adata);
+ gpointer data);
PANEL_APPLET_BONOBO_FACTORY ("OAFIID:GNOME_FastUserSwitchApplet_Factory",
PANEL_TYPE_APPLET,
"gdm-user-switch-applet", "0",
- (PanelAppletFactoryCallback)applet_fill_cb,
+ (PanelAppletFactoryCallback)applet_factory,
NULL)
static void
@@ -126,7 +111,7 @@
xml = glade_xml_new (GLADEDIR "/gdm-user-switch-applet.glade", root, NULL);
- if (!xml) {
+ if (xml == NULL) {
GtkWidget *dialog;
dialog = gtk_message_dialog_new (NULL,
@@ -199,80 +184,6 @@
pango_attr_list_unref (list);
}
-static void
-prefs_radio_toggled_cb (GtkToggleButton *button,
- GdmAppletData *adata)
-{
- if (gtk_toggle_button_get_active (button)) {
- gpointer value;
-
- value = g_object_get_data (G_OBJECT (button),
- "prefs-radio-display-style");
- panel_applet_gconf_set_string (adata->applet, DISPLAY_KEY, value, NULL);
- }
-}
-
-static void
-prefs_xnest_check_toggled_cb (GtkToggleButton *button,
- GdmAppletData *adata)
-{
- panel_applet_gconf_set_bool (adata->applet, USE_XNEST_KEY,
- gtk_toggle_button_get_active (button), NULL);
-}
-
-static void
-prefs_lock_check_toggled_cb (GtkToggleButton *button,
- GdmAppletData *adata)
-{
- panel_applet_gconf_set_bool (adata->applet, LOCK_KEY,
- gtk_toggle_button_get_active (button), NULL);
-}
-
-static void
-reset_login_screen_item (GtkWidget *widget,
- gboolean use_xnest_value,
- const char *pref_value)
-{
- if (!pref_value || strcmp (pref_value, "always") == 0)
- gtk_widget_show (widget);
- else if (pref_value && strcmp (pref_value, "never") == 0)
- gtk_widget_hide (widget);
- else if (use_xnest_value)
- gtk_widget_hide (widget);
- else
- gtk_widget_show (widget);
-}
-
-static gboolean
-system_can_do_xnest (void)
-{
- char *tmp;
- gboolean retval;
-
- tmp = g_find_program_in_path ("Xnest");
- retval = (tmp != NULL ? TRUE : FALSE);
- g_free (tmp);
-
- return retval;
-}
-
-static void
-reset_login_window_item (GtkWidget *widget,
- gboolean use_xnest_value,
- const char *pref_value)
-{
- if (!system_can_do_xnest ())
- gtk_widget_hide (widget);
- else if (pref_value && strcmp (pref_value, "always") == 0)
- gtk_widget_show (widget);
- else if (pref_value && strcmp (pref_value, "never") == 0)
- gtk_widget_hide (widget);
- else if (use_xnest_value)
- gtk_widget_show (widget);
- else
- gtk_widget_hide (widget);
-}
-
/*
* gnome-panel/applets/wncklet/window-menu.c:window_filter_button_press()
*
@@ -289,201 +200,12 @@
if (event->button != 1) {
g_signal_stop_emission_by_name (menubar, "button-press-event");
/* Reset the login window item */
- } else {
- gboolean use_xnest;
- char *value;
-
- use_xnest = panel_applet_gconf_get_bool (adata->applet,
- USE_XNEST_KEY,
- NULL);
- value = gconf_client_get_string (adata->client, SHOW_WINDOW_KEY, NULL);
- reset_login_window_item (GTK_WIDGET (adata->login_window_item), use_xnest,
- value);
- g_free (value);
}
return FALSE;
}
static void
-prefs_cb (BonoboUIComponent *ui_container,
- GdmAppletData *adata,
- const char *cname)
-{
- GladeXML *xml;
- GtkWidget *warning_box;
- GtkWidget *label;
- GtkWidget *username_radio;
- GtkWidget *text_radio;
- GtkWidget *icon_radio;
- GtkWidget *check;
- char *key;
- char *value;
- gboolean has_lockdown;
- gboolean xnest_available;
- gboolean label_setup_done;
- GdmUser *user;
-
- if (adata->prefs) {
- gtk_window_set_screen (GTK_WINDOW (adata->prefs),
- gtk_widget_get_screen (GTK_WIDGET (adata->applet)));
- gtk_window_present (GTK_WINDOW (adata->prefs));
- return;
- }
-
- xml = get_glade_xml ("prefs_dialog");
-
- if (!xml)
- return;
-
- adata->prefs = glade_xml_get_widget (xml, "prefs_dialog");
- gtk_dialog_set_default_response (GTK_DIALOG (adata->prefs),
- GTK_RESPONSE_CLOSE);
- gtk_window_set_transient_for (GTK_WINDOW (adata->prefs),
- GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (adata->applet))));
- gtk_window_set_screen (GTK_WINDOW (adata->prefs),
- gtk_widget_get_screen (GTK_WIDGET (adata->applet)));
- g_signal_connect (adata->prefs,
- "response",
- G_CALLBACK (gtk_widget_destroy),
- NULL);
- g_signal_connect (adata->prefs,
- "delete-event",
- G_CALLBACK (gtk_true),
- NULL);
- g_object_add_weak_pointer (G_OBJECT (adata->prefs),
- (gpointer *) &adata->prefs);
-
- warning_box = glade_xml_get_widget (xml, "warning_box");
-
- label = glade_xml_get_widget (xml, "appearance_label");
- make_label_bold (GTK_LABEL (label));
-
- label = glade_xml_get_widget (xml, "options_label");
- make_label_bold (GTK_LABEL (label));
-
- username_radio = glade_xml_get_widget (xml, "username_radio");
- text_radio = glade_xml_get_widget (xml, "text_radio");
- icon_radio = glade_xml_get_widget (xml, "icon_radio");
-
- has_lockdown = panel_applet_get_locked_down (adata->applet);
-
- value = panel_applet_gconf_get_string (adata->applet, DISPLAY_KEY, NULL);
- if (!value || strcmp (value, "text") == 0) {
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (text_radio), TRUE);
- } else if (strcmp (value, "icon") == 0) {
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (icon_radio), TRUE);
- } else if (strcmp (value, "username") == 0) {
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (username_radio), TRUE);
- }
- g_free (value);
-
- g_object_set_data (G_OBJECT (username_radio),
- "prefs-radio-display-style",
- "username");
- g_signal_connect (username_radio,
- "toggled",
- G_CALLBACK (prefs_radio_toggled_cb),
- adata);
-
- user = gdm_user_manager_get_user_by_uid (adata->manager, getuid ());
- if (user != NULL) {
- gtk_label_set_text (GTK_LABEL (GTK_BIN (username_radio)->child),
- gdm_user_get_real_name (user));
- }
-
- g_object_set_data (G_OBJECT (text_radio),
- "prefs-radio-display-style",
- "text");
- g_signal_connect (text_radio,
- "toggled",
- G_CALLBACK (prefs_radio_toggled_cb),
- adata);
-
- g_object_set_data (G_OBJECT (icon_radio),
- "prefs-radio-display-style", "icon");
- g_signal_connect (icon_radio,
- "toggled",
- G_CALLBACK (prefs_radio_toggled_cb),
- adata);
-
- label_setup_done = FALSE;
- key = panel_applet_gconf_get_full_key (adata->applet, DISPLAY_KEY);
- if (has_lockdown || !gconf_client_key_is_writable (adata->client, key, NULL)) {
- GtkWidget *warning_label;
-
- gtk_widget_set_sensitive (username_radio, FALSE);
- gtk_widget_set_sensitive (text_radio, FALSE);
- gtk_widget_set_sensitive (icon_radio, FALSE);
-
- warning_label = glade_xml_get_widget (xml, "warning_label");
- make_label_small_italic (GTK_LABEL (warning_label));
- label_setup_done = TRUE;
-
- gtk_widget_show (warning_box);
- }
- g_free (key);
-
- /* [_] Lock the screen after switching */
- check = glade_xml_get_widget (xml, "lock_check");
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check),
- panel_applet_gconf_get_bool (adata->applet,
- LOCK_KEY,
- NULL));
- g_signal_connect (check,
- "toggled",
- G_CALLBACK (prefs_lock_check_toggled_cb),
- adata);
- key = panel_applet_gconf_get_full_key (adata->applet, LOCK_KEY);
- if (has_lockdown || !gconf_client_key_is_writable (adata->client, key, NULL)) {
- gtk_widget_set_sensitive (check, FALSE);
-
- if (!label_setup_done) {
- GtkWidget *warning_label;
-
- warning_label = glade_xml_get_widget (xml, "warning_label");
- make_label_small_italic (GTK_LABEL (warning_label));
- label_setup_done = TRUE;
-
- gtk_widget_show (warning_box);
- }
- }
- g_free (key);
-
- /* [_] Create new logins in nested windows */
- check = glade_xml_get_widget (xml, "xnest_check");
- xnest_available = system_can_do_xnest ();
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check),
- (panel_applet_gconf_get_bool (adata->applet,
- USE_XNEST_KEY,
- NULL) &&
- xnest_available));
- g_signal_connect (check,
- "toggled",
- G_CALLBACK (prefs_xnest_check_toggled_cb),
- adata);
- key = panel_applet_gconf_get_full_key (adata->applet, USE_XNEST_KEY);
- if (has_lockdown || !gconf_client_key_is_writable (adata->client, key, NULL)) {
- gtk_widget_set_sensitive (check, FALSE);
-
- if (!label_setup_done) {
- GtkWidget *warning_label;
-
- warning_label = glade_xml_get_widget (xml, "warning_label");
- make_label_small_italic (GTK_LABEL (warning_label));
- label_setup_done = TRUE;
-
- gtk_widget_show (warning_box);
- }
- } else if (!xnest_available) {
- gtk_widget_set_sensitive (check, FALSE);
- }
- g_free (key);
-
- gtk_window_present (GTK_WINDOW (adata->prefs));
-}
-
-static void
help_cb (BonoboUIComponent *ui_container,
GdmAppletData *adata,
const char *cname)
@@ -494,7 +216,7 @@
gnome_help_display_on_screen ("gdm-user-switch-applet", NULL,
gtk_widget_get_screen (GTK_WIDGET (adata->applet)),
&err);
- if (err) {
+ if (err != NULL) {
g_warning ("Could not open help document: %s", err->message);
g_error_free (err);
}
@@ -583,47 +305,20 @@
}
static void
-setup_cb (BonoboUIComponent *ui_container,
- gpointer data,
- const char *cname)
-{
-#ifdef GDM_SETUP
- char **args;
- GError *err;
-
- err = NULL;
- if (!g_shell_parse_argv (GDM_SETUP, NULL, &args, &err)) {
- g_critical ("Could not parse GDM configuration command line `%s': %s",
- GDM_SETUP, err->message);
- return;
- }
-
- if (!g_spawn_async (g_get_home_dir (), args, NULL,
- (G_SPAWN_STDOUT_TO_DEV_NULL |
- G_SPAWN_STDERR_TO_DEV_NULL |
- G_SPAWN_SEARCH_PATH),
- NULL, NULL, NULL, &err)) {
- g_critical ("Could not run `%s' to configure GDM: %s",
- GDM_SETUP, err->message);
- g_error_free (err);
- }
- g_strfreev (args);
-#endif /* GDM_SETUP */
-}
-
-static void
set_menuitem_icon (BonoboUIComponent *component,
- const char *item_path,
+ const char *item_path,
GtkIconTheme *theme,
- const char *icon_name,
+ const char *icon_name,
gint icon_size)
{
GdkPixbuf *pixbuf;
- gint width, height;
+ int width;
+ int height;
pixbuf = gtk_icon_theme_load_icon (theme, icon_name, icon_size, 0, NULL);
- if (!pixbuf)
+ if (pixbuf == NULL) {
return;
+ }
width = gdk_pixbuf_get_width (pixbuf);
height = gdk_pixbuf_get_height (pixbuf);
@@ -655,26 +350,32 @@
GtkIconTheme *theme;
gint width, height, icon_size;
- if (gtk_widget_has_screen (widget))
+ if (gtk_widget_has_screen (widget)) {
screen = gtk_widget_get_screen (widget);
- else
+ } else {
screen = gdk_screen_get_default ();
+ }
if (gtk_icon_size_lookup_for_settings (gtk_settings_get_for_screen (screen),
- GTK_ICON_SIZE_MENU, &width, &height))
+ GTK_ICON_SIZE_MENU, &width, &height)) {
icon_size = MAX (width, height);
- else
+ } else {
icon_size = 16;
+ }
theme = gtk_icon_theme_get_for_screen (screen);
component = panel_applet_get_popup_component (PANEL_APPLET (widget));
- set_menuitem_icon (component, "/commands/GdmAboutMe",
- theme, "user-info", icon_size);
- set_menuitem_icon (component, "/commands/GdmUsersGroupsAdmin",
- theme, "stock_people", icon_size);
- set_menuitem_icon (component, "/commands/GdmGdmSetup",
- theme, "gdm-setup", icon_size);
+ set_menuitem_icon (component,
+ "/commands/GdmAboutMe",
+ theme,
+ "user-info",
+ icon_size);
+ set_menuitem_icon (component,
+ "/commands/GdmUsersGroupsAdmin",
+ theme,
+ "stock_people",
+ icon_size);
}
static void
@@ -685,8 +386,8 @@
gpointer data)
{
GdmAppletData *adata;
- GtkRcStyle *rc_style;
- GtkStyle *style;
+ GtkRcStyle *rc_style;
+ GtkStyle *style;
adata = data;
@@ -830,12 +531,8 @@
static void
gdm_applet_data_free (GdmAppletData *adata)
{
- if (adata->prefs)
- gtk_widget_destroy (adata->prefs);
+ gconf_client_notify_remove (adata->client, adata->client_notify_lockdown_id);
- gconf_client_notify_remove (adata->client, adata->client_notify_applet_id);
- gconf_client_notify_remove (adata->client, adata->client_notify_global_id);
- gconf_client_remove_dir (adata->client, GLOBAL_DIR, NULL);
g_object_unref (adata->client);
g_object_unref (adata->manager);
g_object_unref (tooltips);
@@ -911,8 +608,9 @@
guint n_items, n_rows, n_cols, row, column, count;
gint screen_height;
- if (!gtk_widget_has_screen (adata->menu))
+ if (!gtk_widget_has_screen (adata->menu)) {
return;
+ }
adata->items = g_slist_sort_with_data (adata->items,
sort_menu_comparedatafunc, adata);
@@ -971,13 +669,15 @@
adata = data;
adata->icon_size = gtk_icon_size_from_name ("panel-menu");
- if (adata->icon_size == GTK_ICON_SIZE_INVALID)
+ if (adata->icon_size == GTK_ICON_SIZE_INVALID) {
adata->icon_size = gtk_icon_size_register ("panel-menu", 24, 24);
+ }
- if (gtk_widget_has_screen (menu))
+ if (gtk_widget_has_screen (menu)) {
settings = gtk_settings_get_for_screen (gtk_widget_get_screen (menu));
- else
+ } else {
settings = gtk_settings_get_default ();
+ }
if (!gtk_icon_size_lookup_for_settings (settings, adata->icon_size,
&width, &height))
@@ -1001,9 +701,10 @@
GdmUser *user;
user = gdm_user_menu_item_get_user (GDM_USER_MENU_ITEM (menuitem));
- if (user)
+ if (user != NULL) {
g_object_set_qdata (G_OBJECT (user),
adata->user_menu_item_quark, NULL);
+ }
}
li = g_slist_find (adata->items, menuitem);
@@ -1020,26 +721,24 @@
adata = data;
- if (GDM_IS_USER_MENU_ITEM (menuitem))
+ if (GDM_IS_USER_MENU_ITEM (menuitem)) {
gdm_user_menu_item_set_icon_size (GDM_USER_MENU_ITEM (menuitem),
adata->pixel_size);
- else
- {
- GtkWidget *image;
- const char *icon_name;
-
- if (menuitem == adata->login_screen_item)
- icon_name = "gdm";
- else if (menuitem == adata->login_window_item)
- icon_name = "gdm-xnest";
- else
- icon_name = GTK_STOCK_MISSING_IMAGE;
-
- image = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (menuitem));
- gtk_image_set_pixel_size (GTK_IMAGE (image), adata->pixel_size);
- gtk_image_set_from_icon_name (GTK_IMAGE (image), icon_name,
- adata->icon_size);
+ } else {
+ GtkWidget *image;
+ const char *icon_name;
+
+ if (menuitem == adata->login_screen_item) {
+ icon_name = "gdm";
+ } else {
+ icon_name = GTK_STOCK_MISSING_IMAGE;
}
+
+ image = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (menuitem));
+ gtk_image_set_pixel_size (GTK_IMAGE (image), adata->pixel_size);
+ gtk_image_set_from_icon_name (GTK_IMAGE (image), icon_name,
+ adata->icon_size);
+ }
}
@@ -1075,73 +774,70 @@
static void
maybe_lock_screen (GdmAppletData *adata)
{
- if (panel_applet_gconf_get_bool (adata->applet, LOCK_KEY, NULL)) {
- char *args[3];
- GError *err;
- GdkScreen *screen;
- gboolean use_gscreensaver = TRUE;
-
- args[0] = g_find_program_in_path ("gnome-screensaver-command");
- if (!args[0]) {
- args[0] = g_find_program_in_path ("xscreensaver-command");
- use_gscreensaver = FALSE;
- }
- if (!args[0]) {
- return;
- }
+ char *args[3];
+ GError *err;
+ GdkScreen *screen;
+ gboolean use_gscreensaver = TRUE;
- if (use_gscreensaver) {
- args[1] = "--lock";
- } else {
- args[1] = "-lock";
- }
- args[2] = NULL;
+ args[0] = g_find_program_in_path ("gnome-screensaver-command");
+ if (args[0] == NULL) {
+ args[0] = g_find_program_in_path ("xscreensaver-command");
+ use_gscreensaver = FALSE;
+ }
- if (gtk_widget_has_screen (GTK_WIDGET (adata->applet))) {
- screen = gtk_widget_get_screen (GTK_WIDGET (adata->applet));
- } else {
- screen = gdk_screen_get_default ();
- }
+ if (args[0] == NULL) {
+ return;
+ }
- err = NULL;
- if (!gdk_spawn_on_screen (screen, g_get_home_dir (), args, NULL,
- (G_SPAWN_STDERR_TO_DEV_NULL |
- G_SPAWN_STDOUT_TO_DEV_NULL),
- NULL, NULL, NULL, &err)) {
- g_warning (_("Can't lock screen: %s"), err->message);
- g_error_free (err);
- }
+ if (use_gscreensaver) {
+ args[1] = "--lock";
+ } else {
+ args[1] = "-lock";
+ }
+ args[2] = NULL;
- if (use_gscreensaver) {
- args[1] = "--throttle";
- } else {
- args[1] = "-throttle";
- }
+ if (gtk_widget_has_screen (GTK_WIDGET (adata->applet))) {
+ screen = gtk_widget_get_screen (GTK_WIDGET (adata->applet));
+ } else {
+ screen = gdk_screen_get_default ();
+ }
- if (!gdk_spawn_on_screen (screen, g_get_home_dir (), args, NULL,
- (G_SPAWN_STDERR_TO_DEV_NULL |
- G_SPAWN_STDOUT_TO_DEV_NULL),
- NULL, NULL, NULL, &err)) {
- g_warning (_("Can't temporarily set screensaver to blank screen: %s"),
- err->message);
- g_error_free (err);
- }
+ err = NULL;
+ if (!gdk_spawn_on_screen (screen, g_get_home_dir (), args, NULL,
+ (G_SPAWN_STDERR_TO_DEV_NULL |
+ G_SPAWN_STDOUT_TO_DEV_NULL),
+ NULL, NULL, NULL, &err)) {
+ g_warning (_("Can't lock screen: %s"), err->message);
+ g_error_free (err);
+ }
+
+ if (use_gscreensaver) {
+ args[1] = "--throttle";
+ } else {
+ args[1] = "-throttle";
+ }
- g_free (args[0]);
+ if (!gdk_spawn_on_screen (screen, g_get_home_dir (), args, NULL,
+ (G_SPAWN_STDERR_TO_DEV_NULL |
+ G_SPAWN_STDOUT_TO_DEV_NULL),
+ NULL, NULL, NULL, &err)) {
+ g_warning (_("Can't temporarily set screensaver to blank screen: %s"),
+ err->message);
+ g_error_free (err);
}
+
+ g_free (args[0]);
}
static void
do_switch (GdmAppletData *adata,
- GdmUser *user,
- gboolean use_xnest)
+ GdmUser *user)
{
guint num_sessions;
g_debug ("Do user switch");
if (user == NULL) {
- /* FIXME: xnest?? */
gdm_user_manager_goto_login_session (adata->manager);
return;
}
@@ -1166,7 +862,7 @@
item = GDM_USER_MENU_ITEM (menuitem);
user = gdm_user_menu_item_get_user (item);
- do_switch (adata, user, FALSE);
+ do_switch (adata, user);
}
static void
@@ -1174,77 +870,59 @@
GdmAppletData *adata)
{
GtkWidget *menuitem;
- gboolean active_only;
menuitem = g_object_get_qdata (G_OBJECT (user), adata->user_menu_item_quark);
- if (!menuitem)
+ if (menuitem == NULL) {
return;
-
- active_only = gconf_client_get_bool (adata->client, ACTIVE_ONLY_KEY, NULL);
- if (active_only) {
- guint num;
- num = gdm_user_get_num_sessions (user);
- if (num > 0) {
- gtk_widget_show (menuitem);
- } else {
- gtk_widget_hide (menuitem);
- }
- } else {
- gtk_widget_show (menuitem);
}
+ gtk_widget_show (menuitem);
+
sort_menu (adata);
}
static void
-manager_user_added_cb (GdmUserManager *manager,
- GdmUser *user,
- GdmAppletData *adata)
+add_user (GdmAppletData *adata,
+ GdmUser *user)
{
GtkWidget *menuitem;
- gboolean active_only;
menuitem = gdm_user_menu_item_new (user);
g_object_set_qdata (G_OBJECT (user), adata->user_menu_item_quark, menuitem);
- g_signal_connect (menuitem, "style-set",
- G_CALLBACK (menuitem_style_set_cb), adata);
- g_signal_connect (menuitem, "destroy",
- G_CALLBACK (menuitem_destroy_cb), adata);
- g_signal_connect (menuitem, "activate",
- G_CALLBACK (user_item_activate_cb), adata);
+ g_signal_connect (menuitem,
+ "style-set",
+ G_CALLBACK (menuitem_style_set_cb),
+ adata);
+ g_signal_connect (menuitem,
+ "destroy",
+ G_CALLBACK (menuitem_destroy_cb),
+ adata);
+ g_signal_connect (menuitem,
+ "activate",
+ G_CALLBACK (user_item_activate_cb),
+ adata);
gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), menuitem);
adata->items = g_slist_prepend (adata->items, menuitem);
- active_only = gconf_client_get_bool (adata->client, ACTIVE_ONLY_KEY, NULL);
- if (active_only) {
- guint num;
- num = gdm_user_get_num_sessions (user);
- if (num > 0) {
- gtk_widget_show (menuitem);
- }
- } else {
- gtk_widget_show (menuitem);
- }
- g_signal_connect (user, "sessions-changed",
- G_CALLBACK (user_sessions_changed_cb), adata);
- sort_menu (adata);
+ gtk_widget_show (menuitem);
+
+ g_signal_connect (user,
+ "sessions-changed",
+ G_CALLBACK (user_sessions_changed_cb),
+ adata);
}
static void
-login_screen_activate_cb (GtkMenuItem *item,
- gpointer data)
+manager_user_added_cb (GdmUserManager *manager,
+ GdmUser *user,
+ GdmAppletData *adata)
{
- GdmAppletData *adata;
- GdmUser *user;
-
- adata = data;
- user = NULL;
-
- do_switch (adata, user, FALSE);
+ add_user (adata, user);
+ sort_menu (adata);
}
static void
-login_window_activate_cb (GtkMenuItem *item,
+login_screen_activate_cb (GtkMenuItem *item,
gpointer data)
{
GdmAppletData *adata;
@@ -1253,123 +931,7 @@
adata = data;
user = NULL;
- if (!system_can_do_xnest ()) {
- g_critical ("%s: (%s): FIXME: show an error dialog when Xnest is missing.",
- G_STRLOC, G_STRFUNC);
- gtk_widget_hide (GTK_WIDGET (item));
- } else {
- do_switch (adata, user, TRUE);
- }
-}
-
-static void
-display_key_changed (GdmAppletData *adata,
- GConfClient *client,
- GConfValue *value)
-{
- const char *str;
- GtkWidget *parent;
- GdmUser *user;
-
- str = gconf_value_get_string (value);
- parent = adata->imglabel->parent;
- user = gdm_user_manager_get_user_by_uid (adata->manager, getuid ());
- if (str == NULL) {
- if (adata->user_notify_id) {
- g_signal_handler_disconnect (user, adata->user_notify_id);
- adata->user_notify_id = 0;
- gtk_label_set_text (GTK_LABEL (adata->imglabel), _("Users"));
- } else {
- gtk_widget_destroy (adata->imglabel);
- adata->imglabel = gtk_label_new (_("Users"));
- gtk_box_pack_start (GTK_BOX (parent), adata->imglabel,
- TRUE, TRUE, 0);
- gtk_widget_show (adata->imglabel);
- }
- return;
- }
-
- if (strcmp (str, "username") == 0) {
- if (GTK_IS_IMAGE (adata->imglabel)) {
- gtk_widget_destroy (adata->imglabel);
-
- adata->imglabel = gtk_label_new (gdm_user_get_real_name (user));
- adata->user_notify_id =
- g_signal_connect (user, "notify::display-name",
- G_CALLBACK (user_notify_display_name_cb),
- adata->imglabel);
- gtk_box_pack_start (GTK_BOX (parent), adata->imglabel,
- TRUE, TRUE, 0);
- gtk_widget_show (adata->imglabel);
- } else if (!adata->user_notify_id) {
- gtk_label_set_text (GTK_LABEL (adata->imglabel),
- gdm_user_get_real_name (user));
- adata->user_notify_id =
- g_signal_connect (user, "notify::display-name",
- G_CALLBACK (user_notify_display_name_cb),
- adata->imglabel);
- }
- } else if (strcmp (str, "icon") == 0) {
- if (!GTK_IS_IMAGE (adata->imglabel)) {
- guint item_border;
-
- if (adata->user_notify_id) {
- g_signal_handler_disconnect (user, adata->user_notify_id);
- adata->user_notify_id = 0;
- }
- if (adata->imglabel->parent->style)
- item_border = (MAX (adata->imglabel->parent->style->xthickness,
- adata->imglabel->parent->style->ythickness) * 2);
- else
- item_border = 0;
-
- gtk_widget_destroy (adata->imglabel);
-
- adata->imglabel =
- gtk_image_new_from_icon_name ("stock_people",
- GTK_ICON_SIZE_MENU);
- gtk_box_pack_start (GTK_BOX (parent), adata->imglabel,
- TRUE, TRUE, item_border);
- gtk_widget_show (adata->imglabel);
- }
- } else {
- if (adata->user_notify_id) {
- g_signal_handler_disconnect (user, adata->user_notify_id);
- adata->user_notify_id = 0;
- gtk_label_set_text (GTK_LABEL (adata->imglabel), _("Users"));
- } else {
- gtk_widget_destroy (adata->imglabel);
- adata->imglabel = gtk_label_new (_("Users"));
- gtk_box_pack_start (GTK_BOX (parent), adata->imglabel,
- TRUE, TRUE, 0);
- gtk_widget_show (adata->imglabel);
- }
- }
-}
-
-static void
-xnest_key_changed (GdmAppletData *adata,
- GConfClient *client,
- GConfValue *value)
-{
- char *str;
-
- str = gconf_client_get_string (client, SHOW_SCREEN_KEY, NULL);
- reset_login_screen_item (adata->login_screen_item,
- gconf_value_get_bool (value), str);
- g_free (str);
-
- str = gconf_client_get_string (client, SHOW_WINDOW_KEY, NULL);
- reset_login_window_item (adata->login_window_item,
- gconf_value_get_bool (value), str);
- g_free (str);
-
- if (GTK_WIDGET_VISIBLE (adata->login_screen_item) ||
- GTK_WIDGET_VISIBLE (adata->login_window_item)) {
- gtk_widget_show (adata->separator_item);
- } else {
- gtk_widget_hide (adata->separator_item);
- }
+ do_switch (adata, user);
}
static void
@@ -1383,20 +945,14 @@
value = gconf_entry_get_value (entry);
- if (!value)
+ if (value == NULL)
return;
key = g_path_get_basename (gconf_entry_get_key (entry));
- if (!key)
+ if (key == NULL)
return;
- if (strcmp (key, DISPLAY_KEY) == 0) {
- display_key_changed (adata, client, value);
- } else if (strcmp (key, USE_XNEST_KEY) == 0) {
- xnest_key_changed (adata, client, value);
- }
-
g_free (key);
}
@@ -1407,56 +963,8 @@
GConfEntry *entry,
GdmAppletData *adata)
{
- GConfValue *value;
- const char *key;
-
- value = gconf_entry_get_value (entry);
- key = gconf_entry_get_key (entry);
-
- if (!value || !key)
- return;
-
- if (strcmp (key, SHOW_SCREEN_KEY) == 0)
- reset_login_screen_item (adata->login_screen_item,
- panel_applet_gconf_get_bool (adata->applet,
- USE_XNEST_KEY, NULL),
- gconf_value_get_string (value));
- else if (strcmp (key, SHOW_WINDOW_KEY) == 0)
- reset_login_window_item (adata->login_window_item,
- panel_applet_gconf_get_bool (adata->applet,
- USE_XNEST_KEY, NULL),
- gconf_value_get_string (value));
- else if (strcmp (key, ACTIVE_ONLY_KEY) == 0) {
- GSList *items;
-
- items = adata->items;
- while (items) {
- if (GDM_IS_USER_MENU_ITEM (items->data)) {
- if (gconf_value_get_bool (value)) {
- guint num;
- num = gdm_user_get_num_sessions (gdm_user_menu_item_get_user (items->data));
- if (num > 0) {
- gtk_widget_show (items->data);
- } else
- gtk_widget_hide (items->data);
- } else
- gtk_widget_show (items->data);
- }
-
- items = items->next;
- }
- }
-
- if (GTK_WIDGET_VISIBLE (adata->login_screen_item) ||
- GTK_WIDGET_VISIBLE (adata->login_window_item))
- gtk_widget_show (adata->separator_item);
- else
- gtk_widget_hide (adata->separator_item);
-
- sort_menu (adata);
}
-
static void
client_notify_lockdown_func (GConfClient *client,
guint cnxn_id,
@@ -1482,15 +990,11 @@
}
static gboolean
-applet_fill_cb (PanelApplet *applet,
- const char *iid,
- GdmAppletData *adata)
+fill_applet (PanelApplet *applet)
{
static const BonoboUIVerb menu_verbs[] = {
BONOBO_UI_VERB ("GdmAboutMe", about_me_cb),
BONOBO_UI_VERB ("GdmUsersGroupsAdmin", admin_cb),
- BONOBO_UI_VERB ("GdmGdmSetup", setup_cb),
- BONOBO_UI_VERB ("GdmPreferences", (BonoboUIVerbFn)prefs_cb),
BONOBO_UI_VERB ("GdmHelp", (BonoboUIVerbFn)help_cb),
BONOBO_UI_VERB ("GdmAbout", about_cb),
BONOBO_UI_VERB_END
@@ -1500,30 +1004,12 @@
GtkWidget *hbox;
GSList *users;
char *tmp;
- char *key;
- char *value;
- gboolean use_xnest;
- gboolean active_only;
BonoboUIComponent *popup_component;
+ GdmAppletData *adata;
- if (strcmp (iid, "OAFIID:GNOME_FastUserSwitchApplet") != 0) {
- return FALSE;
- }
-
- /* Global GdmManager */
if (!first_time) {
- int argc = 1;
- char *argv[2] = { "gdm-user-switch-applet", NULL};
-
first_time = TRUE;
- program = gnome_program_init ("gdm-user-switch-applet",
- VERSION,
- LIBGNOME_MODULE,
- argc, argv,
- GNOME_PROGRAM_STANDARD_PROPERTIES,
- NULL);
-
/* Do this here so it's only done once. */
gtk_rc_parse_string ("style \"gdm-user-switch-menubar-style\"\n"
"{\n"
@@ -1551,7 +1037,7 @@
adata->user_menu_item_quark = g_quark_from_string (tmp);
g_free (tmp);
- if (!tooltips) {
+ if (tooltips == NULL) {
tooltips = gtk_tooltips_new ();
g_object_ref (tooltips);
gtk_object_sink (GTK_OBJECT (tooltips));
@@ -1568,9 +1054,6 @@
NULL, menu_verbs, adata);
popup_component = panel_applet_get_popup_component (applet);
- if (panel_applet_get_locked_down (applet))
- bonobo_ui_component_set_prop (popup_component, "/commands/GdmPreferences",
- "hidden", "0", NULL);
/* Hide the admin context menu items if locked down or no cmd-line */
if (gconf_client_get_bool (adata->client,
@@ -1583,8 +1066,6 @@
bonobo_ui_component_set_prop (popup_component,
"/commands/GdmUsersGroupsAdmin",
"hidden", "1", NULL);
- bonobo_ui_component_set_prop (popup_component, "/commands/GdmGdmSetup",
- "hidden", "1", NULL);
} else {
#ifndef USERS_ADMIN
# ifdef GDM_SETUP
@@ -1598,12 +1079,6 @@
"hidden", "1",
NULL);
#endif /* !USERS_ADMIN */
-
-#ifndef GDM_SETUP
- bonobo_ui_component_set_prop (popup_component, "/commands/GdmGdmSetup",
- "hidden", "1",
- NULL);
-#endif /* !GDM_SETUP */
}
/* Hide the gdmphotosetup item if it can't be found in the path. */
@@ -1617,22 +1092,27 @@
g_free (tmp);
}
- panel_applet_add_preferences (applet,
- "/schemas/apps/gdm-user-switch-applet/per-applet",
- NULL);
- g_signal_connect (adata->applet, "style-set",
+ g_signal_connect (adata->applet,
+ "style-set",
G_CALLBACK (applet_style_set_cb), adata);
- g_signal_connect (applet, "change-background",
+ g_signal_connect (applet,
+ "change-background",
G_CALLBACK (applet_change_background_cb), adata);
- g_signal_connect (applet, "size-allocate",
+ g_signal_connect (applet,
+ "size-allocate",
G_CALLBACK (applet_size_allocate_cb), adata);
- g_signal_connect (applet, "key-press-event",
+ g_signal_connect (applet,
+ "key-press-event",
G_CALLBACK (applet_key_press_event_cb), adata);
- g_signal_connect_after (applet, "focus-in-event",
+ g_signal_connect_after (applet,
+ "focus-in-event",
G_CALLBACK (gtk_widget_queue_draw), NULL);
- g_signal_connect_after (applet, "focus-out-event",
+ g_signal_connect_after (applet,
+ "focus-out-event",
G_CALLBACK (gtk_widget_queue_draw), NULL);
- g_object_set_data_full (G_OBJECT (applet), "gdm-applet-data", adata,
+ g_object_set_data_full (G_OBJECT (applet),
+ "gdm-applet-data",
+ adata,
(GDestroyNotify) gdm_applet_data_free);
adata->menubar = gtk_menu_bar_new ();
@@ -1654,35 +1134,18 @@
gtk_container_add (GTK_CONTAINER (menuitem), hbox);
gtk_widget_show (hbox);
- value = panel_applet_gconf_get_string (applet, DISPLAY_KEY, NULL);
- if (value) {
- if (strcmp (value, "username") == 0) {
- GdmUser *user;
-
- user = gdm_user_manager_get_user_by_uid (adata->manager, getuid ());
- adata->imglabel = gtk_label_new (gdm_user_get_real_name (user));
- adata->user_notify_id =
- g_signal_connect (user, "notify::display-name",
- G_CALLBACK (user_notify_display_name_cb),
- adata->imglabel);
- gtk_box_pack_start (GTK_BOX (hbox), adata->imglabel, TRUE, TRUE, 0);
- gtk_widget_show (adata->imglabel);
- } else if (strcmp (value, "icon") == 0) {
- adata->imglabel = gtk_image_new_from_icon_name ("stock_people",
- GTK_ICON_SIZE_MENU);
- gtk_container_add (GTK_CONTAINER (hbox), adata->imglabel);
- gtk_widget_show (adata->imglabel);
- } else {
- adata->imglabel = gtk_label_new (_("Users"));
- gtk_box_pack_start (GTK_BOX (hbox), adata->imglabel, TRUE, TRUE, 0);
- gtk_widget_show (adata->imglabel);
- }
- } else {
- adata->imglabel = gtk_label_new (_("Users"));
+ {
+ GdmUser *user;
+
+ user = gdm_user_manager_get_user_by_uid (adata->manager, getuid ());
+ adata->imglabel = gtk_label_new (gdm_user_get_real_name (user));
+ adata->user_notify_id = g_signal_connect (user,
+ "notify::display-name",
+ G_CALLBACK (user_notify_display_name_cb),
+ adata->imglabel);
gtk_box_pack_start (GTK_BOX (hbox), adata->imglabel, TRUE, TRUE, 0);
gtk_widget_show (adata->imglabel);
}
- g_free (value);
adata->menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), adata->menu);
@@ -1692,8 +1155,6 @@
G_CALLBACK (menu_expose_cb), adata);
gtk_widget_show (adata->menu);
- active_only = gconf_client_get_bool (adata->client, ACTIVE_ONLY_KEY, NULL);
-
/* This next part populates the list with all the users we currently know
* about. For almost all cases, this is the empty list, because we're
* asynchronous, and the data hasn't come back from the callback saying who
@@ -1703,41 +1164,23 @@
* depending on getting data from the callback like the first one.
*/
users = gdm_user_manager_list_users (adata->manager);
- while (users) {
- menuitem = gdm_user_menu_item_new (users->data);
- g_object_set_qdata (users->data, adata->user_menu_item_quark, menuitem);
- g_signal_connect (menuitem, "style-set",
- G_CALLBACK (menuitem_style_set_cb), adata);
- g_signal_connect (menuitem, "destroy",
- G_CALLBACK (menuitem_destroy_cb), adata);
- g_signal_connect (menuitem, "activate",
- G_CALLBACK (user_item_activate_cb), adata);
- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), menuitem);
- adata->items = g_slist_prepend (adata->items, menuitem);
-
- if (active_only) {
- guint num;
- num = gdm_user_get_num_sessions (users->data);
- if (num > 0) {
- gtk_widget_show (menuitem);
- }
- } else {
- gtk_widget_show (menuitem);
- }
- g_signal_connect (users->data, "sessions-changed",
- G_CALLBACK (user_sessions_changed_cb), adata);
+ while (users != NULL) {
+ add_user (adata, users->data);
users = g_slist_delete_link (users, users);
}
- g_signal_connect (adata->manager, "user-added",
- G_CALLBACK (manager_user_added_cb), adata);
+ g_signal_connect (adata->manager,
+ "user-added",
+ G_CALLBACK (manager_user_added_cb),
+ adata);
adata->separator_item = gtk_separator_menu_item_new ();
gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), adata->separator_item);
adata->items = g_slist_prepend (adata->items, adata->separator_item);
+ gtk_widget_show (adata->separator_item);
- adata->login_screen_item = gtk_image_menu_item_new_with_label (_("Other"));
+ adata->login_screen_item = gtk_image_menu_item_new_with_label (_("Other..."));
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->login_screen_item),
gtk_image_new ());
gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu),
@@ -1749,68 +1192,14 @@
g_signal_connect (adata->login_screen_item, "activate",
G_CALLBACK (login_screen_activate_cb), adata);
adata->items = g_slist_prepend (adata->items, adata->login_screen_item);
+ gtk_widget_show (adata->login_screen_item);
- adata->login_window_item = gtk_image_menu_item_new_with_label (_("Login Window"));
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->login_window_item),
- gtk_image_new ());
- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu),
- adata->login_window_item);
- g_signal_connect (adata->login_window_item, "style-set",
- G_CALLBACK (menuitem_style_set_cb), adata);
- g_signal_connect (adata->login_window_item, "destroy",
- G_CALLBACK (menuitem_destroy_cb), adata);
- g_signal_connect (adata->login_window_item, "activate",
- G_CALLBACK (login_window_activate_cb), adata);
- adata->items = g_slist_prepend (adata->items, adata->login_window_item);
-
- use_xnest = panel_applet_gconf_get_bool (applet, USE_XNEST_KEY, NULL);
- value = gconf_client_get_string (adata->client, SHOW_SCREEN_KEY, NULL);
- reset_login_screen_item (adata->login_screen_item, use_xnest, value);
- g_free (value);
-
- value = gconf_client_get_string (adata->client, SHOW_WINDOW_KEY, NULL);
- reset_login_window_item (adata->login_window_item, use_xnest, value);
- g_free (value);
-
- if (GTK_WIDGET_VISIBLE (adata->login_screen_item) ||
- GTK_WIDGET_VISIBLE (adata->login_window_item))
- gtk_widget_show (adata->separator_item);
- else
- gtk_widget_hide (adata->separator_item);
-
- key = panel_applet_gconf_get_full_key (applet, DISPLAY_KEY);
- if (key) {
- char *path;
-
- path = g_path_get_dirname (key);
- g_free (key);
- adata->client_notify_applet_id =
- gconf_client_notify_add (adata->client,
- path,
- (GConfClientNotifyFunc)client_notify_applet_func,
- adata,
- NULL,
- NULL);
- g_free (path);
- }
-
- gconf_client_add_dir (adata->client, GLOBAL_DIR,
- GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
- adata->client_notify_global_id =
- gconf_client_notify_add (adata->client,
- GLOBAL_DIR,
- (GConfClientNotifyFunc)client_notify_global_func,
- adata,
- NULL,
- NULL);
-
- adata->client_notify_lockdown_id =
- gconf_client_notify_add (adata->client,
- LOCKDOWN_KEY,
- (GConfClientNotifyFunc)client_notify_lockdown_func,
- adata,
- NULL,
- NULL);
+ adata->client_notify_lockdown_id = gconf_client_notify_add (adata->client,
+ LOCKDOWN_KEY,
+ (GConfClientNotifyFunc)client_notify_lockdown_func,
+ adata,
+ NULL,
+ NULL);
adata->items = g_slist_sort_with_data (adata->items,
sort_menu_comparedatafunc, adata);
@@ -1821,8 +1210,18 @@
gtk_widget_show (GTK_WIDGET (applet));
}
- g_object_unref (program);
-
return TRUE;
}
+static gboolean
+applet_factory (PanelApplet *applet,
+ const char *iid,
+ gpointer data)
+{
+ gboolean ret;
+ ret = FALSE;
+ if (strcmp (iid, "OAFIID:GNOME_FastUserSwitchApplet") == 0) {
+ ret = fill_applet (applet);
+ }
+ return ret;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]