Enable distinguishing between a new tab in a new window

(which should inherit based on the window setting),
and a new tab in an existing window
(which should inherit base on tab setting)
This commit is contained in:
Peter Guy
2025-10-11 22:23:08 -07:00
parent 82614511ab
commit 0af2a3f693
2 changed files with 12 additions and 6 deletions

View File

@@ -2238,8 +2238,8 @@ const Action = struct {
.{},
);
// Create a new tab
win.newTab(parent);
// Create a new tab with window context (first tab in new window)
win.newTabForWindow(parent);
// Show the window
gtk.Window.present(win.as(gtk.Window));

View File

@@ -361,10 +361,14 @@ pub const Window = extern struct {
/// at the position dictated by the `window-new-tab-position` config.
/// The new tab will be selected.
pub fn newTab(self: *Self, parent_: ?*CoreSurface) void {
_ = self.newTabPage(parent_);
_ = self.newTabPage(parent_, .tab);
}
fn newTabPage(self: *Self, parent_: ?*CoreSurface) *adw.TabPage {
pub fn newTabForWindow(self: *Self, parent_: ?*CoreSurface) void {
_ = self.newTabPage(parent_, .window);
}
fn newTabPage(self: *Self, parent_: ?*CoreSurface, context: apprt.surface.NewSurfaceContext) *adw.TabPage {
const priv = self.private();
const tab_view = priv.tab_view;
@@ -372,7 +376,9 @@ pub const Window = extern struct {
const tab = gobject.ext.newInstance(Tab, .{
.config = priv.config,
});
if (parent_) |p| tab.setParent(p);
if (parent_) |p| {
tab.setParentWithContext(p, context);
}
// Get the position that we should insert the new tab at.
const config = if (priv.config) |v| v.get() else {
@@ -1231,7 +1237,7 @@ pub const Window = extern struct {
_: *adw.TabOverview,
self: *Self,
) callconv(.c) *adw.TabPage {
return self.newTabPage(if (self.getActiveSurface()) |v| v.core() else null);
return self.newTabPage(if (self.getActiveSurface()) |v| v.core() else null, .tab);
}
fn tabOverviewOpen(