From 59e3c0c73b11d16316987dd9c2e6deefc0e98652 Mon Sep 17 00:00:00 2001 From: "Jeffrey C. Ollie" Date: Wed, 29 Jan 2025 21:21:01 -0600 Subject: [PATCH] gtk: don't use arrow on context menu --- src/apprt/gtk/Surface.zig | 2 +- src/apprt/gtk/menu.zig | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/apprt/gtk/Surface.zig b/src/apprt/gtk/Surface.zig index 348cf33d4..7437e62b6 100644 --- a/src/apprt/gtk/Surface.zig +++ b/src/apprt/gtk/Surface.zig @@ -380,7 +380,7 @@ im_len: u7 = 0, cgroup_path: ?[]const u8 = null, /// Our context menu. -context_menu: Menu(Surface, "context_menu", .popover_menu), +context_menu: Menu(Surface, "context_menu", .popover_menu_no_arrow), /// Configuration used for initializing the surface. We have to copy some /// data since initialization is delayed with GTK (on realize). diff --git a/src/apprt/gtk/menu.zig b/src/apprt/gtk/menu.zig index fe4fb6764..d7a528059 100644 --- a/src/apprt/gtk/menu.zig +++ b/src/apprt/gtk/menu.zig @@ -12,12 +12,13 @@ const log = std.log.scoped(.gtk_menu); pub fn Menu( comptime T: type, comptime variant: []const u8, - comptime style: enum { popover_menu, popover_menu_bar }, + comptime style: enum { popover_menu, popover_menu_no_arrow, popover_menu_bar }, ) type { return struct { const Self = @This(); const MenuWidget = switch (style) { .popover_menu => c.GtkPopoverMenu, + .popover_menu_no_arrow => c.GtkPopoverMenu, .popover_menu_bar => c.GtkPopoverMenuBar, }; @@ -38,9 +39,12 @@ pub fn Menu( const menu_model = builder.getObject(c.GMenuModel, "menu"); const menu_widget: *MenuWidget = switch (style) { - .popover_menu => brk: { + .popover_menu, .popover_menu_no_arrow => brk: { const menu_widget: *MenuWidget = @ptrCast(@alignCast(c.gtk_popover_menu_new_from_model(menu_model))); c.gtk_popover_menu_set_flags(menu_widget, c.GTK_POPOVER_MENU_NESTED); + if (style == .popover_menu_no_arrow) { + c.gtk_popover_set_has_arrow(@ptrCast(@alignCast(menu_widget)), 0); + } _ = c.g_signal_connect_data( @ptrCast(@alignCast(menu_widget)), "closed",