summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2012-11-07 12:54:55 +0100
committerAlexander Larsson <alexl@redhat.com>2012-11-09 10:08:22 +0100
commitc94002f8c0af429d57b0e4988f18909db98760fd (patch)
tree4ce25e13bfbe57745ae235051aa3d152e8b2d98b
parentf4438a1ffc6aaab92fb6b751cd16e95c2abaa0e3 (diff)
downloadgtk+-c94002f8c0af429d57b0e4988f18909db98760fd.tar.gz
Add "parent widget" button to test property editor
Without this its hard to access the properties of container widgets. https://bugzilla.gnome.org/show_bug.cgi?id=687842
-rw-r--r--tests/prop-editor.c36
1 files changed, 33 insertions, 3 deletions
diff --git a/tests/prop-editor.c b/tests/prop-editor.c
index 6ba124f471..7911d973ec 100644
--- a/tests/prop-editor.c
+++ b/tests/prop-editor.c
@@ -1346,15 +1346,29 @@ cells_from_object (GObject *object)
return sw;
}
+static void
+open_parent_widget (GtkWidget *button,
+ GObject *object)
+{
+ GtkWidget *parent;
+
+ parent = gtk_widget_get_parent (GTK_WIDGET (object));
+ if (parent != NULL)
+ create_prop_editor (G_OBJECT (parent), 0);
+}
+
+
/* Pass zero for type if you want all properties */
GtkWidget*
create_prop_editor (GObject *object,
GType type)
{
- GtkWidget *win;
+ GtkWidget *win, *parent;
GtkWidget *notebook;
GtkWidget *properties;
GtkWidget *label;
+ GtkWidget *button;
+ GtkWidget *vbox;
gchar *title;
GType *ifaces;
guint n_ifaces;
@@ -1374,12 +1388,15 @@ create_prop_editor (GObject *object,
g_object_set_data_full (G_OBJECT (object), "prop-editor-win", win, model_destroy);
g_object_set_data_full (G_OBJECT (win), "model-object", object, window_destroy);
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add (GTK_CONTAINER (win), vbox);
+
if (type == 0)
{
notebook = gtk_notebook_new ();
gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_LEFT);
- gtk_container_add (GTK_CONTAINER (win), notebook);
+ gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);
type = G_TYPE_FROM_INSTANCE (object);
@@ -1437,11 +1454,24 @@ create_prop_editor (GObject *object,
gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
properties, label);
}
+
+ if (GTK_IS_WIDGET (object))
+ {
+ parent = gtk_widget_get_parent (GTK_WIDGET (object));
+ if (parent != NULL)
+ {
+ button = gtk_button_new_with_label ("Parent widget");
+ gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
+ g_signal_connect (button, "clicked",
+ G_CALLBACK (open_parent_widget),
+ object);
+ }
+ }
}
else
{
properties = properties_from_type (object, type);
- gtk_container_add (GTK_CONTAINER (win), properties);
+ gtk_box_pack_start (GTK_BOX (vbox), properties, TRUE, TRUE, 0);
title = g_strdup_printf ("Properties of %s", g_type_name (type));
gtk_window_set_title (GTK_WINDOW (win), title);
g_free (title);