diff -u -r gnome-panel-2.28.0/applets/notification_area/main.c hacked/applets/notification_area/main.c --- gnome-panel-2.28.0/applets/notification_area/main.c 2009-07-01 09:06:23.000000000 -0400 +++ hacked/applets/notification_area/main.c 2009-10-17 23:06:01.001313433 -0400 @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -34,6 +35,7 @@ #include "fixedtip.h" #define NOTIFICATION_AREA_ICON "gnome-panel-notification-area" +#define SCHEMA_DIR "/schemas/apps/notification_area_applet/prefs" typedef struct { @@ -231,6 +233,39 @@ gtk_widget_set_name (widget, "na-tray"); } +static void +padding_changed (GConfClient *client, + guint cnxn_id, + GConfEntry *entry, + gpointer user_data) +{ + AppletData *data = user_data; + gint value; + + if (!entry->value || entry->value->type != GCONF_VALUE_INT) + return; + + value = gconf_value_get_int (entry->value); + + na_tray_set_padding (data->tray, value); +} + +static void +setup_gconf (AppletData *data) +{ + GConfClient *client; + char *key; + int value; + + client = gconf_client_get_default (); + key = panel_applet_gconf_get_full_key (data->applet, "padding"); + value = gconf_client_get_int (client, key, NULL); + na_tray_set_padding (data->tray, value); + gconf_client_notify_add (client, key, padding_changed, data, NULL, NULL); + g_free (key); + g_object_unref (client); +} + static gboolean applet_factory (PanelApplet *applet, const gchar *iid, @@ -260,9 +295,10 @@ atko = gtk_widget_get_accessible (GTK_WIDGET (applet)); atk_object_set_name (atko, _("Panel Notification Area")); + panel_applet_add_preferences (applet, SCHEMA_DIR, NULL); panel_applet_set_flags (applet, PANEL_APPLET_HAS_HANDLE|PANEL_APPLET_EXPAND_MINOR); - + g_signal_connect (applet, "change_orient", G_CALLBACK (applet_change_orientation), data); g_signal_connect (applet, "change_background", @@ -270,6 +306,8 @@ g_signal_connect (applet, "destroy", G_CALLBACK (applet_destroy), data); + setup_gconf (data); + panel_applet_set_background_widget (applet, GTK_WIDGET (applet)); gtk_container_add (GTK_CONTAINER (applet), GTK_WIDGET (tray)); diff -u -r gnome-panel-2.28.0/applets/notification_area/Makefile.am hacked/applets/notification_area/Makefile.am --- gnome-panel-2.28.0/applets/notification_area/Makefile.am 2009-07-21 13:25:43.000000000 -0400 +++ hacked/applets/notification_area/Makefile.am 2009-10-17 23:16:42.401072682 -0400 @@ -66,6 +66,24 @@ @INTLTOOL_SERVER_RULE@ +schemasdir = $(GCONF_SCHEMA_FILE_DIR) +schemas_in_files = notification_area_applet.schemas.in +schemas_DATA = $(schemas_in_files:.schemas.in=.schemas) + +@INTLTOOL_SCHEMAS_RULE@ + +if GCONF_SCHEMAS_INSTALL +# don't do this if we are building in eg. rpm +install-data-local: + if test -z "$(DESTDIR)" ; then \ + for p in $(schemas_DATA) ; do \ + GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_builddir)/applets/notification_area/$$p ; \ + done \ + fi +else +install-data-local: +endif + uidir = $(datadir)/gnome-2.0/ui ui_DATA = GNOME_NotificationAreaApplet.xml diff -u -r gnome-panel-2.28.0/applets/notification_area/na-tray.c hacked/applets/notification_area/na-tray.c --- gnome-panel-2.28.0/applets/notification_area/na-tray.c 2009-10-17 23:22:01.095308064 -0400 +++ hacked/applets/notification_area/na-tray.c 2009-10-17 23:00:01.304062848 -0400 @@ -602,6 +602,8 @@ { trays_screens [screen_number].tray_manager = tray_manager; + na_tray_manager_set_padding (tray_manager, 0); + g_signal_connect (tray_manager, "tray_icon_added", G_CALLBACK (tray_added), &trays_screens [screen_number]); @@ -804,6 +806,16 @@ } void +na_tray_set_padding (NaTray *tray, + gint padding) +{ + NaTrayPrivate *priv = tray->priv; + + if (get_tray (priv->trays_screen) == tray) + na_tray_manager_set_padding (priv->trays_screen->tray_manager, padding); +} + +void na_tray_force_redraw (NaTray *tray) { NaTrayPrivate *priv = tray->priv; diff -u -r gnome-panel-2.28.0/applets/notification_area/na-tray.h hacked/applets/notification_area/na-tray.h --- gnome-panel-2.28.0/applets/notification_area/na-tray.h 2009-04-19 13:45:09.000000000 -0400 +++ hacked/applets/notification_area/na-tray.h 2009-10-17 23:00:30.491375187 -0400 @@ -60,6 +60,8 @@ void na_tray_set_orientation (NaTray *tray, GtkOrientation orientation); GtkOrientation na_tray_get_orientation (NaTray *tray); +void na_tray_set_padding (NaTray *tray, + gint padding); void na_tray_force_redraw (NaTray *tray); G_END_DECLS diff -u -r gnome-panel-2.28.0/applets/notification_area/na-tray-manager.c hacked/applets/notification_area/na-tray-manager.c --- gnome-panel-2.28.0/applets/notification_area/na-tray-manager.c 2009-07-27 08:01:39.000000000 -0400 +++ hacked/applets/notification_area/na-tray-manager.c 2009-10-17 21:55:00.582062966 -0400 @@ -653,6 +653,32 @@ #endif } +static void +na_tray_manager_set_padding_property (NaTrayManager *manager) +{ +#ifdef GDK_WINDOWING_X11 + GdkDisplay *display; + Atom orientation_atom; + gulong data[1]; + + if (!manager->invisible || !manager->invisible->window) + return; + + display = gtk_widget_get_display (manager->invisible); + orientation_atom = gdk_x11_get_xatom_by_name_for_display (display, + "_NET_SYSTEM_TRAY_PADDING"); + + data[0] = manager->padding; + + XChangeProperty (GDK_DISPLAY_XDISPLAY (display), + GDK_WINDOW_XWINDOW (manager->invisible->window), + orientation_atom, + XA_CARDINAL, 32, + PropModeReplace, + (guchar *) &data, 1); +#endif +} + #ifdef GDK_WINDOWING_X11 static gboolean @@ -697,6 +723,7 @@ na_tray_manager_set_orientation_property (manager); na_tray_manager_set_visual_property (manager); + na_tray_manager_set_padding_property (manager); timestamp = gdk_x11_get_server_time (invisible->window); @@ -836,6 +863,20 @@ } } +void +na_tray_manager_set_padding (NaTrayManager *manager, + gint padding) +{ + g_return_if_fail (NA_IS_TRAY_MANAGER (manager)); + + if (manager->padding != padding) + { + manager->padding = padding; + + na_tray_manager_set_padding_property (manager); + } +} + GtkOrientation na_tray_manager_get_orientation (NaTrayManager *manager) { diff -u -r gnome-panel-2.28.0/applets/notification_area/na-tray-manager.h hacked/applets/notification_area/na-tray-manager.h --- gnome-panel-2.28.0/applets/notification_area/na-tray-manager.h 2009-04-19 13:45:09.000000000 -0400 +++ hacked/applets/notification_area/na-tray-manager.h 2009-10-17 21:55:42.646312700 -0400 @@ -55,6 +55,7 @@ GtkWidget *invisible; GdkScreen *screen; GtkOrientation orientation; + gint padding; GList *messages; GHashTable *socket_table; @@ -91,6 +92,8 @@ void na_tray_manager_set_orientation (NaTrayManager *manager, GtkOrientation orientation); GtkOrientation na_tray_manager_get_orientation (NaTrayManager *manager); +void na_tray_manager_set_padding (NaTrayManager *manager, + gint padding); G_END_DECLS diff -u -r gnome-panel-2.28.0/applets/notification_area/notification_area_applet.schemas.in hacked/applets/notification_area/notification_area_applet.schemas.in --- gnome-panel-2.28.0/applets/notification_area/notification_area_applet.schemas.in 2009-10-17 23:23:41.071058057 -0400 +++ hacked/applets/notification_area/notification_area_applet.schemas.in 2009-10-17 23:21:38.588316399 -0400 @@ -0,0 +1,17 @@ + + + + + /schemas/apps/notification_area_applet/prefs/padding + notification-area-applet + int + 3 + + Padding + + This key specifies padding to be put around status icons. + + + + +