[Xfce4-commits] <xfce4-panel:andrzejr/deskbar-github> Added support for "small" property and deskbar-mode to the launcher plug-in.

Andrzej noreply at xfce.org
Mon Dec 12 11:40:10 CET 2011


Updating branch refs/heads/andrzejr/deskbar-github
         to 9ba9df835c8597452db32b9ab8be83d921b6fdd4 (commit)
       from d31a2d90bb5bd1d2234d142957d41cd8db105b8b (commit)

commit 9ba9df835c8597452db32b9ab8be83d921b6fdd4
Author: Andrzej <ndrwrdck at gmail.com>
Date:   Fri Nov 11 05:05:52 2011 +0900

    Added support for "small" property and deskbar-mode to the launcher plug-in.

 plugins/launcher/launcher.c |   49 +++++++++++++++++++++++++++++++++++++-----
 1 files changed, 43 insertions(+), 6 deletions(-)

diff --git a/plugins/launcher/launcher.c b/plugins/launcher/launcher.c
index b2354a3..98e205e 100644
--- a/plugins/launcher/launcher.c
+++ b/plugins/launcher/launcher.c
@@ -70,6 +70,10 @@ static void               launcher_plugin_orientation_changed           (XfcePan
                                                                          GtkOrientation        orientation);
 static gboolean           launcher_plugin_size_changed                  (XfcePanelPlugin      *panel_plugin,
                                                                          gint                  size);
+static void               launcher_plugin_nrows_changed                 (XfcePanelPlugin      *panel_plugin,
+                                                                         guint                 nrows);
+static void               launcher_plugin_deskbar_mode_changed          (XfcePanelPlugin      *panel_plugin,
+                                                                         gboolean              deskbar_mode);
 static void               launcher_plugin_configure_plugin              (XfcePanelPlugin      *panel_plugin);
 static void               launcher_plugin_screen_position_changed       (XfcePanelPlugin      *panel_plugin,
                                                                          XfceScreenPosition    position);
@@ -270,6 +274,8 @@ launcher_plugin_class_init (LauncherPluginClass *klass)
   plugin_class->free_data = launcher_plugin_free_data;
   plugin_class->orientation_changed = launcher_plugin_orientation_changed;
   plugin_class->size_changed = launcher_plugin_size_changed;
+  plugin_class->nrows_changed = launcher_plugin_nrows_changed;
+  plugin_class->deskbar_mode_changed = launcher_plugin_deskbar_mode_changed;
   plugin_class->configure_plugin = launcher_plugin_configure_plugin;
   plugin_class->screen_position_changed = launcher_plugin_screen_position_changed;
   plugin_class->removed = launcher_plugin_removed;
@@ -852,10 +858,13 @@ launcher_plugin_set_property (GObject      *object,
         gtk_widget_destroy (plugin->child);
 
       /* create child */
-      if (G_UNLIKELY (plugin->show_label))
+      if (G_UNLIKELY (plugin->show_label)) {
         plugin->child = gtk_label_new (NULL);
-      else
+        xfce_panel_plugin_set_small (XFCE_PANEL_PLUGIN (plugin), FALSE);
+      } else {
         plugin->child = xfce_panel_image_new ();
+        xfce_panel_plugin_set_small (XFCE_PANEL_PLUGIN (plugin), TRUE);
+      }
       gtk_container_add (GTK_CONTAINER (plugin->button), plugin->child);
       gtk_widget_show (plugin->child);
 
@@ -1004,6 +1013,8 @@ launcher_plugin_construct (XfcePanelPlugin *panel_plugin)
   /* show the configure menu item */
   xfce_panel_plugin_menu_show_configure (XFCE_PANEL_PLUGIN (plugin));
 
+  xfce_panel_plugin_set_small (panel_plugin, TRUE);
+
   /* lookup the config directory where this launcher stores it's desktop files */
   file = g_strdup_printf (RELATIVE_CONFIG_PATH,
                           xfce_panel_plugin_get_name (XFCE_PANEL_PLUGIN (plugin)),
@@ -1235,6 +1246,7 @@ launcher_plugin_size_changed (XfcePanelPlugin *panel_plugin,
   gint               a_width, a_height;
   gboolean           horizontal;
   LauncherArrowType  arrow_position;
+  guint              nrows;
 
   /* initialize the plugin size */
   p_width = p_height = size;
@@ -1281,15 +1293,40 @@ launcher_plugin_size_changed (XfcePanelPlugin *panel_plugin,
     }
 
   /* set the panel plugin size */
-  if (plugin->show_label)
-    gtk_widget_set_size_request (GTK_WIDGET (panel_plugin), -1, -1);
-  else
-    gtk_widget_set_size_request (GTK_WIDGET (panel_plugin), p_width, p_height);
+  nrows = xfce_panel_plugin_get_nrows (XFCE_PANEL_PLUGIN (plugin));
+  if (plugin->show_label) {
+    horizontal = !!(xfce_panel_plugin_get_orientation (panel_plugin) ==
+                    GTK_ORIENTATION_HORIZONTAL);
+    if (horizontal)
+      gtk_widget_set_size_request (GTK_WIDGET (plugin), -1, -1);
+    else
+      gtk_widget_set_size_request (GTK_WIDGET (plugin), -1, p_height / nrows);
+  } else
+    gtk_widget_set_size_request (GTK_WIDGET (plugin), p_width / nrows, p_height / nrows);
 
   return TRUE;
 }
 
 
+static void
+launcher_plugin_nrows_changed (XfcePanelPlugin *panel_plugin,
+                               guint            nrows)
+{
+  launcher_plugin_size_changed (XFCE_PANEL_PLUGIN (panel_plugin),
+                                xfce_panel_plugin_get_size (XFCE_PANEL_PLUGIN (panel_plugin)));
+}
+
+
+
+static void
+launcher_plugin_deskbar_mode_changed (XfcePanelPlugin *panel_plugin,
+                                      gboolean         deskbar_mode)
+{
+  launcher_plugin_orientation_changed (XFCE_PANEL_PLUGIN (panel_plugin),
+                                       xfce_panel_plugin_get_orientation (XFCE_PANEL_PLUGIN (panel_plugin)));
+}
+
+
 
 static void
 launcher_plugin_configure_plugin (XfcePanelPlugin *panel_plugin)


More information about the Xfce4-commits mailing list