From 488b7109bb4df41589846e1e872db114d3d6c9bb Mon Sep 17 00:00:00 2001 From: AJ Khullar Date: Sun, 28 Jun 2026 12:37:08 +0800 Subject: [PATCH] gtk: forward middle click to TUIs with mouse reporting --- src/Surface.zig | 6 ++++++ src/apprt/gtk/class/surface.zig | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Surface.zig b/src/Surface.zig index c56c9791c..58f3b196f 100644 --- a/src/Surface.zig +++ b/src/Surface.zig @@ -3642,6 +3642,12 @@ fn isMouseReporting(self: *const Surface) bool { self.io.terminal.flags.mouse_event != .none; } +pub fn mouseReportingActive(self: *Surface) bool { + self.renderer_state.mutex.lock(); + defer self.renderer_state.mutex.unlock(); + return self.isMouseReporting(); +} + fn mouseReport( self: *Surface, button: ?input.MouseButton, diff --git a/src/apprt/gtk/class/surface.zig b/src/apprt/gtk/class/surface.zig index 629866dc2..04e6cb3ec 100644 --- a/src/apprt/gtk/class/surface.zig +++ b/src/apprt/gtk/class/surface.zig @@ -2815,7 +2815,10 @@ pub const Surface = extern struct { return; } - if (button == .middle and !priv.gtk_enable_primary_paste) { + if (button == .middle and + !priv.gtk_enable_primary_paste and + !core_surface.mouseReportingActive()) + { return; } @@ -2875,7 +2878,10 @@ pub const Surface = extern struct { return; } - if (button == .middle and !priv.gtk_enable_primary_paste) { + if (button == .middle and + !priv.gtk_enable_primary_paste and + !surface.mouseReportingActive()) + { return; }