mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
gtk: don't use arrow on context menu
This commit is contained in:
@ -380,7 +380,7 @@ im_len: u7 = 0,
|
|||||||
cgroup_path: ?[]const u8 = null,
|
cgroup_path: ?[]const u8 = null,
|
||||||
|
|
||||||
/// Our context menu.
|
/// 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
|
/// Configuration used for initializing the surface. We have to copy some
|
||||||
/// data since initialization is delayed with GTK (on realize).
|
/// data since initialization is delayed with GTK (on realize).
|
||||||
|
@ -12,12 +12,13 @@ const log = std.log.scoped(.gtk_menu);
|
|||||||
pub fn Menu(
|
pub fn Menu(
|
||||||
comptime T: type,
|
comptime T: type,
|
||||||
comptime variant: []const u8,
|
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 {
|
) type {
|
||||||
return struct {
|
return struct {
|
||||||
const Self = @This();
|
const Self = @This();
|
||||||
const MenuWidget = switch (style) {
|
const MenuWidget = switch (style) {
|
||||||
.popover_menu => c.GtkPopoverMenu,
|
.popover_menu => c.GtkPopoverMenu,
|
||||||
|
.popover_menu_no_arrow => c.GtkPopoverMenu,
|
||||||
.popover_menu_bar => c.GtkPopoverMenuBar,
|
.popover_menu_bar => c.GtkPopoverMenuBar,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -38,9 +39,12 @@ pub fn Menu(
|
|||||||
const menu_model = builder.getObject(c.GMenuModel, "menu");
|
const menu_model = builder.getObject(c.GMenuModel, "menu");
|
||||||
|
|
||||||
const menu_widget: *MenuWidget = switch (style) {
|
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)));
|
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);
|
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(
|
_ = c.g_signal_connect_data(
|
||||||
@ptrCast(@alignCast(menu_widget)),
|
@ptrCast(@alignCast(menu_widget)),
|
||||||
"closed",
|
"closed",
|
||||||
|
Reference in New Issue
Block a user