[Xfce4-commits] <xfce4-panel:andrzejr/deskbar-applicationsmenu> applicationsmenu: syncing with nick/desktop-mode.

Andrzej noreply at xfce.org
Tue Dec 13 07:20:01 CET 2011


Updating branch refs/heads/andrzejr/deskbar-applicationsmenu
         to cd4b663b59a04caab2a7feeac9cebff37d95390c (commit)
       from 2370ecfba014032408dfb237c81dcb7bf113d32e (commit)

commit cd4b663b59a04caab2a7feeac9cebff37d95390c
Author: Andrzej <ndrwrdck at gmail.com>
Date:   Tue Dec 13 13:52:01 2011 +0900

    applicationsmenu: syncing with nick/desktop-mode.

 plugins/applicationsmenu/applicationsmenu.c |  100 +++++++++++++-------------
 1 files changed, 50 insertions(+), 50 deletions(-)

diff --git a/plugins/applicationsmenu/applicationsmenu.c b/plugins/applicationsmenu/applicationsmenu.c
index ca4eac1..0193f8d 100644
--- a/plugins/applicationsmenu/applicationsmenu.c
+++ b/plugins/applicationsmenu/applicationsmenu.c
@@ -103,8 +103,6 @@ static gboolean  applications_menu_plugin_size_changed         (XfcePanelPlugin
                                                                 gint                    size);
 static void      applications_menu_plugin_mode_changed         (XfcePanelPlugin        *panel_plugin,
                                                                 XfcePanelPluginMode     mode);
-static void      applications_menu_plugin_nrows_changed        (XfcePanelPlugin        *panel_plugin,
-                                                                guint                   nrows);
 static void      applications_menu_plugin_configure_plugin     (XfcePanelPlugin        *panel_plugin);
 static gboolean  applications_menu_plugin_remote_event         (XfcePanelPlugin        *panel_plugin,
                                                                 const gchar            *name,
@@ -140,7 +138,6 @@ applications_menu_plugin_class_init (ApplicationsMenuPluginClass *klass)
   plugin_class->free_data = applications_menu_plugin_free_data;
   plugin_class->size_changed = applications_menu_plugin_size_changed;
   plugin_class->mode_changed = applications_menu_plugin_mode_changed;
-  plugin_class->nrows_changed = applications_menu_plugin_nrows_changed;
   plugin_class->configure_plugin = applications_menu_plugin_configure_plugin;
   plugin_class->remote_event = applications_menu_plugin_remote_event;
 
@@ -346,8 +343,14 @@ applications_menu_plugin_set_property (GObject      *object,
           plugin->button_title != NULL ? plugin->button_title : "");
       gtk_widget_set_tooltip_text (plugin->button,
           exo_str_is_empty (plugin->button_title) ? NULL : plugin->button_title);
-      applications_menu_plugin_size_changed (XFCE_PANEL_PLUGIN (plugin),
-          xfce_panel_plugin_get_size (XFCE_PANEL_PLUGIN (plugin)));
+
+      /* check if the label still fits */
+      if (xfce_panel_plugin_get_mode (XFCE_PANEL_PLUGIN (plugin)) == XFCE_PANEL_PLUGIN_MODE_DESKBAR
+          && plugin->show_button_title)
+        {
+          applications_menu_plugin_size_changed (XFCE_PANEL_PLUGIN (plugin),
+              xfce_panel_plugin_get_size (XFCE_PANEL_PLUGIN (plugin)));
+        }
       return;
 
     case PROP_BUTTON_ICON:
@@ -425,80 +428,77 @@ applications_menu_plugin_size_changed (XfcePanelPlugin *panel_plugin,
                                        gint             size)
 {
   ApplicationsMenuPlugin *plugin = XFCE_APPLICATIONS_MENU_PLUGIN (panel_plugin);
+  gint                    row_size;
   gint                    icon_size;
   GtkStyle               *style;
-  gint                    plugin_size;
-  gint                    plugin_nrows;
   XfcePanelPluginMode     mode;
-  GtkOrientation          orientation;
   GtkRequisition          label_size;
+  GtkOrientation          orientation;
+  gint                    border_thickness;
 
-  plugin_size = xfce_panel_plugin_get_size (panel_plugin);
-  plugin_nrows = (gint) xfce_panel_plugin_get_nrows (panel_plugin);
+  row_size = size / xfce_panel_plugin_get_nrows (panel_plugin);
 
-  if (size > 2 * plugin_size / plugin_nrows)
-    size = 2 * plugin_size / plugin_nrows;
+  gtk_box_set_child_packing (GTK_BOX (plugin->box), plugin->icon,
+                             !plugin->show_button_title, !plugin->show_button_title,
+                             0, GTK_PACK_START);
 
-  style = gtk_widget_get_style (plugin->button);
-  icon_size = size - 2 * MAX (style->xthickness, style->ythickness);
+  mode = xfce_panel_plugin_get_mode (panel_plugin);
 
-  xfce_panel_image_set_size (XFCE_PANEL_IMAGE (plugin->icon), icon_size);
+  if (mode == XFCE_PANEL_PLUGIN_MODE_HORIZONTAL)
+    orientation = GTK_ORIENTATION_HORIZONTAL;
+  else
+    orientation = GTK_ORIENTATION_VERTICAL;
 
-  mode = xfce_panel_plugin_get_mode (panel_plugin);
-  orientation = (mode == XFCE_PANEL_PLUGIN_MODE_HORIZONTAL) ?
-    GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL;
+  if (!plugin->show_button_title)
+    {
+      xfce_panel_image_set_size (XFCE_PANEL_IMAGE (plugin->icon), -1);
 
-  /* deskbar mode & button title */
-  if (plugin->show_button_title &&
-      mode == XFCE_PANEL_PLUGIN_MODE_DESKBAR)
+      if (mode == XFCE_PANEL_PLUGIN_MODE_HORIZONTAL)
+        gtk_widget_set_size_request (GTK_WIDGET (panel_plugin), row_size, size);
+      else
+        gtk_widget_set_size_request (GTK_WIDGET (panel_plugin), size, row_size);
+    }
+  else
     {
-      gtk_widget_size_request(GTK_WIDGET (plugin->label), &label_size);
+      style = gtk_widget_get_style (plugin->button);
+      border_thickness = 2 * MAX (style->xthickness, style->ythickness) + 2;
 
-      /* the title fits next to the icon */
-      if (label_size.width <= plugin_size - size - MAX (style->xthickness, style->ythickness))
+      icon_size = row_size - border_thickness;
+      xfce_panel_image_set_size (XFCE_PANEL_IMAGE (plugin->icon), icon_size);
+      gtk_widget_set_size_request (GTK_WIDGET (panel_plugin), -1, -1);
+
+      if (mode == XFCE_PANEL_PLUGIN_MODE_DESKBAR)
         {
-          orientation = GTK_ORIENTATION_HORIZONTAL;
+          /* check if the label fits next to the icon */
+          gtk_widget_size_request (GTK_WIDGET (plugin->label), &label_size);
+          if (label_size.width <= size - border_thickness - icon_size)
+            orientation = GTK_ORIENTATION_HORIZONTAL;
         }
     }
-  gtk_orientable_set_orientation (GTK_ORIENTABLE (plugin->box),
-                                  orientation);
+
+  gtk_orientable_set_orientation (GTK_ORIENTABLE (plugin->box), orientation);
+
   return TRUE;
 }
 
 
 
 static void
-applications_menu_plugin_mode_changed (XfcePanelPlugin      *panel_plugin,
-                                       XfcePanelPluginMode   mode)
+applications_menu_plugin_mode_changed (XfcePanelPlugin     *panel_plugin,
+                                       XfcePanelPluginMode  mode)
 {
   ApplicationsMenuPlugin *plugin = XFCE_APPLICATIONS_MENU_PLUGIN (panel_plugin);
+  gint                    angle;
 
-  if (mode != XFCE_PANEL_PLUGIN_MODE_VERTICAL)
-    {
-      gtk_orientable_set_orientation (GTK_ORIENTABLE (plugin->box), GTK_ORIENTATION_HORIZONTAL);
-      /* gtk_box_reorder_child (GTK_BOX (plugin->box), plugin->icon, 0); */
-      gtk_label_set_angle (GTK_LABEL (plugin->label), 0);
-    }
-  else
-    {
-      gtk_orientable_set_orientation (GTK_ORIENTABLE (plugin->box), GTK_ORIENTATION_VERTICAL);
-      /* gtk_box_reorder_child (GTK_BOX (plugin->box), plugin->icon, -1); */
-      gtk_label_set_angle (GTK_LABEL (plugin->label), 270);
-    }
-  applications_menu_plugin_size_changed (panel_plugin,
-                                         xfce_panel_plugin_get_size (panel_plugin));
-}
-
+  angle = (mode == XFCE_PANEL_PLUGIN_MODE_VERTICAL) ? 270 : 0;
+  gtk_label_set_angle (GTK_LABEL (plugin->label), angle);
 
-static void
-applications_menu_plugin_nrows_changed (XfcePanelPlugin        *panel_plugin,
-                                       guint                   nrows)
-{
   applications_menu_plugin_size_changed (panel_plugin,
-                                         xfce_panel_plugin_get_size (panel_plugin));
+      xfce_panel_plugin_get_size (panel_plugin));
 }
 
 
+
 static void
 applications_menu_plugin_configure_plugin_file_set (GtkFileChooserButton   *button,
                                                     ApplicationsMenuPlugin *plugin)


More information about the Xfce4-commits mailing list