From d7e42e6614a885101a605c4f7f4b55152dc03bf7 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 28 Jul 2025 07:32:19 -0700 Subject: [PATCH] apprt/gtk-ng: tab bar top/bottom --- src/apprt/gtk-ng/class/window.zig | 15 +++++++++++++++ src/apprt/gtk-ng/ui/1.5/window.blp | 2 +- valgrind.supp | 25 +++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/apprt/gtk-ng/class/window.zig b/src/apprt/gtk-ng/class/window.zig index 1a8902bb9..ae624afb4 100644 --- a/src/apprt/gtk-ng/class/window.zig +++ b/src/apprt/gtk-ng/class/window.zig @@ -187,6 +187,8 @@ pub const Window = extern struct { // Template bindings surface: *Surface, + tab_bar: *adw.TabBar, + toolbar: *adw.ToolbarView, toast_overlay: *adw.ToastOverlay, pub var offset: c_int = 0; @@ -287,6 +289,17 @@ pub const Window = extern struct { @field(properties, key).impl.param_spec, ); } + + // Remainder uses the config + const priv = self.private(); + const config = if (priv.config) |v| v.get() else return; + + // Move the tab bar to the proper location. + priv.toolbar.remove(priv.tab_bar.as(gtk.Widget)); + switch (config.@"gtk-tabs-location") { + .top => priv.toolbar.addTopBar(priv.tab_bar.as(gtk.Widget)), + .bottom => priv.toolbar.addBottomBar(priv.tab_bar.as(gtk.Widget)), + } } fn toggleCssClass(self: *Window, class: [:0]const u8, value: bool) void { @@ -712,6 +725,8 @@ pub const Window = extern struct { // Bindings class.bindTemplateChildPrivate("surface", .{}); + class.bindTemplateChildPrivate("tab_bar", .{}); + class.bindTemplateChildPrivate("toolbar", .{}); class.bindTemplateChildPrivate("toast_overlay", .{}); // Template Callbacks diff --git a/src/apprt/gtk-ng/ui/1.5/window.blp b/src/apprt/gtk-ng/ui/1.5/window.blp index 0b3ed8887..b46fd6415 100644 --- a/src/apprt/gtk-ng/ui/1.5/window.blp +++ b/src/apprt/gtk-ng/ui/1.5/window.blp @@ -23,7 +23,7 @@ template $GhosttyWindow: Adw.ApplicationWindow { enable-new-tab: true; view: tab_view; - Adw.ToolbarView { + Adw.ToolbarView toolbar { top-bar-style: raised; bottom-bar-style: raised; diff --git a/valgrind.supp b/valgrind.supp index 3b074607d..966347ad4 100644 --- a/valgrind.supp +++ b/valgrind.supp @@ -142,6 +142,31 @@ ... } +{ + GDK GLArea + Memcheck:Leak + match-leak-kinds: possible + fun:malloc + fun:g_malloc + fun:gdk_memory_texture_from_texture + fun:gdk_gl_texture_release + fun:delete_one_texture + fun:g_list_foreach + fun:g_list_free_full + fun:gtk_gl_area_unrealize + ... +} + +{ + GDK GLArea Snapshot + Memcheck:Leak + match-leak-kinds: definite + fun:*alloc + ... + fun:gtk_gl_area_snapshot + ... +} + { GSK GPU Rendering Memcheck:Leak