From 88a84aefaca1694b562a322148367879083777f4 Mon Sep 17 00:00:00 2001
From: Bruce Cowan <bruce@bcowan.me.uk>
Date: Fri, 7 Oct 2022 20:30:01 +0100
Subject: [PATCH] Dispose of templates properly

---
 meson.build             |  6 +++---
 src/rugby-app-window.c  | 11 +++++++++++
 src/rugby-pref-window.c |  1 +
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/meson.build b/meson.build
index b8cbefc..458aa0d 100644
--- a/meson.build
+++ b/meson.build
@@ -19,7 +19,7 @@ desktopdir = datadir / 'applications'
 gnome = import('gnome')
 
 gio_dep = dependency('gio-2.0', version: '>= 2.66')
-gtk_dep = dependency('gtk4', version: '>= 4.0')
+gtk_dep = dependency('gtk4', version: '>= 4.8')
 libadwaita_dep = dependency('libadwaita-1')
 
 conf = configuration_data()
@@ -45,8 +45,8 @@ config_h = vcs_tag(
 
 cflags = ['-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_66',
           '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_66',
-          '-DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_4_0',
-          '-DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_4_0',
+          '-DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_4_8',
+          '-DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_4_8',
           '-Wno-overlength-strings',
 ]
 
diff --git a/src/rugby-app-window.c b/src/rugby-app-window.c
index d9ec1f2..561f7d1 100644
--- a/src/rugby-app-window.c
+++ b/src/rugby-app-window.c
@@ -105,6 +105,14 @@ const GActionEntry win_entries[] = {
     { .name = "show-primary-menu", .activate = activate_show_primary_menu },
 };
 
+static void
+rugby_app_window_dispose (GObject *object)
+{
+    gtk_widget_dispose_template (GTK_WIDGET (object), RUGBY_TYPE_APP_WINDOW);
+
+    G_OBJECT_CLASS (rugby_app_window_parent_class)->dispose (object);
+}
+
 static void
 rugby_app_window_init (RugbyAppWindow *self)
 {
@@ -119,11 +127,14 @@ rugby_app_window_init (RugbyAppWindow *self)
 static void
 rugby_app_window_class_init (RugbyAppWindowClass *klass)
 {
+    GObjectClass *object_class = G_OBJECT_CLASS (klass);
     GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
     g_type_ensure (RUGBY_TYPE_POSSIBILITY_WIDGET);
     g_type_ensure (RUGBY_TYPE_LIST_STORE);
 
+    object_class->dispose = rugby_app_window_dispose;
+
     gtk_widget_class_set_template_from_resource (widget_class,
                                                  "/uk/me/bcowan/Rugby/window.ui");
 
diff --git a/src/rugby-pref-window.c b/src/rugby-pref-window.c
index 79b0b08..c226b7b 100644
--- a/src/rugby-pref-window.c
+++ b/src/rugby-pref-window.c
@@ -24,6 +24,7 @@ rugby_pref_window_dispose (GObject *object)
 {
   RugbyPrefWindow *self = RUGBY_PREF_WINDOW (object);
 
+  gtk_widget_dispose_template (GTK_WIDGET (object), RUGBY_TYPE_PREF_WINDOW);
   g_clear_object (&self->settings);
 
   G_OBJECT_CLASS (rugby_pref_window_parent_class)->dispose (object);
-- 
GitLab