summaryrefslogtreecommitdiff
path: root/libwnck/selector.c
diff options
context:
space:
mode:
Diffstat (limited to 'libwnck/selector.c')
-rw-r--r--libwnck/selector.c108
1 files changed, 104 insertions, 4 deletions
diff --git a/libwnck/selector.c b/libwnck/selector.c
index 482c614..4cf6189 100644
--- a/libwnck/selector.c
+++ b/libwnck/selector.c
@@ -63,6 +63,17 @@ struct _WnckSelectorPrivate {
GHashTable *window_hash;
};
+enum
+{
+ PROP_0,
+
+ PROP_HANDLE,
+
+ LAST_PROP
+};
+
+static GParamSpec *selector_properties[LAST_PROP] = { NULL };
+
G_DEFINE_TYPE_WITH_PRIVATE (WnckSelector, wnck_selector, GTK_TYPE_MENU_BAR);
static GObject *wnck_selector_constructor (GType type,
@@ -120,8 +131,8 @@ wnck_selector_get_screen (WnckSelector *selector)
screen = gtk_widget_get_screen (GTK_WIDGET (selector));
- return _wnck_handle_get_screen (selector->priv->handle,
- gdk_x11_screen_get_screen_number (screen));
+ return wnck_handle_get_screen (selector->priv->handle,
+ gdk_x11_screen_get_screen_number (screen));
}
static GdkPixbuf *
@@ -1156,6 +1167,69 @@ wnck_selector_init (WnckSelector *selector)
}
static void
+wnck_selector_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ WnckSelector *self;
+
+ self = WNCK_SELECTOR (object);
+
+ switch (property_id)
+ {
+ case PROP_HANDLE:
+ g_value_set_object (value, self->priv->handle);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+wnck_selector_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ WnckSelector *self;
+
+ self = WNCK_SELECTOR (object);
+
+ switch (property_id)
+ {
+ case PROP_HANDLE:
+ g_assert (self->priv->handle == NULL);
+ self->priv->handle = g_value_dup_object (value);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+install_properties (GObjectClass *object_class)
+{
+ selector_properties[PROP_HANDLE] =
+ g_param_spec_object ("handle",
+ "handle",
+ "handle",
+ WNCK_TYPE_HANDLE,
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READWRITE |
+ G_PARAM_EXPLICIT_NOTIFY |
+ G_PARAM_STATIC_STRINGS);
+
+ g_object_class_install_properties (object_class,
+ LAST_PROP,
+ selector_properties);
+}
+
+static void
wnck_selector_class_init (WnckSelectorClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -1164,11 +1238,15 @@ wnck_selector_class_init (WnckSelectorClass *klass)
object_class->constructor = wnck_selector_constructor;
object_class->dispose = wnck_selector_dispose;
object_class->finalize = wnck_selector_finalize;
+ object_class->get_property = wnck_selector_get_property;
+ object_class->set_property = wnck_selector_set_property;
widget_class->realize = wnck_selector_realize;
widget_class->unrealize = wnck_selector_unrealize;
widget_class->scroll_event = wnck_selector_scroll_event;
+ install_properties (object_class);
+
gtk_widget_class_set_css_name (widget_class, "wnck-selector");
}
@@ -1277,8 +1355,30 @@ wnck_selector_new (void)
{
WnckSelector *selector;
- selector = g_object_new (WNCK_TYPE_SELECTOR, NULL);
- selector->priv->handle = g_object_ref (_wnck_get_handle ());
+ selector = g_object_new (WNCK_TYPE_SELECTOR,
+ "handle", _wnck_get_handle (),
+ NULL);
return GTK_WIDGET (selector);
}
+
+/**
+ * wnck_selector_new_with_handle:
+ * @handle: a #WnckHandle
+ *
+ * Creates a new #WnckSelector. The #WnckSelector will list #WnckWindow of the
+ * #WnckScreen it is on.
+ *
+ * Returns: a newly created #WnckSelector.
+ */
+GtkWidget *
+wnck_selector_new_with_handle (WnckHandle *handle)
+{
+ WnckSelector *self;
+
+ self = g_object_new (WNCK_TYPE_SELECTOR,
+ "handle", handle,
+ NULL);
+
+ return GTK_WIDGET (self);
+}