[gdm] Add the ability to have padding between icons in tray



commit ab7c74cca138c404338ebaf3ee3c1e3f6e92f083
Author: Ray Strode <rstrode redhat com>
Date:   Thu Oct 22 22:08:18 2009 -0400

    Add the ability to have padding between icons in tray

 .../libnotificationarea/na-tray-manager.c          |   41 ++++++++++++++++++++
 .../libnotificationarea/na-tray-manager.h          |    3 +
 gui/simple-greeter/libnotificationarea/na-tray.c   |   12 ++++++
 gui/simple-greeter/libnotificationarea/na-tray.h   |    2 +
 4 files changed, 58 insertions(+), 0 deletions(-)
---
diff --git a/gui/simple-greeter/libnotificationarea/na-tray-manager.c b/gui/simple-greeter/libnotificationarea/na-tray-manager.c
index 1bf54f1..d49c646 100644
--- a/gui/simple-greeter/libnotificationarea/na-tray-manager.c
+++ b/gui/simple-greeter/libnotificationarea/na-tray-manager.c
@@ -653,6 +653,32 @@ na_tray_manager_set_visual_property (NaTrayManager *manager)
 #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_manage_screen_x11 (NaTrayManager *manager,
 
   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 @@ na_tray_manager_set_orientation (NaTrayManager  *manager,
     }
 }
 
+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 --git a/gui/simple-greeter/libnotificationarea/na-tray-manager.h b/gui/simple-greeter/libnotificationarea/na-tray-manager.h
index f325453..e93882e 100644
--- a/gui/simple-greeter/libnotificationarea/na-tray-manager.h
+++ b/gui/simple-greeter/libnotificationarea/na-tray-manager.h
@@ -55,6 +55,7 @@ struct _NaTrayManager
   GtkWidget *invisible;
   GdkScreen *screen;
   GtkOrientation orientation;
+  gint padding;
 
   GList *messages;
   GHashTable *socket_table;
@@ -91,6 +92,8 @@ gboolean        na_tray_manager_manage_screen   (NaTrayManager      *manager,
 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 --git a/gui/simple-greeter/libnotificationarea/na-tray.c b/gui/simple-greeter/libnotificationarea/na-tray.c
index 3bd1258..40845c1 100644
--- a/gui/simple-greeter/libnotificationarea/na-tray.c
+++ b/gui/simple-greeter/libnotificationarea/na-tray.c
@@ -599,6 +599,8 @@ na_tray_constructor (GType type,
         {
           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]);
@@ -801,6 +803,16 @@ idle_redraw_cb (NaTray *tray)
 }
 
 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 --git a/gui/simple-greeter/libnotificationarea/na-tray.h b/gui/simple-greeter/libnotificationarea/na-tray.h
index 57baddd..1ead20f 100644
--- a/gui/simple-greeter/libnotificationarea/na-tray.h
+++ b/gui/simple-greeter/libnotificationarea/na-tray.h
@@ -60,6 +60,8 @@ NaTray         *na_tray_new_for_screen  (GdkScreen     *screen,
 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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]