void-packages/srcpkgs/gdm/patches/0001-port-to-libpanel-applet-3.0.patch
2011-01-13 10:31:38 +01:00

506 lines
20 KiB
Diff

diff --git a/configure.ac b/configure.ac
index ed07dce..bf98669 100644
--- a/configure.ac
+++ b/configure.ac
@@ -45,7 +45,7 @@ GTK_REQUIRED_VERSION=2.20.0
PANGO_REQUIRED_VERSION=1.3.0
SCROLLKEEPER_REQUIRED_VERSION=0.1.4
GCONF_REQUIRED_VERSION=2.31.3
-GNOME_PANEL_REQUIRED_VERSION=2.0.0
+GNOME_PANEL_REQUIRED_VERSION=2.31.90
LIBXKLAVIER_REQUIRED_VERSION=4.0
LIBCANBERRA_GTK_REQUIRED_VERSION=0.4
#FONTCONFIG_REQUIRED_VERSION=2.6.0
@@ -152,7 +152,7 @@ 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)
+ libpanelapplet-3.0 >= $GNOME_PANEL_REQUIRED_VERSION)
AC_SUBST(APPLET_CFLAGS)
AC_SUBST(APPLET_LIBS)
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
index 2d2cdc0..cebe890 100644
--- a/gui/user-switch-applet/Makefile.am
+++ b/gui/user-switch-applet/Makefile.am
@@ -13,6 +13,7 @@ AM_CPPFLAGS = \
-DLIBEXECDIR=\""$(libexecdir)"\" \
-DSBINDIR=\""$(sbindir)"\" \
-DGDMCONFDIR=\"$(gdmconfdir)\" \
+ -DGDM_USER_SWITCH_MENU_UI_DIR="\"$(uidir)\"" \
$(GTK_CFLAGS) \
$(APPLET_CFLAGS) \
$(NULL)
@@ -34,34 +35,31 @@ gdm_user_switch_applet_LDADD = \
$(APPLET_LIBS) \
$(NULL)
-# Bonobo UI
-uidir = $(datadir)/gnome-2.0/ui
-ui_DATA = \
- GNOME_FastUserSwitchApplet.xml \
- $(NULL)
+uidir = $(datadir)/gnome-2.0/ui
+ui_DATA = gdm-user-switch-applet-menu.xml
-# Bonobo .server
-serverdir = $(libdir)/bonobo/servers
-server_in_files = \
- GNOME_FastUserSwitchApplet.server.in \
- $(NULL)
-server_DATA = $(server_in_files:.server.in=.server)
+appletdir = $(datadir)/gnome-panel/applets
+applet_in_files = org.gnome.gdm.UserSwitch.panel-applet.in
+applet_DATA = $(applet_in_files:.panel-applet.in=.panel-applet)
-$(server_in_files): $(server_in_files:.server.in=.server.in.in)
- sed -e "s|\@LIBEXECDIR\@|$(libexecdir)|" -e "s|\@VERSION\@|$(VERSION)|" $< > $@
+$(applet_in_files): $(applet_in_files).in Makefile
+ $(AM_V_GEN)$(SED) -e "s|\@LIBEXECDIR\@|$(libexecdir)|" -e "s|\@VERSION\@|$(VERSION)|" $< > $@
-@INTLTOOL_SERVER_RULE@
+%.panel-applet: %.panel-applet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< $@ -d -u -c $(top_builddir)/po/.intltool-merge-cache
-EXTRA_DIST = \
- $(ui_DATA) \
- GNOME_FastUserSwitchApplet.server.in.in \
- $(NULL)
+servicedir = $(datadir)/dbus-1/services
+service_in_files = org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in
+service_DATA = $(service_in_files:.service.in=.service)
+
+org.gnome.panel.applet.GdmUserSwitchAppletFactory.service: $(service_in_files)
+ $(AM_V_GEN)$(SED) -e "s|\@LIBEXECDIR\@|$(libexecdir)|" $< > $@
+
+EXTRA_DIST = org.gnome.gdm.UserSwitch.panel-applet.in.in \
+ $(service_in_files) \
+ $(ui_DATA) \
+ $(NULL)
+
+CLEANFILES = $(applet_DATA) $(applet_DATA).in $(service_DATA)
-DISTCLEANFILES = \
- $(server_in_files) \
- $(server_DATA) \
- $(NULL)
+MAINTAINERCLEANFILES = *~ Makefile.in
-MAINTAINERCLEANFILES = \
- *~ \
- Makefile.in
diff --git a/gui/user-switch-applet/applet.c b/gui/user-switch-applet/applet.c
index b4f944c..74f7882 100644
--- a/gui/user-switch-applet/applet.c
+++ b/gui/user-switch-applet/applet.c
@@ -34,9 +34,6 @@
#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>
@@ -102,16 +99,15 @@ 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)
+PANEL_APPLET_OUT_PROCESS_FACTORY ("GdmUserSwitchAppletFactory",
+ PANEL_TYPE_APPLET,
+ "gdm-user-switch-applet",
+ applet_factory,
+ NULL)
static void
-about_me_cb (BonoboUIComponent *ui_container,
- gpointer data,
- const char *cname)
+about_me_cb (GtkAction *action,
+ gpointer data)
{
GError *err;
@@ -120,10 +116,7 @@ about_me_cb (BonoboUIComponent *ui_container,
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);
+ gtk_action_set_visible (action, FALSE);
}
}
@@ -149,9 +142,8 @@ menubar_button_press_event_cb (GtkWidget *menubar,
}
static void
-about_cb (BonoboUIComponent *ui_container,
- gpointer data,
- const char *cname)
+about_cb (GtkAction *action,
+ gpointer data)
{
static const char *authors[] = {
"James M. Cape <jcape@ignore-your.tv>",
@@ -195,9 +187,8 @@ about_cb (BonoboUIComponent *ui_container,
static void
-admin_cb (BonoboUIComponent *ui_container,
- gpointer data,
- const char *cname)
+admin_cb (GtkAction *action,
+ gpointer data)
{
#ifdef USERS_ADMIN
char **args;
@@ -231,82 +222,6 @@ admin_cb (BonoboUIComponent *ui_container,
}
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,
@@ -1389,18 +1304,23 @@ on_presence_status_text_changed (DBusGProxy *presence_proxy,
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 const GtkActionEntry gdm_user_switch_applet_actions[] = {
+ { "GdmAboutMe", "user-info", N_("Edit Personal _Information"),
+ NULL, NULL,
+ G_CALLBACK (about_me_cb) },
+ { "GdmUsersGroupsAdmin", "stock-people", N_("_Edit Users and Groups"),
+ NULL, NULL,
+ G_CALLBACK (admin_cb) },
+ { "GdmAbout", GTK_STOCK_ABOUT, N_("_About"),
+ NULL, NULL,
+ G_CALLBACK (about_cb) },
};
static gboolean first_time = FALSE;
char *tmp;
- BonoboUIComponent *popup_component;
GdmAppletData *adata;
GError *error;
DBusGConnection *bus;
+ GtkActionGroup *action_group;
if (!first_time) {
first_time = TRUE;
@@ -1438,52 +1358,51 @@ fill_applet (PanelApplet *applet)
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);
+ action_group = gtk_action_group_new ("GDM User Switch Applet Actions");
+ gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (action_group,
+ gdm_user_switch_applet_actions,
+ G_N_ELEMENTS (gdm_user_switch_applet_actions),
+ adata);
+
+ panel_applet_setup_menu_from_file (applet,
+ GDM_USER_SWITCH_MENU_UI_DIR G_DIR_SEPARATOR_S "gdm-user-switch-applet-menu.xml",
+ action_group);
/* 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);
+ GtkAction *action;
+
+ action = gtk_action_group_get_action (action_group, "GdmUsersGroupsAdmin");
+ gtk_action_set_visible (action, FALSE);
} else {
+ GtkAction *action;
+
#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);
+ action = gtk_action_group_get_action (action_group, "GdmUsersGroupsAdmin");
+ gtk_action_set_visible (action, FALSE);
#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);
+ GtkAction *action;
+
+ action = gtk_action_group_get_action (action_group, "GdmAboutMe");
+ gtk_action_set_visible (action, FALSE);
} else {
g_free (tmp);
}
- g_signal_connect (adata->applet,
- "style-set",
- G_CALLBACK (applet_style_set_cb), adata);
+ g_object_unref (action_group);
+
g_signal_connect (applet,
"change-background",
G_CALLBACK (applet_change_background_cb), adata);
@@ -1655,7 +1574,7 @@ applet_factory (PanelApplet *applet,
{
gboolean ret;
ret = FALSE;
- if (strcmp (iid, "OAFIID:GNOME_FastUserSwitchApplet") == 0) {
+ if (strcmp (iid, "GdmUserSwitchApplet") == 0) {
ret = fill_applet (applet);
}
return ret;
diff --git a/gui/user-switch-applet/gdm-user-switch-applet-menu.xml b/gui/user-switch-applet/gdm-user-switch-applet-menu.xml
new file mode 100644
index 0000000..78301b3
--- /dev/null
+++ b/gui/user-switch-applet/gdm-user-switch-applet-menu.xml
@@ -0,0 +1,4 @@
+<menuitem name="About Me Item" action="GdmAboutMe"/>
+<menuitem name="Users and Groups Admin Item" action="GdmUsersGroupsAdmin"/>
+<menuitem name="About Item" action="GdmAbout"/>
+
diff --git a/gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in b/gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in
new file mode 100644
index 0000000..3c77dfb
--- /dev/null
+++ b/gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in
@@ -0,0 +1,16 @@
+[Applet Factory]
+Id=GdmUserSwitchAppletFactory
+Location=@LIBEXECDIR@/gdm-user-switch-applet
+_Name=User Switcher Applet Factory
+_Description=User Switcher Applet Factory
+
+[GdmUserSwitchApplet]
+_Name=User Switcher
+_Description=A menu to quickly switch between users
+BonoboId=OAFIID:GNOME_FastUserSwitchApplet
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=gdm
+X-GNOME-Bugzilla-Component=general
+X-GNOME-Bugzilla-Version=@VERSION@
+X-GNOME-Bugzilla-OtherBinaries=gdm-user-switch-applet
+
diff --git a/gui/user-switch-applet/org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in b/gui/user-switch-applet/org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in
new file mode 100644
index 0000000..7bf900f
--- /dev/null
+++ b/gui/user-switch-applet/org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in
@@ -0,0 +1,4 @@
+[D-BUS Service]
+Name=org.gnome.panel.applet.GdmUserSwitchAppletFactory
+Exec=@LIBEXECDIR@/gdm-user-switch-applet
+
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 1fccb90..5340391 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -86,8 +86,7 @@ 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
+gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in
utils/gdmflexiserver.c
utils/gdm-screenshot.c
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 0269a0f..9032c03 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -7,7 +7,7 @@
# remove these unless you fix "make distcheck" a different way.
#
data/gdm.schemas.in
-gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in
+gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.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.7.2.3