diff options
author | Koen Kooi <koen@dominion.thruhere.net> | 2011-06-21 12:50:56 +0200 |
---|---|---|
committer | Koen Kooi <koen@dominion.thruhere.net> | 2011-06-21 12:55:41 +0200 |
commit | 972778cee8ace679228e4763152aaee648101127 (patch) | |
tree | 7c07c0a495a4783d478bf0aebe3bb848f803021f /meta-gnome/recipes-gnome/gdm | |
parent | 31be11bf1c4c4529cb9010c87bc105693b939dcf (diff) | |
download | meta-openembedded-contrib-972778cee8ace679228e4763152aaee648101127.tar.gz |
gdm: fix build against newer gnome-panel
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Diffstat (limited to 'meta-gnome/recipes-gnome/gdm')
-rw-r--r-- | meta-gnome/recipes-gnome/gdm/gdm-2.32.2/0001-Remove-user-switch-applet.patch | 2281 | ||||
-rw-r--r-- | meta-gnome/recipes-gnome/gdm/gdm_2.32.2.bb | 3 |
2 files changed, 2283 insertions, 1 deletions
diff --git a/meta-gnome/recipes-gnome/gdm/gdm-2.32.2/0001-Remove-user-switch-applet.patch b/meta-gnome/recipes-gnome/gdm/gdm-2.32.2/0001-Remove-user-switch-applet.patch new file mode 100644 index 0000000000..03f51c1e45 --- /dev/null +++ b/meta-gnome/recipes-gnome/gdm/gdm-2.32.2/0001-Remove-user-switch-applet.patch @@ -0,0 +1,2281 @@ +From 0a4fe802edbd2e8a016161f08283e4b467c6762e Mon Sep 17 00:00:00 2001 +From: Koen Kooi <koen@dominion.thruhere.net> +Date: Tue, 21 Jun 2011 12:48:39 +0200 +Subject: [PATCH] Remove user switch applet + +This hasn't been updated to work with gnome-panel > 2.30.0, so just drop it + +Upstream-status: unacceptable, backport + +Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> +--- + configure.ac | 8 - + gui/Makefile.am | 2 - + .../GNOME_FastUserSwitchApplet.server.in.in | 38 - + .../GNOME_FastUserSwitchApplet.xml | 20 - + gui/user-switch-applet/Makefile.am | 67 - + gui/user-switch-applet/applet.c | 1662 -------------------- + gui/user-switch-applet/gdm-entry-menu-item.c | 304 ---- + gui/user-switch-applet/gdm-entry-menu-item.h | 51 - + po/POTFILES.in | 4 - + po/POTFILES.skip | 1 - + 10 files changed, 0 insertions(+), 2157 deletions(-) + delete mode 100644 gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in + delete mode 100644 gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml + delete mode 100644 gui/user-switch-applet/Makefile.am + delete mode 100644 gui/user-switch-applet/applet.c + delete mode 100644 gui/user-switch-applet/gdm-entry-menu-item.c + delete mode 100644 gui/user-switch-applet/gdm-entry-menu-item.h + +diff --git a/configure.ac b/configure.ac +index 841efe0..a834110 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -149,13 +149,6 @@ PKG_CHECK_MODULES(SIMPLE_CHOOSER, + AC_SUBST(SIMPLE_CHOOSER_CFLAGS) + AC_SUBST(SIMPLE_CHOOSER_LIBS) + +-PKG_CHECK_MODULES(APPLET, +- dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION +- gtk+-2.0 >= $GTK_REQUIRED_VERSION +- libpanelapplet-2.0 >= $GNOME_PANEL_REQUIRED_VERSION) +-AC_SUBST(APPLET_CFLAGS) +-AC_SUBST(APPLET_LIBS) +- + PLUGIN_LIBTOOL_FLAGS="-export_dynamic -module -avoid-version" + AC_SUBST(PLUGIN_LIBTOOL_FLAGS) + +@@ -1340,7 +1333,6 @@ gui/Makefile + gui/simple-greeter/Makefile + gui/simple-greeter/libnotificationarea/Makefile + gui/simple-chooser/Makefile +-gui/user-switch-applet/Makefile + utils/Makefile + data/gdm.conf + data/Makefile +diff --git a/gui/Makefile.am b/gui/Makefile.am +index 326239f..bda3f7a 100644 +--- a/gui/Makefile.am ++++ b/gui/Makefile.am +@@ -2,7 +2,6 @@ NULL = + + SUBDIRS = \ + simple-greeter \ +- user-switch-applet \ + $(NULL) + + if XDMCP_SUPPORT +@@ -12,5 +11,4 @@ endif + DIST_SUBDIRS = \ + simple-chooser \ + simple-greeter \ +- user-switch-applet \ + $(NULL) +diff --git a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in b/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in +deleted file mode 100644 +index a9b775f..0000000 +--- a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in ++++ /dev/null +@@ -1,38 +0,0 @@ +-<oaf_info> +- <oaf_server iid="OAFIID:GNOME_FastUserSwitchApplet_Factory" type="exe" +- location="@LIBEXECDIR@/gdm-user-switch-applet"> +- +- <oaf_attribute name="repo_ids" type="stringv"> +- <item value="IDL:Bonobo/GenericFactory:1.0"/> +- <item value="IDL:Bonobo/Unknown:1.0"/> +- </oaf_attribute> +- <oaf_attribute name="name" type="string" _value="User Switcher Applet Factory"/> +- <oaf_attribute name="description" type="string" _value="User Switcher Applet Factory"/> +- <oaf_attribute name="bonobo:environment" type="stringv"> +- <item value="DBUS_SESSION_BUS_ADDRESS"/> +- <oaf_attribute name="bugzilla:bugzilla" type="string" value="GNOME"/> +- <oaf_attribute name="bugzilla:product" type="string" value="gdm"/> +- <oaf_attribute name="bugzilla:component" type="string" value="general"/> +- <oaf_attribute name="bugzilla:version" type="string" value="@VERSION@"/> +- <oaf_attribute name="bugzilla:other_binaries" type="string" value="gdm-user-switch-applet"/> +- </oaf_attribute> +- </oaf_server> +- +- <oaf_server iid="OAFIID:GNOME_FastUserSwitchApplet" type="factory" +- location="OAFIID:GNOME_FastUserSwitchApplet_Factory"> +- +- <oaf_attribute name="repo_ids" type="stringv"> +- <item value="IDL:GNOME/Vertigo/PanelAppletShell:1.0"/> +- <item value="IDL:Bonobo/Control:1.0"/> +- <item value="IDL:Bonobo/Unknown:1.0"/> +- </oaf_attribute> +- <oaf_attribute name="name" type="string" _value="User Switcher"/> +- <oaf_attribute name="description" type="string" _value="A menu to quickly switch between users"/> +- <oaf_attribute name="panel:icon" type="string" value="stock_people"/> +- <oaf_attribute name="bugzilla:bugzilla" type="string" value="GNOME"/> +- <oaf_attribute name="bugzilla:product" type="string" value="gdm"/> +- <oaf_attribute name="bugzilla:component" type="string" value="general"/> +- <oaf_attribute name="bugzilla:version" type="string" value="@VERSION@"/> +- <oaf_attribute name="bugzilla:other_binaries" type="string" value="gdm-user-switch-applet"/> +- </oaf_server> +-</oaf_info> +diff --git a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml b/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml +deleted file mode 100644 +index e1845c8..0000000 +--- a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml ++++ /dev/null +@@ -1,20 +0,0 @@ +-<Root> +- <popups> +- <popup name="button3"> +- <menuitem +- name="About Me Item" +- verb="GdmAboutMe" +- _label="Edit Personal _Information"/> +- <menuitem +- name="Users and Groups Admin Item" +- verb="GdmUsersGroupsAdmin" +- _label="_Edit Users and Groups"/> +- <menuitem +- name="About Item" +- verb="GdmAbout" +- _label="_About" +- pixtype="stock" +- pixname="gtk-about"/> +- </popup> +- </popups> +-</Root> +diff --git a/gui/user-switch-applet/Makefile.am b/gui/user-switch-applet/Makefile.am +deleted file mode 100644 +index 2d2cdc0..0000000 +--- a/gui/user-switch-applet/Makefile.am ++++ /dev/null +@@ -1,67 +0,0 @@ +-NULL = +- +-AM_CPPFLAGS = \ +- -I$(top_srcdir)/gui/simple-greeter \ +- -I$(top_srcdir)/common \ +- -DPREFIX=\""$(prefix)"\" \ +- -DLIBDIR=\""$(libdir)"\" \ +- -DDATADIR=\""$(datadir)"\" \ +- -DSYSCONFDIR=\""$(sysconfdir)"\" \ +- -DLIBLOCALEDIR=\""$(prefix)/lib/locale"\" \ +- -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ +- -DGLADEDIR=\""$(pkgdatadir)"\" \ +- -DLIBEXECDIR=\""$(libexecdir)"\" \ +- -DSBINDIR=\""$(sbindir)"\" \ +- -DGDMCONFDIR=\"$(gdmconfdir)\" \ +- $(GTK_CFLAGS) \ +- $(APPLET_CFLAGS) \ +- $(NULL) +- +-libexec_PROGRAMS = \ +- gdm-user-switch-applet \ +- $(NULL) +- +-gdm_user_switch_applet_SOURCES = \ +- applet.c \ +- gdm-entry-menu-item.h \ +- gdm-entry-menu-item.c \ +- $(NULL) +- +-gdm_user_switch_applet_LDADD = \ +- $(top_builddir)/gui/simple-greeter/libgdmuser.la \ +- $(top_builddir)/common/libgdmcommon.la \ +- $(COMMON_LIBS) \ +- $(APPLET_LIBS) \ +- $(NULL) +- +-# Bonobo UI +-uidir = $(datadir)/gnome-2.0/ui +-ui_DATA = \ +- GNOME_FastUserSwitchApplet.xml \ +- $(NULL) +- +-# Bonobo .server +-serverdir = $(libdir)/bonobo/servers +-server_in_files = \ +- GNOME_FastUserSwitchApplet.server.in \ +- $(NULL) +-server_DATA = $(server_in_files:.server.in=.server) +- +-$(server_in_files): $(server_in_files:.server.in=.server.in.in) +- sed -e "s|\@LIBEXECDIR\@|$(libexecdir)|" -e "s|\@VERSION\@|$(VERSION)|" $< > $@ +- +-@INTLTOOL_SERVER_RULE@ +- +-EXTRA_DIST = \ +- $(ui_DATA) \ +- GNOME_FastUserSwitchApplet.server.in.in \ +- $(NULL) +- +-DISTCLEANFILES = \ +- $(server_in_files) \ +- $(server_DATA) \ +- $(NULL) +- +-MAINTAINERCLEANFILES = \ +- *~ \ +- Makefile.in +diff --git a/gui/user-switch-applet/applet.c b/gui/user-switch-applet/applet.c +deleted file mode 100644 +index b4f944c..0000000 +--- a/gui/user-switch-applet/applet.c ++++ /dev/null +@@ -1,1662 +0,0 @@ +-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- +- * +- * Copyright (C) 2004-2005 James M. Cape <jcape@ignore-your.tv>. +- * Copyright (C) 2008 Red Hat, Inc. +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#include "config.h" +- +-#include <string.h> +-#include <unistd.h> +-#include <stdlib.h> +-#include <sys/types.h> +- +-#include <glib/gi18n.h> +-#include <gdk/gdkkeysyms.h> +-#include <gtk/gtk.h> +- +-#include <gconf/gconf.h> +-#include <gconf/gconf-client.h> +- +-#include <dbus/dbus-glib.h> +- +-#include <bonobo/bonobo-main.h> +-#include <bonobo/bonobo-ui-util.h> +- +-#include <panel-applet.h> +-#include <panel-applet-gconf.h> +- +-#include "gdm-user-manager.h" +-#include "gdm-entry-menu-item.h" +-#include "gdm-settings-client.h" +- +-#define LOCKDOWN_DIR "/desktop/gnome/lockdown" +-#define LOCKDOWN_USER_SWITCHING_KEY LOCKDOWN_DIR "/disable_user_switching" +-#define LOCKDOWN_LOCK_SCREEN_KEY LOCKDOWN_DIR "/disable_lock_screen" +-#define LOCKDOWN_COMMAND_LINE_KEY LOCKDOWN_DIR "/disable_command_line" +- +-typedef enum { +- GSM_PRESENCE_STATUS_AVAILABLE = 0, +- GSM_PRESENCE_STATUS_INVISIBLE, +- GSM_PRESENCE_STATUS_BUSY, +- GSM_PRESENCE_STATUS_IDLE, +-} GsmPresenceStatus; +- +-typedef struct _GdmAppletData +-{ +- PanelApplet *applet; +- +- GConfClient *client; +- GdmUserManager *manager; +- GdmUser *user; +- +- GtkWidget *menubar; +- GtkWidget *menuitem; +- GtkWidget *menu; +-#ifdef BUILD_PRESENSE_STUFF +- GtkWidget *user_item; +-#endif +- GtkWidget *control_panel_item; +- GtkWidget *account_item; +- GtkWidget *lock_screen_item; +- GtkWidget *login_screen_item; +- GtkWidget *quit_session_item; +- +- guint client_notify_lockdown_id; +- +- guint current_status; +- guint user_loaded_notify_id; +- guint user_changed_notify_id; +- gint8 pixel_size; +- gint panel_size; +- GtkIconSize icon_size; +-#ifdef BUILD_PRESENSE_STUFF +- DBusGProxy *presence_proxy; +-#endif +-} GdmAppletData; +- +-typedef struct _SelectorResponseData +-{ +- GdmAppletData *adata; +- GtkRadioButton *radio; +-} SelectorResponseData; +- +-static void reset_icon (GdmAppletData *adata); +-static void update_label (GdmAppletData *adata); +- +-static gboolean applet_factory (PanelApplet *applet, +- const char *iid, +- gpointer data); +- +-PANEL_APPLET_BONOBO_FACTORY ("OAFIID:GNOME_FastUserSwitchApplet_Factory", +- PANEL_TYPE_APPLET, +- "gdm-user-switch-applet", "0", +- (PanelAppletFactoryCallback)applet_factory, +- NULL) +- +-static void +-about_me_cb (BonoboUIComponent *ui_container, +- gpointer data, +- const char *cname) +-{ +- GError *err; +- +- err = NULL; +- if (! g_spawn_command_line_async ("gnome-about-me", &err)) { +- g_critical ("Could not run `gnome-about-me': %s", +- err->message); +- g_error_free (err); +- bonobo_ui_component_set_prop (ui_container, +- "/commands/GdmAboutMe", +- "hidden", "1", +- NULL); +- } +-} +- +-/* +- * gnome-panel/applets/wncklet/window-menu.c:window_filter_button_press() +- * +- * Copyright (C) 2005 James M. Cape. +- * Copyright (C) 2003 Sun Microsystems, Inc. +- * Copyright (C) 2001 Free Software Foundation, Inc. +- * Copyright (C) 2000 Helix Code, Inc. +- */ +-static gboolean +-menubar_button_press_event_cb (GtkWidget *menubar, +- GdkEventButton *event, +- GdmAppletData *adata) +-{ +- if (event->button != 1) { +- g_signal_stop_emission_by_name (menubar, "button-press-event"); +- /* Reset the login window item */ +- } +- +- return FALSE; +-} +- +-static void +-about_cb (BonoboUIComponent *ui_container, +- gpointer data, +- const char *cname) +-{ +- static const char *authors[] = { +- "James M. Cape <jcape@ignore-your.tv>", +- "Thomas Thurman <thomas@thurman.org.uk>", +- "William Jon McCann <jmccann@redhat.com>", +- NULL +- }; +- static char *license[] = { +- N_("The User Switch Applet is free software; you can redistribute it and/or modify " +- "it under the terms of the GNU General Public License as published by " +- "the Free Software Foundation; either version 2 of the License, or " +- "(at your option) any later version."), +- N_("This program is distributed in the hope that it will be useful, " +- "but WITHOUT ANY WARRANTY; without even the implied warranty of " +- "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " +- "GNU General Public License for more details."), +- N_("You should have received a copy of the GNU General Public License " +- "along with this program; if not, write to the Free Software " +- "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA "), +- NULL +- }; +- char *license_i18n; +- +- license_i18n = g_strconcat (_(license[0]), "\n\n", _(license[1]), "\n\n", _(license[2]), NULL); +- +- gtk_show_about_dialog (NULL, +- "version", VERSION, +- "copyright", "Copyright \xc2\xa9 2004-2005 James M. Cape.\n" +- "Copyright \xc2\xa9 2006 Thomas Thurman.\n" +- "Copyright \xc2\xa9 2008 Red Hat, Inc.", +- "comments", _("A menu to quickly switch between users."), +- "authors", authors, +- "license", license_i18n, +- "wrap-license", TRUE, +- "translator-credits", _("translator-credits"), +- "logo-icon-name", "stock_people", +- NULL); +- +- g_free (license_i18n); +-} +- +- +-static void +-admin_cb (BonoboUIComponent *ui_container, +- gpointer data, +- const char *cname) +-{ +-#ifdef USERS_ADMIN +- char **args; +- gboolean res; +- GError *err; +- +- err = NULL; +- if (!g_shell_parse_argv (USERS_ADMIN, NULL, &args, &err)) { +- g_critical ("Could not parse users and groups management command line `%s': %s", +- USERS_ADMIN, err->message); +- return; +- } +- +- res = 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); +- if (! res) { +- g_critical ("Could not run `%s' to manage users and groups: %s", +- USERS_ADMIN, err->message); +- g_error_free (err); +- } +- g_strfreev (args); +-#endif /* USERS_ADMIN */ +-} +- +-static void +-set_menuitem_icon (BonoboUIComponent *component, +- const char *item_path, +- GtkIconTheme *theme, +- const char *icon_name, +- gint icon_size) +-{ +- GdkPixbuf *pixbuf; +- int width; +- int height; +- +- pixbuf = gtk_icon_theme_load_icon (theme, icon_name, icon_size, 0, NULL); +- if (pixbuf == NULL) { +- return; +- } +- +- width = gdk_pixbuf_get_width (pixbuf); +- height = gdk_pixbuf_get_height (pixbuf); +- if (width > icon_size + 4 || height > icon_size + 4) { +- GdkPixbuf *tmp; +- if (height > width) { +- width *= (gdouble) icon_size / (gdouble) height; +- height = icon_size; +- } else { +- height *= (gdouble) icon_size / (gdouble) width; +- width = icon_size; +- } +- tmp = gdk_pixbuf_scale_simple (pixbuf, width, height, GDK_INTERP_BILINEAR); +- g_object_unref (pixbuf); +- pixbuf = tmp; +- } +- +- bonobo_ui_util_set_pixbuf (component, item_path, pixbuf, NULL); +- g_object_unref (pixbuf); +-} +- +-static void +-applet_style_set_cb (GtkWidget *widget, +- GtkStyle *old_style, +- gpointer data) +-{ +- BonoboUIComponent *component; +- GdkScreen *screen; +- GtkIconTheme *theme; +- int width; +- int height; +- int icon_size; +- +- if (gtk_widget_has_screen (widget)) { +- screen = gtk_widget_get_screen (widget); +- } 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)) { +- icon_size = MAX (width, height); +- } 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); +-} +- +-static void +-applet_change_background_cb (PanelApplet *applet, +- PanelAppletBackgroundType type, +- GdkColor *color, +- GdkPixmap *pixmap, +- GdmAppletData *adata) +-{ +- GtkRcStyle *rc_style; +- GtkStyle *style; +- +- gtk_widget_set_style (adata->menubar, NULL); +- rc_style = gtk_rc_style_new (); +- gtk_widget_modify_style (GTK_WIDGET (adata->menubar), rc_style); +- g_object_unref (rc_style); +- +- switch (type) { +- case PANEL_NO_BACKGROUND: +- break; +- case PANEL_COLOR_BACKGROUND: +- gtk_widget_modify_bg (adata->menubar, GTK_STATE_NORMAL, color); +- break; +- case PANEL_PIXMAP_BACKGROUND: +- style = gtk_style_copy (gtk_widget_get_style (adata->menubar)); +- if (style->bg_pixmap[GTK_STATE_NORMAL]) { +- g_object_unref (style->bg_pixmap[GTK_STATE_NORMAL]); +- } +- +- style->bg_pixmap[GTK_STATE_NORMAL] = g_object_ref (pixmap); +- gtk_widget_set_style (adata->menubar, style); +- g_object_unref (style); +- break; +- } +-} +- +-/* +- * gnome-panel/applets/wncklet/window-menu.c:window_menu_key_press_event() +- * +- * Copyright (C) 2003 Sun Microsystems, Inc. +- * Copyright (C) 2001 Free Software Foundation, Inc. +- * Copyright (C) 2000 Helix Code, Inc. +- */ +-static gboolean +-applet_key_press_event_cb (GtkWidget *widget, +- GdkEventKey *event, +- GdmAppletData *adata) +-{ +- GtkMenuShell *menu_shell; +- +- switch (event->keyval) { +- case GDK_KP_Enter: +- case GDK_ISO_Enter: +- case GDK_3270_Enter: +- case GDK_Return: +- case GDK_space: +- case GDK_KP_Space: +- menu_shell = GTK_MENU_SHELL (adata->menubar); +- /* +- * We need to call _gtk_menu_shell_activate() here as is done in +- * window_key_press_handler in gtkmenubar.c which pops up menu +- * when F10 is pressed. +- * +- * As that function is private its code is replicated here. +- */ +- if (!menu_shell->active) { +- gtk_grab_add (GTK_WIDGET (menu_shell)); +- menu_shell->have_grab = TRUE; +- menu_shell->active = TRUE; +- } +- +- gtk_menu_shell_select_first (menu_shell, FALSE); +- return TRUE; +- default: +- break; +- } +- +- return FALSE; +-} +- +-static void +-set_item_text_angle_and_alignment (GtkWidget *item, +- double text_angle, +- float xalign, +- float yalign) +-{ +- GtkWidget *label; +- +- label = gtk_bin_get_child (GTK_BIN (item)); +- +- gtk_label_set_angle (GTK_LABEL (label), text_angle); +- +- gtk_misc_set_alignment (GTK_MISC (label), xalign, yalign); +-} +- +-/* +- * gnome-panel/applets/wncklet/window-menu.c:window_menu_size_allocate() +- * +- * Copyright (C) 2003 Sun Microsystems, Inc. +- * Copyright (C) 2001 Free Software Foundation, Inc. +- * Copyright (C) 2000 Helix Code, Inc. +- */ +-static void +-applet_size_allocate_cb (GtkWidget *widget, +- GtkAllocation *allocation, +- GdmAppletData *adata) +-{ +- GList *children; +- GtkWidget *top_item; +- PanelAppletOrient orient; +- gint pixel_size; +- gdouble text_angle; +- GtkPackDirection pack_direction; +- float text_xalign; +- float text_yalign; +- +- pack_direction = GTK_PACK_DIRECTION_LTR; +- text_angle = 0.0; +- text_xalign = 0.0; +- text_yalign = 0.5; +- +- children = gtk_container_get_children (GTK_CONTAINER (adata->menubar)); +- top_item = GTK_WIDGET (children->data); +- g_list_free (children); +- +- orient = panel_applet_get_orient (PANEL_APPLET (widget)); +- +- switch (orient) { +- case PANEL_APPLET_ORIENT_UP: +- case PANEL_APPLET_ORIENT_DOWN: +- gtk_widget_set_size_request (top_item, -1, allocation->height); +- pixel_size = allocation->height - gtk_widget_get_style (top_item)->ythickness * 2; +- break; +- case PANEL_APPLET_ORIENT_LEFT: +- gtk_widget_set_size_request (top_item, allocation->width, -1); +- pixel_size = allocation->width - gtk_widget_get_style (top_item)->xthickness * 2; +- pack_direction = GTK_PACK_DIRECTION_TTB; +- text_angle = 270.0; +- text_xalign = 0.5; +- text_yalign = 0.0; +- break; +- case PANEL_APPLET_ORIENT_RIGHT: +- gtk_widget_set_size_request (top_item, allocation->width, -1); +- pixel_size = allocation->width - gtk_widget_get_style (top_item)->xthickness * 2; +- pack_direction = GTK_PACK_DIRECTION_BTT; +- text_angle = 90.0; +- text_xalign = 0.5; +- text_yalign = 0.0; +- break; +- default: +- g_assert_not_reached (); +- break; +- } +- +- gtk_menu_bar_set_pack_direction (GTK_MENU_BAR (adata->menubar), +- pack_direction); +- gtk_menu_bar_set_child_pack_direction (GTK_MENU_BAR (adata->menubar), +- pack_direction); +- +- set_item_text_angle_and_alignment (adata->menuitem, +- text_angle, +- text_xalign, +- text_yalign); +- +- if (adata->panel_size != pixel_size) { +- adata->panel_size = pixel_size; +- reset_icon (adata); +- } +-} +- +- +-static void +-gdm_applet_data_free (GdmAppletData *adata) +-{ +- gconf_client_notify_remove (adata->client, adata->client_notify_lockdown_id); +- +- if (adata->user_loaded_notify_id != 0) { +- g_signal_handler_disconnect (adata->user, adata->user_loaded_notify_id); +- } +- +- if (adata->user_changed_notify_id != 0) { +- g_signal_handler_disconnect (adata->user, adata->user_changed_notify_id); +- } +- +-#ifdef BUILD_PRESENSE_STUFF +- if (adata->presence_proxy != NULL) { +- g_object_unref (adata->presence_proxy); +- } +-#endif +- +- if (adata->user != NULL) { +- g_object_unref (adata->user); +- } +- g_object_unref (adata->client); +- g_object_unref (adata->manager); +- +- g_free (adata); +-} +- +- +-/* +- * gnome-panel/applets/wncklet/window-menu.c:window_menu_on_expose() +- * +- * Copyright (C) 2003 Sun Microsystems, Inc. +- * Copyright (C) 2001 Free Software Foundation, Inc. +- * Copyright (C) 2000 Helix Code, Inc. +- */ +-static gboolean +-menubar_expose_event_cb (GtkWidget *widget, +- GdkEventExpose *event, +- GdmAppletData *adata) +-{ +- if (gtk_widget_has_focus (GTK_WIDGET (adata->applet))) +- gtk_paint_focus (gtk_widget_get_style (widget), +- gtk_widget_get_window (widget), +- gtk_widget_get_state (widget), +- NULL, widget, "menu-applet", 0, 0, -1, -1); +- +- return FALSE; +-} +- +-static void +-menu_style_set_cb (GtkWidget *menu, +- GtkStyle *old_style, +- GdmAppletData *adata) +-{ +- GtkSettings *settings; +- int width; +- int height; +- +- adata->icon_size = gtk_icon_size_from_name ("panel-menu"); +- +- 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)) { +- settings = gtk_settings_get_for_screen (gtk_widget_get_screen (menu)); +- } else { +- settings = gtk_settings_get_default (); +- } +- +- if (!gtk_icon_size_lookup_for_settings (settings, adata->icon_size, +- &width, &height)) { +- adata->pixel_size = -1; +- } else { +- adata->pixel_size = MAX (width, height); +- } +-} +- +-static void +-menuitem_style_set_cb (GtkWidget *menuitem, +- GtkStyle *old_style, +- GdmAppletData *adata) +-{ +- GtkWidget *image; +- +- if (GDM_IS_ENTRY_MENU_ITEM (menuitem)) { +- } else { +- const char *icon_name; +- +- if (menuitem == adata->login_screen_item) { +- icon_name = "system-users"; +- } else if (menuitem == adata->lock_screen_item) { +- icon_name = "system-lock-screen"; +- } else if (menuitem == adata->quit_session_item) { +- icon_name = "system-log-out"; +- } else if (menuitem == adata->account_item) { +- icon_name = "user-info"; +- } else if (menuitem == adata->control_panel_item) { +- icon_name = "preferences-desktop"; +- } 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); +- } +-} +- +-static void +-on_user_changed (GdmUser *user, +- GdmAppletData *adata) +-{ +- g_debug ("user changed"); +- update_label (adata); +- reset_icon (adata); +-} +- +-/* Called every time the menu is displayed (and also for some reason +- * immediately it's created, which does no harm). All we have to do +- * here is kick off a request to GDM to let us know which users are +- * logged in, so we can display check marks next to their names. +- */ +-static gboolean +-menu_expose_cb (GtkWidget *menu, +- gpointer data) +-{ +- char *program; +- GdmAppletData *adata = data; +- +- program = g_find_program_in_path ("gnome-control-center"); +- if (program != NULL) { +- gtk_widget_show (adata->control_panel_item); +- } else { +- gtk_widget_hide (adata->control_panel_item); +- } +- g_free (program); +- return FALSE; +-} +- +-static void +-maybe_lock_screen (GdmAppletData *adata) +-{ +- char *args[3]; +- GError *err; +- GdkScreen *screen; +- gboolean use_gscreensaver = TRUE; +- gboolean res; +- +- g_debug ("Attempting to lock screen"); +- +- 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 (args[0] == NULL) { +- return; +- } +- +- if (use_gscreensaver) { +- args[1] = "--lock"; +- } else { +- args[1] = "-lock"; +- } +- args[2] = 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 (); +- } +- +- err = NULL; +- res = gdk_spawn_on_screen (screen, +- g_get_home_dir (), +- args, +- NULL, +- 0, +- NULL, +- NULL, +- NULL, +- &err); +- if (! res) { +- g_warning (_("Can't lock screen: %s"), err->message); +- g_error_free (err); +- } +- +- if (use_gscreensaver) { +- args[1] = "--throttle"; +- } else { +- args[1] = "-throttle"; +- } +- +- err = NULL; +- res = 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); +- if (! res) { +- 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) +-{ +- guint num_sessions; +- +- g_debug ("Do user switch"); +- +- if (user == NULL) { +- gdm_user_manager_goto_login_session (adata->manager); +- goto out; +- } +- +- num_sessions = gdm_user_get_num_sessions (user); +- if (num_sessions > 0) { +- gdm_user_manager_activate_user_session (adata->manager, user); +- } else { +- gdm_user_manager_goto_login_session (adata->manager); +- } +- out: +- maybe_lock_screen (adata); +-} +- +-static void +-update_switch_user (GdmAppletData *adata) +-{ +- gboolean can_switch; +- gboolean has_other_users; +- +- can_switch = gdm_user_manager_can_switch (adata->manager); +- g_object_get (adata->manager, +- "has-multiple-users", &has_other_users, +- NULL); +- +- if (can_switch && has_other_users) { +- gtk_widget_show (adata->login_screen_item); +- } else { +- +- gtk_widget_hide (adata->login_screen_item); +- } +-} +- +-static void +-on_manager_is_loaded_changed (GdmUserManager *manager, +- GParamSpec *pspec, +- GdmAppletData *adata) +-{ +- update_switch_user (adata); +-} +- +-static void +-on_manager_has_multiple_users_changed (GdmUserManager *manager, +- GParamSpec *pspec, +- GdmAppletData *adata) +-{ +- update_switch_user (adata); +-} +- +-#ifdef BUILD_PRESENSE_STUFF +-static void +-on_user_item_activate (GtkMenuItem *item, +- GdmAppletData *adata) +-{ +- g_signal_stop_emission_by_name (item, "activate"); +-} +-#endif +- +-static void +-on_control_panel_activate (GtkMenuItem *item, +- GdmAppletData *adata) +-{ +- char *args[2]; +- GError *error; +- GdkScreen *screen; +- gboolean res; +- +- 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_account_activate (GtkMenuItem *item, +- GdmAppletData *adata) +-{ +- char *args[2]; +- GError *error; +- GdkScreen *screen; +- gboolean res; +- +- args[0] = g_find_program_in_path ("accounts-dialog"); +- if (args[0] == NULL) { +- args[0] = g_find_program_in_path ("gnome-about-me"); +- 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, +- GdmAppletData *adata) +-{ +- maybe_lock_screen (adata); +-} +- +-static void +-on_login_screen_activate (GtkMenuItem *item, +- GdmAppletData *adata) +-{ +- GdmUser *user; +- +- user = NULL; +- +- do_switch (adata, user); +-} +- +-static void +-on_quit_session_activate (GtkMenuItem *item, +- GdmAppletData *adata) +-{ +- char *args[3]; +- GError *error; +- GdkScreen *screen; +- gboolean res; +- +- args[0] = g_find_program_in_path ("gnome-session-save"); +- if (args[0] == NULL) { +- return; +- } +- +- args[1] = "--logout-dialog"; +- args[2] = 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 log out: %s"), error->message); +- g_error_free (error); +- } +- +- g_free (args[0]); +-} +- +-#ifdef BUILD_PRESENSE_STUFF +-static gboolean +-on_menu_key_press_event (GtkWidget *widget, +- GdkEventKey *event, +- GdmAppletData *adata) +-{ +- GtkWidget *entry; +- +- entry = gdm_entry_menu_item_get_entry (GDM_ENTRY_MENU_ITEM (adata->user_item)); +- +- if (GTK_WIDGET_HAS_FOCUS (entry)) { +- gtk_widget_event (entry, (GdkEvent *)event); +- return TRUE; +- } else { +- return FALSE; +- } +-} +- +-static void +-save_status (GdmAppletData *adata, +- guint status) +-{ +- if (adata->current_status != status) { +- GError *error; +- +- adata->current_status = status; +- +- g_debug ("Saving status: %u", status); +- error = NULL; +- dbus_g_proxy_call (adata->presence_proxy, +- "SetStatus", +- &error, +- G_TYPE_UINT, status, +- G_TYPE_INVALID, +- G_TYPE_INVALID); +- +- if (error != NULL) { +- g_warning ("Couldn't save presence status: %s", error->message); +- g_error_free (error); +- } +- } +-} +- +-static void +-on_status_available_activate (GtkWidget *widget, +- GdmAppletData *adata) +-{ +- +- if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) { +- save_status (adata, GSM_PRESENCE_STATUS_AVAILABLE); +- } +-} +- +-static void +-on_status_busy_activate (GtkWidget *widget, +- GdmAppletData *adata) +-{ +- if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) { +- save_status (adata, GSM_PRESENCE_STATUS_BUSY); +- } +-} +- +-static void +-on_status_invisible_activate (GtkWidget *widget, +- GdmAppletData *adata) +-{ +- if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) { +- save_status (adata, GSM_PRESENCE_STATUS_INVISIBLE); +- } +-} +- +-static struct { +- char *icon_name; +- char *display_name; +- void *menu_callback; +- GtkWidget *widget; +-} statuses[] = { +- { "user-online", N_("Available"), on_status_available_activate, NULL }, +- { "user-invisible", N_("Invisible"), on_status_invisible_activate, NULL }, +- { "user-busy", N_("Busy"), on_status_busy_activate, NULL }, +- { "user-away", N_("Away"), NULL, NULL }, +-}; +-#endif +- +-static void +-update_label (GdmAppletData *adata) +-{ +- GtkWidget *label; +- char *markup; +- +- label = gtk_bin_get_child (GTK_BIN (adata->menuitem)); +- +-#ifdef BUILD_PRESENSE_STUFF +- markup = g_strdup_printf ("<b>%s</b> <small>(%s)</small>", +- gdm_user_get_real_name (GDM_USER (adata->user)), +- _(statuses[adata->current_status].display_name)); +-#else +- markup = g_strdup_printf ("<b>%s</b>", +- gdm_user_get_real_name (GDM_USER (adata->user))); +-#endif +- gtk_label_set_markup (GTK_LABEL (label), markup); +- g_free (markup); +-} +- +-#ifdef BUILD_PRESENSE_STUFF +-static void +-save_status_text (GdmAppletData *adata) +-{ +- GtkWidget *entry; +- GtkTextBuffer *buffer; +- char *escaped_text; +- char *text; +- GtkTextIter start, end; +- +- entry = gdm_entry_menu_item_get_entry (GDM_ENTRY_MENU_ITEM (adata->user_item)); +- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry)); +- gtk_text_buffer_get_bounds (buffer, &start, &end); +- text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); +- escaped_text = g_markup_escape_text (text, -1); +- +- if (escaped_text != NULL) { +- GError *error; +- +- error = NULL; +- dbus_g_proxy_call (adata->presence_proxy, +- "SetStatusText", +- &error, +- G_TYPE_STRING, escaped_text, +- G_TYPE_INVALID, +- G_TYPE_INVALID); +- +- if (error != NULL) { +- g_warning ("Couldn't set presence status text: %s", error->message); +- g_error_free (error); +- } +- } +- +- g_free (text); +- g_free (escaped_text); +-} +- +-static void +-on_user_item_deselect (GtkWidget *item, +- GdmAppletData *adata) +-{ +- save_status_text (adata); +-} +-#endif +- +-static void +-create_sub_menu (GdmAppletData *adata) +-{ +- GtkWidget *item; +-#ifdef BUILD_PRESENSE_STUFF +- int i; +- GSList *radio_group; +-#endif +- +- adata->menu = gtk_menu_new (); +-#ifdef BUILD_PRESENSE_STUFF +- g_signal_connect (adata->menu, +- "key-press-event", +- G_CALLBACK (on_menu_key_press_event), +- adata); +-#endif +- gtk_menu_item_set_submenu (GTK_MENU_ITEM (adata->menuitem), adata->menu); +- g_signal_connect (adata->menu, "style-set", +- G_CALLBACK (menu_style_set_cb), adata); +- g_signal_connect (adata->menu, "show", +- G_CALLBACK (menu_expose_cb), adata); +- +-#ifdef BUILD_PRESENSE_STUFF +- adata->user_item = gdm_entry_menu_item_new (); +- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), +- adata->user_item); +- gtk_widget_show (adata->user_item); +- g_signal_connect (adata->user_item, "activate", +- G_CALLBACK (on_user_item_activate), adata); +- g_signal_connect (adata->user_item, +- "deselect", +- G_CALLBACK (on_user_item_deselect), +- adata); +- +- item = gtk_separator_menu_item_new (); +- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), item); +- gtk_widget_show (item); +- +- radio_group = NULL; +- for (i = 0; i < G_N_ELEMENTS (statuses); i++) { +- GtkWidget *hbox; +- GtkWidget *label; +- GtkWidget *image; +- GtkWidget *item; +- +- if (statuses[i].menu_callback == NULL) { +- continue; +- } +- +- item = gtk_radio_menu_item_new (radio_group); +- radio_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item)); +- hbox = gtk_hbox_new (FALSE, 3); +- label = gtk_label_new (_(statuses[i].display_name)); +- gtk_label_set_justify (GTK_LABEL(label), GTK_JUSTIFY_LEFT); +- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); +- gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); +- gtk_widget_show (label); +- image = gtk_image_new_from_icon_name (statuses[i].icon_name, GTK_ICON_SIZE_MENU); +- gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0); +- gtk_widget_show (image); +- gtk_widget_show (hbox); +- gtk_container_add (GTK_CONTAINER (item), hbox); +- +- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), +- item); +- g_signal_connect (item, "activate", +- G_CALLBACK (statuses[i].menu_callback), adata); +- gtk_widget_show (item); +- +- statuses[i].widget = item; +- } +- +- item = gtk_separator_menu_item_new (); +- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), item); +- gtk_widget_show (item); +-#endif +- +- adata->account_item = gtk_image_menu_item_new_with_label (_("Account Information")); +- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->account_item), +- gtk_image_new ()); +- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), +- adata->account_item); +- g_signal_connect (adata->account_item, "style-set", +- G_CALLBACK (menuitem_style_set_cb), adata); +- g_signal_connect (adata->account_item, "activate", +- G_CALLBACK (on_account_activate), adata); +- gtk_widget_show (adata->account_item); +- +- +- 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, "activate", +- G_CALLBACK (on_control_panel_activate), adata); +- +- item = gtk_separator_menu_item_new (); +- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), item); +- gtk_widget_show (item); +- +- adata->lock_screen_item = gtk_image_menu_item_new_with_label (_("Lock Screen")); +- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->lock_screen_item), +- gtk_image_new ()); +- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), +- adata->lock_screen_item); +- g_signal_connect (adata->lock_screen_item, "style-set", +- G_CALLBACK (menuitem_style_set_cb), adata); +- g_signal_connect (adata->lock_screen_item, "activate", +- G_CALLBACK (on_lock_screen_activate), adata); +- /* Only show if not locked down */ +- +- adata->login_screen_item = gtk_image_menu_item_new_with_label (_("Switch User")); +- 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), +- adata->login_screen_item); +- g_signal_connect (adata->login_screen_item, "style-set", +- G_CALLBACK (menuitem_style_set_cb), adata); +- g_signal_connect (adata->login_screen_item, "activate", +- G_CALLBACK (on_login_screen_activate), adata); +- /* Only show switch user if there are other users */ +- +- adata->quit_session_item = gtk_image_menu_item_new_with_label (_("Quit…")); +- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->quit_session_item), +- gtk_image_new ()); +- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), +- adata->quit_session_item); +- g_signal_connect (adata->quit_session_item, "style-set", +- G_CALLBACK (menuitem_style_set_cb), adata); +- g_signal_connect (adata->quit_session_item, "activate", +- G_CALLBACK (on_quit_session_activate), adata); +- gtk_widget_show (adata->quit_session_item); +- gtk_widget_show (adata->menu); +-} +- +-static void +-destroy_sub_menu (GdmAppletData *adata) +-{ +- gtk_menu_item_set_submenu (GTK_MENU_ITEM (adata->menuitem), NULL); +-} +- +-static void +-set_menu_visibility (GdmAppletData *adata, +- gboolean visible) +-{ +- +- if (visible) { +- create_sub_menu (adata); +- } else { +- destroy_sub_menu (adata); +- } +-} +- +-static void +-client_notify_lockdown_func (GConfClient *client, +- guint cnxn_id, +- GConfEntry *entry, +- GdmAppletData *adata) +-{ +- GConfValue *value; +- const char *key; +- +- value = gconf_entry_get_value (entry); +- key = gconf_entry_get_key (entry); +- +- if (value == NULL || key == NULL) { +- return; +- } +- +- if (strcmp (key, LOCKDOWN_USER_SWITCHING_KEY) == 0) { +- if (gconf_value_get_bool (value)) { +- set_menu_visibility (adata, FALSE); +- } else { +- set_menu_visibility (adata, TRUE); +- } +- } else if (strcmp (key, LOCKDOWN_LOCK_SCREEN_KEY) == 0) { +- if (gconf_value_get_bool (value)) { +- gtk_widget_hide (adata->lock_screen_item); +- } else { +- gtk_widget_show (adata->lock_screen_item); +- } +- } +-} +- +-static void +-reset_icon (GdmAppletData *adata) +-{ +- GdkPixbuf *pixbuf; +- GtkWidget *image; +- +- if (adata->user == NULL || !gtk_widget_has_screen (GTK_WIDGET (adata->menuitem))) { +- return; +- } +- +-#ifdef BUILD_PRESENSE_STUFF +- if (adata->user_item != NULL) { +- image = gdm_entry_menu_item_get_image (GDM_ENTRY_MENU_ITEM (adata->user_item)); +- pixbuf = gdm_user_render_icon (adata->user, adata->panel_size * 3); +- if (pixbuf == NULL) { +- return; +- } +- +- gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); +- g_object_unref (pixbuf); +- } +-#else +- pixbuf = gdm_user_render_icon (adata->user, adata->panel_size); +- +- if (pixbuf == NULL) { +- return; +- } +- +- image = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (adata->menuitem)); +- gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); +- g_object_unref (pixbuf); +-#endif +-} +- +-static void +-setup_current_user_now (GdmAppletData *adata) +-{ +- g_assert (adata->user != NULL); +- +- if (adata->user_loaded_notify_id != 0) { +- g_signal_handler_disconnect (adata->user, adata->user_loaded_notify_id); +- } +- adata->user_loaded_notify_id = 0; +- +- update_label (adata); +- reset_icon (adata); +- adata->user_changed_notify_id = +- g_signal_connect (adata->user, +- "changed", +- G_CALLBACK (on_user_changed), +- adata); +-} +- +-static void +-on_current_user_loaded (GdmUser *user, +- GParamSpec *pspec, +- GdmAppletData *adata) +-{ +- if (!gdm_user_is_loaded (user)) { +- return; +- } +- +- setup_current_user_now (adata); +-} +- +-static void +-setup_current_user (GdmAppletData *adata) +-{ +- adata->user = gdm_user_manager_get_user_by_uid (adata->manager, getuid ()); +- +- if (adata->user == NULL) { +- g_warning ("Could not setup current user"); +- return; +- } +- +- g_object_ref (adata->user); +- +- adata->menuitem = gtk_image_menu_item_new_with_label (""); +-#ifndef BUILD_PRESENSE_STUFF +- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->menuitem), +- gtk_image_new ()); +-#endif +- gtk_menu_shell_append (GTK_MENU_SHELL (adata->menubar), adata->menuitem); +- gtk_widget_show (adata->menuitem); +- +- if (gdm_user_is_loaded (adata->user)) { +- setup_current_user_now (adata); +- return; +- } +- +- adata->user_loaded_notify_id = g_signal_connect (adata->user, +- "notify::is-loaded", +- G_CALLBACK (on_current_user_loaded), +- adata); +-} +- +-#ifdef BUILD_PRESENSE_STUFF +-static void +-set_status (GdmAppletData *adata, +- guint status) +-{ +- int i; +- +- g_debug ("Setting current status: %u", status); +- adata->current_status = status; +- for (i = 0; i < G_N_ELEMENTS (statuses); i++) { +- if (statuses[i].widget == NULL) { +- continue; +- } +- if (i == status) { +- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (statuses[i].widget), +- TRUE); +- } +- } +- +- update_label (adata); +-} +- +-static void +-on_presence_status_changed (DBusGProxy *presence_proxy, +- guint status, +- GdmAppletData *adata) +-{ +- g_debug ("Status changed: %u", status); +- +- set_status (adata, status); +-} +- +-static void +-set_status_text (GdmAppletData *adata, +- const char *status_text) +-{ +- GtkWidget *entry; +- GtkTextBuffer *buffer; +- +- g_debug ("Status text changed: %s", status_text); +- +- entry = gdm_entry_menu_item_get_entry (GDM_ENTRY_MENU_ITEM (adata->user_item)); +- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry)); +- gtk_text_buffer_set_text (buffer, status_text, -1); +-} +- +-static void +-on_presence_status_text_changed (DBusGProxy *presence_proxy, +- const char *status_text, +- GdmAppletData *adata) +-{ +- set_status_text (adata, status_text); +-} +-#endif +- +-static gboolean +-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 ("GdmAbout", about_cb), +- BONOBO_UI_VERB_END +- }; +- static gboolean first_time = FALSE; +- char *tmp; +- BonoboUIComponent *popup_component; +- GdmAppletData *adata; +- GError *error; +- DBusGConnection *bus; +- +- if (!first_time) { +- first_time = TRUE; +- +- /* Do this here so it's only done once. */ +- gtk_rc_parse_string ("style \"gdm-user-switch-menubar-style\"\n" +- "{\n" +- "GtkMenuBar::shadow-type = none\n" +- "GtkMenuBar::internal-padding = 0\n" +- "}\n" +- "style \"gdm-user-switch-applet-style\"\n" +- "{\n" +- "GtkWidget::focus-line-width = 0\n" +- "GtkWidget::focus-padding = 0\n" +- "}\n" +- "widget \"*.gdm-user-switch-menubar\" style \"gdm-user-switch-menubar-style\"\n" +- "widget \"*.gdm-user-switch-applet\" style \"gdm-user-switch-applet-style\"\n"); +- gtk_window_set_default_icon_name ("stock_people"); +- g_set_application_name (_("User Switch Applet")); +- +- if (! gdm_settings_client_init (DATADIR "/gdm/gdm.schemas", "/")) { +- g_critical ("Unable to initialize settings client"); +- exit (1); +- } +- +- } +- +- adata = g_new0 (GdmAppletData, 1); +- adata->applet = applet; +- adata->panel_size = 24; +- +- adata->client = gconf_client_get_default (); +- +- gtk_widget_set_tooltip_text (GTK_WIDGET (applet), _("Change account settings and status")); +- gtk_container_set_border_width (GTK_CONTAINER (applet), 0); +- gtk_widget_set_name (GTK_WIDGET (applet), "gdm-user-switch-applet"); +- panel_applet_set_flags (applet, PANEL_APPLET_EXPAND_MINOR); +- panel_applet_setup_menu_from_file (applet, NULL, +- DATADIR "/gnome-2.0/ui/GNOME_FastUserSwitchApplet.xml", +- NULL, menu_verbs, adata); +- +- popup_component = panel_applet_get_popup_component (applet); +- +- /* Hide the admin context menu items if locked down or no cmd-line */ +- if (gconf_client_get_bool (adata->client, +- LOCKDOWN_COMMAND_LINE_KEY, +- NULL) || +- panel_applet_get_locked_down (applet)) { +- bonobo_ui_component_set_prop (popup_component, +- "/popups/button3/GdmSeparator", +- "hidden", "1", NULL); +- bonobo_ui_component_set_prop (popup_component, +- "/commands/GdmUsersGroupsAdmin", +- "hidden", "1", NULL); +- } else { +-#ifndef USERS_ADMIN +-# ifdef GDM_SETUP +- bonobo_ui_component_set_prop (popup_component, +- "/popups/button3/GdmSeparator", +- "hidden", "1", +- NULL); +-# endif /* !GDM_SETUP */ +- bonobo_ui_component_set_prop (popup_component, +- "/commands/GdmUsersGroupsAdmin", +- "hidden", "1", +- NULL); +-#endif /* !USERS_ADMIN */ +- } +- +- /* Hide the gdmphotosetup item if it can't be found in the path. */ +- tmp = g_find_program_in_path ("gnome-about-me"); +- if (!tmp) { +- bonobo_ui_component_set_prop (popup_component, +- "/commands/GdmAboutMe", +- "hidden", "1", +- NULL); +- } else { +- g_free (tmp); +- } +- +- g_signal_connect (adata->applet, +- "style-set", +- G_CALLBACK (applet_style_set_cb), adata); +- g_signal_connect (applet, +- "change-background", +- G_CALLBACK (applet_change_background_cb), adata); +- g_signal_connect (applet, +- "size-allocate", +- G_CALLBACK (applet_size_allocate_cb), adata); +- g_signal_connect (applet, +- "key-press-event", +- G_CALLBACK (applet_key_press_event_cb), adata); +- g_signal_connect_after (applet, +- "focus-in-event", +- G_CALLBACK (gtk_widget_queue_draw), NULL); +- 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, +- (GDestroyNotify) gdm_applet_data_free); +- +- adata->menubar = gtk_menu_bar_new (); +- gtk_widget_set_name (adata->menubar, "gdm-user-switch-menubar"); +- gtk_widget_set_can_focus (adata->menubar, TRUE); +- g_signal_connect (adata->menubar, "button-press-event", +- G_CALLBACK (menubar_button_press_event_cb), adata); +- g_signal_connect_after (adata->menubar, "expose-event", +- G_CALLBACK (menubar_expose_event_cb), adata); +- gtk_container_add (GTK_CONTAINER (applet), adata->menubar); +- gtk_widget_show (adata->menubar); +- +- adata->manager = gdm_user_manager_ref_default (); +- g_object_set (adata->manager, "include-all", TRUE, NULL); +- g_signal_connect (adata->manager, +- "notify::is-loaded", +- G_CALLBACK (on_manager_is_loaded_changed), +- adata); +- g_signal_connect (adata->manager, +- "notify::has-multiple-users", +- G_CALLBACK (on_manager_has_multiple_users_changed), +- adata); +- +- gdm_user_manager_queue_load (adata->manager); +- setup_current_user (adata); +- +- gconf_client_add_dir (adata->client, +- LOCKDOWN_DIR, +- GCONF_CLIENT_PRELOAD_ONELEVEL, +- NULL); +- +- adata->client_notify_lockdown_id = gconf_client_notify_add (adata->client, +- LOCKDOWN_DIR, +- (GConfClientNotifyFunc)client_notify_lockdown_func, +- adata, +- NULL, +- NULL); +- +- if (gconf_client_get_bool (adata->client, LOCKDOWN_USER_SWITCHING_KEY, NULL)) { +- set_menu_visibility (adata, FALSE); +- } else { +- set_menu_visibility (adata, TRUE); +- } +- if (gconf_client_get_bool (adata->client, LOCKDOWN_LOCK_SCREEN_KEY, NULL)) { +- gtk_widget_hide (adata->lock_screen_item); +- } else { +- gtk_widget_show (adata->lock_screen_item); +- } +- +- error = NULL; +- bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); +- if (bus == NULL) { +- g_warning ("Unable to get session bus: %s", error->message); +- g_error_free (error); +- goto done; +- } +- +-#ifdef BUILD_PRESENSE_STUFF +- adata->presence_proxy = dbus_g_proxy_new_for_name (bus, +- "org.gnome.SessionManager", +- "/org/gnome/SessionManager/Presence", +- "org.gnome.SessionManager.Presence"); +- if (adata->presence_proxy != NULL) { +- DBusGProxy *proxy; +- +- dbus_g_proxy_add_signal (adata->presence_proxy, +- "StatusChanged", +- G_TYPE_UINT, +- G_TYPE_INVALID); +- dbus_g_proxy_connect_signal (adata->presence_proxy, +- "StatusChanged", +- G_CALLBACK (on_presence_status_changed), +- adata, +- NULL); +- dbus_g_proxy_add_signal (adata->presence_proxy, +- "StatusTextChanged", +- G_TYPE_STRING, +- G_TYPE_INVALID); +- dbus_g_proxy_connect_signal (adata->presence_proxy, +- "StatusTextChanged", +- G_CALLBACK (on_presence_status_text_changed), +- adata, +- NULL); +- +- +- proxy = dbus_g_proxy_new_from_proxy (adata->presence_proxy, +- "org.freedesktop.DBus.Properties", +- "/org/gnome/SessionManager/Presence"); +- if (proxy != NULL) { +- guint status; +- const char *status_text; +- GValue value = { 0, }; +- +- status = 0; +- status_text = NULL; +- +- error = NULL; +- dbus_g_proxy_call (proxy, +- "Get", +- &error, +- G_TYPE_STRING, "org.gnome.SessionManager.Presence", +- G_TYPE_STRING, "status", +- G_TYPE_INVALID, +- G_TYPE_VALUE, &value, +- G_TYPE_INVALID); +- +- if (error != NULL) { +- g_warning ("Couldn't get presence status: %s", error->message); +- g_error_free (error); +- } else { +- status = g_value_get_uint (&value); +- } +- +- g_value_unset (&value); +- +- error = NULL; +- dbus_g_proxy_call (proxy, +- "Get", +- &error, +- G_TYPE_STRING, "org.gnome.SessionManager.Presence", +- G_TYPE_STRING, "status-text", +- G_TYPE_INVALID, +- G_TYPE_VALUE, &value, +- G_TYPE_INVALID); +- +- if (error != NULL) { +- g_warning ("Couldn't get presence status text: %s", error->message); +- g_error_free (error); +- } else { +- status_text = g_value_get_string (&value); +- } +- +- set_status (adata, status); +- set_status_text (adata, status_text); +- } +- } else { +- g_warning ("Failed to get session presence proxy"); +- } +-#endif +- +- done: +- gtk_widget_show (GTK_WIDGET (adata->applet)); +- +- 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; +-} +diff --git a/gui/user-switch-applet/gdm-entry-menu-item.c b/gui/user-switch-applet/gdm-entry-menu-item.c +deleted file mode 100644 +index d657e7a..0000000 +--- a/gui/user-switch-applet/gdm-entry-menu-item.c ++++ /dev/null +@@ -1,304 +0,0 @@ +-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- +- * +- * Copyright (C) 2008 Red Hat, Inc. +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#include "config.h" +- +-#include <unistd.h> +-#include <sys/types.h> +- +-#include <string.h> +- +-#include <glib/gi18n.h> +-#include <gtk/gtk.h> +- +-#include "gdm-entry-menu-item.h" +- +-/* same as twitter */ +-#define TEXT_BUFFER_MAX_CHARS 64 +- +-enum +-{ +- PROP_0, +-}; +- +-struct _GdmEntryMenuItem +-{ +- GtkMenuItem parent; +- +- GtkWidget *hbox; +- GtkWidget *image; +- GtkWidget *entry; +-}; +- +-struct _GdmEntryMenuItemClass +-{ +- GtkMenuItemClass parent_class; +-}; +- +-G_DEFINE_TYPE (GdmEntryMenuItem, gdm_entry_menu_item, GTK_TYPE_MENU_ITEM) +- +-static void +-gdm_entry_menu_item_set_property (GObject *object, +- guint param_id, +- const GValue *value, +- GParamSpec *pspec) +-{ +- GdmEntryMenuItem *item; +- +- item = GDM_ENTRY_MENU_ITEM (object); +- +- switch (param_id) { +- default: +- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); +- break; +- } +-} +- +-static void +-gdm_entry_menu_item_get_property (GObject *object, +- guint param_id, +- GValue *value, +- GParamSpec *pspec) +-{ +- GdmEntryMenuItem *item; +- +- item = GDM_ENTRY_MENU_ITEM (object); +- +- switch (param_id) { +- default: +- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); +- break; +- } +-} +- +-static void +-gdm_entry_menu_item_dispose (GObject *object) +-{ +- +- (*G_OBJECT_CLASS (gdm_entry_menu_item_parent_class)->dispose) (object); +-} +- +-static gboolean +-gdm_entry_menu_item_button_release (GtkWidget *widget, +- GdkEventButton *event) +-{ +- return TRUE; +-} +- +-/* Cut and paste from gtkwindow.c */ +-static void +-send_focus_change (GtkWidget *widget, +- gboolean in) +-{ +- GdkEvent *fevent = gdk_event_new (GDK_FOCUS_CHANGE); +- +- g_object_ref (widget); +- +- gtk_widget_set_can_focus (widget, in); +- +- fevent->focus_change.type = GDK_FOCUS_CHANGE; +- fevent->focus_change.window = g_object_ref (gtk_widget_get_window (widget)); +- fevent->focus_change.in = in; +- +- gtk_widget_event (widget, fevent); +- +- g_object_notify (G_OBJECT (widget), "has-focus"); +- +- g_object_unref (widget); +- gdk_event_free (fevent); +-} +- +-static gboolean +-gdm_entry_menu_item_button_press (GtkWidget *widget, +- GdkEventButton *event) +-{ +- GtkWidget *entry; +- +- entry = GDM_ENTRY_MENU_ITEM (widget)->entry; +- +- if (gtk_widget_get_window (entry) != NULL) { +- gdk_window_raise (gtk_widget_get_window (entry)); +- } +- +- if (!gtk_widget_has_focus (entry)) { +- gtk_widget_grab_focus (entry); +- } +- +- return FALSE; +-} +- +-static void +-gdm_entry_menu_item_realize (GtkWidget *widget) +-{ +- if (GTK_WIDGET_CLASS (gdm_entry_menu_item_parent_class)->realize) { +- GTK_WIDGET_CLASS (gdm_entry_menu_item_parent_class)->realize (widget); +- } +-} +- +-static void +-gdm_entry_menu_item_select (GtkItem *item) +-{ +- g_return_if_fail (GDM_IS_ENTRY_MENU_ITEM (item)); +- send_focus_change (GTK_WIDGET (GDM_ENTRY_MENU_ITEM (item)->entry), TRUE); +-} +- +-static void +-gdm_entry_menu_item_deselect (GtkItem *item) +-{ +- g_return_if_fail (GDM_IS_ENTRY_MENU_ITEM (item)); +- +- send_focus_change (GTK_WIDGET (GDM_ENTRY_MENU_ITEM (item)->entry), FALSE); +-} +- +-static void +-gdm_entry_menu_item_class_init (GdmEntryMenuItemClass *klass) +-{ +- GObjectClass *gobject_class; +- GtkWidgetClass *widget_class; +- GtkMenuItemClass *menu_item_class; +- GtkItemClass *item_class; +- +- gobject_class = G_OBJECT_CLASS (klass); +- widget_class = GTK_WIDGET_CLASS (klass); +- menu_item_class = GTK_MENU_ITEM_CLASS (klass); +- item_class = GTK_ITEM_CLASS (klass); +- +- gobject_class->set_property = gdm_entry_menu_item_set_property; +- gobject_class->get_property = gdm_entry_menu_item_get_property; +- gobject_class->dispose = gdm_entry_menu_item_dispose; +- +- widget_class->button_release_event = gdm_entry_menu_item_button_release; +- widget_class->button_press_event = gdm_entry_menu_item_button_press; +- widget_class->realize = gdm_entry_menu_item_realize; +- +- item_class->select = gdm_entry_menu_item_select; +- item_class->deselect = gdm_entry_menu_item_deselect; +- +- menu_item_class->hide_on_activate = FALSE; +-} +- +-static void +-on_entry_show (GtkWidget *widget, +- GdmEntryMenuItem *item) +-{ +- if (gtk_widget_get_window (widget) != NULL) { +- gdk_window_raise (gtk_widget_get_window (widget)); +- } +- send_focus_change (widget, TRUE); +-} +- +-static void +-on_text_buffer_changed (GtkTextBuffer *buffer, +- GdmEntryMenuItem *item) +-{ +- int len; +- +- len = gtk_text_buffer_get_char_count (buffer); +- if (len > TEXT_BUFFER_MAX_CHARS) { +- gdk_window_beep (gtk_widget_get_window (GTK_WIDGET (item))); +- } +-} +- +-static void +-on_entry_move_focus (GtkWidget *widget, +- GtkDirectionType direction, +- GdmEntryMenuItem *item) +-{ +- g_debug ("focus move"); +- send_focus_change (GTK_WIDGET (GDM_ENTRY_MENU_ITEM (item)->entry), FALSE); +- g_signal_emit_by_name (item, +- "move-focus", +- GTK_DIR_TAB_FORWARD); +-} +- +-static void +-gdm_entry_menu_item_init (GdmEntryMenuItem *item) +-{ +- PangoFontDescription *fontdesc; +- PangoFontMetrics *metrics; +- PangoContext *context; +- PangoLanguage *lang; +- int ascent; +- GtkTextBuffer *buffer; +- +- item->hbox = gtk_hbox_new (FALSE, 6); +- gtk_container_add (GTK_CONTAINER (item), item->hbox); +- +- item->image = gtk_image_new (); +- gtk_box_pack_start (GTK_BOX (item->hbox), item->image, FALSE, FALSE, 0); +- +- item->entry = gtk_text_view_new (); +- gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (item->entry), FALSE); +- gtk_text_view_set_editable (GTK_TEXT_VIEW (item->entry), TRUE); +- gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (item->entry), +- GTK_WRAP_WORD); +- g_signal_connect (item->entry, +- "show", +- G_CALLBACK (on_entry_show), +- item); +- g_signal_connect (item->entry, +- "move-focus", +- G_CALLBACK (on_entry_move_focus), +- item); +- +- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (item->entry)); +- g_signal_connect (buffer, +- "changed", +- G_CALLBACK (on_text_buffer_changed), +- item); +- +- /* get the font ascent for the current font and language */ +- context = gtk_widget_get_pango_context (item->entry); +- fontdesc = pango_context_get_font_description (context); +- lang = pango_context_get_language (context); +- metrics = pango_context_get_metrics (context, fontdesc, lang); +- ascent = pango_font_metrics_get_ascent (metrics) * 1.5 / PANGO_SCALE; +- pango_font_metrics_unref (metrics); +- +- /* size our progress bar to be five ascents long */ +- gtk_widget_set_size_request (item->entry, ascent * 5, -1); +- +- gtk_box_pack_start (GTK_BOX (item->hbox), item->entry, TRUE, TRUE, 0); +- +- gtk_widget_show (item->hbox); +- gtk_widget_show (item->image); +- gtk_widget_show (item->entry); +-} +- +-GtkWidget * +-gdm_entry_menu_item_new (void) +-{ +- return g_object_new (GDM_TYPE_ENTRY_MENU_ITEM, NULL); +-} +- +-GtkWidget * +-gdm_entry_menu_item_get_entry (GdmEntryMenuItem *item) +-{ +- g_return_val_if_fail (GDM_IS_ENTRY_MENU_ITEM (item), NULL); +- +- return item->entry; +-} +- +-GtkWidget * +-gdm_entry_menu_item_get_image (GdmEntryMenuItem *item) +-{ +- g_return_val_if_fail (GDM_IS_ENTRY_MENU_ITEM (item), NULL); +- +- return item->image; +-} +diff --git a/gui/user-switch-applet/gdm-entry-menu-item.h b/gui/user-switch-applet/gdm-entry-menu-item.h +deleted file mode 100644 +index 3031609..0000000 +--- a/gui/user-switch-applet/gdm-entry-menu-item.h ++++ /dev/null +@@ -1,51 +0,0 @@ +-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- +- * +- * Copyright (C) 2004-2005 James M. Cape <jcape@ignore-your.tv>. +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#ifndef __GDM_ENTRY_MENU_ITEM__ +-#define __GDM_ENTRY_MENU_ITEM__ +- +-#include <gtk/gtk.h> +- +-G_BEGIN_DECLS +- +-#define GDM_TYPE_ENTRY_MENU_ITEM \ +- (gdm_entry_menu_item_get_type ()) +-#define GDM_ENTRY_MENU_ITEM(object) \ +- (G_TYPE_CHECK_INSTANCE_CAST ((object), GDM_TYPE_ENTRY_MENU_ITEM, GdmEntryMenuItem)) +-#define GDM_ENTRY_MENU_ITEM_CLASS(klass) \ +- (G_TYPE_CHECK_CLASS_CAST ((klass), GDM_TYPE_ENTRY_MENU_ITEM, GdmEntryMenuItemClass)) +-#define GDM_IS_ENTRY_MENU_ITEM(object) \ +- (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDM_TYPE_ENTRY_MENU_ITEM)) +-#define GDM_IS_ENTRY_MENU_ITEM_CLASS(klass) \ +- (G_TYPE_CHECK_CLASS_TYPE ((klass), GDM_TYPE_ENTRY_MENU_ITEM)) +-#define GDM_ENTRY_MENU_ITEM_GET_CLASS(object) \ +- (G_TYPE_INSTANCE_GET_CLASS ((object), GDM_TYPE_ENTRY_MENU_ITEM, GdmEntryMenuItemClass)) +- +-typedef struct _GdmEntryMenuItem GdmEntryMenuItem; +-typedef struct _GdmEntryMenuItemClass GdmEntryMenuItemClass; +- +-GType gdm_entry_menu_item_get_type (void) G_GNUC_CONST; +- +-GtkWidget *gdm_entry_menu_item_new (void); +-GtkWidget *gdm_entry_menu_item_get_entry (GdmEntryMenuItem *item); +-GtkWidget *gdm_entry_menu_item_get_image (GdmEntryMenuItem *item); +- +-G_END_DECLS +- +-#endif /* __GDM_ENTRY_MENU_ITEM__ */ +diff --git a/po/POTFILES.in b/po/POTFILES.in +index 1fccb90..cc1a3fd 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -84,10 +84,6 @@ gui/simple-greeter/gdm-timer.c + gui/simple-greeter/gdm-user.c + gui/simple-greeter/gdm-user-chooser-widget.c + gui/simple-greeter/greeter-main.c +-gui/user-switch-applet/applet.c +-gui/user-switch-applet/gdm-entry-menu-item.c +-gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in +-gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml + utils/gdmflexiserver.c + utils/gdm-screenshot.c + +diff --git a/po/POTFILES.skip b/po/POTFILES.skip +index 0269a0f..ee3d753 100644 +--- a/po/POTFILES.skip ++++ b/po/POTFILES.skip +@@ -7,7 +7,6 @@ + # remove these unless you fix "make distcheck" a different way. + # + data/gdm.schemas.in +-gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in + data/greeter-autostart/at-spi-registryd-wrapper.desktop.in + data/greeter-autostart/gdm-simple-greeter.desktop.in + data/greeter-autostart/gnome-power-manager.desktop.in +-- +1.6.6.1 + diff --git a/meta-gnome/recipes-gnome/gdm/gdm_2.32.2.bb b/meta-gnome/recipes-gnome/gdm/gdm_2.32.2.bb index 9edc8082d7..c5ced73b90 100644 --- a/meta-gnome/recipes-gnome/gdm/gdm_2.32.2.bb +++ b/meta-gnome/recipes-gnome/gdm/gdm_2.32.2.bb @@ -4,12 +4,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" DEPENDS = "xinput gnome-panel tcp-wrappers libcanberra libxklavier grep consolekit libpam gnome-doc-utils gtk+ xrdb" -PR = "r2" +PR = "r3" inherit gnome update-rc.d SRC_URI += " \ file://cross-xdetection.diff \ + file://0001-Remove-user-switch-applet.patch \ file://%gconf-tree.xml \ file://gdm \ file://gdm.conf \ |