From 9a198b47a0be72ae4183055b6f3855e054721c50 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 30 Oct 2025 14:09:39 -0700 Subject: [PATCH] apprt/gtk: support new set clipboard API --- src/apprt/gtk/Surface.zig | 8 ++++---- src/apprt/gtk/class/surface.zig | 15 +++++++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/apprt/gtk/Surface.zig b/src/apprt/gtk/Surface.zig index ac82f941b..009ce018d 100644 --- a/src/apprt/gtk/Surface.zig +++ b/src/apprt/gtk/Surface.zig @@ -80,15 +80,15 @@ pub fn clipboardRequest( ); } -pub fn setClipboardString( +pub fn setClipboard( self: *Self, - val: [:0]const u8, clipboard_type: apprt.Clipboard, + contents: []const apprt.ClipboardContent, confirm: bool, ) !void { - self.surface.setClipboardString( - val, + self.surface.setClipboard( clipboard_type, + contents, confirm, ); } diff --git a/src/apprt/gtk/class/surface.zig b/src/apprt/gtk/class/surface.zig index 646ad5dbd..3f6d64652 100644 --- a/src/apprt/gtk/class/surface.zig +++ b/src/apprt/gtk/class/surface.zig @@ -1553,16 +1553,16 @@ pub const Surface = extern struct { ); } - pub fn setClipboardString( + pub fn setClipboard( self: *Self, - val: [:0]const u8, clipboard_type: apprt.Clipboard, + contents: []const apprt.ClipboardContent, confirm: bool, ) void { Clipboard.set( self, - val, clipboard_type, + contents, confirm, ); } @@ -3334,12 +3334,19 @@ const Clipboard = struct { /// Set the clipboard contents. pub fn set( self: *Surface, - val: [:0]const u8, clipboard_type: apprt.Clipboard, + contents: []const apprt.ClipboardContent, confirm: bool, ) void { const priv = self.private(); + // For GTK, we only support text/plain type to set strings currently. + const val: [:0]const u8 = for (contents) |content| { + if (std.mem.eql(u8, content.mime, "text/plain")) { + break content.data; + } + } else return; + // If no confirmation is necessary, set the clipboard. if (!confirm) { const clipboard = get(