[gnome-builder] libide: Use G_DEFINE_FINAL_TYPE for final types



commit 3d2342dbaba4faccbd840e18d9bdec8a36dabe3b
Author: Tom A. Wagner <tom a wagner protonmail com>
Date:   Sun Aug 1 15:28:38 2021 +0200

    libide: Use G_DEFINE_FINAL_TYPE for final types

 src/libide/code/ide-buffer-manager.c                    | 2 +-
 src/libide/code/ide-buffer.c                            | 2 +-
 src/libide/code/ide-diagnostics-manager.c               | 2 +-
 src/libide/code/ide-formatter-options.c                 | 2 +-
 src/libide/code/ide-gsettings-file-settings.c           | 2 +-
 src/libide/code/ide-highlight-engine.c                  | 2 +-
 src/libide/code/ide-unsaved-files.c                     | 2 +-
 src/libide/core/ide-context.c                           | 2 +-
 src/libide/core/ide-notifications.c                     | 2 +-
 src/libide/core/ide-object-box.c                        | 2 +-
 src/libide/core/ide-settings.c                          | 2 +-
 src/libide/core/ide-transfer-manager.c                  | 2 +-
 src/libide/debugger/ide-debug-manager.c                 | 2 +-
 src/libide/debugger/ide-debugger-breakpoints.c          | 2 +-
 src/libide/editor/ide-editor-page.c                     | 2 +-
 src/libide/editor/ide-editor-print-operation.c          | 2 +-
 src/libide/editor/ide-editor-search-bar.c               | 2 +-
 src/libide/editor/ide-editor-search.c                   | 2 +-
 src/libide/editor/ide-editor-settings-dialog.c          | 2 +-
 src/libide/editor/ide-editor-sidebar.c                  | 2 +-
 src/libide/editor/ide-editor-surface.c                  | 2 +-
 src/libide/editor/ide-editor-utilities.c                | 2 +-
 src/libide/editor/ide-editor-workspace.c                | 2 +-
 src/libide/foundry/ide-build-log.c                      | 2 +-
 src/libide/foundry/ide-build-manager.c                  | 2 +-
 src/libide/foundry/ide-compile-commands.c               | 2 +-
 src/libide/foundry/ide-config-manager.c                 | 2 +-
 src/libide/foundry/ide-device-info.c                    | 2 +-
 src/libide/foundry/ide-device-manager.c                 | 2 +-
 src/libide/foundry/ide-fallback-build-system.c          | 2 +-
 src/libide/foundry/ide-pipeline-stage-transfer.c        | 2 +-
 src/libide/foundry/ide-pipeline.c                       | 2 +-
 src/libide/foundry/ide-run-manager.c                    | 2 +-
 src/libide/foundry/ide-runtime-manager.c                | 2 +-
 src/libide/foundry/ide-test-manager.c                   | 2 +-
 src/libide/foundry/ide-toolchain-manager.c              | 2 +-
 src/libide/greeter/ide-clone-surface.c                  | 2 +-
 src/libide/greeter/ide-greeter-buttons-section.c        | 2 +-
 src/libide/greeter/ide-greeter-workspace.c              | 2 +-
 src/libide/greeter/ide-truncate-model.c                 | 2 +-
 src/libide/gui/ide-application.c                        | 2 +-
 src/libide/gui/ide-cell-renderer-fancy.c                | 2 +-
 src/libide/gui/ide-command-manager.c                    | 2 +-
 src/libide/gui/ide-environment-editor-row.c             | 2 +-
 src/libide/gui/ide-environment-editor.c                 | 2 +-
 src/libide/gui/ide-frame-empty-state.c                  | 2 +-
 src/libide/gui/ide-frame-header.c                       | 2 +-
 src/libide/gui/ide-frame-wrapper.c                      | 2 +-
 src/libide/gui/ide-grid-column.c                        | 2 +-
 src/libide/gui/ide-keybindings.c                        | 2 +-
 src/libide/gui/ide-marked-view.c                        | 2 +-
 src/libide/gui/ide-notification-list-box-row.c          | 2 +-
 src/libide/gui/ide-notification-stack.c                 | 2 +-
 src/libide/gui/ide-notification-view.c                  | 2 +-
 src/libide/gui/ide-notifications-button-popover.c       | 2 +-
 src/libide/gui/ide-notifications-button.c               | 2 +-
 src/libide/gui/ide-omni-bar.c                           | 2 +-
 src/libide/gui/ide-preferences-language-row.c           | 2 +-
 src/libide/gui/ide-preferences-surface.c                | 2 +-
 src/libide/gui/ide-preferences-window.c                 | 2 +-
 src/libide/gui/ide-primary-workspace.c                  | 2 +-
 src/libide/gui/ide-run-button.c                         | 2 +-
 src/libide/gui/ide-search-button.c                      | 2 +-
 src/libide/gui/ide-session.c                            | 2 +-
 src/libide/gui/ide-shortcut-label.c                     | 2 +-
 src/libide/gui/ide-shortcuts-window.c                   | 2 +-
 src/libide/gui/ide-surfaces-button.c                    | 2 +-
 src/libide/gui/ide-workbench.c                          | 2 +-
 src/libide/gui/ide-worker-manager.c                     | 2 +-
 src/libide/gui/ide-worker-process.c                     | 2 +-
 src/libide/io/ide-persistent-map-builder.c              | 2 +-
 src/libide/io/ide-persistent-map.c                      | 2 +-
 src/libide/io/ide-pkcon-transfer.c                      | 2 +-
 src/libide/lsp/ide-lsp-completion-item.c                | 2 +-
 src/libide/lsp/ide-lsp-completion-results.c             | 2 +-
 src/libide/lsp/ide-lsp-formatter.c                      | 2 +-
 src/libide/lsp/ide-lsp-search-result.c                  | 2 +-
 src/libide/lsp/ide-lsp-symbol-node.c                    | 2 +-
 src/libide/lsp/ide-lsp-symbol-tree.c                    | 2 +-
 src/libide/plugins/ide-extension-adapter.c              | 2 +-
 src/libide/plugins/ide-extension-set-adapter.c          | 2 +-
 src/libide/projects/ide-doap-person.c                   | 2 +-
 src/libide/projects/ide-doap.c                          | 2 +-
 src/libide/projects/ide-project-info.c                  | 2 +-
 src/libide/projects/ide-project.c                       | 2 +-
 src/libide/projects/ide-recent-projects.c               | 2 +-
 src/libide/projects/xml-reader.c                        | 2 +-
 src/libide/search/ide-search-engine.c                   | 2 +-
 src/libide/sourceview/ide-completion-context.c          | 2 +-
 src/libide/sourceview/ide-completion-list-box-row.c     | 2 +-
 src/libide/sourceview/ide-completion-list-box.c         | 2 +-
 src/libide/sourceview/ide-completion-overlay.c          | 2 +-
 src/libide/sourceview/ide-completion-view.c             | 2 +-
 src/libide/sourceview/ide-completion-window.c           | 2 +-
 src/libide/sourceview/ide-completion.c                  | 2 +-
 src/libide/sourceview/ide-cursor.c                      | 2 +-
 src/libide/sourceview/ide-hover-context.c               | 2 +-
 src/libide/sourceview/ide-hover-popover.c               | 2 +-
 src/libide/sourceview/ide-hover.c                       | 2 +-
 src/libide/sourceview/ide-line-change-gutter-renderer.c | 2 +-
 src/libide/sourceview/ide-snippet-chunk.c               | 2 +-
 src/libide/sourceview/ide-snippet-context.c             | 2 +-
 src/libide/sourceview/ide-snippet-parser.c              | 2 +-
 src/libide/sourceview/ide-snippet-storage.c             | 2 +-
 src/libide/sourceview/ide-snippet.c                     | 2 +-
 src/libide/sourceview/ide-source-view-capture.c         | 2 +-
 src/libide/sourceview/ide-source-view-mode.c            | 2 +-
 src/libide/terminal/ide-terminal-launcher.c             | 2 +-
 src/libide/terminal/ide-terminal-page.c                 | 2 +-
 src/libide/terminal/ide-terminal-popover-row.c          | 2 +-
 src/libide/terminal/ide-terminal-popover.c              | 2 +-
 src/libide/terminal/ide-terminal-search.c               | 2 +-
 src/libide/terminal/ide-terminal-surface.c              | 2 +-
 src/libide/terminal/ide-terminal-workspace.c            | 2 +-
 src/libide/threading/ide-environment-variable.c         | 2 +-
 src/libide/threading/ide-environment.c                  | 2 +-
 src/libide/threading/ide-flatpak-subprocess.c           | 2 +-
 src/libide/threading/ide-simple-subprocess.c            | 2 +-
 src/libide/tree/ide-cell-renderer-status.c              | 2 +-
 src/libide/tree/ide-tree-model.c                        | 2 +-
 src/libide/tree/ide-tree-node.c                         | 2 +-
 src/libide/vcs/ide-directory-vcs.c                      | 2 +-
 src/libide/vcs/ide-vcs-monitor.c                        | 2 +-
 123 files changed, 123 insertions(+), 123 deletions(-)
---
diff --git a/src/libide/code/ide-buffer-manager.c b/src/libide/code/ide-buffer-manager.c
index 9b75b0861..22d5f1903 100644
--- a/src/libide/code/ide-buffer-manager.c
+++ b/src/libide/code/ide-buffer-manager.c
@@ -72,7 +72,7 @@ typedef struct
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeBufferManager, ide_buffer_manager, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeBufferManager, ide_buffer_manager, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 enum {
diff --git a/src/libide/code/ide-buffer.c b/src/libide/code/ide-buffer.c
index 9937d1432..3788d364c 100644
--- a/src/libide/code/ide-buffer.c
+++ b/src/libide/code/ide-buffer.c
@@ -124,7 +124,7 @@ typedef struct
   IdeSymbol   *symbol;
 } LookUpSymbolData;
 
-G_DEFINE_TYPE (IdeBuffer, ide_buffer, GTK_SOURCE_TYPE_BUFFER)
+G_DEFINE_FINAL_TYPE (IdeBuffer, ide_buffer, GTK_SOURCE_TYPE_BUFFER)
 
 enum {
   PROP_0,
diff --git a/src/libide/code/ide-diagnostics-manager.c b/src/libide/code/ide-diagnostics-manager.c
index 63752e984..a1ee668a0 100644
--- a/src/libide/code/ide-diagnostics-manager.c
+++ b/src/libide/code/ide-diagnostics-manager.c
@@ -154,7 +154,7 @@ static void     ide_diagnostics_group_queue_diagnose      (IdeDiagnosticsGroup
 static GParamSpec *properties [N_PROPS];
 static guint signals [N_SIGNALS];
 
-G_DEFINE_TYPE (IdeDiagnosticsManager, ide_diagnostics_manager, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeDiagnosticsManager, ide_diagnostics_manager, IDE_TYPE_OBJECT)
 
 static void
 free_diagnostics (gpointer data)
diff --git a/src/libide/code/ide-formatter-options.c b/src/libide/code/ide-formatter-options.c
index 5dc199110..64941481c 100644
--- a/src/libide/code/ide-formatter-options.c
+++ b/src/libide/code/ide-formatter-options.c
@@ -38,7 +38,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeFormatterOptions, ide_formatter_options, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeFormatterOptions, ide_formatter_options, G_TYPE_OBJECT)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/libide/code/ide-gsettings-file-settings.c b/src/libide/code/ide-gsettings-file-settings.c
index fe998a5d7..3020e366a 100644
--- a/src/libide/code/ide-gsettings-file-settings.c
+++ b/src/libide/code/ide-gsettings-file-settings.c
@@ -43,7 +43,7 @@ typedef struct
   GSettingsBindGetMapping  get_mapping;
 } SettingsMapping;
 
-G_DEFINE_TYPE (IdeGsettingsFileSettings, ide_gsettings_file_settings, IDE_TYPE_FILE_SETTINGS)
+G_DEFINE_FINAL_TYPE (IdeGsettingsFileSettings, ide_gsettings_file_settings, IDE_TYPE_FILE_SETTINGS)
 
 static gboolean
 indent_style_get (GValue   *value,
diff --git a/src/libide/code/ide-highlight-engine.c b/src/libide/code/ide-highlight-engine.c
index d95b74b00..10ac92c22 100644
--- a/src/libide/code/ide-highlight-engine.c
+++ b/src/libide/code/ide-highlight-engine.c
@@ -62,7 +62,7 @@ struct _IdeHighlightEngine
   guint                enabled : 1;
 };
 
-G_DEFINE_TYPE (IdeHighlightEngine, ide_highlight_engine, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeHighlightEngine, ide_highlight_engine, IDE_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/code/ide-unsaved-files.c b/src/libide/code/ide-unsaved-files.c
index 84cde3e9f..27e669f47 100644
--- a/src/libide/code/ide-unsaved-files.c
+++ b/src/libide/code/ide-unsaved-files.c
@@ -61,7 +61,7 @@ typedef struct
   gchar     *drafts_directory;
 } AsyncState;
 
-G_DEFINE_TYPE (IdeUnsavedFiles, ide_unsaved_files, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeUnsavedFiles, ide_unsaved_files, IDE_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/core/ide-context.c b/src/libide/core/ide-context.c
index ffb3fe0fd..50c373787 100644
--- a/src/libide/core/ide-context.c
+++ b/src/libide/core/ide-context.c
@@ -65,7 +65,7 @@ enum {
   N_SIGNALS
 };
 
-G_DEFINE_TYPE (IdeContext, ide_context, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeContext, ide_context, IDE_TYPE_OBJECT)
 
 static GParamSpec *properties [N_PROPS];
 static guint signals [N_SIGNALS];
diff --git a/src/libide/core/ide-notifications.c b/src/libide/core/ide-notifications.c
index 9c09da832..27fa54e22 100644
--- a/src/libide/core/ide-notifications.c
+++ b/src/libide/core/ide-notifications.c
@@ -45,7 +45,7 @@ typedef struct
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeNotifications, ide_notifications, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeNotifications, ide_notifications, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 enum {
diff --git a/src/libide/core/ide-object-box.c b/src/libide/core/ide-object-box.c
index 3a3ad2383..6524c0b8a 100644
--- a/src/libide/core/ide-object-box.c
+++ b/src/libide/core/ide-object-box.c
@@ -32,7 +32,7 @@ struct _IdeObjectBox
   guint      propagate_disposal : 1;
 };
 
-G_DEFINE_TYPE (IdeObjectBox, ide_object_box, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeObjectBox, ide_object_box, IDE_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/core/ide-settings.c b/src/libide/core/ide-settings.c
index 80b851da7..5cd1f1506 100644
--- a/src/libide/core/ide-settings.c
+++ b/src/libide/core/ide-settings.c
@@ -56,7 +56,7 @@ struct _IdeSettings
   guint                ignore_project_settings : 1;
 };
 
-G_DEFINE_TYPE (IdeSettings, ide_settings, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeSettings, ide_settings, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/core/ide-transfer-manager.c b/src/libide/core/ide-transfer-manager.c
index 549e9fc67..d4459e062 100644
--- a/src/libide/core/ide-transfer-manager.c
+++ b/src/libide/core/ide-transfer-manager.c
@@ -39,7 +39,7 @@ struct _IdeTransferManager
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeTransferManager, ide_transfer_manager, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeTransferManager, ide_transfer_manager, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 enum {
diff --git a/src/libide/debugger/ide-debug-manager.c b/src/libide/debugger/ide-debug-manager.c
index ef85ae598..06713f1a2 100644
--- a/src/libide/debugger/ide-debug-manager.c
+++ b/src/libide/debugger/ide-debug-manager.c
@@ -77,7 +77,7 @@ enum {
 static GParamSpec *properties [N_PROPS];
 static guint signals [N_SIGNALS];
 
-G_DEFINE_TYPE (IdeDebugManager, ide_debug_manager, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeDebugManager, ide_debug_manager, IDE_TYPE_OBJECT)
 
 static gint
 compare_language_id (gconstpointer a,
diff --git a/src/libide/debugger/ide-debugger-breakpoints.c b/src/libide/debugger/ide-debugger-breakpoints.c
index a9980ff0b..a9f26361c 100644
--- a/src/libide/debugger/ide-debugger-breakpoints.c
+++ b/src/libide/debugger/ide-debugger-breakpoints.c
@@ -73,7 +73,7 @@ enum {
   N_SIGNALS
 };
 
-G_DEFINE_TYPE (IdeDebuggerBreakpoints, ide_debugger_breakpoints, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeDebuggerBreakpoints, ide_debugger_breakpoints, G_TYPE_OBJECT)
 
 static GParamSpec *properties [N_PROPS];
 static guint signals [N_SIGNALS];
diff --git a/src/libide/editor/ide-editor-page.c b/src/libide/editor/ide-editor-page.c
index b5d23ef86..24bc8c100 100644
--- a/src/libide/editor/ide-editor-page.c
+++ b/src/libide/editor/ide-editor-page.c
@@ -47,7 +47,7 @@ enum {
 
 static void ide_editor_page_update_reveal_timer (IdeEditorPage *self);
 
-G_DEFINE_TYPE (IdeEditorPage, ide_editor_page, IDE_TYPE_PAGE)
+G_DEFINE_FINAL_TYPE (IdeEditorPage, ide_editor_page, IDE_TYPE_PAGE)
 
 DZL_DEFINE_COUNTER (instances, "Editor", "N Views", "Number of editor views");
 
diff --git a/src/libide/editor/ide-editor-print-operation.c b/src/libide/editor/ide-editor-print-operation.c
index dbe895b3b..d25253934 100644
--- a/src/libide/editor/ide-editor-print-operation.c
+++ b/src/libide/editor/ide-editor-print-operation.c
@@ -36,7 +36,7 @@ struct _IdeEditorPrintOperation
   GtkSourcePrintCompositor *compositor;
 };
 
-G_DEFINE_TYPE (IdeEditorPrintOperation, ide_editor_print_operation, GTK_TYPE_PRINT_OPERATION)
+G_DEFINE_FINAL_TYPE (IdeEditorPrintOperation, ide_editor_print_operation, GTK_TYPE_PRINT_OPERATION)
 
 enum {
   PROP_0,
diff --git a/src/libide/editor/ide-editor-search-bar.c b/src/libide/editor/ide-editor-search-bar.c
index ca7077ce7..614208503 100644
--- a/src/libide/editor/ide-editor-search-bar.c
+++ b/src/libide/editor/ide-editor-search-bar.c
@@ -69,7 +69,7 @@ enum {
   N_SIGNALS
 };
 
-G_DEFINE_TYPE (IdeEditorSearchBar, ide_editor_search_bar, DZL_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeEditorSearchBar, ide_editor_search_bar, DZL_TYPE_BIN)
 
 static GParamSpec *properties [N_PROPS];
 static guint signals [N_SIGNALS];
diff --git a/src/libide/editor/ide-editor-search.c b/src/libide/editor/ide-editor-search.c
index fc09f9c7a..1a42e7f56 100644
--- a/src/libide/editor/ide-editor-search.c
+++ b/src/libide/editor/ide-editor-search.c
@@ -115,7 +115,7 @@ DZL_DEFINE_ACTION_GROUP (IdeEditorSearch, ide_editor_search, {
   { "at-word-boundaries", ide_editor_search_actions_at_word_boundary, "b" },
 })
 
-G_DEFINE_TYPE_WITH_CODE (IdeEditorSearch, ide_editor_search, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeEditorSearch, ide_editor_search, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, ide_editor_search_init_action_group))
 
 static GParamSpec *properties [N_PROPS];
diff --git a/src/libide/editor/ide-editor-settings-dialog.c b/src/libide/editor/ide-editor-settings-dialog.c
index 73b05da5c..e14cf382e 100644
--- a/src/libide/editor/ide-editor-settings-dialog.c
+++ b/src/libide/editor/ide-editor-settings-dialog.c
@@ -35,7 +35,7 @@ struct _IdeEditorSettingsDialog
   GtkSearchEntry *entry;
 };
 
-G_DEFINE_TYPE (IdeEditorSettingsDialog, ide_editor_settings_dialog, GTK_TYPE_DIALOG)
+G_DEFINE_FINAL_TYPE (IdeEditorSettingsDialog, ide_editor_settings_dialog, GTK_TYPE_DIALOG)
 
 enum {
   PROP_0,
diff --git a/src/libide/editor/ide-editor-sidebar.c b/src/libide/editor/ide-editor-sidebar.c
index 66f5337d3..09493b8f7 100644
--- a/src/libide/editor/ide-editor-sidebar.c
+++ b/src/libide/editor/ide-editor-sidebar.c
@@ -61,7 +61,7 @@ struct _IdeEditorSidebar
   GtkStack          *stack;
 };
 
-G_DEFINE_TYPE (IdeEditorSidebar, ide_editor_sidebar, IDE_TYPE_PANEL)
+G_DEFINE_FINAL_TYPE (IdeEditorSidebar, ide_editor_sidebar, IDE_TYPE_PANEL)
 
 static void
 ide_editor_sidebar_update_title (IdeEditorSidebar *self)
diff --git a/src/libide/editor/ide-editor-surface.c b/src/libide/editor/ide-editor-surface.c
index cc6921552..41f7eaa0a 100644
--- a/src/libide/editor/ide-editor-surface.c
+++ b/src/libide/editor/ide-editor-surface.c
@@ -54,7 +54,7 @@ static void ide_editor_surface_focus_location_full (IdeEditorSurface *self,
 
 static GParamSpec *properties [N_PROPS];
 
-G_DEFINE_TYPE (IdeEditorSurface, ide_editor_surface, IDE_TYPE_SURFACE)
+G_DEFINE_FINAL_TYPE (IdeEditorSurface, ide_editor_surface, IDE_TYPE_SURFACE)
 
 static void
 ide_editor_surface_foreach_page (IdeSurface  *surface,
diff --git a/src/libide/editor/ide-editor-utilities.c b/src/libide/editor/ide-editor-utilities.c
index b8fccaf26..14116e610 100644
--- a/src/libide/editor/ide-editor-utilities.c
+++ b/src/libide/editor/ide-editor-utilities.c
@@ -45,7 +45,7 @@ struct _IdeEditorUtilities
   DzlDockStack  *stack;
 };
 
-G_DEFINE_TYPE (IdeEditorUtilities, ide_editor_utilities, IDE_TYPE_PANEL)
+G_DEFINE_FINAL_TYPE (IdeEditorUtilities, ide_editor_utilities, IDE_TYPE_PANEL)
 
 static void
 ide_editor_utilities_add (GtkContainer *container,
diff --git a/src/libide/editor/ide-editor-workspace.c b/src/libide/editor/ide-editor-workspace.c
index b99c1fcf4..5acb310c8 100644
--- a/src/libide/editor/ide-editor-workspace.c
+++ b/src/libide/editor/ide-editor-workspace.c
@@ -46,7 +46,7 @@ struct _IdeEditorWorkspace
   DzlShortcutTooltip *search_tooltip;
 };
 
-G_DEFINE_TYPE (IdeEditorWorkspace, ide_editor_workspace, IDE_TYPE_WORKSPACE)
+G_DEFINE_FINAL_TYPE (IdeEditorWorkspace, ide_editor_workspace, IDE_TYPE_WORKSPACE)
 
 static void
 ide_editor_workspace_surface_set (IdeWorkspace *workspace,
diff --git a/src/libide/foundry/ide-build-log.c b/src/libide/foundry/ide-build-log.c
index ba0cdb180..59da2ed62 100644
--- a/src/libide/foundry/ide-build-log.c
+++ b/src/libide/foundry/ide-build-log.c
@@ -52,7 +52,7 @@ typedef struct
   guint               id;
 } Observer;
 
-G_DEFINE_TYPE (IdeBuildLog, ide_build_log, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeBuildLog, ide_build_log, G_TYPE_OBJECT)
 
 static gboolean
 emit_log_from_main (gpointer user_data)
diff --git a/src/libide/foundry/ide-build-manager.c b/src/libide/foundry/ide-build-manager.c
index 0167bad2a..c0aa9590d 100644
--- a/src/libide/foundry/ide-build-manager.c
+++ b/src/libide/foundry/ide-build-manager.c
@@ -117,7 +117,7 @@ DZL_DEFINE_ACTION_GROUP (IdeBuildManager, ide_build_manager, {
   { "rebuild", ide_build_manager_action_rebuild },
 })
 
-G_DEFINE_TYPE_EXTENDED (IdeBuildManager, ide_build_manager, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeBuildManager, ide_build_manager, IDE_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)
                         G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP,
                                                ide_build_manager_init_action_group))
diff --git a/src/libide/foundry/ide-compile-commands.c b/src/libide/foundry/ide-compile-commands.c
index 9ad8f4b35..4d3ac19f6 100644
--- a/src/libide/foundry/ide-compile-commands.c
+++ b/src/libide/foundry/ide-compile-commands.c
@@ -86,7 +86,7 @@ typedef struct
   gchar *command;
 } CompileInfo;
 
-G_DEFINE_TYPE (IdeCompileCommands, ide_compile_commands, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeCompileCommands, ide_compile_commands, G_TYPE_OBJECT)
 
 static void
 compile_info_free (gpointer data)
diff --git a/src/libide/foundry/ide-config-manager.c b/src/libide/foundry/ide-config-manager.c
index af4c9980f..1aebed222 100644
--- a/src/libide/foundry/ide-config-manager.c
+++ b/src/libide/foundry/ide-config-manager.c
@@ -71,7 +71,7 @@ DZL_DEFINE_ACTION_GROUP (IdeConfigManager, ide_config_manager, {
   { "duplicate", ide_config_manager_actions_duplicate, "s" },
 })
 
-G_DEFINE_TYPE_EXTENDED (IdeConfigManager, ide_config_manager, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeConfigManager, ide_config_manager, IDE_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init)
                         G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)
                         G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, ide_config_manager_init_action_group))
diff --git a/src/libide/foundry/ide-device-info.c b/src/libide/foundry/ide-device-info.c
index 51674cafe..e8c6fadfc 100644
--- a/src/libide/foundry/ide-device-info.c
+++ b/src/libide/foundry/ide-device-info.c
@@ -33,7 +33,7 @@ struct _IdeDeviceInfo
   IdeDeviceKind kind;
 };
 
-G_DEFINE_TYPE (IdeDeviceInfo, ide_device_info, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeDeviceInfo, ide_device_info, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/foundry/ide-device-manager.c b/src/libide/foundry/ide-device-manager.c
index 35b9a3218..82fc56af7 100644
--- a/src/libide/foundry/ide-device-manager.c
+++ b/src/libide/foundry/ide-device-manager.c
@@ -99,7 +99,7 @@ DZL_DEFINE_ACTION_GROUP (IdeDeviceManager, ide_device_manager, {
   { "deploy", ide_device_manager_action_deploy },
 })
 
-G_DEFINE_TYPE_WITH_CODE (IdeDeviceManager, ide_device_manager, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeDeviceManager, ide_device_manager, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP,
                                                 ide_device_manager_init_action_group)
                          G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_init_iface)
diff --git a/src/libide/foundry/ide-fallback-build-system.c b/src/libide/foundry/ide-fallback-build-system.c
index 9768dbf64..63485e68a 100644
--- a/src/libide/foundry/ide-fallback-build-system.c
+++ b/src/libide/foundry/ide-fallback-build-system.c
@@ -34,7 +34,7 @@ struct _IdeFallbackBuildSystem
 
 static void build_system_init (IdeBuildSystemInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeFallbackBuildSystem,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeFallbackBuildSystem,
                          ide_fallback_build_system,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_SYSTEM, build_system_init))
diff --git a/src/libide/foundry/ide-pipeline-stage-transfer.c 
b/src/libide/foundry/ide-pipeline-stage-transfer.c
index 203a0ce8b..131e03db2 100644
--- a/src/libide/foundry/ide-pipeline-stage-transfer.c
+++ b/src/libide/foundry/ide-pipeline-stage-transfer.c
@@ -43,7 +43,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdePipelineStageTransfer, ide_pipeline_stage_transfer, IDE_TYPE_PIPELINE_STAGE)
+G_DEFINE_FINAL_TYPE (IdePipelineStageTransfer, ide_pipeline_stage_transfer, IDE_TYPE_PIPELINE_STAGE)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/libide/foundry/ide-pipeline.c b/src/libide/foundry/ide-pipeline.c
index dd5a0965e..31e0f6672 100644
--- a/src/libide/foundry/ide-pipeline.c
+++ b/src/libide/foundry/ide-pipeline.c
@@ -361,7 +361,7 @@ static void ide_pipeline_tick_rebuild (IdePipeline         *self,
 static void initable_iface_init       (GInitableIface      *iface);
 static void list_model_iface_init     (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdePipeline, ide_pipeline, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdePipeline, ide_pipeline, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init)
                          G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init))
 
diff --git a/src/libide/foundry/ide-run-manager.c b/src/libide/foundry/ide-run-manager.c
index ffc0c69c9..7bae4f4a2 100644
--- a/src/libide/foundry/ide-run-manager.c
+++ b/src/libide/foundry/ide-run-manager.c
@@ -83,7 +83,7 @@ DZL_DEFINE_ACTION_GROUP (IdeRunManager, ide_run_manager, {
   { "stop", ide_run_manager_actions_stop },
 })
 
-G_DEFINE_TYPE_EXTENDED (IdeRunManager, ide_run_manager, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeRunManager, ide_run_manager, IDE_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)
                         G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP,
                                                ide_run_manager_init_action_group))
diff --git a/src/libide/foundry/ide-runtime-manager.c b/src/libide/foundry/ide-runtime-manager.c
index b12cb1707..c75b57a5c 100644
--- a/src/libide/foundry/ide-runtime-manager.c
+++ b/src/libide/foundry/ide-runtime-manager.c
@@ -59,7 +59,7 @@ typedef struct
 static void list_model_iface_init (GListModelInterface *iface);
 static void initable_iface_init   (GInitableIface      *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeRuntimeManager, ide_runtime_manager, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeRuntimeManager, ide_runtime_manager, IDE_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init)
                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init))
 
diff --git a/src/libide/foundry/ide-test-manager.c b/src/libide/foundry/ide-test-manager.c
index 69d2a79e9..efc377d27 100644
--- a/src/libide/foundry/ide-test-manager.c
+++ b/src/libide/foundry/ide-test-manager.c
@@ -96,7 +96,7 @@ DZL_DEFINE_ACTION_GROUP (IdeTestManager, ide_test_manager, {
   { "reload-tests", ide_test_manager_actions_reload },
 })
 
-G_DEFINE_TYPE_WITH_CODE (IdeTestManager, ide_test_manager, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeTestManager, ide_test_manager, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)
                          G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP,
                                                 ide_test_manager_init_action_group))
diff --git a/src/libide/foundry/ide-toolchain-manager.c b/src/libide/foundry/ide-toolchain-manager.c
index 593a4ca6f..794bcd8c5 100644
--- a/src/libide/foundry/ide-toolchain-manager.c
+++ b/src/libide/foundry/ide-toolchain-manager.c
@@ -57,7 +57,7 @@ typedef struct
 static void list_model_iface_init     (GListModelInterface *iface);
 static void async_initable_iface_init (GAsyncInitableIface *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeToolchainManager, ide_toolchain_manager, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeToolchainManager, ide_toolchain_manager, IDE_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init)
                         G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init))
 
diff --git a/src/libide/greeter/ide-clone-surface.c b/src/libide/greeter/ide-clone-surface.c
index f21089b75..98928b2bb 100644
--- a/src/libide/greeter/ide-clone-surface.c
+++ b/src/libide/greeter/ide-clone-surface.c
@@ -67,7 +67,7 @@ struct _IdeCloneSurface
   guint                vcs_valid : 1;
 };
 
-G_DEFINE_TYPE (IdeCloneSurface, ide_clone_surface, IDE_TYPE_SURFACE)
+G_DEFINE_FINAL_TYPE (IdeCloneSurface, ide_clone_surface, IDE_TYPE_SURFACE)
 
 enum {
   PROP_0,
diff --git a/src/libide/greeter/ide-greeter-buttons-section.c 
b/src/libide/greeter/ide-greeter-buttons-section.c
index ac10d84ad..fba74f658 100644
--- a/src/libide/greeter/ide-greeter-buttons-section.c
+++ b/src/libide/greeter/ide-greeter-buttons-section.c
@@ -32,7 +32,7 @@ struct _IdeGreeterButtonsSection
   GtkBox *box;
 };
 
-G_DEFINE_TYPE_WITH_CODE (IdeGreeterButtonsSection, ide_greeter_buttons_section, GTK_TYPE_BIN,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeGreeterButtonsSection, ide_greeter_buttons_section, GTK_TYPE_BIN,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_GREETER_SECTION, NULL))
 
 static void
diff --git a/src/libide/greeter/ide-greeter-workspace.c b/src/libide/greeter/ide-greeter-workspace.c
index a792c1d8c..01bacb8f7 100644
--- a/src/libide/greeter/ide-greeter-workspace.c
+++ b/src/libide/greeter/ide-greeter-workspace.c
@@ -74,7 +74,7 @@ struct _IdeGreeterWorkspace
   guint                     selection_mode : 1;
 };
 
-G_DEFINE_TYPE (IdeGreeterWorkspace, ide_greeter_workspace, IDE_TYPE_WORKSPACE)
+G_DEFINE_FINAL_TYPE (IdeGreeterWorkspace, ide_greeter_workspace, IDE_TYPE_WORKSPACE)
 
 enum {
   PROP_0,
diff --git a/src/libide/greeter/ide-truncate-model.c b/src/libide/greeter/ide-truncate-model.c
index 1d0048c16..979ba2755 100644
--- a/src/libide/greeter/ide-truncate-model.c
+++ b/src/libide/greeter/ide-truncate-model.c
@@ -64,7 +64,7 @@ list_model_iface_init (GListModelInterface *iface)
   iface->get_item_type = ide_truncate_model_get_item_type;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeTruncateModel, ide_truncate_model, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeTruncateModel, ide_truncate_model, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 enum {
diff --git a/src/libide/gui/ide-application.c b/src/libide/gui/ide-application.c
index 79d09d349..d207f3482 100644
--- a/src/libide/gui/ide-application.c
+++ b/src/libide/gui/ide-application.c
@@ -39,7 +39,7 @@
 #include "ide-primary-workspace.h"
 #include "ide-worker.h"
 
-G_DEFINE_TYPE (IdeApplication, ide_application, DZL_TYPE_APPLICATION)
+G_DEFINE_FINAL_TYPE (IdeApplication, ide_application, DZL_TYPE_APPLICATION)
 
 #define IS_UI_PROCESS(app) ((app)->type == NULL)
 
diff --git a/src/libide/gui/ide-cell-renderer-fancy.c b/src/libide/gui/ide-cell-renderer-fancy.c
index 212cb58f0..e7169e053 100644
--- a/src/libide/gui/ide-cell-renderer-fancy.c
+++ b/src/libide/gui/ide-cell-renderer-fancy.c
@@ -41,7 +41,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeCellRendererFancy, ide_cell_renderer_fancy, GTK_TYPE_CELL_RENDERER)
+G_DEFINE_FINAL_TYPE (IdeCellRendererFancy, ide_cell_renderer_fancy, GTK_TYPE_CELL_RENDERER)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/libide/gui/ide-command-manager.c b/src/libide/gui/ide-command-manager.c
index 1a56f4899..11ff23be3 100644
--- a/src/libide/gui/ide-command-manager.c
+++ b/src/libide/gui/ide-command-manager.c
@@ -54,7 +54,7 @@ typedef struct
   gint          n_active;
 } Query;
 
-G_DEFINE_TYPE (IdeCommandManager, ide_command_manager, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeCommandManager, ide_command_manager, IDE_TYPE_OBJECT)
 
 static void
 query_free (Query *q)
diff --git a/src/libide/gui/ide-environment-editor-row.c b/src/libide/gui/ide-environment-editor-row.c
index 5e39f9da1..cdde364b9 100644
--- a/src/libide/gui/ide-environment-editor-row.c
+++ b/src/libide/gui/ide-environment-editor-row.c
@@ -49,7 +49,7 @@ enum {
   LAST_SIGNAL
 };
 
-G_DEFINE_TYPE (IdeEnvironmentEditorRow, ide_environment_editor_row, GTK_TYPE_LIST_BOX_ROW)
+G_DEFINE_FINAL_TYPE (IdeEnvironmentEditorRow, ide_environment_editor_row, GTK_TYPE_LIST_BOX_ROW)
 
 static GParamSpec *properties [LAST_PROP];
 static guint signals [LAST_SIGNAL];
diff --git a/src/libide/gui/ide-environment-editor.c b/src/libide/gui/ide-environment-editor.c
index 31c4e5b27..13c016af7 100644
--- a/src/libide/gui/ide-environment-editor.c
+++ b/src/libide/gui/ide-environment-editor.c
@@ -36,7 +36,7 @@ struct _IdeEnvironmentEditor
   IdeEnvironmentVariable *dummy;
 };
 
-G_DEFINE_TYPE (IdeEnvironmentEditor, ide_environment_editor, GTK_TYPE_LIST_BOX)
+G_DEFINE_FINAL_TYPE (IdeEnvironmentEditor, ide_environment_editor, GTK_TYPE_LIST_BOX)
 
 enum {
   PROP_0,
diff --git a/src/libide/gui/ide-frame-empty-state.c b/src/libide/gui/ide-frame-empty-state.c
index b6dd28092..f737168c6 100644
--- a/src/libide/gui/ide-frame-empty-state.c
+++ b/src/libide/gui/ide-frame-empty-state.c
@@ -29,7 +29,7 @@ struct _IdeFrameEmptyState
   GtkBin parent_instance;
 };
 
-G_DEFINE_TYPE (IdeFrameEmptyState, ide_frame_empty_state, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeFrameEmptyState, ide_frame_empty_state, GTK_TYPE_BIN)
 
 static void
 ide_frame_empty_state_class_init (IdeFrameEmptyStateClass *klass)
diff --git a/src/libide/gui/ide-frame-header.c b/src/libide/gui/ide-frame-header.c
index a866782b2..419d7e1bd 100644
--- a/src/libide/gui/ide-frame-header.c
+++ b/src/libide/gui/ide-frame-header.c
@@ -79,7 +79,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeFrameHeader, ide_frame_header, DZL_TYPE_PRIORITY_BOX)
+G_DEFINE_FINAL_TYPE (IdeFrameHeader, ide_frame_header, DZL_TYPE_PRIORITY_BOX)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/libide/gui/ide-frame-wrapper.c b/src/libide/gui/ide-frame-wrapper.c
index 5a8556d51..03b3db783 100644
--- a/src/libide/gui/ide-frame-wrapper.c
+++ b/src/libide/gui/ide-frame-wrapper.c
@@ -36,7 +36,7 @@ struct _IdeFrameWrapper
   GQueue   history;
 };
 
-G_DEFINE_TYPE (IdeFrameWrapper, ide_frame_wrapper, GTK_TYPE_STACK)
+G_DEFINE_FINAL_TYPE (IdeFrameWrapper, ide_frame_wrapper, GTK_TYPE_STACK)
 
 static void
 ide_frame_wrapper_add (GtkContainer *container,
diff --git a/src/libide/gui/ide-grid-column.c b/src/libide/gui/ide-grid-column.c
index aa882c163..b6eb39dad 100644
--- a/src/libide/gui/ide-grid-column.c
+++ b/src/libide/gui/ide-grid-column.c
@@ -41,7 +41,7 @@ typedef struct
   IdeTask *backpointer;
 } TryCloseState;
 
-G_DEFINE_TYPE (IdeGridColumn, ide_grid_column, DZL_TYPE_MULTI_PANED)
+G_DEFINE_FINAL_TYPE (IdeGridColumn, ide_grid_column, DZL_TYPE_MULTI_PANED)
 
 static void ide_grid_column_try_close_pump (IdeTask *task);
 
diff --git a/src/libide/gui/ide-keybindings.c b/src/libide/gui/ide-keybindings.c
index f97638150..4188ef389 100644
--- a/src/libide/gui/ide-keybindings.c
+++ b/src/libide/gui/ide-keybindings.c
@@ -47,7 +47,7 @@ enum
   LAST_PROP
 };
 
-G_DEFINE_TYPE (IdeKeybindings, ide_keybindings, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeKeybindings, ide_keybindings, G_TYPE_OBJECT)
 
 static GParamSpec *properties [LAST_PROP];
 
diff --git a/src/libide/gui/ide-marked-view.c b/src/libide/gui/ide-marked-view.c
index 4c3cc4a30..1babf5a82 100644
--- a/src/libide/gui/ide-marked-view.c
+++ b/src/libide/gui/ide-marked-view.c
@@ -326,7 +326,7 @@ struct _IdeMarkedView
   GtkBin parent_instance;
 };
 
-G_DEFINE_TYPE (IdeMarkedView, ide_marked_view, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeMarkedView, ide_marked_view, GTK_TYPE_BIN)
 
 static void
 ide_marked_view_class_init (IdeMarkedViewClass *klass)
diff --git a/src/libide/gui/ide-notification-list-box-row.c b/src/libide/gui/ide-notification-list-box-row.c
index 69958b7af..86be210a0 100644
--- a/src/libide/gui/ide-notification-list-box-row.c
+++ b/src/libide/gui/ide-notification-list-box-row.c
@@ -43,7 +43,7 @@ struct _IdeNotificationListBoxRow
   guint            compact : 1;
 };
 
-G_DEFINE_TYPE (IdeNotificationListBoxRow, ide_notification_list_box_row, GTK_TYPE_LIST_BOX_ROW)
+G_DEFINE_FINAL_TYPE (IdeNotificationListBoxRow, ide_notification_list_box_row, GTK_TYPE_LIST_BOX_ROW)
 
 enum {
   PROP_0,
diff --git a/src/libide/gui/ide-notification-stack.c b/src/libide/gui/ide-notification-stack.c
index 9d33b6f47..7f08023fb 100644
--- a/src/libide/gui/ide-notification-stack.c
+++ b/src/libide/gui/ide-notification-stack.c
@@ -52,7 +52,7 @@ enum {
   N_SIGNALS
 };
 
-G_DEFINE_TYPE (IdeNotificationStack, ide_notification_stack, GTK_TYPE_STACK)
+G_DEFINE_FINAL_TYPE (IdeNotificationStack, ide_notification_stack, GTK_TYPE_STACK)
 
 static guint signals [N_SIGNALS];
 static GParamSpec *properties [N_PROPS];
diff --git a/src/libide/gui/ide-notification-view.c b/src/libide/gui/ide-notification-view.c
index a3e52844b..e6cfb8415 100644
--- a/src/libide/gui/ide-notification-view.c
+++ b/src/libide/gui/ide-notification-view.c
@@ -39,7 +39,7 @@ struct _IdeNotificationView
   GtkImage        *default_button_image;
 };
 
-G_DEFINE_TYPE (IdeNotificationView, ide_notification_view, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeNotificationView, ide_notification_view, GTK_TYPE_BIN)
 
 enum {
   PROP_0,
diff --git a/src/libide/gui/ide-notifications-button-popover.c 
b/src/libide/gui/ide-notifications-button-popover.c
index b89e45be9..46de8266f 100644
--- a/src/libide/gui/ide-notifications-button-popover.c
+++ b/src/libide/gui/ide-notifications-button-popover.c
@@ -29,7 +29,7 @@ struct _IdeNotificationsButtonPopover
   GtkPopover parent_instance;
 };
 
-G_DEFINE_TYPE (IdeNotificationsButtonPopover, ide_notifications_button_popover, GTK_TYPE_POPOVER)
+G_DEFINE_FINAL_TYPE (IdeNotificationsButtonPopover, ide_notifications_button_popover, GTK_TYPE_POPOVER)
 
 static GtkSizeRequestMode
 ide_notifications_button_popover_get_request_mode (GtkWidget *widget)
diff --git a/src/libide/gui/ide-notifications-button.c b/src/libide/gui/ide-notifications-button.c
index 8bc4a1659..522bc4b8f 100644
--- a/src/libide/gui/ide-notifications-button.c
+++ b/src/libide/gui/ide-notifications-button.c
@@ -53,7 +53,7 @@ struct _IdeNotificationsButton
   GtkListBox            *list_box;
 };
 
-G_DEFINE_TYPE (IdeNotificationsButton, ide_notifications_button, DZL_TYPE_PROGRESS_MENU_BUTTON)
+G_DEFINE_FINAL_TYPE (IdeNotificationsButton, ide_notifications_button, DZL_TYPE_PROGRESS_MENU_BUTTON)
 
 static GtkWidget *
 create_notification_row (gpointer item,
diff --git a/src/libide/gui/ide-omni-bar.c b/src/libide/gui/ide-omni-bar.c
index 5525e8d32..0ed14907f 100644
--- a/src/libide/gui/ide-omni-bar.c
+++ b/src/libide/gui/ide-omni-bar.c
@@ -66,7 +66,7 @@ DZL_DEFINE_ACTION_GROUP (IdeOmniBar, ide_omni_bar, {
   { "move-previous", ide_omni_bar_move_previous },
 })
 
-G_DEFINE_TYPE_WITH_CODE (IdeOmniBar, ide_omni_bar, GTK_TYPE_BIN,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeOmniBar, ide_omni_bar, GTK_TYPE_BIN,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, ide_omni_bar_init_action_group)
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, buildable_iface_init))
 
diff --git a/src/libide/gui/ide-preferences-language-row.c b/src/libide/gui/ide-preferences-language-row.c
index b8844d8dc..1fe5b33a5 100644
--- a/src/libide/gui/ide-preferences-language-row.c
+++ b/src/libide/gui/ide-preferences-language-row.c
@@ -31,7 +31,7 @@ struct _IdePreferencesLanguageRow
   GtkLabel *title;
 };
 
-G_DEFINE_TYPE (IdePreferencesLanguageRow, ide_preferences_language_row, DZL_TYPE_PREFERENCES_BIN)
+G_DEFINE_FINAL_TYPE (IdePreferencesLanguageRow, ide_preferences_language_row, DZL_TYPE_PREFERENCES_BIN)
 
 enum {
   PROP_0,
diff --git a/src/libide/gui/ide-preferences-surface.c b/src/libide/gui/ide-preferences-surface.c
index e132b43c1..2dcb6e0bf 100644
--- a/src/libide/gui/ide-preferences-surface.c
+++ b/src/libide/gui/ide-preferences-surface.c
@@ -38,7 +38,7 @@ struct _IdePreferencesSurface
   PeasExtensionSet   *extensions;
 };
 
-G_DEFINE_TYPE (IdePreferencesSurface, ide_preferences_surface, IDE_TYPE_SURFACE)
+G_DEFINE_FINAL_TYPE (IdePreferencesSurface, ide_preferences_surface, IDE_TYPE_SURFACE)
 
 static void
 ide_preferences_surface_addin_added_cb (PeasExtensionSet *set,
diff --git a/src/libide/gui/ide-preferences-window.c b/src/libide/gui/ide-preferences-window.c
index 450d5c457..683c2aaaa 100644
--- a/src/libide/gui/ide-preferences-window.c
+++ b/src/libide/gui/ide-preferences-window.c
@@ -29,7 +29,7 @@ struct _IdePreferencesWindow
   DzlApplicationWindow parent_window;
 };
 
-G_DEFINE_TYPE (IdePreferencesWindow, ide_preferences_window, DZL_TYPE_APPLICATION_WINDOW)
+G_DEFINE_FINAL_TYPE (IdePreferencesWindow, ide_preferences_window, DZL_TYPE_APPLICATION_WINDOW)
 
 static void
 ide_preferences_window_class_init (IdePreferencesWindowClass *klass)
diff --git a/src/libide/gui/ide-primary-workspace.c b/src/libide/gui/ide-primary-workspace.c
index a3cd7a3cb..1a7ca43c8 100644
--- a/src/libide/gui/ide-primary-workspace.c
+++ b/src/libide/gui/ide-primary-workspace.c
@@ -60,7 +60,7 @@ struct _IdePrimaryWorkspace
   DzlShortcutTooltip *search_tooltip;
 };
 
-G_DEFINE_TYPE (IdePrimaryWorkspace, ide_primary_workspace, IDE_TYPE_WORKSPACE)
+G_DEFINE_FINAL_TYPE (IdePrimaryWorkspace, ide_primary_workspace, IDE_TYPE_WORKSPACE)
 
 static void
 ide_primary_workspace_context_set (IdeWorkspace *workspace,
diff --git a/src/libide/gui/ide-run-button.c b/src/libide/gui/ide-run-button.c
index 4b0d6bf5c..9476a08af 100644
--- a/src/libide/gui/ide-run-button.c
+++ b/src/libide/gui/ide-run-button.c
@@ -45,7 +45,7 @@ struct _IdeRunButton
   char *run_handler_icon_name;
 };
 
-G_DEFINE_TYPE (IdeRunButton, ide_run_button, GTK_TYPE_BOX)
+G_DEFINE_FINAL_TYPE (IdeRunButton, ide_run_button, GTK_TYPE_BOX)
 
 static void
 ide_run_button_handler_set (IdeRunButton  *self,
diff --git a/src/libide/gui/ide-search-button.c b/src/libide/gui/ide-search-button.c
index 4a2882241..216e4b4e8 100644
--- a/src/libide/gui/ide-search-button.c
+++ b/src/libide/gui/ide-search-button.c
@@ -51,7 +51,7 @@ static const DzlShortcutEntry shortcuts[] = {
     N_("Focus to the global search entry") },
 };
 
-G_DEFINE_TYPE (IdeSearchButton, ide_search_button, DZL_TYPE_SUGGESTION_BUTTON)
+G_DEFINE_FINAL_TYPE (IdeSearchButton, ide_search_button, DZL_TYPE_SUGGESTION_BUTTON)
 
 static void
 search_entry_search_cb (GObject      *object,
diff --git a/src/libide/gui/ide-session.c b/src/libide/gui/ide-session.c
index f2532ebe3..e81888cb9 100644
--- a/src/libide/gui/ide-session.c
+++ b/src/libide/gui/ide-session.c
@@ -65,7 +65,7 @@ typedef struct
   IdePage         *restored_page;
 } RestoreItem;
 
-G_DEFINE_TYPE (IdeSession, ide_session, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeSession, ide_session, IDE_TYPE_OBJECT)
 
 static void
 restore_free (Restore *r)
diff --git a/src/libide/gui/ide-shortcut-label.c b/src/libide/gui/ide-shortcut-label.c
index d561f5d9c..94e65299f 100644
--- a/src/libide/gui/ide-shortcut-label.c
+++ b/src/libide/gui/ide-shortcut-label.c
@@ -47,7 +47,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeShortcutLabel, ide_shortcut_label, GTK_TYPE_BOX)
+G_DEFINE_FINAL_TYPE (IdeShortcutLabel, ide_shortcut_label, GTK_TYPE_BOX)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/libide/gui/ide-shortcuts-window.c b/src/libide/gui/ide-shortcuts-window.c
index 5f7dc3494..ea831edc5 100644
--- a/src/libide/gui/ide-shortcuts-window.c
+++ b/src/libide/gui/ide-shortcuts-window.c
@@ -31,7 +31,7 @@ struct _IdeShortcutsWindow
   GtkShortcutsWindow parent_instance;
 };
 
-G_DEFINE_TYPE (IdeShortcutsWindow, ide_shortcuts_window, GTK_TYPE_SHORTCUTS_WINDOW)
+G_DEFINE_FINAL_TYPE (IdeShortcutsWindow, ide_shortcuts_window, GTK_TYPE_SHORTCUTS_WINDOW)
 
 static void
 ide_shortcuts_window_class_init (IdeShortcutsWindowClass *klass)
diff --git a/src/libide/gui/ide-surfaces-button.c b/src/libide/gui/ide-surfaces-button.c
index 447ebf475..ddcb23eec 100644
--- a/src/libide/gui/ide-surfaces-button.c
+++ b/src/libide/gui/ide-surfaces-button.c
@@ -31,7 +31,7 @@ struct _IdeSurfacesButton
   DzlMenuButton parent_instance;
 };
 
-G_DEFINE_TYPE (IdeSurfacesButton, ide_surfaces_button, DZL_TYPE_MENU_BUTTON)
+G_DEFINE_FINAL_TYPE (IdeSurfacesButton, ide_surfaces_button, DZL_TYPE_MENU_BUTTON)
 
 static void
 ide_surfaces_button_items_changed_cb (IdeSurfacesButton *self,
diff --git a/src/libide/gui/ide-workbench.c b/src/libide/gui/ide-workbench.c
index ae447f323..54cafdcaf 100644
--- a/src/libide/gui/ide-workbench.c
+++ b/src/libide/gui/ide-workbench.c
@@ -135,7 +135,7 @@ DZL_DEFINE_ACTION_GROUP (IdeWorkbench, ide_workbench, {
   { "-dump-tasks", ide_workbench_action_dump_tasks },
 })
 
-G_DEFINE_TYPE_WITH_CODE (IdeWorkbench, ide_workbench, GTK_TYPE_WINDOW_GROUP,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeWorkbench, ide_workbench, GTK_TYPE_WINDOW_GROUP,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP,
                                                 ide_workbench_init_action_group))
 
diff --git a/src/libide/gui/ide-worker-manager.c b/src/libide/gui/ide-worker-manager.c
index 0d25670cd..304675779 100644
--- a/src/libide/gui/ide-worker-manager.c
+++ b/src/libide/gui/ide-worker-manager.c
@@ -43,7 +43,7 @@ struct _IdeWorkerManager
   GHashTable        *plugin_name_to_worker;
 };
 
-G_DEFINE_TYPE (IdeWorkerManager, ide_worker_manager, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeWorkerManager, ide_worker_manager, G_TYPE_OBJECT)
 
 DZL_DEFINE_COUNTER (instances, "IdeWorkerManager", "Instances", "Number of IdeWorkerManager instances")
 
diff --git a/src/libide/gui/ide-worker-process.c b/src/libide/gui/ide-worker-process.c
index 01f56efdf..eab3dcd60 100644
--- a/src/libide/gui/ide-worker-process.c
+++ b/src/libide/gui/ide-worker-process.c
@@ -44,7 +44,7 @@ struct _IdeWorkerProcess
   guint            quit : 1;
 };
 
-G_DEFINE_TYPE (IdeWorkerProcess, ide_worker_process, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeWorkerProcess, ide_worker_process, G_TYPE_OBJECT)
 
 DZL_DEFINE_COUNTER (instances, "IdeWorkerProcess", "Instances", "Number of IdeWorkerProcess instances")
 
diff --git a/src/libide/io/ide-persistent-map-builder.c b/src/libide/io/ide-persistent-map-builder.c
index 8fc248ba9..1d8233e82 100644
--- a/src/libide/io/ide-persistent-map-builder.c
+++ b/src/libide/io/ide-persistent-map-builder.c
@@ -72,7 +72,7 @@ struct _IdePersistentMapBuilder
 
 G_STATIC_ASSERT (sizeof (KVPair) == 8);
 
-G_DEFINE_TYPE (IdePersistentMapBuilder, ide_persistent_map_builder, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdePersistentMapBuilder, ide_persistent_map_builder, G_TYPE_OBJECT)
 
 static void
 build_state_free (gpointer data)
diff --git a/src/libide/io/ide-persistent-map.c b/src/libide/io/ide-persistent-map.c
index 4bf7bb219..50bf367d6 100644
--- a/src/libide/io/ide-persistent-map.c
+++ b/src/libide/io/ide-persistent-map.c
@@ -61,7 +61,7 @@ struct _IdePersistentMap
 
 G_STATIC_ASSERT (sizeof (KVPair) == 8);
 
-G_DEFINE_TYPE (IdePersistentMap, ide_persistent_map, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdePersistentMap, ide_persistent_map, G_TYPE_OBJECT)
 
 static void
 ide_persistent_map_load_file_worker (IdeTask      *task,
diff --git a/src/libide/io/ide-pkcon-transfer.c b/src/libide/io/ide-pkcon-transfer.c
index 76c819b17..e450797cc 100644
--- a/src/libide/io/ide-pkcon-transfer.c
+++ b/src/libide/io/ide-pkcon-transfer.c
@@ -40,7 +40,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdePkconTransfer, ide_pkcon_transfer, IDE_TYPE_TRANSFER)
+G_DEFINE_FINAL_TYPE (IdePkconTransfer, ide_pkcon_transfer, IDE_TYPE_TRANSFER)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/libide/lsp/ide-lsp-completion-item.c b/src/libide/lsp/ide-lsp-completion-item.c
index 6d69acb01..10aaf7678 100644
--- a/src/libide/lsp/ide-lsp-completion-item.c
+++ b/src/libide/lsp/ide-lsp-completion-item.c
@@ -37,7 +37,7 @@ struct _IdeLspCompletionItem
   guint kind;
 };
 
-G_DEFINE_TYPE_WITH_CODE (IdeLspCompletionItem, ide_lsp_completion_item, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeLspCompletionItem, ide_lsp_completion_item, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROPOSAL, NULL))
 
 static void
diff --git a/src/libide/lsp/ide-lsp-completion-results.c b/src/libide/lsp/ide-lsp-completion-results.c
index fc7253d19..2eef146eb 100644
--- a/src/libide/lsp/ide-lsp-completion-results.c
+++ b/src/libide/lsp/ide-lsp-completion-results.c
@@ -42,7 +42,7 @@ typedef struct
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeLspCompletionResults, ide_lsp_completion_results, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeLspCompletionResults, ide_lsp_completion_results, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 static void
diff --git a/src/libide/lsp/ide-lsp-formatter.c b/src/libide/lsp/ide-lsp-formatter.c
index 2f006c2dd..9ef3242d8 100644
--- a/src/libide/lsp/ide-lsp-formatter.c
+++ b/src/libide/lsp/ide-lsp-formatter.c
@@ -42,7 +42,7 @@ enum {
 
 static void formatter_iface_init (IdeFormatterInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeLspFormatter, ide_lsp_formatter, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeLspFormatter, ide_lsp_formatter, IDE_TYPE_OBJECT,
                          G_ADD_PRIVATE (IdeLspFormatter)
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_FORMATTER, formatter_iface_init))
 
diff --git a/src/libide/lsp/ide-lsp-search-result.c b/src/libide/lsp/ide-lsp-search-result.c
index f2ddf6f4f..cf300f11f 100644
--- a/src/libide/lsp/ide-lsp-search-result.c
+++ b/src/libide/lsp/ide-lsp-search-result.c
@@ -30,7 +30,7 @@ struct _IdeLspSearchResult
   IdeLocation     *location;
 };
 
-G_DEFINE_TYPE (IdeLspSearchResult, ide_lsp_search_result, IDE_TYPE_SEARCH_RESULT)
+G_DEFINE_FINAL_TYPE (IdeLspSearchResult, ide_lsp_search_result, IDE_TYPE_SEARCH_RESULT)
 
 enum {
   PROP_0,
diff --git a/src/libide/lsp/ide-lsp-symbol-node.c b/src/libide/lsp/ide-lsp-symbol-node.c
index 58c5e1cb1..937dd59cf 100644
--- a/src/libide/lsp/ide-lsp-symbol-node.c
+++ b/src/libide/lsp/ide-lsp-symbol-node.c
@@ -44,7 +44,7 @@ typedef struct
   Location end;
 } IdeLspSymbolNodePrivate;
 
-G_DEFINE_TYPE_WITH_PRIVATE (IdeLspSymbolNode, ide_lsp_symbol_node, IDE_TYPE_SYMBOL_NODE)
+G_DEFINE_FINAL_TYPE_WITH_PRIVATE (IdeLspSymbolNode, ide_lsp_symbol_node, IDE_TYPE_SYMBOL_NODE)
 
 static inline gint
 location_compare (const Location *a,
diff --git a/src/libide/lsp/ide-lsp-symbol-tree.c b/src/libide/lsp/ide-lsp-symbol-tree.c
index 53ecb51ab..5274d8960 100644
--- a/src/libide/lsp/ide-lsp-symbol-tree.c
+++ b/src/libide/lsp/ide-lsp-symbol-tree.c
@@ -36,7 +36,7 @@ typedef struct
 static void symbol_tree_iface_init (IdeSymbolTreeInterface *iface);
 
 struct _IdeLspSymbolTree { GObject object; };
-G_DEFINE_TYPE_WITH_CODE (IdeLspSymbolTree, ide_lsp_symbol_tree, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeLspSymbolTree, ide_lsp_symbol_tree, G_TYPE_OBJECT,
                          G_ADD_PRIVATE (IdeLspSymbolTree)
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SYMBOL_TREE, symbol_tree_iface_init))
 
diff --git a/src/libide/plugins/ide-extension-adapter.c b/src/libide/plugins/ide-extension-adapter.c
index d6043385f..ea912bd59 100644
--- a/src/libide/plugins/ide-extension-adapter.c
+++ b/src/libide/plugins/ide-extension-adapter.c
@@ -45,7 +45,7 @@ struct _IdeExtensionAdapter
   guint           queue_handler;
 };
 
-G_DEFINE_TYPE (IdeExtensionAdapter, ide_extension_adapter, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeExtensionAdapter, ide_extension_adapter, IDE_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/plugins/ide-extension-set-adapter.c b/src/libide/plugins/ide-extension-set-adapter.c
index 77a54a9f1..a86d43089 100644
--- a/src/libide/plugins/ide-extension-set-adapter.c
+++ b/src/libide/plugins/ide-extension-set-adapter.c
@@ -44,7 +44,7 @@ struct _IdeExtensionSetAdapter
   guint       reload_handler;
 };
 
-G_DEFINE_TYPE (IdeExtensionSetAdapter, ide_extension_set_adapter, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeExtensionSetAdapter, ide_extension_set_adapter, IDE_TYPE_OBJECT)
 
 enum {
   EXTENSIONS_LOADED,
diff --git a/src/libide/projects/ide-doap-person.c b/src/libide/projects/ide-doap-person.c
index 7f386458d..51e8a9de9 100644
--- a/src/libide/projects/ide-doap-person.c
+++ b/src/libide/projects/ide-doap-person.c
@@ -34,7 +34,7 @@ struct _IdeDoapPerson
   gchar *name;
 };
 
-G_DEFINE_TYPE (IdeDoapPerson, ide_doap_person, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeDoapPerson, ide_doap_person, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/projects/ide-doap.c b/src/libide/projects/ide-doap.c
index 542c80bc2..a15a4a276 100644
--- a/src/libide/projects/ide-doap.c
+++ b/src/libide/projects/ide-doap.c
@@ -46,7 +46,7 @@ struct _IdeDoap
 };
 
 G_DEFINE_QUARK (ide_doap_error, ide_doap_error)
-G_DEFINE_TYPE (IdeDoap, ide_doap, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeDoap, ide_doap, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/projects/ide-project-info.c b/src/libide/projects/ide-project-info.c
index 8f071b6a9..a08901ce7 100644
--- a/src/libide/projects/ide-project-info.c
+++ b/src/libide/projects/ide-project-info.c
@@ -69,7 +69,7 @@ struct _IdeProjectInfo
   guint       is_recent : 1;
 };
 
-G_DEFINE_TYPE (IdeProjectInfo, ide_project_info, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeProjectInfo, ide_project_info, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/projects/ide-project.c b/src/libide/projects/ide-project.c
index 7b7b2ebfb..e3fb7cd78 100644
--- a/src/libide/projects/ide-project.c
+++ b/src/libide/projects/ide-project.c
@@ -47,7 +47,7 @@ enum {
   N_SIGNALS
 };
 
-G_DEFINE_TYPE (IdeProject, ide_project, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeProject, ide_project, IDE_TYPE_OBJECT)
 
 static guint signals [N_SIGNALS];
 
diff --git a/src/libide/projects/ide-recent-projects.c b/src/libide/projects/ide-recent-projects.c
index d5171cc8b..a09e2851a 100644
--- a/src/libide/projects/ide-recent-projects.c
+++ b/src/libide/projects/ide-recent-projects.c
@@ -45,7 +45,7 @@ struct _IdeRecentProjects
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeRecentProjects, ide_recent_projects, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeRecentProjects, ide_recent_projects, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 IdeRecentProjects *
diff --git a/src/libide/projects/xml-reader.c b/src/libide/projects/xml-reader.c
index 5ae183275..4dd0c807b 100644
--- a/src/libide/projects/xml-reader.c
+++ b/src/libide/projects/xml-reader.c
@@ -59,7 +59,7 @@ enum {
 };
 
 G_DEFINE_QUARK (xml_reader_error, xml_reader_error)
-G_DEFINE_TYPE (XmlReader, xml_reader, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (XmlReader, xml_reader, G_TYPE_OBJECT)
 
 static GParamSpec *properties [LAST_PROP];
 static guint signals [LAST_SIGNAL];
diff --git a/src/libide/search/ide-search-engine.c b/src/libide/search/ide-search-engine.c
index 684e78c83..78be11f35 100644
--- a/src/libide/search/ide-search-engine.c
+++ b/src/libide/search/ide-search-engine.c
@@ -56,7 +56,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeSearchEngine, ide_search_engine, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeSearchEngine, ide_search_engine, IDE_TYPE_OBJECT)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/libide/sourceview/ide-completion-context.c b/src/libide/sourceview/ide-completion-context.c
index 6fdbb117a..a3ba15956 100644
--- a/src/libide/sourceview/ide-completion-context.c
+++ b/src/libide/sourceview/ide-completion-context.c
@@ -66,7 +66,7 @@ typedef struct
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeCompletionContext, ide_completion_context, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCompletionContext, ide_completion_context, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 enum {
diff --git a/src/libide/sourceview/ide-completion-list-box-row.c 
b/src/libide/sourceview/ide-completion-list-box-row.c
index 31b4fd7fa..ee9cdb31e 100644
--- a/src/libide/sourceview/ide-completion-list-box-row.c
+++ b/src/libide/sourceview/ide-completion-list-box-row.c
@@ -44,7 +44,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeCompletionListBoxRow, ide_completion_list_box_row, GTK_TYPE_LIST_BOX_ROW)
+G_DEFINE_FINAL_TYPE (IdeCompletionListBoxRow, ide_completion_list_box_row, GTK_TYPE_LIST_BOX_ROW)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/libide/sourceview/ide-completion-list-box.c b/src/libide/sourceview/ide-completion-list-box.c
index 2d953fc58..bc82ed197 100644
--- a/src/libide/sourceview/ide-completion-list-box.c
+++ b/src/libide/sourceview/ide-completion-list-box.c
@@ -122,7 +122,7 @@ enum {
 
 static void ide_completion_list_box_queue_update (IdeCompletionListBox *self);
 
-G_DEFINE_TYPE_WITH_CODE (IdeCompletionListBox, ide_completion_list_box, DZL_TYPE_BIN,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCompletionListBox, ide_completion_list_box, DZL_TYPE_BIN,
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL))
 
 static GParamSpec *properties [N_PROPS];
diff --git a/src/libide/sourceview/ide-completion-overlay.c b/src/libide/sourceview/ide-completion-overlay.c
index bc57c4819..433cb876f 100644
--- a/src/libide/sourceview/ide-completion-overlay.c
+++ b/src/libide/sourceview/ide-completion-overlay.c
@@ -43,7 +43,7 @@ enum {
 
 static void completion_display_iface_init (IdeCompletionDisplayInterface *);
 
-G_DEFINE_TYPE_WITH_CODE (IdeCompletionOverlay, ide_completion_overlay, GTK_TYPE_BIN,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCompletionOverlay, ide_completion_overlay, GTK_TYPE_BIN,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_DISPLAY,
                                                 completion_display_iface_init))
 
diff --git a/src/libide/sourceview/ide-completion-view.c b/src/libide/sourceview/ide-completion-view.c
index ec10b634a..92c38c71f 100644
--- a/src/libide/sourceview/ide-completion-view.c
+++ b/src/libide/sourceview/ide-completion-view.c
@@ -52,7 +52,7 @@ enum {
   N_SIGNALS
 };
 
-G_DEFINE_TYPE (IdeCompletionView, ide_completion_view, DZL_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeCompletionView, ide_completion_view, DZL_TYPE_BIN)
 
 static GParamSpec *properties [N_PROPS];
 static guint signals [N_SIGNALS];
diff --git a/src/libide/sourceview/ide-completion-window.c b/src/libide/sourceview/ide-completion-window.c
index 59b1dfc2f..939611500 100644
--- a/src/libide/sourceview/ide-completion-window.c
+++ b/src/libide/sourceview/ide-completion-window.c
@@ -46,7 +46,7 @@ enum {
 extern gpointer *gdk__private__                (void);
 static void      completion_display_iface_init (IdeCompletionDisplayInterface *);
 
-G_DEFINE_TYPE_WITH_CODE (IdeCompletionWindow, ide_completion_window, GTK_TYPE_WINDOW,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCompletionWindow, ide_completion_window, GTK_TYPE_WINDOW,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_DISPLAY,
                                                 completion_display_iface_init))
 
diff --git a/src/libide/sourceview/ide-completion.c b/src/libide/sourceview/ide-completion.c
index ed0cc6a84..1e23a4d14 100644
--- a/src/libide/sourceview/ide-completion.c
+++ b/src/libide/sourceview/ide-completion.c
@@ -152,7 +152,7 @@ struct _IdeCompletion
   guint needs_refilter : 1;
 };
 
-G_DEFINE_TYPE (IdeCompletion, ide_completion, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeCompletion, ide_completion, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/sourceview/ide-cursor.c b/src/libide/sourceview/ide-cursor.c
index 02bf39060..ecf1ac772 100644
--- a/src/libide/sourceview/ide-cursor.c
+++ b/src/libide/sourceview/ide-cursor.c
@@ -50,7 +50,7 @@ typedef struct
   GtkTextMark *insert;
 } VirtualCursor;
 
-G_DEFINE_TYPE (IdeCursor, ide_cursor, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeCursor, ide_cursor, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/sourceview/ide-hover-context.c b/src/libide/sourceview/ide-hover-context.c
index 1cf6c5485..80d7dae08 100644
--- a/src/libide/sourceview/ide-hover-context.c
+++ b/src/libide/sourceview/ide-hover-context.c
@@ -48,7 +48,7 @@ typedef struct
   guint active;
 } Query;
 
-G_DEFINE_TYPE (IdeHoverContext, ide_hover_context, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeHoverContext, ide_hover_context, G_TYPE_OBJECT)
 
 static void
 clear_item (Item *item)
diff --git a/src/libide/sourceview/ide-hover-popover.c b/src/libide/sourceview/ide-hover-popover.c
index c784e309a..aa80cf360 100644
--- a/src/libide/sourceview/ide-hover-popover.c
+++ b/src/libide/sourceview/ide-hover-popover.c
@@ -73,7 +73,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeHoverPopover, ide_hover_popover, GTK_TYPE_POPOVER)
+G_DEFINE_FINAL_TYPE (IdeHoverPopover, ide_hover_popover, GTK_TYPE_POPOVER)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/libide/sourceview/ide-hover.c b/src/libide/sourceview/ide-hover.c
index 1fd22c04b..47ec16956 100644
--- a/src/libide/sourceview/ide-hover.c
+++ b/src/libide/sourceview/ide-hover.c
@@ -93,7 +93,7 @@ struct _IdeHover
 
 static gboolean ide_hover_dismiss_cb (gpointer data);
 
-G_DEFINE_TYPE (IdeHover, ide_hover, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeHover, ide_hover, G_TYPE_OBJECT)
 
 static void
 ide_hover_queue_dismiss (IdeHover *self)
diff --git a/src/libide/sourceview/ide-line-change-gutter-renderer.c 
b/src/libide/sourceview/ide-line-change-gutter-renderer.c
index 7650e36ee..839bd0382 100644
--- a/src/libide/sourceview/ide-line-change-gutter-renderer.c
+++ b/src/libide/sourceview/ide-line-change-gutter-renderer.c
@@ -79,7 +79,7 @@ enum {
   BACKGROUND,
 };
 
-G_DEFINE_TYPE (IdeLineChangeGutterRenderer, ide_line_change_gutter_renderer, GTK_SOURCE_TYPE_GUTTER_RENDERER)
+G_DEFINE_FINAL_TYPE (IdeLineChangeGutterRenderer, ide_line_change_gutter_renderer, 
GTK_SOURCE_TYPE_GUTTER_RENDERER)
 
 static gboolean
 get_style_rgba (GtkSourceStyleScheme *scheme,
diff --git a/src/libide/sourceview/ide-snippet-chunk.c b/src/libide/sourceview/ide-snippet-chunk.c
index 80f253c29..1960a1580 100644
--- a/src/libide/sourceview/ide-snippet-chunk.c
+++ b/src/libide/sourceview/ide-snippet-chunk.c
@@ -52,7 +52,7 @@ struct _IdeSnippetChunk
   guint              text_set : 1;
 };
 
-G_DEFINE_TYPE (IdeSnippetChunk, ide_snippet_chunk, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeSnippetChunk, ide_snippet_chunk, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/sourceview/ide-snippet-context.c b/src/libide/sourceview/ide-snippet-context.c
index 534611a23..5314103d3 100644
--- a/src/libide/sourceview/ide-snippet-context.c
+++ b/src/libide/sourceview/ide-snippet-context.c
@@ -60,7 +60,7 @@ struct _IdeSnippetContextClass
   GObjectClass parent;
 };
 
-G_DEFINE_TYPE (IdeSnippetContext, ide_snippet_context, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeSnippetContext, ide_snippet_context, G_TYPE_OBJECT)
 
 enum {
   CHANGED,
diff --git a/src/libide/sourceview/ide-snippet-parser.c b/src/libide/sourceview/ide-snippet-parser.c
index be91f00ab..1876e9abb 100644
--- a/src/libide/sourceview/ide-snippet-parser.c
+++ b/src/libide/sourceview/ide-snippet-parser.c
@@ -63,7 +63,7 @@ struct _IdeSnippetParser
   guint    had_error : 1;
 };
 
-G_DEFINE_TYPE (IdeSnippetParser, ide_snippet_parser, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeSnippetParser, ide_snippet_parser, G_TYPE_OBJECT)
 
 enum {
   PARSING_ERROR,
diff --git a/src/libide/sourceview/ide-snippet-storage.c b/src/libide/sourceview/ide-snippet-storage.c
index 38ad6c774..e0841d665 100644
--- a/src/libide/sourceview/ide-snippet-storage.c
+++ b/src/libide/sourceview/ide-snippet-storage.c
@@ -70,7 +70,7 @@ typedef struct
 
 static void async_initable_iface_init (GAsyncInitableIface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeSnippetStorage, ide_snippet_storage, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeSnippetStorage, ide_snippet_storage, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init))
 
 static void
diff --git a/src/libide/sourceview/ide-snippet.c b/src/libide/sourceview/ide-snippet.c
index 6a2152640..9ace40e8a 100644
--- a/src/libide/sourceview/ide-snippet.c
+++ b/src/libide/sourceview/ide-snippet.c
@@ -77,7 +77,7 @@ enum {
   LAST_PROP
 };
 
-G_DEFINE_TYPE (IdeSnippet, ide_snippet, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeSnippet, ide_snippet, G_TYPE_OBJECT)
 
 DZL_DEFINE_COUNTER (instances, "Snippets", "N Snippets", "Number of IdeSnippet instances.");
 
diff --git a/src/libide/sourceview/ide-source-view-capture.c b/src/libide/sourceview/ide-source-view-capture.c
index 83ad8f69a..0d24e49f4 100644
--- a/src/libide/sourceview/ide-source-view-capture.c
+++ b/src/libide/sourceview/ide-source-view-capture.c
@@ -53,7 +53,7 @@ struct _IdeSourceViewCapture
   GArray        *frames;
 };
 
-G_DEFINE_TYPE (IdeSourceViewCapture, ide_source_view_capture, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeSourceViewCapture, ide_source_view_capture, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/sourceview/ide-source-view-mode.c b/src/libide/sourceview/ide-source-view-mode.c
index 724a328a4..a83d7dbb2 100644
--- a/src/libide/sourceview/ide-source-view-mode.c
+++ b/src/libide/sourceview/ide-source-view-mode.c
@@ -42,7 +42,7 @@ struct _IdeSourceViewMode
   guint                  has_selection : 1;
 };
 
-G_DEFINE_TYPE (IdeSourceViewMode, ide_source_view_mode, GTK_TYPE_WIDGET)
+G_DEFINE_FINAL_TYPE (IdeSourceViewMode, ide_source_view_mode, GTK_TYPE_WIDGET)
 
 enum {
   PROP_0,
diff --git a/src/libide/terminal/ide-terminal-launcher.c b/src/libide/terminal/ide-terminal-launcher.c
index b91c96bc7..b6f1c8189 100644
--- a/src/libide/terminal/ide-terminal-launcher.c
+++ b/src/libide/terminal/ide-terminal-launcher.c
@@ -54,7 +54,7 @@ struct _IdeTerminalLauncher
   LauncherKind           kind;
 };
 
-G_DEFINE_TYPE (IdeTerminalLauncher, ide_terminal_launcher, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeTerminalLauncher, ide_terminal_launcher, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/terminal/ide-terminal-page.c b/src/libide/terminal/ide-terminal-page.c
index e5410e18d..ad6ae6067 100644
--- a/src/libide/terminal/ide-terminal-page.c
+++ b/src/libide/terminal/ide-terminal-page.c
@@ -40,7 +40,7 @@
 
 #define FLAPPING_DURATION_USEC (G_USEC_PER_SEC / 20)
 
-G_DEFINE_TYPE (IdeTerminalPage, ide_terminal_page, IDE_TYPE_PAGE)
+G_DEFINE_FINAL_TYPE (IdeTerminalPage, ide_terminal_page, IDE_TYPE_PAGE)
 
 enum {
   PROP_0,
diff --git a/src/libide/terminal/ide-terminal-popover-row.c b/src/libide/terminal/ide-terminal-popover-row.c
index 5929d80e0..29458dbab 100644
--- a/src/libide/terminal/ide-terminal-popover-row.c
+++ b/src/libide/terminal/ide-terminal-popover-row.c
@@ -34,7 +34,7 @@ struct _IdeTerminalPopoverRow
   GtkImage      *check;
 };
 
-G_DEFINE_TYPE (IdeTerminalPopoverRow, ide_terminal_popover_row, GTK_TYPE_LIST_BOX_ROW)
+G_DEFINE_FINAL_TYPE (IdeTerminalPopoverRow, ide_terminal_popover_row, GTK_TYPE_LIST_BOX_ROW)
 
 static void
 ide_terminal_popover_row_finalize (GObject *object)
diff --git a/src/libide/terminal/ide-terminal-popover.c b/src/libide/terminal/ide-terminal-popover.c
index da7cb6666..efb81519f 100644
--- a/src/libide/terminal/ide-terminal-popover.c
+++ b/src/libide/terminal/ide-terminal-popover.c
@@ -41,7 +41,7 @@ struct _IdeTerminalPopover
   GtkListBox         *list_box;
 };
 
-G_DEFINE_TYPE (IdeTerminalPopover, ide_terminal_popover, GTK_TYPE_POPOVER)
+G_DEFINE_FINAL_TYPE (IdeTerminalPopover, ide_terminal_popover, GTK_TYPE_POPOVER)
 
 static void
 ide_terminal_popover_update_selected_cb (GtkWidget *widget,
diff --git a/src/libide/terminal/ide-terminal-search.c b/src/libide/terminal/ide-terminal-search.c
index 6eb2f4629..a7e1c5627 100644
--- a/src/libide/terminal/ide-terminal-search.c
+++ b/src/libide/terminal/ide-terminal-search.c
@@ -33,7 +33,7 @@
 #include "ide-terminal-search.h"
 #include "ide-terminal-search-private.h"
 
-G_DEFINE_TYPE (IdeTerminalSearch, ide_terminal_search, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeTerminalSearch, ide_terminal_search, GTK_TYPE_BIN)
 
 enum {
   PROP_0,
diff --git a/src/libide/terminal/ide-terminal-surface.c b/src/libide/terminal/ide-terminal-surface.c
index b402d2ea4..973fbc4a6 100644
--- a/src/libide/terminal/ide-terminal-surface.c
+++ b/src/libide/terminal/ide-terminal-surface.c
@@ -32,7 +32,7 @@ struct _IdeTerminalSurface
   IdeGrid    *grid;
 };
 
-G_DEFINE_TYPE (IdeTerminalSurface, ide_terminal_surface, IDE_TYPE_SURFACE)
+G_DEFINE_FINAL_TYPE (IdeTerminalSurface, ide_terminal_surface, IDE_TYPE_SURFACE)
 
 /**
  * ide_terminal_surface_new:
diff --git a/src/libide/terminal/ide-terminal-workspace.c b/src/libide/terminal/ide-terminal-workspace.c
index f1d3233aa..bdd0e33d0 100644
--- a/src/libide/terminal/ide-terminal-workspace.c
+++ b/src/libide/terminal/ide-terminal-workspace.c
@@ -32,7 +32,7 @@ struct _IdeTerminalWorkspace
   DzlShortcutTooltip *search_shortcut;
 };
 
-G_DEFINE_TYPE (IdeTerminalWorkspace, ide_terminal_workspace, IDE_TYPE_WORKSPACE)
+G_DEFINE_FINAL_TYPE (IdeTerminalWorkspace, ide_terminal_workspace, IDE_TYPE_WORKSPACE)
 
 static void
 ide_terminal_workspace_context_set_cb (GtkWidget  *widget,
diff --git a/src/libide/threading/ide-environment-variable.c b/src/libide/threading/ide-environment-variable.c
index 812a31449..10c2fb9cf 100644
--- a/src/libide/threading/ide-environment-variable.c
+++ b/src/libide/threading/ide-environment-variable.c
@@ -31,7 +31,7 @@ struct _IdeEnvironmentVariable
   gchar   *value;
 };
 
-G_DEFINE_TYPE (IdeEnvironmentVariable, ide_environment_variable, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeEnvironmentVariable, ide_environment_variable, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/threading/ide-environment.c b/src/libide/threading/ide-environment.c
index ab23df669..79cd2eeb7 100644
--- a/src/libide/threading/ide-environment.c
+++ b/src/libide/threading/ide-environment.c
@@ -35,7 +35,7 @@ struct _IdeEnvironment
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeEnvironment, ide_environment, G_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeEnvironment, ide_environment, G_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 enum {
diff --git a/src/libide/threading/ide-flatpak-subprocess.c b/src/libide/threading/ide-flatpak-subprocess.c
index 6882de049..065f597d4 100644
--- a/src/libide/threading/ide-flatpak-subprocess.c
+++ b/src/libide/threading/ide-flatpak-subprocess.c
@@ -1474,7 +1474,7 @@ initiable_iface_init (GInitableIface *iface)
   iface->init = ide_flatpak_subprocess_initable_init;
 }
 
-G_DEFINE_TYPE_EXTENDED (IdeFlatpakSubprocess, ide_flatpak_subprocess, G_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeFlatpakSubprocess, ide_flatpak_subprocess, G_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initiable_iface_init)
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_SUBPROCESS, subprocess_iface_init))
 
diff --git a/src/libide/threading/ide-simple-subprocess.c b/src/libide/threading/ide-simple-subprocess.c
index d6d7a8f92..842811dea 100644
--- a/src/libide/threading/ide-simple-subprocess.c
+++ b/src/libide/threading/ide-simple-subprocess.c
@@ -28,7 +28,7 @@
 
 static void subprocess_iface_init (IdeSubprocessInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeSimpleSubprocess, ide_simple_subprocess, G_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeSimpleSubprocess, ide_simple_subprocess, G_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_SUBPROCESS, subprocess_iface_init))
 
 static void
diff --git a/src/libide/tree/ide-cell-renderer-status.c b/src/libide/tree/ide-cell-renderer-status.c
index 8ef5c6413..29bc39e45 100644
--- a/src/libide/tree/ide-cell-renderer-status.c
+++ b/src/libide/tree/ide-cell-renderer-status.c
@@ -43,7 +43,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeCellRendererStatus, ide_cell_renderer_status, GTK_TYPE_CELL_RENDERER)
+G_DEFINE_FINAL_TYPE (IdeCellRendererStatus, ide_cell_renderer_status, GTK_TYPE_CELL_RENDERER)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/libide/tree/ide-tree-model.c b/src/libide/tree/ide-tree-model.c
index 9d78dde40..a9318e871 100644
--- a/src/libide/tree/ide-tree-model.c
+++ b/src/libide/tree/ide-tree-model.c
@@ -55,7 +55,7 @@ static void tree_model_iface_init       (GtkTreeModelIface      *iface);
 static void tree_drag_dest_iface_init   (GtkTreeDragDestIface   *iface);
 static void tree_drag_source_iface_init (GtkTreeDragSourceIface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeTreeModel, ide_tree_model, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeTreeModel, ide_tree_model, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL, tree_model_iface_init)
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_DRAG_DEST, tree_drag_dest_iface_init)
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_DRAG_SOURCE, tree_drag_source_iface_init))
diff --git a/src/libide/tree/ide-tree-node.c b/src/libide/tree/ide-tree-node.c
index 12499c6c4..200b9ff70 100644
--- a/src/libide/tree/ide-tree-node.c
+++ b/src/libide/tree/ide-tree-node.c
@@ -122,7 +122,7 @@ struct _IdeTreeNode
   guint foreground_set : 1;
 };
 
-G_DEFINE_TYPE (IdeTreeNode, ide_tree_node, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeTreeNode, ide_tree_node, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/libide/vcs/ide-directory-vcs.c b/src/libide/vcs/ide-directory-vcs.c
index 6311168d8..e26745cb6 100644
--- a/src/libide/vcs/ide-directory-vcs.c
+++ b/src/libide/vcs/ide-directory-vcs.c
@@ -39,7 +39,7 @@ struct _IdeDirectoryVcs
 
 static void vcs_iface_init (IdeVcsInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeDirectoryVcs, ide_directory_vcs, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeDirectoryVcs, ide_directory_vcs, IDE_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_VCS, vcs_iface_init))
 
 enum {
diff --git a/src/libide/vcs/ide-vcs-monitor.c b/src/libide/vcs/ide-vcs-monitor.c
index 2fdd7f6f0..10f974189 100644
--- a/src/libide/vcs/ide-vcs-monitor.c
+++ b/src/libide/vcs/ide-vcs-monitor.c
@@ -47,7 +47,7 @@ struct _IdeVcsMonitor
   guint                    busy : 1;
 };
 
-G_DEFINE_TYPE (IdeVcsMonitor, ide_vcs_monitor, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeVcsMonitor, ide_vcs_monitor, IDE_TYPE_OBJECT)
 
 enum {
   CHANGED,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]