gtkmain: Add gtk_is_initialized()

This utility function can be useful to check whether GTK+ was already
initialized or not.
This commit is contained in:
Philippe Normand 2018-06-08 18:03:22 +01:00
parent 085368eb93
commit 542ad4fdc5
4 changed files with 42 additions and 0 deletions

View File

@ -884,6 +884,20 @@ gtk_init_check_abi_check (int num_checks, size_t sizeof_GtkWindow, size_t sizeof
#endif
/**
* gtk_is_initialized:
*
* Use this function to check if GTK+ has been initialized with gtk_init()
* or gtk_init_check().
*
* Returns: the initialization status
*/
gboolean
gtk_is_initialized (void)
{
return gtk_initialized;
}
/**
* gtk_get_locale_direction:
*

View File

@ -78,6 +78,9 @@ void gtk_init (void);
GDK_AVAILABLE_IN_ALL
gboolean gtk_init_check (void);
GDK_AVAILABLE_IN_ALL
gboolean gtk_is_initialized (void);
#ifdef G_OS_WIN32
/* Variants that are used to check for correct struct packing

24
testsuite/gtk/main.c Normal file
View File

@ -0,0 +1,24 @@
#include <gtk/gtk.h>
#include <locale.h>
static void
test_init (void)
{
g_assert (gtk_is_initialized () == FALSE);
g_assert (gtk_init_check ());
g_assert (gtk_is_initialized () == TRUE);
}
int
main (int argc, char *argv[])
{
/* Don't use gtk_test_init here because it implicitely initializes GTK+. */
g_test_init (&argc, &argv, NULL);
gtk_disable_setlocale();
setlocale (LC_ALL, "C");
g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=%s");
g_test_add_func ("/main/init", test_init);
return g_test_run ();
}

View File

@ -27,6 +27,7 @@ tests = [
['icontheme'],
['keyhash', ['../../gtk/gtkkeyhash.c', gtkresources, '../../gtk/gtkprivate.c'], gtk_cargs],
['listbox'],
['main'],
['notify'],
['no-gtk-init'],
['object'],