Merge pull request #1292 from mitchellh/mrn/gtk-append-new-tabs

gtk: append new tabs at the end if config is set
This commit is contained in:
Mitchell Hashimoto
2024-01-12 09:51:40 -08:00
committed by GitHub
2 changed files with 22 additions and 3 deletions

View File

@ -107,13 +107,17 @@ pub fn init(self: *Tab, window: *Window, parent_: ?*CoreSurface) !void {
const gl_area_widget = @as(*c.GtkWidget, @ptrCast(surface.gl_area)); const gl_area_widget = @as(*c.GtkWidget, @ptrCast(surface.gl_area));
c.gtk_box_append(self.box, gl_area_widget); c.gtk_box_append(self.box, gl_area_widget);
// Add the notebook page (create tab). We create the tab after our // Add the notebook page (create tab).
// current selected tab if we have one. const parent_page_idx = switch (window.app.config.@"window-new-tab-position") {
.current => c.gtk_notebook_get_current_page(window.notebook) + 1,
.end => c.gtk_notebook_get_n_pages(window.notebook),
};
const page_idx = c.gtk_notebook_insert_page( const page_idx = c.gtk_notebook_insert_page(
window.notebook, window.notebook,
box_widget, box_widget,
label_box_widget, label_box_widget,
c.gtk_notebook_get_current_page(window.notebook) + 1, parent_page_idx,
); );
if (page_idx < 0) { if (page_idx < 0) {
log.warn("failed to add page to notebook", .{}); log.warn("failed to add page to notebook", .{});

View File

@ -656,6 +656,15 @@ keybind: Keybinds = .{},
/// Currently only supported on macOS. /// Currently only supported on macOS.
@"window-step-resize": bool = false, @"window-step-resize": bool = false,
/// The position where new tabs are created. Valid values:
///
/// - "current" - Insert the new tab after the currently focused tab,
/// or at the end if there are no focused tabs.
/// - "end" - Insert the new tab at the end of the tab list.
///
/// This configuration currently only works with GTK.
@"window-new-tab-position": WindowNewTabPosition = .current,
/// When enabled, the full GTK titlebar is displayed instead of your window /// When enabled, the full GTK titlebar is displayed instead of your window
/// manager's simple titlebar. The behavior of this option will vary with your /// manager's simple titlebar. The behavior of this option will vary with your
/// window manager. /// window manager.
@ -2895,6 +2904,12 @@ pub const WindowSaveState = enum {
always, always,
}; };
/// See window-new-tab-position
pub const WindowNewTabPosition = enum {
current,
end,
};
/// See grapheme-width-method /// See grapheme-width-method
pub const GraphemeWidthMethod = enum { pub const GraphemeWidthMethod = enum {
wcswidth, wcswidth,