[Xfce4-commits] <xfce4-panel:devel> Improve the size request of the tasklist plugin.

Nick Schermer nick at xfce.org
Tue Aug 11 20:28:04 CEST 2009


Updating branch refs/heads/devel
         to 58a4fa733991aa50577a2fc41909acf4304dc2f5 (commit)
       from 228b5075200b426bf1322ab15ae12a862ea482c0 (commit)

commit 58a4fa733991aa50577a2fc41909acf4304dc2f5
Author: Nick Schermer <nick at xfce.org>
Date:   Fri Feb 20 23:57:00 2009 +0100

    Improve the size request of the tasklist plugin.

 plugins/tasklist/tasklist-widget.c |   35 ++++++++++++++++++++++++++---------
 plugins/tasklist/tasklist-widget.h |    3 +++
 plugins/tasklist/tasklist.c        |   16 ++++++++++++++++
 3 files changed, 45 insertions(+), 9 deletions(-)

diff --git a/plugins/tasklist/tasklist-widget.c b/plugins/tasklist/tasklist-widget.c
index 41f424a..40659ef 100644
--- a/plugins/tasklist/tasklist-widget.c
+++ b/plugins/tasklist/tasklist-widget.c
@@ -74,6 +74,9 @@ struct _XfceTasklist
   /* normal or iconbox style */
   XfceTasklistStyle  style;
 
+  /* size of the panel pluin */
+  gint               size;
+
   /* orientation of the tasklist */
   GtkOrientation     orientation;
 
@@ -376,16 +379,11 @@ xfce_tasklist_size_request (GtkWidget      *widget,
   GtkRequisition     child_requisition;
   XfceTasklistChild *child;
   guint              n;
-  gint               max_length = MAX_BUTTON_LENGTH;
 
   /* initialize */
   requisition->width = GTK_CONTAINER (widget)->border_width * 2;
   requisition->height = requisition->width;
 
-  /* keep the buttons small when we're in iconbox mode */
-  if (tasklist->style == XFCE_TASKLIST_STYLE_ICONBOX)
-    max_length = 0;
-
   for (li = tasklist->children, n = 0; li != NULL; li = li->next)
     {
       child = li->data;
@@ -397,13 +395,17 @@ xfce_tasklist_size_request (GtkWidget      *widget,
 
       if (tasklist->orientation == GTK_ORIENTATION_HORIZONTAL)
         {
-          requisition->width += MIN (child_requisition.width, max_length);
-          //requisition->height = MAX (requisition->height, child_requisition.height);
+          if (tasklist->style == XFCE_TASKLIST_STYLE_NORMAL)
+            requisition->width += MAX_BUTTON_LENGTH;
+          else
+            requisition->width += tasklist->size;
         }
       else
         {
-          requisition->height += MIN (child_requisition.height, max_length);
-          //requisition->width = MAX (requisition->width, child_requisition.width);
+          if (tasklist->style == XFCE_TASKLIST_STYLE_NORMAL)
+            requisition->height += MAX_BUTTON_LENGTH;
+          else
+            requisition->height += tasklist->size;
         }
 
       n++;
@@ -1555,3 +1557,18 @@ xfce_tasklist_set_orientation (XfceTasklist   *tasklist,
       gtk_widget_queue_resize (GTK_WIDGET (tasklist));
     }
 }
+
+
+
+void
+xfce_tasklist_set_size (XfceTasklist *tasklist,
+                        gint          size)
+{
+  panel_return_if_fail (XFCE_IS_TASKLIST (tasklist));
+
+  if (tasklist->size != size)
+    {
+      tasklist->size = size;
+      gtk_widget_queue_resize (GTK_WIDGET (tasklist));
+    }
+}
diff --git a/plugins/tasklist/tasklist-widget.h b/plugins/tasklist/tasklist-widget.h
index 85f7b94..f372acf 100644
--- a/plugins/tasklist/tasklist-widget.h
+++ b/plugins/tasklist/tasklist-widget.h
@@ -53,6 +53,9 @@ GType xfce_tasklist_get_type        (void) G_GNUC_CONST;
 void  xfce_tasklist_set_orientation (XfceTasklist   *tasklist,
                                      GtkOrientation  orientation);
 
+void  xfce_tasklist_set_size        (XfceTasklist   *tasklist,
+                                     gint            size);
+
 G_END_DECLS
 
 #endif /* !__XFCE_TASKLIST_H__ */
diff --git a/plugins/tasklist/tasklist.c b/plugins/tasklist/tasklist.c
index f971125..e3da14e 100644
--- a/plugins/tasklist/tasklist.c
+++ b/plugins/tasklist/tasklist.c
@@ -60,6 +60,7 @@ struct _TasklistPlugin
 static void tasklist_plugin_construct (XfcePanelPlugin *panel_plugin);
 static void tasklist_plugin_free_data (XfcePanelPlugin *panel_plugin);
 static void tasklist_plugin_orientation_changed (XfcePanelPlugin *panel_plugin, GtkOrientation orientation);
+static gboolean tasklist_plugin_size_changed (XfcePanelPlugin *panel_plugin, gint size);
 static void tasklist_plugin_configure_plugin (XfcePanelPlugin *panel_plugin);
 
 
@@ -82,6 +83,7 @@ tasklist_plugin_class_init (TasklistPluginClass *klass)
   plugin_class->construct = tasklist_plugin_construct;
   plugin_class->free_data = tasklist_plugin_free_data;
   plugin_class->orientation_changed = tasklist_plugin_orientation_changed;
+  plugin_class->size_changed = tasklist_plugin_size_changed;
   plugin_class->configure_plugin = tasklist_plugin_configure_plugin;
 }
 
@@ -161,6 +163,20 @@ tasklist_plugin_orientation_changed (XfcePanelPlugin *panel_plugin,
 
 
 
+static gboolean
+tasklist_plugin_size_changed (XfcePanelPlugin *panel_plugin,
+                              gint             size)
+{
+  TasklistPlugin *plugin = XFCE_TASKLIST_PLUGIN (panel_plugin);
+
+  /* set the tasklist size */
+  xfce_tasklist_set_size (XFCE_TASKLIST (plugin->tasklist), size);
+
+  return TRUE;
+}
+
+
+
 static void
 tasklist_plugin_configure_plugin (XfcePanelPlugin *panel_plugin)
 {



More information about the Xfce4-commits mailing list