[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