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