diff options
author | Tommi Komulainen <tko@litl.com> | 2009-08-25 16:04:59 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marcopg@litl.com> | 2010-07-27 22:04:22 (GMT) |
commit | 84cc52bd4fd197ec4aad845d9b09bcd5b74453d5 (patch) | |
tree | 5ac772b302a3c5bcf38e4212d43e8bb7ee39f71e /browser-plugin/scriptable.cpp | |
parent | aded6eb5272ccb4f9b90ee529bdb014ffaa59031 (diff) |
browser-plugin: add clipboard copy support
Only supporting copy, evince doesn't support editing (at least the API
is lacking cut and paste)
Using property access workaround.
Example:
if (plugin.canCopy) {
plugin.canCopy = 42; (workaround) copy selection to clipboard
}
Diffstat (limited to 'browser-plugin/scriptable.cpp')
-rw-r--r-- | browser-plugin/scriptable.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/browser-plugin/scriptable.cpp b/browser-plugin/scriptable.cpp index e8fbcb2..81caeb0 100644 --- a/browser-plugin/scriptable.cpp +++ b/browser-plugin/scriptable.cpp @@ -198,6 +198,7 @@ ScriptablePluginObject::ScriptablePluginObject (NPP npp) : { mTitleID = NPN_GetStringIdentifier ("title"); mZoomID = NPN_GetStringIdentifier ("zoom"); + mCanCopyID = NPN_GetStringIdentifier ("canCopy"); mMagicWrapperID = NPN_GetStringIdentifier ("magicWrapper"); mZoomInID = NPN_GetStringIdentifier ("zoomIn"); @@ -231,6 +232,7 @@ ScriptablePluginObject::HasProperty (NPIdentifier name) NPIdentifier properties[] = { mTitleID, mZoomID, + mCanCopyID, mMagicWrapperID }; @@ -261,6 +263,9 @@ ScriptablePluginObject::GetProperty (NPIdentifier name, NPVariant *result) } else if (name == mZoomID) { DOUBLE_TO_NPVARIANT (plugin->GetZoom(), *result); return true; + } else if (name == mCanCopyID) { + BOOLEAN_TO_NPVARIANT (plugin->mHasSelection, *result); + return true; } return false; @@ -310,6 +315,16 @@ ScriptablePluginObject::SetProperty (NPIdentifier name, const NPVariant *value) plugin->SetZoom (zoom); return true; + } else if (name == mCanCopyID) { + // FIXME fix method calls (using write access to a property as + // an awful workaround) + if (!plugin->mHasSelection) { + NPN_SetException (this, "Nothing to copy"); + return false; + } + + plugin->CopyClipboard (); + return true; } return false; |