]> Pileus Git - ~andy/gtk/blobdiff - tests/prop-editor.c
stylecontext: Do invalidation on first resize container
[~andy/gtk] / tests / prop-editor.c
index dc284cabe2741c38fa31f1962468df243eeb7d82..e9afe6f767b8b4b6f63c576e926b8dc03230a047 100644 (file)
@@ -12,9 +12,7 @@
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <string.h>
@@ -1148,7 +1146,7 @@ properties_from_type (GObject *object,
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
 
-  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), vbox);
+  gtk_container_add (GTK_CONTAINER (sw), vbox);
 
   g_free (specs);
 
@@ -1222,7 +1220,7 @@ child_properties_from_object (GObject *object)
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
 
-  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), vbox);
+  gtk_container_add (GTK_CONTAINER (sw), vbox);
 
   g_free (specs);
 
@@ -1285,7 +1283,7 @@ children_from_object (GObject *object)
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
 
-  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), vbox);
+  gtk_container_add (GTK_CONTAINER (sw), vbox);
 
   g_list_free (children);
 
@@ -1341,22 +1339,36 @@ cells_from_object (GObject *object)
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
 
-  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), vbox);
+  gtk_container_add (GTK_CONTAINER (sw), vbox);
 
   g_list_free (cells);
 
   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;
@@ -1376,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);
 
@@ -1439,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);