[Xfce4-commits] <xfce4-indicator-plugin:master> Reworked entry_removed handler
Andrzej
noreply at xfce.org
Thu Apr 4 17:44:01 CEST 2013
Updating branch refs/heads/master
to d59fbfc202bd55d0821037b250e89cb31100457e (commit)
from 2bf70a11a8707924c3a2e3cf2ff265a4f0410f9b (commit)
commit d59fbfc202bd55d0821037b250e89cb31100457e
Author: Andrzej <ndrwrdck at gmail.com>
Date: Thu Mar 29 23:49:06 2012 +0900
Reworked entry_removed handler
panel-plugin/indicator-box.c | 23 +++++++++++++++++++++++
panel-plugin/indicator-box.h | 12 ++++++++++--
panel-plugin/indicator-button.h | 4 ++++
panel-plugin/indicator.c | 17 +++++------------
4 files changed, 42 insertions(+), 14 deletions(-)
diff --git a/panel-plugin/indicator-box.c b/panel-plugin/indicator-box.c
index 95376dd..700a218 100644
--- a/panel-plugin/indicator-box.c
+++ b/panel-plugin/indicator-box.c
@@ -519,3 +519,26 @@ xfce_indicator_box_get_row_size (XfceIndicatorBox *box)
return MIN (box->panel_size / box->nrows, box->icon_size_max + border_thickness);
}
+
+
+XfceIndicatorButton *
+xfce_indicator_box_get_button (XfceIndicatorBox *box,
+ IndicatorObjectEntry *entry)
+{
+ GSList *li;
+ GtkWidget *child;
+ XfceIndicatorButton *button;
+
+ g_return_val_if_fail (XFCE_IS_INDICATOR_BOX (box), NULL);
+
+ for (li = box->children; li != NULL; li = li->next)
+ {
+ child = GTK_WIDGET (li->data);
+ g_return_val_if_fail (XFCE_IS_INDICATOR_BUTTON (child), NULL);
+
+ button = XFCE_INDICATOR_BUTTON (child);
+ if (xfce_indicator_button_get_entry (button) == entry)
+ return button;
+ }
+ return NULL;
+}
diff --git a/panel-plugin/indicator-box.h b/panel-plugin/indicator-box.h
index b28c9d2..e302279 100644
--- a/panel-plugin/indicator-box.h
+++ b/panel-plugin/indicator-box.h
@@ -18,6 +18,11 @@
#ifndef __INDICATOR_BOX_H__
#define __INDICATOR_BOX_H__
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <libindicator/indicator-object.h>
+#include "indicator-button.h"
+
G_BEGIN_DECLS
GType xfce_indicator_box_get_type (void);
@@ -51,14 +56,17 @@ struct _XfceIndicatorBoxClass
GtkContainerClass __parent__;
};
-void xfce_indicator_box_set_orientation (XfceIndicatorBox *button,
+void xfce_indicator_box_set_orientation (XfceIndicatorBox *box,
GtkOrientation panel_orientation,
GtkOrientation orientation);
-void xfce_indicator_box_set_size (XfceIndicatorBox *button,
+void xfce_indicator_box_set_size (XfceIndicatorBox *box,
gint panel_size,
gint nrows);
+XfceIndicatorButton *xfce_indicator_box_get_button (XfceIndicatorBox *box,
+ IndicatorObjectEntry *entry);
+
GtkWidget *xfce_indicator_box_new ();
G_END_DECLS
diff --git a/panel-plugin/indicator-button.h b/panel-plugin/indicator-button.h
index 80e93fb..129aa22 100644
--- a/panel-plugin/indicator-button.h
+++ b/panel-plugin/indicator-button.h
@@ -18,6 +18,10 @@
#ifndef __INDICATOR_BUTTON_H__
#define __INDICATOR_BUTTON_H__
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <libindicator/indicator-object.h>
+
G_BEGIN_DECLS
GType xfce_indicator_button_get_type (void);
diff --git a/panel-plugin/indicator.c b/panel-plugin/indicator.c
index e0b2551..e1047cc 100644
--- a/panel-plugin/indicator.c
+++ b/panel-plugin/indicator.c
@@ -361,21 +361,14 @@ entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_d
static void
-entry_removed_cb (GtkWidget * widget, gpointer userdata)
+entry_removed (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data)
{
- gpointer data = (gpointer) xfce_indicator_button_get_entry (XFCE_INDICATOR_BUTTON (widget));
-
- if (data != userdata)
- return;
-
- gtk_widget_destroy(widget);
-}
+ XfceIndicatorButton *button;
+ button = xfce_indicator_box_get_button (XFCE_INDICATOR_BOX (user_data), entry);
-static void
-entry_removed (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data)
-{
- gtk_container_foreach(GTK_CONTAINER(user_data), entry_removed_cb, entry);
+ if (button != NULL)
+ gtk_widget_destroy (GTK_WIDGET (button));
}
More information about the Xfce4-commits
mailing list