--- a/demo/data/demo.ui Sun Jan 30 17:07:34 2022 -0600
+++ b/demo/data/demo.ui Sun Jan 30 19:34:02 2022 -0600
@@ -25,10 +25,9 @@
<!-- interface-name Talkatu -->
<!-- interface-description GTK widgets for chat applications -->
<!-- interface-copyright Gary Kramlich <grim@reaperworld.com> -->
- <template class="TalkatuDemoWindow" parent="GtkWindow">
+ <template class="TalkatuDemoWindow" parent="GtkApplicationWindow"> <property name="can-focus">False</property>
<property name="border-width">12</property>
- <signal name="delete-event" handler="talkatu_demo_window_closed_cb" swapped="no"/>
<object class="GtkPaned">
<property name="visible">True</property>
--- a/demo/talkatudemo.c Sun Jan 30 17:07:34 2022 -0600
+++ b/demo/talkatudemo.c Sun Jan 30 19:34:02 2022 -0600
@@ -28,76 +28,75 @@
#include "talkatudemowindow.h"
-static gboolean exit_early = FALSE;
-talkatu_demo_version_cb(const gchar *n, const gchar *v, gpointer d, GError **e) {
- printf("talkatu-demo %s\n", TALKATU_VERSION);
static GOptionEntry entries[] = {
- "version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK,
- talkatu_demo_version_cb, N_("Display the version and exit"),
+ "version", 'V', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, + NULL, N_("Display the version and exit"), NULL, 0, 0, 0, NULL, NULL, NULL,
+talkatu_demo_handle_local_options(G_GNUC_UNUSED GApplication *application, + G_GNUC_UNUSED gpointer data) + if (g_variant_dict_contains(options, "version")) { + printf("talkatu-demo %s\n", TALKATU_VERSION); +talkatu_demo_startup(G_GNUC_UNUSED GApplication *app, + G_GNUC_UNUSED gpointer data) +talkatu_demo_shutdown(G_GNUC_UNUSED GApplication *app, + G_GNUC_UNUSED gpointer data) +talkatu_demo_activate(GApplication *app, G_GNUC_UNUSED gpointer data) { + win = talkatu_demo_window_new(); + gtk_application_add_window(GTK_APPLICATION(app), GTK_WINDOW(win)); main(gint argc, gchar **argv) {
- GOptionContext *ctx = NULL;
- GOptionGroup *group = NULL;
+ GtkApplication *app = NULL; bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
textdomain(GETTEXT_PACKAGE);
- ctx = g_option_context_new(NULL);
- g_option_context_set_summary(ctx, _("Talkatu Demo"));
- g_option_context_set_translation_domain(ctx, GETTEXT_PACKAGE);
- g_option_context_add_main_entries(ctx, entries, NULL);
- group = gtk_get_option_group(FALSE);
- g_option_context_add_group(ctx, group);
- g_option_context_parse(ctx, &argc, &argv, &error);
- g_option_context_free(ctx);
- fprintf(stderr, "%s\n", error->message);
+ app = gtk_application_new("org.imfreedom.keep.talkatu.TalkatuDemo", + G_APPLICATION_FLAGS_NONE); + g_application_add_main_option_entries(G_APPLICATION(app), entries);
- gtk_init(&argc, &argv);
+ g_signal_connect(app, "handle-local-options", + G_CALLBACK(talkatu_demo_handle_local_options), NULL); + g_signal_connect(app, "activate", G_CALLBACK(talkatu_demo_activate), NULL); + g_signal_connect(app, "startup", G_CALLBACK(talkatu_demo_startup), NULL); + g_signal_connect(app, "shutdown", G_CALLBACK(talkatu_demo_shutdown), NULL);
- win = talkatu_demo_window_new();
+ status = g_application_run(G_APPLICATION(app), argc, argv);
--- a/demo/talkatudemowindow.c Sun Jan 30 17:07:34 2022 -0600
+++ b/demo/talkatudemowindow.c Sun Jan 30 19:34:02 2022 -0600
@@ -22,7 +22,7 @@
#include "talkatudemowindow.h"
struct _TalkatuDemoWindow {
+ GtkApplicationWindow parent; @@ -47,7 +47,7 @@
-G_DEFINE_TYPE(TalkatuDemoWindow, talkatu_demo_window, GTK_TYPE_WINDOW);
+G_DEFINE_TYPE(TalkatuDemoWindow, talkatu_demo_window, GTK_TYPE_APPLICATION_WINDOW); talkatu_demo_window_insert_html_response_cb(GtkNativeDialog *dialog,
@@ -235,13 +235,6 @@
talkatu_message_clear_attachments(TALKATU_MESSAGE(input));
-talkatu_demo_window_closed_cb(GtkWidget *w, GdkEvent *e, gpointer d) {
talkatu_demo_window_author_toggled_cb(GtkToolButton *button, gpointer data) {
GtkPopover *popover = GTK_POPOVER(data);
@@ -370,7 +363,6 @@
gtk_widget_class_bind_template_child(widget_class, TalkatuDemoWindow, toggle_send_button);
gtk_widget_class_bind_template_child(widget_class, TalkatuDemoWindow, toggle_edited);
- gtk_widget_class_bind_template_callback(widget_class, talkatu_demo_window_closed_cb);
gtk_widget_class_bind_template_callback(widget_class, talkatu_demo_window_buffer_changed_cb);
gtk_widget_class_bind_template_callback(widget_class, talkatu_demo_window_buffer_modified_cb);
gtk_widget_class_bind_template_callback(widget_class, talkatu_demo_window_view_open_url_cb);
--- a/demo/talkatudemowindow.h Sun Jan 30 17:07:34 2022 -0600
+++ b/demo/talkatudemowindow.h Sun Jan 30 19:34:02 2022 -0600
@@ -28,7 +28,7 @@
#define TALKATU_DEMO_TYPE_WINDOW (talkatu_demo_window_get_type())
-G_DECLARE_FINAL_TYPE(TalkatuDemoWindow, talkatu_demo_window, TALKATU_DEMO, WINDOW, GtkWindow)
+G_DECLARE_FINAL_TYPE(TalkatuDemoWindow, talkatu_demo_window, TALKATU_DEMO, WINDOW, GtkApplicationWindow) GtkWidget *talkatu_demo_window_new(void);