gtk: pass surface to clipboard window by reference instead of by value

The surface might be mutated during the clipboard confirmation
(resized in my case), leading to the copied cursor page_pin being
invalidated.
This commit is contained in:
Khang Nguyen Duy
2024-12-12 00:13:25 +07:00
parent 3f21921568
commit cb67fbd08d
2 changed files with 6 additions and 6 deletions

View File

@ -17,13 +17,13 @@ window: *c.GtkWindow,
view: PrimaryView, view: PrimaryView,
data: [:0]u8, data: [:0]u8,
core_surface: CoreSurface, core_surface: *CoreSurface,
pending_req: apprt.ClipboardRequest, pending_req: apprt.ClipboardRequest,
pub fn create( pub fn create(
app: *App, app: *App,
data: []const u8, data: []const u8,
core_surface: CoreSurface, core_surface: *CoreSurface,
request: apprt.ClipboardRequest, request: apprt.ClipboardRequest,
) !void { ) !void {
if (app.clipboard_confirmation_window != null) return error.WindowAlreadyExists; if (app.clipboard_confirmation_window != null) return error.WindowAlreadyExists;
@ -54,7 +54,7 @@ fn init(
self: *ClipboardConfirmation, self: *ClipboardConfirmation,
app: *App, app: *App,
data: []const u8, data: []const u8,
core_surface: CoreSurface, core_surface: *CoreSurface,
request: apprt.ClipboardRequest, request: apprt.ClipboardRequest,
) !void { ) !void {
// Create the window // Create the window

View File

@ -1051,7 +1051,7 @@ pub fn clipboardRequest(
} }
pub fn setClipboardString( pub fn setClipboardString(
self: *const Surface, self: *Surface,
val: [:0]const u8, val: [:0]const u8,
clipboard_type: apprt.Clipboard, clipboard_type: apprt.Clipboard,
confirm: bool, confirm: bool,
@ -1065,7 +1065,7 @@ pub fn setClipboardString(
ClipboardConfirmationWindow.create( ClipboardConfirmationWindow.create(
self.app, self.app,
val, val,
self.core_surface, &self.core_surface,
.{ .osc_52_write = clipboard_type }, .{ .osc_52_write = clipboard_type },
) catch |window_err| { ) catch |window_err| {
log.err("failed to create clipboard confirmation window err={}", .{window_err}); log.err("failed to create clipboard confirmation window err={}", .{window_err});
@ -1113,7 +1113,7 @@ fn gtkClipboardRead(
ClipboardConfirmationWindow.create( ClipboardConfirmationWindow.create(
self.app, self.app,
str, str,
self.core_surface, &self.core_surface,
req.state, req.state,
) catch |window_err| { ) catch |window_err| {
log.err("failed to create clipboard confirmation window err={}", .{window_err}); log.err("failed to create clipboard confirmation window err={}", .{window_err});