summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/reference/gtk/getting_started.md56
-rw-r--r--docs/reference/gtk/question_index.md6
-rw-r--r--examples/builder.c52
3 files changed, 57 insertions, 57 deletions
diff --git a/docs/reference/gtk/getting_started.md b/docs/reference/gtk/getting_started.md
index be40e5b05d..c2f3057f0d 100644
--- a/docs/reference/gtk/getting_started.md
+++ b/docs/reference/gtk/getting_started.md
@@ -586,53 +586,53 @@ print_hello (GtkWidget *widget,
}
static void
-quit_cb (GtkWidget *widget, gpointer data)
+quit_cb (GtkWindow *window)
{
- gboolean *done = data;
-
- *done = TRUE;
-
- g_main_context_wakeup (NULL);
+ gtk_window_close (window);
}
-int
-main (int argc,
- char *argv[])
+static void
+activate (GtkApplication *app,
+ gpointer user_data)
{
- GtkBuilder *builder;
- GObject *window;
- GObject *button;
- gboolean done = FALSE;
-
-#ifdef GTK_SRCDIR
- g_chdir (GTK_SRCDIR);
-#endif
-
- gtk_init ();
-
/* Construct a GtkBuilder instance and load our UI description */
- builder = gtk_builder_new ();
+ GtkBuilder *builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "builder.ui", NULL);
/* Connect signal handlers to the constructed widgets. */
- window = gtk_builder_get_object (builder, "window");
- g_signal_connect (window, "destroy", G_CALLBACK (quit_cb), &done);
+ GObject *window = gtk_builder_get_object (builder, "window");
+ gtk_window_set_application (GTK_WINDOW (window), app);
- button = gtk_builder_get_object (builder, "button1");
+ GObject *button = gtk_builder_get_object (builder, "button1");
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
button = gtk_builder_get_object (builder, "button2");
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
button = gtk_builder_get_object (builder, "quit");
- g_signal_connect (button, "clicked", G_CALLBACK (quit_cb), &done);
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (quit_cb), window);
gtk_widget_show (GTK_WIDGET (window));
- while (!done)
- g_main_context_iteration (NULL, TRUE);
+ /* We do not need the builder any more */
+ g_object_unref (builder);
+}
- return 0;
+int
+main (int argc,
+ char *argv[])
+{
+#ifdef GTK_SRCDIR
+ g_chdir (GTK_SRCDIR);
+#endif
+
+ GtkApplication *app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
+ g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
+
+ int status = g_application_run (G_APPLICATION (app), argc, argv);
+ g_object_unref (app);
+
+ return status;
}
```
diff --git a/docs/reference/gtk/question_index.md b/docs/reference/gtk/question_index.md
index e5e71174bf..c080b5d35e 100644
--- a/docs/reference/gtk/question_index.md
+++ b/docs/reference/gtk/question_index.md
@@ -71,12 +71,12 @@ the question you have, this list is a good place to start.
6. How do I use GTK with threads?
GTK requires that all GTK API calls are made from the same thread in which
- gtk_init() was called (the _main thread_).
+ the #GtkApplication was created, or gtk_init() was called (the _main thread_).
If you want to take advantage of multi-threading in a GTK application,
it is usually best to send long-running tasks to worker threads, and feed
- the results back to the main thread using g_idle_add() or GAsyncQueue. GIO
- offers useful tools for such an approach such as GTask.
+ the results back to the main thread using g_idle_add() or #GAsyncQueue. GIO
+ offers useful tools for such an approach such as #GTask.
7. How do I internationalize a GTK program?
diff --git a/examples/builder.c b/examples/builder.c
index 261a099697..5a93c974ae 100644
--- a/examples/builder.c
+++ b/examples/builder.c
@@ -11,49 +11,49 @@ print_hello (GtkWidget *widget,
static void
quit_cb (GtkWidget *widget, gpointer data)
{
- gboolean *done = data;
+ GtkWindow *window = data;
- *done = TRUE;
-
- g_main_context_wakeup (NULL);
+ gtk_window_close (window);
}
-int
-main (int argc,
- char *argv[])
+static void
+activate (GtkApplication *app,
+ gpointer user_data)
{
- GtkBuilder *builder;
- GObject *window;
- GObject *button;
- gboolean done = FALSE;
-
-#ifdef GTK_SRCDIR
- g_chdir (GTK_SRCDIR);
-#endif
-
- gtk_init ();
-
/* Construct a GtkBuilder instance and load our UI description */
- builder = gtk_builder_new ();
+ GtkBuilder *builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "builder.ui", NULL);
/* Connect signal handlers to the constructed widgets. */
- window = gtk_builder_get_object (builder, "window");
- g_signal_connect (window, "destroy", G_CALLBACK (quit_cb), &done);
+ GObject *window = gtk_builder_get_object (builder, "window");
+ gtk_window_set_application (GTK_WINDOW (window), app);
- button = gtk_builder_get_object (builder, "button1");
+ GObject *button = gtk_builder_get_object (builder, "button1");
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
button = gtk_builder_get_object (builder, "button2");
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
button = gtk_builder_get_object (builder, "quit");
- g_signal_connect (button, "clicked", G_CALLBACK (quit_cb), &done);
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (quit_cb), window);
gtk_widget_show (GTK_WIDGET (window));
+ g_object_unref (builder);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+#ifdef GTK_SRCDIR
+ g_chdir (GTK_SRCDIR);
+#endif
+
+ GtkApplication *app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
+ g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
- while (!done)
- g_main_context_iteration (NULL, TRUE);
+ int status = g_application_run (G_APPLICATION (app), argc, argv);
+ g_object_unref (app);
- return 0;
+ return status;
}