testsuite: Check more property notification
authorMatthias Clasen <mclasen@redhat.com>
Thu, 30 Mar 2023 16:43:21 +0000 (12:43 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 30 Mar 2023 18:13:19 +0000 (14:13 -0400)
We can easily check some object types
such as widgets.

testsuite/gtk/notify.c

index 9585fc421e501034aaef676fdfbf5715e5076d39..582136bfebc25f49b4e1e8c508507ea669e0cf14 100644 (file)
@@ -86,7 +86,7 @@ check_property (GObject *instance, GParamSpec *pspec)
         first = 1;
       else
         first = 0;
-  
+
       for (i = first; i < class->n_values; i++)
         {
           current_count = data.count + 1;
@@ -161,7 +161,7 @@ check_property (GObject *instance, GParamSpec *pspec)
       assert_notifies (instance, pspec->name, data.count, 1);
 
       g_signal_handler_disconnect (instance, id);
-    } 
+    }
   else if (pspec->value_type == G_TYPE_INT)
     {
       GParamSpecInt *p = G_PARAM_SPEC_INT (pspec);
@@ -283,7 +283,7 @@ check_property (GObject *instance, GParamSpec *pspec)
 
       /* don't check redundant notifications */
       g_object_get (instance, pspec->name, &value, NULL);
-      
+
       if (p->maximum > 100 || p->minimum < -100)
         delta = M_PI;
       else
@@ -323,7 +323,7 @@ check_property (GObject *instance, GParamSpec *pspec)
 
       /* don't check redundant notifications */
       g_object_get (instance, pspec->name, &value, NULL);
-      
+
       new_value = p->minimum;
       for (i = 0; i < 10; i++)
         {
@@ -340,6 +340,23 @@ check_property (GObject *instance, GParamSpec *pspec)
           assert_notifies (instance, pspec->name, data.count, current_count);
         }
 
+      g_signal_handler_disconnect (instance, id);
+    }
+  else if (pspec->value_type == GTK_TYPE_WIDGET)
+    {
+      NotifyData data;
+      gulong id;
+      GtkWidget *value;
+
+      data.name = pspec->name;
+      data.count = 0;
+      id = g_signal_connect (instance, "notify", G_CALLBACK (count_notify), &data);
+
+      value = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+
+      g_object_set (instance, pspec->name, value, NULL);
+      assert_notifies (instance, pspec->name, data.count, 1);
+
       g_signal_handler_disconnect (instance, id);
     }
   else
@@ -406,6 +423,14 @@ test_type (gconstpointer data)
      g_type_is_a (type, GTK_TYPE_NAMED_ACTION))
     return;
 
+  /* needs a surface */
+  if (g_type_is_a (type, GTK_TYPE_DRAG_ICON))
+    return;
+
+  /* Needs debugging */
+  if (g_type_is_a (type, GTK_TYPE_SHORTCUTS_WINDOW))
+    return;
+
   klass = g_type_class_ref (type);
 
   if (g_type_is_a (type, GTK_TYPE_SETTINGS))
@@ -483,7 +508,7 @@ test_type (gconstpointer data)
       GParamSpec *pspec = pspecs[i];
 
       if ((pspec->flags & G_PARAM_READABLE) == 0)
-       continue;
+        continue;
 
       if ((pspec->flags & G_PARAM_WRITABLE) == 0)
         continue;
@@ -492,8 +517,8 @@ test_type (gconstpointer data)
         continue;
 
       /* non-GTK */
-      if (g_str_equal (g_type_name (pspec->owner_type), "GdkPixbufSimpleAnim") || 
-          g_str_equal (g_type_name (pspec->owner_type), "GMountOperation")) 
+      if (g_str_equal (g_type_name (pspec->owner_type), "GdkPixbufSimpleAnim") ||
+          g_str_equal (g_type_name (pspec->owner_type), "GMountOperation"))
         continue;
 
       /* set properties are best skipped */
@@ -527,11 +552,11 @@ test_type (gconstpointer data)
         continue;
 
       if (g_type_is_a (pspec->owner_type, GTK_TYPE_COLOR_CHOOSER) &&
-         g_str_equal (pspec->name, "show-editor"))
+          g_str_equal (pspec->name, "show-editor"))
         continue;
 
       if (g_type_is_a (pspec->owner_type, GTK_TYPE_NOTEBOOK) &&
-         g_str_equal (pspec->name, "page"))
+          g_str_equal (pspec->name, "page"))
         continue;
 
       /* Too many special cases involving -set properties */
@@ -573,7 +598,8 @@ test_type (gconstpointer data)
         continue;
 
       if (pspec->owner_type == GTK_TYPE_STACK &&
-          g_str_equal (pspec->name, "visible-child-name"))
+          (g_str_equal (pspec->name, "visible-child-name") ||
+           g_str_equal (pspec->name, "visible-child")))
         continue;
 
       if (pspec->owner_type == GTK_TYPE_STACK_PAGE && /* Can't change position without a stack */
@@ -603,35 +629,35 @@ test_type (gconstpointer data)
 
       /* This one has a special-purpose default value */
       if (g_type_is_a (type, GTK_TYPE_DIALOG) &&
-         g_str_equal (pspec->name, "use-header-bar"))
-       continue;
+          g_str_equal (pspec->name, "use-header-bar"))
+        continue;
 
       if (g_type_is_a (type, GTK_TYPE_ASSISTANT) &&
-         g_str_equal (pspec->name, "use-header-bar"))
-       continue;
+          g_str_equal (pspec->name, "use-header-bar"))
+        continue;
 
       if (g_type_is_a (type, GTK_TYPE_SHORTCUTS_SHORTCUT) &&
-         g_str_equal (pspec->name, "accelerator"))
-       continue;
+          g_str_equal (pspec->name, "accelerator"))
+        continue;
 
       if (g_type_is_a (type, GTK_TYPE_SHORTCUT_LABEL) &&
-         g_str_equal (pspec->name, "accelerator"))
-       continue;
+          g_str_equal (pspec->name, "accelerator"))
+        continue;
 
       if (g_type_is_a (type, GTK_TYPE_FONT_CHOOSER) &&
-         g_str_equal (pspec->name, "font"))
-       continue;
+          g_str_equal (pspec->name, "font"))
+        continue;
 
       /* these depend on the min-content- properties in a way that breaks our test */
       if (g_type_is_a (type, GTK_TYPE_SCROLLED_WINDOW) &&
-         (g_str_equal (pspec->name, "max-content-width") ||
-          g_str_equal (pspec->name, "max-content-height")))
-       continue;
+          (g_str_equal (pspec->name, "max-content-width") ||
+           g_str_equal (pspec->name, "max-content-height")))
+        continue;
 
       /* expanding only works if rows are expandable */
       if (g_type_is_a (type, GTK_TYPE_TREE_LIST_ROW) &&
-         g_str_equal (pspec->name, "expanded"))
-       continue;
+          g_str_equal (pspec->name, "expanded"))
+        continue;
 
        /* can't select items without an underlying, populated model */
        if (g_type_is_a (type, GTK_TYPE_SINGLE_SELECTION) &&
@@ -649,6 +675,10 @@ test_type (gconstpointer data)
            g_str_equal (pspec->name, "position"))
          continue;
 
+       /* This one is special */
+       if (g_str_equal (pspec->name, "focus-widget"))
+         continue;
+
       if (g_test_verbose ())
         g_print ("Property %s.%s\n", g_type_name (pspec->owner_type), pspec->name);