diff options
Diffstat (limited to 'browser-plugin/plugin.cpp')
-rw-r--r-- | browser-plugin/plugin.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/browser-plugin/plugin.cpp b/browser-plugin/plugin.cpp index 7d79100..88893c8 100644 --- a/browser-plugin/plugin.cpp +++ b/browser-plugin/plugin.cpp @@ -27,7 +27,8 @@ Plugin::Plugin (NPP instance) : mInstance (instance), mScriptableObject (0), mWindow (0), mLoadJob (0), - mTitle (0) + mTitle (0), + mHasSelection (false) { mScrolledWindow = gtk_scrolled_window_new (NULL, NULL); @@ -36,6 +37,10 @@ Plugin::Plugin (NPP instance) : mInstance (instance), "notify::sizing-mode", G_CALLBACK (Plugin::SizingModeCallback), reinterpret_cast<void*>(this)); + g_signal_connect (G_OBJECT (mView), + "notify::has-selection", + G_CALLBACK (Plugin::HasSelectionCallback), + reinterpret_cast<void*>(this)); g_signal_connect (G_OBJECT (mView), "external-link", @@ -103,6 +108,12 @@ Plugin::FindPrevious (const char *text) } void +Plugin::CopyClipboard () +{ + ev_view_copy (EV_VIEW (mView)); +} + +void Plugin::SetWindow (GdkNativeWindow window) { if (mWindow != 0) { @@ -226,6 +237,19 @@ Plugin::SizingModeCallback (EvView *view, GParamSpec *pspec, gpointer data) } void +Plugin::HasSelectionCallback (EvView *view, GParamSpec *pspec, gpointer data) +{ + Plugin *plugin = reinterpret_cast<Plugin*> (data); + + gboolean has_selection = ev_view_get_has_selection (view); + + if (has_selection != plugin->mHasSelection) { + plugin->mHasSelection = has_selection; + plugin->CallBrowser ("onClipboardChanged"); + } +} + +void Plugin::ExternalLinkCallback (EvView *view, EvLinkAction *action, gpointer data) { Plugin *plugin = reinterpret_cast<Plugin*> (data); |