aboutsummaryrefslogtreecommitdiffstats
path: root/embed
diff options
context:
space:
mode:
authorXan Lopez <xan@src.gnome.org>2007-12-22 10:14:19 +0800
committerXan Lopez <xan@src.gnome.org>2007-12-22 10:14:19 +0800
commit9bcf221c42b75b4fcedbbbbc5b7e9ec040d70efd (patch)
tree55d36728c85a5ffad9bb0539d7e368e21df7cee0 /embed
parent6adb4570e797dcafcd865fd67e489766294a2f8b (diff)
downloadgsoc2013-epiphany-9bcf221c42b75b4fcedbbbbc5b7e9ec040d70efd.tar.gz
gsoc2013-epiphany-9bcf221c42b75b4fcedbbbbc5b7e9ec040d70efd.tar.zst
gsoc2013-epiphany-9bcf221c42b75b4fcedbbbbc5b7e9ec040d70efd.zip
Implement clipboard operations for WebKit.
svn path=/trunk/; revision=7795
Diffstat (limited to 'embed')
-rw-r--r--embed/ephy-command-manager.c87
-rw-r--r--embed/webkit/webkit-embed.c17
2 files changed, 65 insertions, 39 deletions
diff --git a/embed/ephy-command-manager.c b/embed/ephy-command-manager.c
index df72eca4c..4100a4ec9 100644
--- a/embed/ephy-command-manager.c
+++ b/embed/ephy-command-manager.c
@@ -28,33 +28,33 @@ ephy_command_manager_base_init (gpointer g_class);
GType
ephy_command_manager_get_type (void)
{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0))
- {
- const GTypeInfo our_info =
- {
- sizeof (EphyCommandManagerIface),
- ephy_command_manager_base_init,
- NULL,
- };
-
- type = g_type_register_static (G_TYPE_INTERFACE,
- "EphyCommandManager",
- &our_info,
- (GTypeFlags)0);
- }
-
- return type;
+ static GType type = 0;
+
+ if (G_UNLIKELY (type == 0))
+ {
+ const GTypeInfo our_info =
+ {
+ sizeof (EphyCommandManagerIface),
+ ephy_command_manager_base_init,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE,
+ "EphyCommandManager",
+ &our_info,
+ (GTypeFlags)0);
+ }
+
+ return type;
}
static void
ephy_command_manager_base_init (gpointer g_class)
{
- static gboolean initialized = FALSE;
+ static gboolean initialized = FALSE;
- if (!initialized)
- {
+ if (!initialized)
+ {
/**
* EphyCommandManager::command-changed:
* @manager:
@@ -64,18 +64,18 @@ ephy_command_manager_base_init (gpointer g_class)
* available to unavailable, or vice-versa. The new availability can be tested
* with ephy_command_manager_can_do_command().
**/
- g_signal_new ("command_changed",
- EPHY_TYPE_COMMAND_MANAGER,
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (EphyCommandManagerIface, command_changed),
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE,
- 1,
- G_TYPE_STRING);
-
- initialized = TRUE;
- }
+ g_signal_new ("command_changed",
+ EPHY_TYPE_COMMAND_MANAGER,
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (EphyCommandManagerIface, command_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRING);
+
+ initialized = TRUE;
+ }
}
/**
@@ -87,10 +87,14 @@ ephy_command_manager_base_init (gpointer g_class)
**/
void
ephy_command_manager_do_command (EphyCommandManager *manager,
- const char *command)
+ const char *command)
{
- EphyCommandManagerIface *iface = EPHY_COMMAND_MANAGER_GET_IFACE (manager);
- iface->do_command (manager, command);
+ EphyCommandManagerIface *iface;
+
+ g_return_if_fail (command != NULL);
+
+ iface = EPHY_COMMAND_MANAGER_GET_IFACE (manager);
+ iface->do_command (manager, command);
}
/**
@@ -104,8 +108,13 @@ ephy_command_manager_do_command (EphyCommandManager *manager,
**/
gboolean
ephy_command_manager_can_do_command (EphyCommandManager *manager,
- const char *command)
+ const char *command)
{
- EphyCommandManagerIface *iface = EPHY_COMMAND_MANAGER_GET_IFACE (manager);
- return iface->can_do_command (manager, command);
+ EphyCommandManagerIface *iface;
+
+ g_return_val_if_fail (command != NULL, FALSE);
+
+ iface = EPHY_COMMAND_MANAGER_GET_IFACE (manager);
+
+ return iface->can_do_command (manager, command);
}
diff --git a/embed/webkit/webkit-embed.c b/embed/webkit/webkit-embed.c
index 25c985abd..bf09d7150 100644
--- a/embed/webkit/webkit-embed.c
+++ b/embed/webkit/webkit-embed.c
@@ -63,12 +63,29 @@ static void
impl_manager_do_command (EphyCommandManager *manager,
const char *command)
{
+ WebKitWebView *web_view = WEBKIT_EMBED (manager)->priv->web_view;
+
+ if (! strcmp (command, "cmd_copy"))
+ return webkit_web_view_copy_clipboard (web_view);
+ else if (! strcmp (command, "cmd_cut"))
+ return webkit_web_view_cut_clipboard (web_view);
+ else if (! strcmp (command, "cmd_paste"))
+ return webkit_web_view_paste_clipboard (web_view);
}
static gboolean
impl_manager_can_do_command (EphyCommandManager *manager,
const char *command)
{
+ WebKitWebView *web_view = WEBKIT_EMBED (manager)->priv->web_view;
+
+ if (! strcmp (command, "cmd_copy"))
+ return webkit_web_view_can_copy_clipboard (web_view);
+ else if (! strcmp (command, "cmd_cut"))
+ return webkit_web_view_can_cut_clipboard (web_view);
+ else if (! strcmp (command, "cmd_paste"))
+ return webkit_web_view_can_paste_clipboard (web_view);
+
return FALSE;
}