From cb88a41981874dd2fe3e39e07586e34955d4a8e6 Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Mon, 20 Oct 2025 14:34:25 -0700 Subject: [PATCH] Add ability to copy text in the embedded browser --- src/io/flutter/jxbrowser/EmbeddedJxBrowser.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/io/flutter/jxbrowser/EmbeddedJxBrowser.java b/src/io/flutter/jxbrowser/EmbeddedJxBrowser.java index 45b2c3c12..d65e6f64e 100644 --- a/src/io/flutter/jxbrowser/EmbeddedJxBrowser.java +++ b/src/io/flutter/jxbrowser/EmbeddedJxBrowser.java @@ -17,6 +17,8 @@ import com.teamdev.jxbrowser.browser.event.ConsoleMessageReceived; import com.teamdev.jxbrowser.engine.Engine; import com.teamdev.jxbrowser.js.ConsoleMessage; +import com.teamdev.jxbrowser.permission.PermissionType; +import com.teamdev.jxbrowser.permission.callback.RequestPermissionCallback; import com.teamdev.jxbrowser.ui.KeyCode; import com.teamdev.jxbrowser.ui.event.KeyPressed; import com.teamdev.jxbrowser.view.swing.BrowserView; @@ -56,6 +58,18 @@ public EmbeddedJxBrowserTab(Engine engine) { this.engine = engine; try { + // Support copying text in the embedded browser to the clipboard. The following was copied from: + // https://teamdev.com/jxbrowser/docs/guides/clipboard/#necessary-permissions + this.engine.permissions().set(RequestPermissionCallback.class, (params, tell) -> { + var type = params.permissionType(); + if (type == PermissionType.CLIPBOARD_READ_WRITE + || type == PermissionType.CLIPBOARD_SANITIZED_WRITE) { + tell.grant(); + } else { + tell.deny(); + } + }); + this.browser = engine.newBrowser(); this.zoom = this.browser.zoom(); this.browser.settings().enableTransparentBackground();