@@ -31,7 +31,6 @@ pub const NotebookGtk = struct {
31
31
};
32
32
c .gtk_notebook_set_tab_pos (gtk_notebook , notebook_tab_pos );
33
33
c .gtk_notebook_set_scrollable (gtk_notebook , 1 );
34
- c .gtk_notebook_set_show_tabs (gtk_notebook , 0 );
35
34
c .gtk_notebook_set_show_border (gtk_notebook , 0 );
36
35
37
36
// This enables all Ghostty terminal tabs to be exchanged across windows.
@@ -81,6 +80,7 @@ pub const NotebookGtk = struct {
81
80
log .warn ("currentTab" , .{});
82
81
const page = self .currentPage () orelse return null ;
83
82
const child = c .gtk_notebook_get_nth_page (self .notebook , page );
83
+
84
84
return @ptrCast (@alignCast (
85
85
c .g_object_get_data (@ptrCast (child ), Tab .GHOSTTY_TAB ) orelse return null ,
86
86
));
@@ -164,9 +164,7 @@ pub const NotebookGtk = struct {
164
164
c .gtk_notebook_set_tab_reorderable (self .notebook , box_widget , 1 );
165
165
c .gtk_notebook_set_tab_detachable (self .notebook , box_widget , 1 );
166
166
167
- if (self .nPages () > 1 ) {
168
- c .gtk_notebook_set_show_tabs (self .notebook , 1 );
169
- }
167
+ self .updateShowTabs (window );
170
168
171
169
// Switch to the new tab
172
170
c .gtk_notebook_set_current_page (self .notebook , page_idx );
@@ -183,20 +181,21 @@ pub const NotebookGtk = struct {
183
181
c .gtk_notebook_remove_page (self .notebook , page_idx );
184
182
185
183
const remaining = self .nPages ();
186
- switch (remaining ) {
187
- // If we have no more tabs we close the window
188
- 0 = > c .gtk_window_destroy (tab .window .window ),
189
-
190
- // If we have one more tab we hide the tab bar
191
- 1 = > c .gtk_notebook_set_show_tabs (self .notebook , 0 ),
192
-
193
- else = > {},
194
- }
195
184
196
185
// If we have remaining tabs, we need to make sure we grab focus.
197
186
if (remaining > 0 )
198
187
(self .currentTab () orelse return ).window .focusCurrentTab ();
199
188
}
189
+
190
+ fn updateShowTabs (self : * NotebookGtk , window : * Window ) void {
191
+ const show_tabs = switch (self .nPages ()) {
192
+ 0 = > false ,
193
+ 1 = > window .app .config .@"window-always-show-tabs" ,
194
+ else = > true ,
195
+ };
196
+
197
+ c .gtk_notebook_set_show_tabs (self .notebook , @intFromBool (show_tabs ));
198
+ }
200
199
};
201
200
202
201
fn getNotebookPageIndex (page : * c.GtkNotebookPage ) c_int {
@@ -245,12 +244,7 @@ fn gtkPageRemoved(
245
244
log .warn ("gtkPageRemoved" , .{});
246
245
const window : * Window = @ptrCast (@alignCast (ud .? ));
247
246
248
- // Hide the tab bar if we only have one tab after removal
249
- const remaining = c .gtk_notebook_get_n_pages (window .notebook .gtk .notebook );
250
-
251
- if (remaining == 1 ) {
252
- c .gtk_notebook_set_show_tabs (window .notebook .gtk .notebook , 0 );
253
- }
247
+ window .notebook .gtk .updateShowTabs (window );
254
248
}
255
249
256
250
fn gtkSwitchPage (_ : * c.GtkNotebook , page : * c.GtkWidget , _ : usize , ud : ? * anyopaque ) callconv (.C ) void {
0 commit comments