From bf5351ed416b12575d377fe0bd5628df515cb71e Mon Sep 17 00:00:00 2001 From: azhn Date: Wed, 12 Feb 2025 19:01:04 +1100 Subject: [PATCH 1/3] gtk: Point right-click context menu exactly at cursor to improve behaviour at edges and closeness to cursor --- src/apprt/gtk/Surface.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apprt/gtk/Surface.zig b/src/apprt/gtk/Surface.zig index 37ffb26cb3..99f0bfceb5 100644 --- a/src/apprt/gtk/Surface.zig +++ b/src/apprt/gtk/Surface.zig @@ -1284,8 +1284,8 @@ fn showContextMenu(self: *Surface, x: f32, y: f32) void { const rect: c.GdkRectangle = .{ .x = @intFromFloat(point.x), .y = @intFromFloat(point.y), - .width = 1, - .height = 1, + .width = 0, + .height = 0, }; c.gtk_popover_set_pointing_to(@ptrCast(@alignCast(window.context_menu)), &rect); From c061d06aa1f5afca593223ed30ed2a62c5fba6f0 Mon Sep 17 00:00:00 2001 From: azhn Date: Wed, 12 Feb 2025 19:50:32 +1100 Subject: [PATCH 2/3] Revert "gtk: Point right-click context menu exactly at cursor to improve behaviour at edges and closeness to cursor" This reverts commit bf5351ed416b12575d377fe0bd5628df515cb71e. --- src/apprt/gtk/Surface.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apprt/gtk/Surface.zig b/src/apprt/gtk/Surface.zig index 99f0bfceb5..37ffb26cb3 100644 --- a/src/apprt/gtk/Surface.zig +++ b/src/apprt/gtk/Surface.zig @@ -1284,8 +1284,8 @@ fn showContextMenu(self: *Surface, x: f32, y: f32) void { const rect: c.GdkRectangle = .{ .x = @intFromFloat(point.x), .y = @intFromFloat(point.y), - .width = 0, - .height = 0, + .width = 1, + .height = 1, }; c.gtk_popover_set_pointing_to(@ptrCast(@alignCast(window.context_menu)), &rect); From b1ae7eea2fdfad7282b1040ea729decc991bc09d Mon Sep 17 00:00:00 2001 From: azhn Date: Wed, 12 Feb 2025 22:46:00 +1100 Subject: [PATCH 3/3] gtk: fix context menu computed location --- src/apprt/gtk/Surface.zig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/apprt/gtk/Surface.zig b/src/apprt/gtk/Surface.zig index 37ffb26cb3..c4b7717ccd 100644 --- a/src/apprt/gtk/Surface.zig +++ b/src/apprt/gtk/Surface.zig @@ -1270,10 +1270,12 @@ fn showContextMenu(self: *Surface, x: f32, y: f32) void { return; }; + // Convert surface coordinate into coordinate space of the + // context menu's parent var point: c.graphene_point_t = .{ .x = x, .y = y }; if (c.gtk_widget_compute_point( self.primaryWidget(), - @ptrCast(window.window), + c.gtk_widget_get_parent(@ptrCast(window.context_menu)), &c.GRAPHENE_POINT_INIT(point.x, point.y), @ptrCast(&point), ) == 0) {