From 80eb406b8200b99c05e126e28015718ff2a35047 Mon Sep 17 00:00:00 2001 From: Adam Wolf Date: Wed, 15 Jan 2025 00:44:56 -0600 Subject: [PATCH 1/3] fix: gtk titlebar being restored if it shouldn't be --- src/apprt/gtk/Window.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apprt/gtk/Window.zig b/src/apprt/gtk/Window.zig index 59d6437d7..3512e211d 100644 --- a/src/apprt/gtk/Window.zig +++ b/src/apprt/gtk/Window.zig @@ -646,7 +646,7 @@ fn gtkWindowNotifyMaximized( if (!self.winproto.clientSideDecorationEnabled()) return; if (!maximized) { - self.headerbar.setVisible(true); + self.headerbar.setVisible(self.app.config.@"gtk-titlebar"); return; } if (self.app.config.@"gtk-titlebar-hide-when-maximized") { From 1be89cb1461654962c67f9eede10c7c29a8304d7 Mon Sep 17 00:00:00 2001 From: Adam Wolf Date: Wed, 15 Jan 2025 00:59:34 -0600 Subject: [PATCH 2/3] fix: also respect gtk-titlebar value in fullscreened callback --- src/apprt/gtk/Window.zig | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/apprt/gtk/Window.zig b/src/apprt/gtk/Window.zig index 3512e211d..b850ece81 100644 --- a/src/apprt/gtk/Window.zig +++ b/src/apprt/gtk/Window.zig @@ -675,7 +675,13 @@ fn gtkWindowNotifyFullscreened( ud: ?*anyopaque, ) callconv(.C) void { const self = userdataSelf(ud orelse return); - self.headerbar.setVisible(c.gtk_window_is_fullscreen(@ptrCast(object)) == 0); + const fullscreened = c.gtk_window_is_fullscreen(@ptrCast(object)) != 0; + if (!fullscreened) { + self.headerbar.setVisible(self.app.config.@"gtk-titlebar"); + return; + } + + self.headerbar.setVisible(false); } // Note: we MUST NOT use the GtkButton parameter because gtkActionNewTab From 078ee42be32c3bde946d3ce18b05d79ae518649e Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 23 Jan 2025 15:04:39 -0800 Subject: [PATCH 3/3] apprt/gtk: we should only show the headerbar again if csd --- src/apprt/gtk/Window.zig | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/apprt/gtk/Window.zig b/src/apprt/gtk/Window.zig index b850ece81..58f5659f0 100644 --- a/src/apprt/gtk/Window.zig +++ b/src/apprt/gtk/Window.zig @@ -639,16 +639,20 @@ fn gtkWindowNotifyMaximized( ud: ?*anyopaque, ) callconv(.C) void { const self = userdataSelf(ud orelse return); - const maximized = c.gtk_window_is_maximized(self.window) != 0; // Only toggle visibility of the header bar when we're using CSDs, // and actually intend on displaying the header bar if (!self.winproto.clientSideDecorationEnabled()) return; + // If we aren't maximized, we should show the headerbar again + // if it was originally visible. + const maximized = c.gtk_window_is_maximized(self.window) != 0; if (!maximized) { self.headerbar.setVisible(self.app.config.@"gtk-titlebar"); return; } + + // If we are maximized, we should hide the headerbar if requested. if (self.app.config.@"gtk-titlebar-hide-when-maximized") { self.headerbar.setVisible(false); } @@ -677,7 +681,8 @@ fn gtkWindowNotifyFullscreened( const self = userdataSelf(ud orelse return); const fullscreened = c.gtk_window_is_fullscreen(@ptrCast(object)) != 0; if (!fullscreened) { - self.headerbar.setVisible(self.app.config.@"gtk-titlebar"); + const csd_enabled = self.winproto.clientSideDecorationEnabled(); + self.headerbar.setVisible(self.app.config.@"gtk-titlebar" and csd_enabled); return; }