summaryrefslogtreecommitdiff
path: root/gtk/gtktestutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtktestutils.c')
-rw-r--r--gtk/gtktestutils.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/gtk/gtktestutils.c b/gtk/gtktestutils.c
index 001a6a8e78..cafc65723e 100644
--- a/gtk/gtktestutils.c
+++ b/gtk/gtktestutils.c
@@ -60,7 +60,6 @@ gtk_test_init (int *argcp,
* FUTURE TODO:
* - this function could install a mock object around GtkSettings
*/
- // FIXME: g_test_init (argcp, argvp, NULL);
g_setenv ("GTK_MODULES", "", TRUE);
g_setenv ("GTK2_RC_FILES", "/dev/null", TRUE);
gtk_disable_setlocale();
@@ -570,6 +569,25 @@ gtk_test_create_simple_window (const gchar *window_title,
return window;
}
+static GType *all_registered_types = NULL;
+static guint n_all_registered_types = 0;
+
+/**
+ * gtk_test_list_all_types
+ * @n_types: location to store number of types
+ * @returns: 0-terminated array of type ids
+ *
+ * Return the type ids that have been registered after
+ * calling gtk_test_register_all_types().
+ **/
+const GType*
+gtk_test_list_all_types (guint *n_types)
+{
+ if (n_types)
+ *n_types = n_all_registered_types;
+ return all_registered_types;
+}
+
/**
* gtk_test_register_all_types
*
@@ -580,8 +598,17 @@ gtk_test_create_simple_window (const gchar *window_title,
void
gtk_test_register_all_types (void)
{
- volatile GType vgt;
+ if (!all_registered_types)
+ {
+ const guint max_gtk_types = 999;
+ GType *tp;
+ all_registered_types = g_new0 (GType, max_gtk_types);
+ tp = all_registered_types;
#include "gtktypefuncs.c"
+ n_all_registered_types = tp - all_registered_types;
+ g_assert (n_all_registered_types + 1 < max_gtk_types);
+ *tp = 0;
+ }
}
#define __GTK_TEST_UTILS_C__