diff --git a/src/apprt/gtk/App.zig b/src/apprt/gtk/App.zig index 7e7c50900..35201ea8a 100644 --- a/src/apprt/gtk/App.zig +++ b/src/apprt/gtk/App.zig @@ -340,6 +340,8 @@ fn syncActionAccelerators(self: *App) !void { try self.syncActionAccelerator("win.close", .{ .close_surface = {} }); try self.syncActionAccelerator("win.new_window", .{ .new_window = {} }); try self.syncActionAccelerator("win.new_tab", .{ .new_tab = {} }); + try self.syncActionAccelerator("win.split_right", .{ .new_split = .right }); + try self.syncActionAccelerator("win.split_down", .{ .new_split = .down }); } fn syncActionAccelerator( @@ -678,6 +680,8 @@ fn initMenu(self: *App) void { c.g_menu_append_section(menu, null, @ptrCast(@alignCast(section))); c.g_menu_append(section, "New Window", "win.new_window"); c.g_menu_append(section, "New Tab", "win.new_tab"); + c.g_menu_append(section, "Split Right", "win.split_right"); + c.g_menu_append(section, "Split Down", "win.split_down"); c.g_menu_append(section, "Close Window", "win.close"); } diff --git a/src/apprt/gtk/Window.zig b/src/apprt/gtk/Window.zig index 4adccac4b..91f7f95bb 100644 --- a/src/apprt/gtk/Window.zig +++ b/src/apprt/gtk/Window.zig @@ -162,6 +162,8 @@ fn initActions(self: *Window) void { .{ "close", >kActionClose }, .{ "new_window", >kActionNewWindow }, .{ "new_tab", >kActionNewTab }, + .{ "split_right", >kActionSplitRight }, + .{ "split_down", >kActionSplitDown }, .{ "toggle_inspector", >kActionToggleInspector }, }; @@ -509,6 +511,32 @@ fn gtkActionNewTab( gtkTabNewClick(undefined, ud); } +fn gtkActionSplitRight( + _: *c.GSimpleAction, + _: *c.GVariant, + ud: ?*anyopaque, +) callconv(.C) void { + const self: *Window = @ptrCast(@alignCast(ud orelse return)); + const surface = self.actionSurface() orelse return; + _ = surface.performBindingAction(.{ .new_split = .right }) catch |err| { + log.warn("error performing binding action error={}", .{err}); + return; + }; +} + +fn gtkActionSplitDown( + _: *c.GSimpleAction, + _: *c.GVariant, + ud: ?*anyopaque, +) callconv(.C) void { + const self: *Window = @ptrCast(@alignCast(ud orelse return)); + const surface = self.actionSurface() orelse return; + _ = surface.performBindingAction(.{ .new_split = .down }) catch |err| { + log.warn("error performing binding action error={}", .{err}); + return; + }; +} + fn gtkActionToggleInspector( _: *c.GSimpleAction, _: *c.GVariant,