[Xfce4-commits] <xfce4-indicator-plugin:master> Added support for multi-row layout.
Mark Trompell
noreply at xfce.org
Mon Mar 19 13:32:01 CET 2012
Updating branch refs/heads/master
to 29f92f26c7622a4a43ed91cbe89899001529a022 (commit)
from 03e9dc5f93a318890ed1c47071c78315f449e884 (commit)
commit 29f92f26c7622a4a43ed91cbe89899001529a022
Author: Andrzej <ndrwrdck at gmail.com>
Date: Mon Mar 19 20:56:37 2012 +0900
Added support for multi-row layout.
Layout mechanism implemented in a new class XfceIndicatorBox.
panel-plugin/Makefile.am | 2 +
panel-plugin/indicator-box.c | 408 +++++++++++++++++++++++++++++++++++++++
panel-plugin/indicator-box.h | 65 ++++++
panel-plugin/indicator-button.c | 5 +-
panel-plugin/indicator.c | 82 ++-------
5 files changed, 492 insertions(+), 70 deletions(-)
diff --git a/panel-plugin/Makefile.am b/panel-plugin/Makefile.am
index de8c63a..5327a91 100644
--- a/panel-plugin/Makefile.am
+++ b/panel-plugin/Makefile.am
@@ -16,6 +16,8 @@ plugindir = \
xfce4_indicator_plugin_SOURCES = \
indicator-button.c \
indicator-button.h \
+ indicator-box.c \
+ indicator-box.h \
indicator.c \
indicator.h
diff --git a/panel-plugin/indicator-box.c b/panel-plugin/indicator-box.c
new file mode 100644
index 0000000..e8ccb8a
--- /dev/null
+++ b/panel-plugin/indicator-box.c
@@ -0,0 +1,408 @@
+/* Copyright (c) 2012 Andrzej <ndrwrdck at gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <libxfce4panel/libxfce4panel.h>
+#include <libindicator/indicator-object.h>
+
+#include "indicator-box.h"
+#include "indicator-button.h"
+
+static void xfce_indicator_box_finalize (GObject *object);
+static void xfce_indicator_box_add (GtkContainer *container,
+ GtkWidget *child);
+static void xfce_indicator_box_remove (GtkContainer *container,
+ GtkWidget *child);
+static void xfce_indicator_box_forall (GtkContainer *container,
+ gboolean include_internals,
+ GtkCallback callback,
+ gpointer callback_data);
+static GType xfce_indicator_box_child_type (GtkContainer *container);
+static void xfce_indicator_box_size_request (GtkWidget *widget,
+ GtkRequisition *requisition);
+static void xfce_indicator_box_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation);
+
+
+G_DEFINE_TYPE (XfceIndicatorBox, xfce_indicator_box, GTK_TYPE_CONTAINER)
+
+static void
+xfce_indicator_box_class_init (XfceIndicatorBoxClass *klass)
+{
+ GObjectClass *gobject_class;
+ GtkWidgetClass *gtkwidget_class;
+ GtkContainerClass *gtkcontainer_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = xfce_indicator_box_finalize;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->size_request = xfce_indicator_box_size_request;
+ gtkwidget_class->size_allocate = xfce_indicator_box_size_allocate;
+
+ gtkcontainer_class = GTK_CONTAINER_CLASS (klass);
+ gtkcontainer_class->add = xfce_indicator_box_add;
+ gtkcontainer_class->remove = xfce_indicator_box_remove;
+ gtkcontainer_class->forall = xfce_indicator_box_forall;
+ gtkcontainer_class->child_type = xfce_indicator_box_child_type;
+}
+
+
+
+static void
+xfce_indicator_box_init (XfceIndicatorBox *box)
+{
+ GTK_WIDGET_SET_FLAGS (box, GTK_NO_WINDOW);
+
+ gtk_widget_set_can_focus(GTK_WIDGET(box), TRUE);
+ gtk_container_set_border_width(GTK_CONTAINER(box), 0);
+
+ box->children = NULL;
+
+ box->nrows = 1;
+ box->panel_size = 16;
+ box->panel_orientation = GTK_ORIENTATION_HORIZONTAL;
+ box->orientation = GTK_ORIENTATION_HORIZONTAL;
+}
+
+
+
+static void
+xfce_indicator_box_finalize (GObject *object)
+{
+ XfceIndicatorBox *box = XFCE_INDICATOR_BOX (object);
+
+ if (box->children != NULL)
+ {
+ g_slist_free (box->children);
+ g_debug ("Not all icons have been removed from the indicator icon box.");
+ }
+
+ G_OBJECT_CLASS (xfce_indicator_box_parent_class)->finalize (object);
+}
+
+
+
+void
+xfce_indicator_box_set_orientation (XfceIndicatorBox *box,
+ GtkOrientation panel_orientation,
+ GtkOrientation orientation)
+{
+ gboolean needs_update = FALSE;
+ XfceIndicatorButton *child;
+ GSList *li;
+
+ g_return_if_fail (XFCE_IS_INDICATOR_BOX (box));
+
+ if (box->orientation != orientation)
+ {
+ box->orientation = orientation;
+ needs_update = TRUE;
+ }
+
+ if (box->panel_orientation != panel_orientation)
+ {
+ box->panel_orientation = panel_orientation;
+ needs_update = TRUE;
+ }
+
+ if (needs_update)
+ {
+ for (li = box->children; li != NULL; li = li->next)
+ {
+ child = XFCE_INDICATOR_BUTTON (li->data);
+ g_return_if_fail (XFCE_IS_INDICATOR_BUTTON (child));
+ xfce_indicator_button_set_orientation (child, panel_orientation, orientation);
+ }
+ gtk_widget_queue_resize (GTK_WIDGET (box));
+ }
+}
+
+
+
+void
+xfce_indicator_box_set_size (XfceIndicatorBox *box,
+ gint panel_size,
+ gint nrows)
+{
+ gboolean needs_update = FALSE;
+ XfceIndicatorButton *child;
+ GSList *li;
+
+ g_return_if_fail (XFCE_IS_INDICATOR_BOX (box));
+
+ if (box->nrows != nrows)
+ {
+ box->nrows = nrows;
+ needs_update = TRUE;
+ }
+
+ if (box->panel_size != panel_size)
+ {
+ box->panel_size = panel_size;
+ needs_update = TRUE;
+ }
+
+ if (needs_update)
+ {
+ for (li = box->children; li != NULL; li = li->next)
+ {
+ child = XFCE_INDICATOR_BUTTON (li->data);
+ g_return_if_fail (XFCE_IS_INDICATOR_BUTTON (child));
+ xfce_indicator_button_set_size (child, panel_size, panel_size / nrows);
+ }
+ gtk_widget_queue_resize (GTK_WIDGET (box));
+ }
+}
+
+
+
+GtkWidget *
+xfce_indicator_box_new ()
+{
+ XfceIndicatorBox *box = g_object_new (XFCE_TYPE_INDICATOR_BOX, NULL);
+ return GTK_WIDGET (box);
+}
+
+
+
+static void
+xfce_indicator_box_add (GtkContainer *container,
+ GtkWidget *child)
+{
+ XfceIndicatorBox *box = XFCE_INDICATOR_BOX (container);
+ XfceIndicatorButton *button = XFCE_INDICATOR_BUTTON (child);
+
+ g_return_if_fail (XFCE_IS_INDICATOR_BOX (box));
+ g_return_if_fail (GTK_IS_WIDGET (child));
+ g_return_if_fail (child->parent == NULL);
+
+ box->children = g_slist_append (box->children, child);
+
+ gtk_widget_set_parent (child, GTK_WIDGET (box));
+ xfce_indicator_button_set_orientation (button, box->panel_orientation, box->orientation);
+ xfce_indicator_button_set_size (button, box->panel_size, box->panel_size / box->nrows);
+
+ gtk_widget_queue_resize (GTK_WIDGET (container));
+}
+
+
+
+static void
+xfce_indicator_box_remove (GtkContainer *container,
+ GtkWidget *child)
+{
+ XfceIndicatorBox *box = XFCE_INDICATOR_BOX (container);
+ GSList *li;
+
+ /* search the child */
+ li = g_slist_find (box->children, child);
+ if (G_LIKELY (li != NULL))
+ {
+ g_assert (GTK_WIDGET (li->data) == child);
+
+ /* unparent widget */
+ box->children = g_slist_remove_link (box->children, li);
+ gtk_widget_unparent (child);
+
+ /* resize, so we update has-hidden */
+ gtk_widget_queue_resize (GTK_WIDGET (container));
+ }
+}
+
+
+
+static void
+xfce_indicator_box_forall (GtkContainer *container,
+ gboolean include_internals,
+ GtkCallback callback,
+ gpointer callback_data)
+{
+ XfceIndicatorBox *box = XFCE_INDICATOR_BOX (container);
+ GSList *li, *lnext;
+
+ /* run callback for all children */
+ for (li = box->children; li != NULL; li = lnext)
+ {
+ lnext = li->next;
+ (*callback) (GTK_WIDGET (li->data), callback_data);
+ }
+}
+
+
+
+static GType
+xfce_indicator_box_child_type (GtkContainer *container)
+{
+ return GTK_TYPE_WIDGET;
+}
+
+
+
+static void
+xfce_indicator_box_size_request (GtkWidget *widget,
+ GtkRequisition *requisition)
+{
+ XfceIndicatorBox *box = XFCE_INDICATOR_BOX (widget);
+ GtkWidget *child;
+ GtkRequisition child_req;
+ GSList *li;
+ gint panel_size;
+ gint length;
+ gint row;
+ gint x;
+ gboolean has_label;
+
+ panel_size = box->panel_size;
+ row = 0;
+ length = 0;
+ x = 0;
+
+ for (li = box->children; li != NULL; li = li->next)
+ {
+ child = GTK_WIDGET (li->data);
+ g_return_if_fail (XFCE_IS_INDICATOR_BUTTON (child));
+
+ gtk_widget_size_request (child, &child_req);
+ has_label = (xfce_indicator_button_get_label (XFCE_INDICATOR_BUTTON (child)) != NULL);
+
+ /* wrap rows if column is overflowing or a label is encountered */
+ if (row > 0 && (has_label || row >= box->nrows))
+ {
+ x += length;
+ row = 0;
+ length = 0;
+ }
+
+ length =
+ MAX (length, (box->panel_orientation == GTK_ORIENTATION_HORIZONTAL) ? child_req.width :child_req.height);
+
+ if (has_label || row >= box->nrows)
+ {
+ x += length;
+ row = 0;
+ length = 0;
+ }
+ else
+ {
+ row += 1;
+ }
+ }
+
+ x += length;
+
+ if (box->panel_orientation == GTK_ORIENTATION_HORIZONTAL)
+ {
+ requisition->width = x;
+ requisition->height = panel_size;
+ }
+ else
+ {
+ requisition->width = panel_size;
+ requisition->height = x;
+ }
+ g_debug ("indicator-box size request: w=%d h=%d", requisition->width, requisition->height);
+}
+
+
+
+static void
+xfce_indicator_box_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ XfceIndicatorBox *box = XFCE_INDICATOR_BOX (widget);
+ GtkWidget *child;
+ GtkAllocation child_alloc;
+ GtkRequisition child_req;
+ gint panel_size, size;
+ gint x, y;
+ gint x0, y0;
+ GSList *li;
+ gint length, width;
+ gint row;
+ gboolean has_label;
+
+ row = 0;
+ length = 0;
+ width = 0;
+ x = y = 0;
+ x0 = allocation->x;
+ y0 = allocation->y;
+
+ panel_size = box->panel_size;
+ size = panel_size / box->nrows;
+
+ for (li = box->children; li != NULL; li = li->next)
+ {
+ child = GTK_WIDGET (li->data);
+ g_return_if_fail (XFCE_IS_INDICATOR_BUTTON (child));
+
+ gtk_widget_get_child_requisition (child, &child_req);
+
+ has_label = (xfce_indicator_button_get_label (XFCE_INDICATOR_BUTTON (child)) != NULL);
+
+ /* wrap rows if column is overflowing or a label is encountered */
+ if (row > 0 && (has_label || row >= box->nrows))
+ {
+ x += length;
+ y = 0;
+ row = 0;
+ length = 0;
+ }
+
+ width = (has_label) ? panel_size : size;
+ length = MAX (length,
+ (box->panel_orientation == GTK_ORIENTATION_HORIZONTAL) ? child_req.width :child_req.height);
+
+ if (box->panel_orientation == GTK_ORIENTATION_HORIZONTAL)
+ {
+ child_alloc.x = x0 + x;
+ child_alloc.y = y0 + y;
+ child_alloc.width = length;
+ child_alloc.height = width;
+ }
+ else
+ {
+ child_alloc.x = x0 + y;
+ child_alloc.y = y0 + x;
+ child_alloc.width = width;
+ child_alloc.height = length;
+ }
+
+ g_debug ("indicator-box size allocate: x=%d y=%d w=%d h=%d",
+ child_alloc.x, child_alloc.y, child_alloc.width, child_alloc.height);
+
+ gtk_widget_size_allocate (child, &child_alloc);
+
+ if (has_label || row >= box->nrows)
+ {
+ x += length;
+ y = 0;
+ row = 0;
+ length = 0;
+ }
+ else
+ {
+ row += 1;
+ y += size;
+ }
+ }
+}
+
+
+
diff --git a/panel-plugin/indicator-box.h b/panel-plugin/indicator-box.h
new file mode 100644
index 0000000..fafaa37
--- /dev/null
+++ b/panel-plugin/indicator-box.h
@@ -0,0 +1,65 @@
+/* Copyright (c) 2012 Andrzej <ndrwrdck at gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __INDICATOR_BOX_H__
+#define __INDICATOR_BOX_H__
+
+G_BEGIN_DECLS
+
+GType xfce_indicator_box_get_type (void);
+
+#define XFCE_TYPE_INDICATOR_BOX (xfce_indicator_box_get_type())
+#define XFCE_INDICATOR_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), XFCE_TYPE_INDICATOR_BOX, XfceIndicatorBox))
+#define XFCE_INDICATOR_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), XFCE_TYPE_INDICATOR_BOX, XfceIndicatorBoxClass))
+#define XFCE_IS_INDICATOR_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), XFCE_TYPE_INDICATOR_BOX))
+#define XFCE_IS_INDICATOR_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), XFCE_TYPE_INDICATOR_BOX))
+#define XFCE_INDICATOR_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), XFCE_TYPE_INDICATOR_BOX, XfceIndicatorBoxClass))
+
+typedef struct _XfceIndicatorBox XfceIndicatorBox;
+typedef struct _XfceIndicatorBoxClass XfceIndicatorBoxClass;
+
+struct _XfceIndicatorBox
+{
+ GtkContainer __parent__;
+
+ GSList *children;
+
+ gint panel_size;
+ gint nrows;
+
+ GtkOrientation panel_orientation;
+ GtkOrientation orientation;
+};
+
+struct _XfceIndicatorBoxClass
+{
+ GtkContainerClass __parent__;
+};
+
+void xfce_indicator_box_set_orientation (XfceIndicatorBox *button,
+ GtkOrientation panel_orientation,
+ GtkOrientation orientation);
+
+void xfce_indicator_box_set_size (XfceIndicatorBox *button,
+ gint panel_size,
+ gint nrows);
+
+GtkWidget *xfce_indicator_box_new ();
+
+G_END_DECLS
+
+#endif /* !__INDICATOR_BOX_H__ */
diff --git a/panel-plugin/indicator-button.c b/panel-plugin/indicator-button.c
index 709f79e..c846848 100644
--- a/panel-plugin/indicator-button.c
+++ b/panel-plugin/indicator-button.c
@@ -133,7 +133,10 @@ xfce_indicator_button_update_layout (XfceIndicatorButton *button)
{
gtk_widget_size_request (button->label, &label_size);
- if (label_size.width > button->panel_size - icon_size - border_thickness)
+ /* put icon above the label if number of rows > 1 (they look better)
+ or if they don't fit when arranged horizontally */
+ if (button->panel_size != button->size ||
+ label_size.width > button->panel_size - icon_size - border_thickness)
gtk_orientable_set_orientation (GTK_ORIENTABLE (button->box), GTK_ORIENTATION_VERTICAL);
else
gtk_orientable_set_orientation (GTK_ORIENTABLE (button->box), GTK_ORIENTATION_HORIZONTAL);
diff --git a/panel-plugin/indicator.c b/panel-plugin/indicator.c
index 2867833..a28e359 100644
--- a/panel-plugin/indicator.c
+++ b/panel-plugin/indicator.c
@@ -28,6 +28,7 @@
#include <libindicator/indicator-object.h>
#include "indicator.h"
+#include "indicator-box.h"
#include "indicator-button.h"
#define DEFAULT_EXCLUDED_MODULES NULL
@@ -146,8 +147,7 @@ indicator_new (XfcePanelPlugin *plugin)
INDICATOR_ICONS_DIR);
/*gtk_widget_set_name(GTK_WIDGET (indicator->plugin), "indicator-plugin");*/
- indicator->buttonbox = gtk_hbox_new(FALSE,0);
- gtk_widget_set_can_focus(GTK_WIDGET(indicator->buttonbox), TRUE);
+ indicator->buttonbox = xfce_indicator_box_new ();;
gtk_rc_parse_string (
"style \"indicator-plugin-style\"\n"
"{\n"
@@ -157,9 +157,6 @@ indicator_new (XfcePanelPlugin *plugin)
" GtkWidget::focus-padding = 0\n"
"}\n"
"widget \"*.indicator-button\" style \"indicator-plugin-style\"");
-
- gtk_widget_set_name(GTK_WIDGET (indicator->buttonbox), "indicator-button");
- gtk_container_set_border_width(GTK_CONTAINER(indicator->buttonbox), 0);
/* get the list of excluded modules */
indicator_read (indicator);
@@ -237,42 +234,26 @@ indicator_mode_changed (XfcePanelPlugin *plugin,
XfcePanelPluginMode mode,
IndicatorPlugin *indicator)
{
- GList *buttons;
- GList *button;
GtkOrientation orientation;
GtkOrientation panel_orientation = xfce_panel_plugin_get_orientation (plugin);
- gtk_orientable_set_orientation (GTK_ORIENTABLE(indicator->buttonbox), panel_orientation);
-
orientation = (mode == XFCE_PANEL_PLUGIN_MODE_VERTICAL) ?
GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL;
- buttons = gtk_container_get_children (GTK_CONTAINER (indicator->buttonbox));
- for (button = buttons; button != NULL; button = g_list_next (button))
- {
- xfce_indicator_button_set_orientation (XFCE_INDICATOR_BUTTON (button->data),
- panel_orientation, orientation);
- }
+ xfce_indicator_box_set_orientation (XFCE_INDICATOR_BOX (indicator->buttonbox), panel_orientation, orientation);
+
indicator_size_changed (plugin, xfce_panel_plugin_get_size (plugin), indicator);
}
+
+
#else
static void
indicator_orientation_changed (XfcePanelPlugin *plugin,
GtkOrientation orientation,
IndicatorPlugin *indicator)
{
- GList *buttons;
- GList *button;
-
- gtk_orientable_set_orientation (GTK_ORIENTABLE(indicator->buttonbox), orientation);
-
- buttons = gtk_container_get_children (GTK_CONTAINER (indicator->buttonbox));
- for (button = buttons; button != NULL; button = g_list_next (button))
- {
- xfce_indicator_button_set_orientation (XFCE_INDICATOR_BUTTON (button->data),
- orientation, GTK_ORIENTATION_HORIZONTAL);
- }
+ xfce_indicator_box_set_orientation (XFCE_INDICATOR_BOX (indicator->buttonbox), orientation, GTK_ORIENTATION_HORIZONTAL);
indicator_size_changed (plugin, xfce_panel_plugin_get_size (plugin), indicator);
}
@@ -284,30 +265,13 @@ indicator_size_changed (XfcePanelPlugin *plugin,
gint size,
IndicatorPlugin *indicator)
{
- GtkOrientation orientation;
- GList *buttons;
- GList *button;
-
- /* get the orientation of the plugin */
- orientation = xfce_panel_plugin_get_orientation (plugin);
-
- /* set the widget size */
- if (orientation == GTK_ORIENTATION_HORIZONTAL)
- gtk_widget_set_size_request (GTK_WIDGET (plugin), -1, size);
- else
- gtk_widget_set_size_request (GTK_WIDGET (plugin), size, -1);
-
-
- buttons = gtk_container_get_children (GTK_CONTAINER (indicator->buttonbox));
- for (button = buttons; button != NULL; button = g_list_next (button))
- {
#if LIBXFCE4PANEL_CHECK_VERSION (4,9,0)
- xfce_indicator_button_set_size (XFCE_INDICATOR_BUTTON (button->data),
- size, size / xfce_panel_plugin_get_nrows (plugin));
+ xfce_indicator_box_set_size (XFCE_INDICATOR_BOX (indicator->buttonbox),
+ size, xfce_panel_plugin_get_nrows (plugin));
#else
- xfce_indicator_button_set_size (XFCE_INDICATOR_BUTTON (button->data), size, size);
+ xfce_indicator_box_set_size (XFCE_INDICATOR_BOX (indicator->buttonbox),
+ size, 1);
#endif
- }
return TRUE;
}
@@ -371,11 +335,9 @@ indicator_construct (XfcePanelPlugin *plugin)
#if LIBXFCE4PANEL_CHECK_VERSION (4,9,0)
g_signal_connect (G_OBJECT (plugin), "mode-changed",
G_CALLBACK (indicator_mode_changed), indicator);
- indicator_mode_changed (plugin, xfce_panel_plugin_get_mode (plugin), indicator);
#else
g_signal_connect (G_OBJECT (plugin), "orientation-changed",
G_CALLBACK (indicator_orientation_changed), indicator);
- indicator_orientation_changed (plugin, xfce_panel_plugin_get_orientation (plugin), indicator);
#endif
}
@@ -422,27 +384,9 @@ entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_d
user_data);
g_signal_connect(button, "scroll-event", G_CALLBACK(entry_scrolled),
user_data);
- gtk_box_pack_start(GTK_BOX(((IndicatorPlugin *)user_data)->buttonbox), button, TRUE, TRUE, 0);
- gtk_widget_show(button);
-#if LIBXFCE4PANEL_CHECK_VERSION (4,9,0)
- xfce_indicator_button_set_orientation
- (XFCE_INDICATOR_BUTTON (button),
- xfce_panel_plugin_get_orientation (plugin),
- (xfce_panel_plugin_get_mode (plugin) == XFCE_PANEL_PLUGIN_MODE_VERTICAL) ?
- GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL);
- xfce_indicator_button_set_size
- (XFCE_INDICATOR_BUTTON (button),
- xfce_panel_plugin_get_size (plugin),
- xfce_panel_plugin_get_size (plugin) / xfce_panel_plugin_get_nrows (plugin));
-#else
- xfce_indicator_button_set_orientation (XFCE_INDICATOR_BUTTON (button),
- xfce_panel_plugin_get_orientation (plugin),
- GTK_ORIENTATION_HORIZONTAL);
- xfce_indicator_button_set_size (XFCE_INDICATOR_BUTTON (button),
- xfce_panel_plugin_get_size (plugin),
- xfce_panel_plugin_get_size (plugin));
-#endif
+ gtk_container_add(XFCE_INDICATOR_BOX (((IndicatorPlugin *)user_data)->buttonbox), button);
+ gtk_widget_show(button);
}
More information about the Xfce4-commits
mailing list