aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-theme-adium.c
diff options
context:
space:
mode:
authorDanielle Madeley <danielle.madeley@collabora.co.uk>2011-08-17 13:37:09 +0800
committerDanielle Madeley <danielle.madeley@collabora.co.uk>2011-08-17 13:37:09 +0800
commit1ba7c298c282b4775c29c80214009876e943648d (patch)
tree1c686f02b2c4850ad1214739fe76bf48e807f598 /libempathy-gtk/empathy-theme-adium.c
parentede83c3b09c25b9e08c0aa54d842d844b582e0d8 (diff)
downloadgsoc2013-empathy-1ba7c298c282b4775c29c80214009876e943648d.tar
gsoc2013-empathy-1ba7c298c282b4775c29c80214009876e943648d.tar.gz
gsoc2013-empathy-1ba7c298c282b4775c29c80214009876e943648d.tar.bz2
gsoc2013-empathy-1ba7c298c282b4775c29c80214009876e943648d.tar.lz
gsoc2013-empathy-1ba7c298c282b4775c29c80214009876e943648d.tar.xz
gsoc2013-empathy-1ba7c298c282b4775c29c80214009876e943648d.tar.zst
gsoc2013-empathy-1ba7c298c282b4775c29c80214009876e943648d.zip
Factor out WebKit context menu as a utility
Diffstat (limited to 'libempathy-gtk/empathy-theme-adium.c')
-rw-r--r--libempathy-gtk/empathy-theme-adium.c121
1 files changed, 3 insertions, 118 deletions
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c
index e5227f506..4e32630d5 100644
--- a/libempathy-gtk/empathy-theme-adium.c
+++ b/libempathy-gtk/empathy-theme-adium.c
@@ -212,39 +212,6 @@ theme_adium_navigation_policy_decision_requested_cb (WebKitWebView *
return TRUE;
}
-static void
-theme_adium_copy_address_cb (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- WebKitHitTestResult *hit_test_result = WEBKIT_HIT_TEST_RESULT (user_data);
- gchar *uri;
- GtkClipboard *clipboard;
-
- g_object_get (G_OBJECT (hit_test_result), "link-uri", &uri, NULL);
-
- clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
- gtk_clipboard_set_text (clipboard, uri, -1);
-
- clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY);
- gtk_clipboard_set_text (clipboard, uri, -1);
-
- g_free (uri);
-}
-
-static void
-theme_adium_open_address_cb (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- WebKitHitTestResult *hit_test_result = WEBKIT_HIT_TEST_RESULT (user_data);
- gchar *uri;
-
- g_object_get (G_OBJECT (hit_test_result), "link-uri", &uri, NULL);
-
- empathy_url_show (GTK_WIDGET (menuitem), uri);
-
- g_free (uri);
-}
-
/* Replace each %@ in format with string passed in args */
static gchar *
string_with_format (const gchar *format,
@@ -1296,90 +1263,6 @@ theme_adium_message_acknowledged (EmpathyChatView *view,
theme_adium_remove_mark_from_message (self, id);
}
-static void
-theme_adium_context_menu_selection_done_cb (GtkMenuShell *menu, gpointer user_data)
-{
- WebKitHitTestResult *hit_test_result = WEBKIT_HIT_TEST_RESULT (user_data);
-
- g_object_unref (hit_test_result);
-}
-
-static void
-theme_adium_context_menu_for_event (EmpathyThemeAdium *theme, GdkEventButton *event)
-{
- WebKitWebView *view = WEBKIT_WEB_VIEW (theme);
- WebKitHitTestResult *hit_test_result;
- WebKitHitTestResultContext context;
- GtkWidget *menu;
- GtkWidget *item;
-
- hit_test_result = webkit_web_view_get_hit_test_result (view, event);
- g_object_get (G_OBJECT (hit_test_result), "context", &context, NULL);
-
- /* The menu */
- menu = empathy_context_menu_new (GTK_WIDGET (view));
-
- /* Select all item */
- item = gtk_image_menu_item_new_from_stock (GTK_STOCK_SELECT_ALL, NULL);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
-
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (webkit_web_view_select_all),
- view);
-
- /* Copy menu item */
- if (webkit_web_view_can_copy_clipboard (view)) {
- item = gtk_image_menu_item_new_from_stock (GTK_STOCK_COPY, NULL);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
-
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (webkit_web_view_copy_clipboard),
- view);
- }
-
- /* Clear menu item */
- item = gtk_separator_menu_item_new ();
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
-
- item = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLEAR, NULL);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
-
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (empathy_chat_view_clear),
- view);
-
- /* We will only add the following menu items if we are
- * right-clicking a link */
- if (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK) {
- /* Separator */
- item = gtk_separator_menu_item_new ();
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
-
- /* Copy Link Address menu item */
- item = gtk_menu_item_new_with_mnemonic (_("_Copy Link Address"));
- g_signal_connect (item, "activate",
- G_CALLBACK (theme_adium_copy_address_cb),
- hit_test_result);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
-
- /* Open Link menu item */
- item = gtk_menu_item_new_with_mnemonic (_("_Open Link"));
- g_signal_connect (item, "activate",
- G_CALLBACK (theme_adium_open_address_cb),
- hit_test_result);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
- }
-
- g_signal_connect (GTK_MENU_SHELL (menu), "selection-done",
- G_CALLBACK (theme_adium_context_menu_selection_done_cb),
- hit_test_result);
-
- /* Display the menu */
- gtk_widget_show_all (menu);
- gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
- event->button, event->time);
-}
-
static gboolean
theme_adium_button_press_event (GtkWidget *widget, GdkEventButton *event)
{
@@ -1393,7 +1276,9 @@ theme_adium_button_press_event (GtkWidget *widget, GdkEventButton *event)
* item ourselves, so we disable our customized menu
* if the developer extras are enabled. */
if (!developer_tools_enabled) {
- theme_adium_context_menu_for_event (EMPATHY_THEME_ADIUM (widget), event);
+ empathy_webkit_context_menu_for_event (
+ WEBKIT_WEB_VIEW (widget), event,
+ EMPATHY_WEBKIT_MENU_CLEAR);
return TRUE;
}
}