[Xfce4-commits] <xfce4-panel:andrzejr/deskbar-github> Making tasklist plugin use new deskbar-mode and nrows properties.
Andrzej
noreply at xfce.org
Mon Dec 12 11:40:03 CET 2011
Updating branch refs/heads/andrzejr/deskbar-github
to 719594570381f2bc6ad91f8616b80af7db91b2ec (commit)
from b4c0807f56dcca17a63569fa87b0becd430b7519 (commit)
commit 719594570381f2bc6ad91f8616b80af7db91b2ec
Author: Andrzej <ndrwrdck at gmail.com>
Date: Thu Nov 10 13:13:02 2011 +0900
Making tasklist plugin use new deskbar-mode and nrows properties.
Max-button-size and rotate-vertically have no effect but are not removed.
plugins/tasklist/tasklist-widget.c | 65 +++++++++++++++++++++++++++++-------
plugins/tasklist/tasklist-widget.h | 6 +++
plugins/tasklist/tasklist.c | 30 ++++++++++++++++
3 files changed, 89 insertions(+), 12 deletions(-)
diff --git a/plugins/tasklist/tasklist-widget.c b/plugins/tasklist/tasklist-widget.c
index d5ad920..8044d77 100644
--- a/plugins/tasklist/tasklist-widget.c
+++ b/plugins/tasklist/tasklist-widget.c
@@ -68,7 +68,7 @@
#define xfce_taskbar_is_locked(tasklist) (XFCE_TASKLIST (tasklist)->locked > 0)
#define xfce_tasklist_get_panel_plugin(tasklist) gtk_widget_get_ancestor (GTK_WIDGET (tasklist), XFCE_TYPE_PANEL_PLUGIN)
-#define xfce_tasklist_horizontal(tasklist) ((tasklist)->horizontal || (!(tasklist)->rotate_vertically && (tasklist)->show_labels))
+#define xfce_tasklist_horizontal(tasklist) ((tasklist)->horizontal || ((tasklist)->deskbar_mode && (tasklist)->show_labels))
#define xfce_tasklist_filter_monitors(tasklist) (!(tasklist)->all_monitors && (tasklist)->monitor_geometry.width != -1)
#define xfce_tasklist_geometry_set_invalid(tasklist) ((tasklist)->monitor_geometry.width = -1)
#define xfce_tasklist_geometry_has_point(tasklist, x, y) ( \
@@ -151,6 +151,12 @@ struct _XfceTasklist
/* if we rotate buttons in a vertical panel */
guint rotate_vertically : 1;
+ /* number of rows of window buttons */
+ guint nrows;
+
+ /* is panel in vertical deskbar mode? */
+ gboolean deskbar_mode : 1;
+
/* switch window with the mouse wheel */
guint window_scrolling : 1;
@@ -535,6 +541,8 @@ xfce_tasklist_init (XfceTasklist *tasklist)
tasklist->windows = NULL;
tasklist->skipped_windows = NULL;
tasklist->horizontal = TRUE;
+ tasklist->nrows = 1;
+ tasklist->deskbar_mode = FALSE;
tasklist->all_workspaces = FALSE;
tasklist->button_relief = GTK_RELIEF_NORMAL;
tasklist->switch_workspace = TRUE;
@@ -767,7 +775,8 @@ xfce_tasklist_size_request (GtkWidget *widget,
{
gtk_widget_size_request (child->button, &child_req);
- child_height = MAX (child_height, child_req.height);
+ /* child_height = MAX (child_height, child_req.height); */
+ child_height = MAX (child_height, tasklist->size / tasklist->nrows);
if (child->type == CHILD_TYPE_GROUP_MENU)
continue;
@@ -789,8 +798,11 @@ xfce_tasklist_size_request (GtkWidget *widget,
}
else
{
- rows = tasklist->size / tasklist->max_button_size;
- rows = CLAMP (rows, 1, n_windows);
+ /* rows = tasklist->size / tasklist->max_button_size; */
+ rows = tasklist->nrows;
+ /* rows = CLAMP (rows, 1, n_windows); */
+ if (rows < 1)
+ rows = 1;
cols = n_windows / rows;
if (cols * rows < n_windows)
@@ -807,7 +819,7 @@ xfce_tasklist_size_request (GtkWidget *widget,
/* set the requested sizes */
if (xfce_tasklist_horizontal (tasklist))
{
- if (tasklist->horizontal != xfce_tasklist_horizontal (tasklist))
+ if (tasklist->deskbar_mode)
{
requisition->height = child_height * n_windows;
requisition->width = tasklist->size;
@@ -862,11 +874,12 @@ xfce_tasklist_size_layout (XfceTasklist *tasklist,
gint n_buttons;
gint n_buttons_target;
- /* if we're in the opposite vertical mode, there are no columns */
- if (tasklist->horizontal != xfce_tasklist_horizontal (tasklist))
+ /* if we're in deskbar mode, there are no columns */
+ if (tasklist->deskbar_mode && tasklist->show_labels)
rows = tasklist->n_windows;
else
- rows = alloc->height / tasklist->max_button_size;
+ /* rows = alloc->height / tasklist->max_button_size; */
+ rows = tasklist->nrows;
if (rows < 1)
rows = 1;
@@ -1063,11 +1076,9 @@ xfce_tasklist_size_allocate (GtkWidget *widget,
child_alloc.width = MAX (w, 1); /* TODO this is a workaround */
child_alloc.height = h / (rows - row);
- if (!tasklist->horizontal
- && xfce_tasklist_horizontal (tasklist))
+ if (tasklist->deskbar_mode && tasklist->show_labels)
{
- gtk_widget_get_child_requisition (child->button, &child_req);
- child_alloc.height = child_req.height;
+ child_alloc.height = tasklist->size / tasklist->nrows;
}
h -= child_alloc.height;
@@ -3832,6 +3843,36 @@ xfce_tasklist_set_rotate_vertically (XfceTasklist *tasklist,
void
+xfce_tasklist_set_nrows (XfceTasklist *tasklist,
+ guint nrows)
+{
+ panel_return_if_fail (XFCE_IS_TASKLIST (tasklist));
+
+ if (tasklist->nrows != nrows)
+ {
+ tasklist->nrows = nrows;
+ gtk_widget_queue_resize (GTK_WIDGET (tasklist));
+ }
+}
+
+
+
+void
+xfce_tasklist_set_deskbar_mode (XfceTasklist *tasklist,
+ gboolean deskbar_mode)
+{
+ panel_return_if_fail (XFCE_IS_TASKLIST (tasklist));
+
+ if (tasklist->deskbar_mode != deskbar_mode)
+ {
+ tasklist->deskbar_mode = deskbar_mode;
+ xfce_tasklist_update_orientation (tasklist);
+ }
+}
+
+
+
+void
xfce_tasklist_set_orientation (XfceTasklist *tasklist,
GtkOrientation orientation)
{
diff --git a/plugins/tasklist/tasklist-widget.h b/plugins/tasklist/tasklist-widget.h
index 3a0eaf4..30e9777 100644
--- a/plugins/tasklist/tasklist-widget.h
+++ b/plugins/tasklist/tasklist-widget.h
@@ -71,6 +71,12 @@ void xfce_tasklist_set_orientation (XfceTasklist *tasklist,
void xfce_tasklist_set_size (XfceTasklist *tasklist,
gint size);
+void xfce_tasklist_set_nrows (XfceTasklist *tasklist,
+ guint nrows);
+
+void xfce_tasklist_set_deskbar_mode (XfceTasklist *tasklist,
+ gboolean deskbar_mode);
+
void xfce_tasklist_update_monitor_geometry (XfceTasklist *tasklist);
G_END_DECLS
diff --git a/plugins/tasklist/tasklist.c b/plugins/tasklist/tasklist.c
index 1c1a332..6639761 100644
--- a/plugins/tasklist/tasklist.c
+++ b/plugins/tasklist/tasklist.c
@@ -64,6 +64,10 @@ static void tasklist_plugin_orientation_changed (XfcePanelPlugin *pan
GtkOrientation orientation);
static gboolean tasklist_plugin_size_changed (XfcePanelPlugin *panel_plugin,
gint size);
+static void tasklist_plugin_nrows_changed (XfcePanelPlugin *panel_plugin,
+ guint nrows);
+static void tasklist_plugin_deskbar_mode_changed (XfcePanelPlugin *panel_plugin,
+ gboolean deskbar_mode);
static void tasklist_plugin_screen_position_changed (XfcePanelPlugin *panel_plugin,
XfceScreenPosition position);
static void tasklist_plugin_configure_plugin (XfcePanelPlugin *panel_plugin);
@@ -87,6 +91,8 @@ tasklist_plugin_class_init (TasklistPluginClass *klass)
plugin_class->construct = tasklist_plugin_construct;
plugin_class->orientation_changed = tasklist_plugin_orientation_changed;
plugin_class->size_changed = tasklist_plugin_size_changed;
+ plugin_class->nrows_changed = tasklist_plugin_nrows_changed;
+ plugin_class->deskbar_mode_changed = tasklist_plugin_deskbar_mode_changed;
plugin_class->screen_position_changed = tasklist_plugin_screen_position_changed;
plugin_class->configure_plugin = tasklist_plugin_configure_plugin;
}
@@ -186,6 +192,30 @@ tasklist_plugin_size_changed (XfcePanelPlugin *panel_plugin,
static void
+tasklist_plugin_nrows_changed (XfcePanelPlugin *panel_plugin,
+ guint nrows)
+{
+ TasklistPlugin *plugin = XFCE_TASKLIST_PLUGIN (panel_plugin);
+
+ /* set the tasklist nrows */
+ xfce_tasklist_set_nrows (XFCE_TASKLIST (plugin->tasklist), nrows);
+}
+
+
+
+static void
+tasklist_plugin_deskbar_mode_changed (XfcePanelPlugin *panel_plugin,
+ gboolean deskbar_mode)
+{
+ TasklistPlugin *plugin = XFCE_TASKLIST_PLUGIN (panel_plugin);
+
+ /* set the tasklist deskbar_mode */
+ xfce_tasklist_set_deskbar_mode (XFCE_TASKLIST (plugin->tasklist), deskbar_mode);
+}
+
+
+
+static void
tasklist_plugin_screen_position_changed (XfcePanelPlugin *panel_plugin,
XfceScreenPosition position)
{
More information about the Xfce4-commits
mailing list