MidoriLoadStatus load_status;
gboolean minimized;
gchar* statusbar_text;
+ #if WEBKIT_CHECK_VERSION (1, 1, 15)
+ WebKitHitTestResult* hit_test;
+ #endif
gchar* link_uri;
gboolean has_selection;
gchar* selected_text;
return FALSE;
}
+#if WEBKIT_CHECK_VERSION (1, 1, 15)
+static void
+midori_web_view_menu_open_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ midori_view_set_uri (view, view->link_uri);
+}
+
+static void
+midori_web_view_menu_new_window_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ g_signal_emit (view, signals[NEW_WINDOW], 0, view->link_uri);
+}
+
+static void
+midori_web_view_menu_link_copy_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ GdkDisplay* display = gtk_widget_get_display (widget);
+ GtkClipboard* clipboard = gtk_clipboard_get_for_display (display,
+ GDK_SELECTION_CLIPBOARD);
+ gtk_clipboard_set_text (clipboard, view->link_uri, -1);
+}
+
+static void
+midori_web_view_menu_save_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ WebKitNetworkRequest* request = webkit_network_request_new (view->link_uri);
+ WebKitDownload* download = webkit_download_new (request);
+ gboolean handled;
+ g_object_unref (request);
+ g_object_set_data (G_OBJECT (download), "save-as-download", 0);
+ g_signal_emit (view, signals[DOWNLOAD_REQUESTED], 0, download, &handled);
+ webkit_download_start (download);
+}
+
+static void
+midori_web_view_menu_image_new_tab_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ gchar* uri = katze_object_get_string (view->hit_test, "image-uri");
+ g_signal_emit (view, signals[NEW_TAB], 0, uri,
+ view->open_tabs_in_the_background);
+ g_free (uri);
+}
+
+static void
+midori_web_view_menu_image_new_window_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ gchar* uri = katze_object_get_string (view->hit_test, "image-uri");
+ g_signal_emit (view, signals[NEW_WINDOW], 0, uri);
+ g_free (uri);
+}
+
+static void
+midori_web_view_menu_image_copy_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ GdkDisplay* display = gtk_widget_get_display (widget);
+ GtkClipboard* clipboard = gtk_clipboard_get_for_display (display,
+ GDK_SELECTION_CLIPBOARD);
+ gchar* uri = katze_object_get_string (view->hit_test, "image-uri");
+ gtk_clipboard_set_text (clipboard, uri, -1);
+ g_free (uri);
+}
+
+static void
+midori_web_view_menu_image_save_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ gchar* uri = katze_object_get_string (view->hit_test, "image-uri");
+ WebKitNetworkRequest* request = webkit_network_request_new (uri);
+ WebKitDownload* download = webkit_download_new (request);
+ gboolean handled;
+ g_object_unref (request);
+ g_object_set_data (G_OBJECT (download), "save-as-download", 0);
+ g_signal_emit (view, signals[DOWNLOAD_REQUESTED], 0, download, &handled);
+ webkit_download_start (download);
+ g_free (uri);
+}
+
+static void
+midori_web_view_menu_video_copy_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ GdkDisplay* display = gtk_widget_get_display (widget);
+ GtkClipboard* clipboard = gtk_clipboard_get_for_display (display,
+ GDK_SELECTION_CLIPBOARD);
+ gchar* uri = katze_object_get_string (view->hit_test, "media-uri");
+ gtk_clipboard_set_text (clipboard, uri, -1);
+ g_free (uri);
+}
+
+static void
+midori_web_view_menu_video_save_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ gchar* uri = katze_object_get_string (view->hit_test, "media-uri");
+ WebKitNetworkRequest* request = webkit_network_request_new (uri);
+ WebKitDownload* download = webkit_download_new (request);
+ gboolean handled;
+ g_object_unref (request);
+ g_object_set_data (G_OBJECT (download), "save-as-download", 0);
+ g_signal_emit (view, signals[DOWNLOAD_REQUESTED], 0, download, &handled);
+ webkit_download_start (download);
+ g_free (uri);
+}
+
+static void
+midori_web_view_menu_video_download_activate_cb (GtkWidget* widget,
+ MidoriView* view)
+{
+ gchar* uri = katze_object_get_string (view->hit_test, "media-uri");
+ sokoke_spawn_program (view->download_manager, uri, TRUE);
+ g_free (uri);
+}
+#endif
+
static void
midori_web_view_menu_new_tab_activate_cb (GtkWidget* widget,
MidoriView* view)
#if WEBKIT_CHECK_VERSION (1, 1, 15)
gint x, y;
GdkEventButton event;
- WebKitHitTestResult* result;
WebKitHitTestResultContext context;
gboolean is_image;
gboolean is_media;
gdk_window_get_pointer (GTK_WIDGET (web_view)->window, &x, &y, NULL);
event.x = x;
event.y = y;
- result = webkit_web_view_get_hit_test_result (web_view, &event);
- context = katze_object_get_int (result, "context");
+ katze_object_assign (view->hit_test,
+ webkit_web_view_get_hit_test_result (web_view, &event));
+ context = katze_object_get_int (view->hit_test, "context");
has_selection = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION;
/* Ensure view->selected_text */
midori_view_has_selection (view);
is_image = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE;
is_media = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA;
is_document = !view->link_uri && !has_selection && !is_image && !is_media;
- g_object_unref (result);
#else
has_selection = midori_view_has_selection (view);
is_document = !view->link_uri && !has_selection;
if (!strcmp (stock_id, GTK_STOCK_FIND))
{
gtk_widget_hide (menuitem);
+ gtk_widget_set_no_show_all (menuitem);
menuitem = (GtkWidget*)g_list_nth_data (items, 1);
gtk_widget_hide (menuitem);
menuitem = (GtkWidget*)g_list_nth_data (items, 2);
{
midori_view_insert_menu_item (menu_shell, -1,
_("Open _Link"), NULL,
- NULL /* G_CALLBACK (midori_web_view_menu_open_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_open_activate_cb), widget);
midori_view_insert_menu_item (menu_shell, -1,
_("Open Link in New _Tab"), STOCK_TAB_NEW,
G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), widget);
midori_view_insert_menu_item (menu_shell, -1,
_("Open Link in New _Window"), STOCK_WINDOW_NEW,
- NULL /* G_CALLBACK (midori_web_view_menu_new_window_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_new_window_activate_cb), widget);
midori_view_insert_menu_item (menu_shell, -1,
_("_Copy Link destination"), NULL,
- NULL /* G_CALLBACK (midori_web_view_menu_copy_link_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_link_copy_activate_cb), widget);
/* FIXME */
midori_view_insert_menu_item (menu_shell, -1,
FALSE ? _("_Save Link destination") : _("_Download Link destination"), NULL,
- NULL /* G_CALLBACK (midori_web_view_menu_save_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_save_activate_cb), widget);
if (view->download_manager && *view->download_manager)
midori_view_insert_menu_item (menu_shell, -1,
_("Download with Download _Manager"), STOCK_TRANSFER,
gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ());
midori_view_insert_menu_item (menu_shell, -1,
_("Open _Image in New Tab"), STOCK_TAB_NEW,
- NULL /* G_CALLBACK (midori_web_view_menu_image_new_tab_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_image_new_tab_activate_cb), widget);
midori_view_insert_menu_item (menu_shell, -1,
_("Open _Image in New Window"), STOCK_WINDOW_NEW,
- NULL /* G_CALLBACK (midori_web_view_menu_image_new_window_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_image_new_window_activate_cb), widget);
midori_view_insert_menu_item (menu_shell, -1,
_("Copy Image _Address"), NULL,
- NULL /* G_CALLBACK (midori_web_view_menu_image_new_window_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_image_copy_activate_cb), widget);
/* FIXME */
midori_view_insert_menu_item (menu_shell, -1,
FALSE ? _("Save I_mage") : _("Download I_mage"), GTK_STOCK_SAVE,
- NULL /* G_CALLBACK (midori_web_view_menu_image_save_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_image_save_activate_cb), widget);
}
if (is_media)
{
midori_view_insert_menu_item (menu_shell, -1,
_("Copy Video _Address"), NULL,
- NULL /* G_CALLBACK (midori_web_view_menu_video_copy_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_video_copy_activate_cb), widget);
midori_view_insert_menu_item (menu_shell, -1,
FALSE ? _("Save _Video") : _("Download _Video"), GTK_STOCK_SAVE,
- NULL /* G_CALLBACK (midori_web_view_menu_video_save_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_video_save_activate_cb), widget);
if (view->download_manager && *view->download_manager)
midori_view_insert_menu_item (menu_shell, -1,
_("Download with Download _Manager"), STOCK_TRANSFER,
- NULL /* G_CALLBACK (midori_web_view_menu_video_download_activate_cb) */, widget);
+ G_CALLBACK (midori_web_view_menu_video_download_activate_cb), widget);
}
#else
if (view->link_uri)
#else
/* hack to disable non-functional Download File */
gtk_widget_hide (menuitem);
- menuitem = gtk_image_menu_item_new_with_mnemonic (
- _("_Save Link destination"));
- gtk_menu_shell_insert (menu_shell, menuitem, 3);
- g_signal_connect (menuitem, "activate",
- G_CALLBACK (midori_web_view_menu_save_as_activate_cb), view);
+ gtk_widget_set_no_show_all (menuitem);
+ midori_view_insert_menu_item (menu_shell, 3,
+ _("_Save Link destination"), NULL,
+ G_CALLBACK (midori_web_view_menu_save_as_activate_cb), widget);
#endif
if (view->download_manager && *view->download_manager)
- {
- menuitem = gtk_image_menu_item_new_with_mnemonic (
- _("Download with Download _Manager"));
- icon = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), icon);
- gtk_menu_shell_insert (menu_shell, menuitem, 4);
- g_signal_connect (menuitem, "activate",
- G_CALLBACK (midori_web_view_menu_download_activate_cb), view);
- }
- menuitem = gtk_image_menu_item_new_from_stock (STOCK_BOOKMARK_ADD, NULL);
- gtk_menu_shell_insert (menu_shell, menuitem, 5);
- g_signal_connect (menuitem, "activate",
- G_CALLBACK (midori_web_view_menu_add_bookmark_activate_cb), view);
+ midori_view_insert_menu_item (menu_shell, 4,
+ _("Download with Download _Manager"), STOCK_TRANSFER,
+ G_CALLBACK (midori_web_view_menu_download_activate_cb), widget);
+ midori_view_insert_menu_item (menu_shell, 5,
+ NULL, STOCK_BOOKMARK_ADD,
+ G_CALLBACK (midori_web_view_menu_add_bookmark_activate_cb), widget);
}
#endif
menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "UndoTabClose"));
gtk_menu_shell_append (menu_shell, menuitem);
-
- menuitem = gtk_separator_menu_item_new ();
- gtk_menu_shell_append (menu_shell, menuitem);
+ gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ());
menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "ZoomIn"));
}
}
- menuitem = gtk_separator_menu_item_new ();
- gtk_menu_shell_append (menu_shell, menuitem);
-
+ gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ());
menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "BookmarkAdd"));
gtk_menu_shell_append (menu_shell, menuitem);
view->load_status = MIDORI_LOAD_FINISHED;
view->minimized = FALSE;
view->statusbar_text = NULL;
+ #if WEBKIT_CHECK_VERSION (1, 1, 15)
+ view->hit_test = NULL;
+ #endif
view->link_uri = NULL;
view->selected_text = NULL;
view->news_feeds = katze_array_new (KATZE_TYPE_ITEM);