summaryrefslogtreecommitdiff
path: root/src/popup-commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/popup-commands.c')
-rw-r--r--src/popup-commands.c522
1 files changed, 258 insertions, 264 deletions
diff --git a/src/popup-commands.c b/src/popup-commands.c
index 1ed949c29..3dc6e79a9 100644
--- a/src/popup-commands.c
+++ b/src/popup-commands.c
@@ -37,373 +37,367 @@
#include <webkit2/webkit2.h>
typedef enum {
- NEW_WINDOW,
- NEW_TAB
+ NEW_WINDOW,
+ NEW_TAB
} LinkDestination;
static void
-view_in_destination (EphyWindow *window,
- const char *property_name,
- LinkDestination destination)
+view_in_destination (EphyWindow *window,
+ const char *property_name,
+ LinkDestination destination)
{
- EphyEmbedEvent *event;
- GValue value = { 0, };
- EphyEmbed *embed;
- EphyEmbed *new_embed;
- EphyWebView *new_view;
- WebKitWebViewSessionState *session_state;
- EphyWindow *dest_window = window;
- EphyNewTabFlags flags = 0;
-
- event = ephy_window_get_context_event (window);
- g_return_if_fail (event != NULL);
-
- embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window));
- g_return_if_fail (embed != NULL);
-
- ephy_embed_event_get_property (event, property_name, &value);
- switch (destination) {
- case NEW_WINDOW:
- dest_window = ephy_window_new ();
- break;
- case NEW_TAB:
- flags |= EPHY_NEW_TAB_APPEND_AFTER;
- break;
- default:
- g_assert_not_reached();
- }
-
- new_embed = ephy_shell_new_tab (ephy_shell_get_default (),
- dest_window, embed, flags);
-
- new_view = ephy_embed_get_web_view (new_embed);
- session_state = webkit_web_view_get_session_state (WEBKIT_WEB_VIEW (ephy_embed_get_web_view (embed)));
- webkit_web_view_restore_session_state (WEBKIT_WEB_VIEW (new_view), session_state);
- webkit_web_view_session_state_unref (session_state);
- ephy_web_view_load_url (new_view, g_value_get_string (&value));
- g_value_unset (&value);
+ EphyEmbedEvent *event;
+ GValue value = { 0, };
+ EphyEmbed *embed;
+ EphyEmbed *new_embed;
+ EphyWebView *new_view;
+ WebKitWebViewSessionState *session_state;
+ EphyWindow *dest_window = window;
+ EphyNewTabFlags flags = 0;
+
+ event = ephy_window_get_context_event (window);
+ g_return_if_fail (event != NULL);
+
+ embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window));
+ g_return_if_fail (embed != NULL);
+
+ ephy_embed_event_get_property (event, property_name, &value);
+ switch (destination) {
+ case NEW_WINDOW:
+ dest_window = ephy_window_new ();
+ break;
+ case NEW_TAB:
+ flags |= EPHY_NEW_TAB_APPEND_AFTER;
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+
+ new_embed = ephy_shell_new_tab (ephy_shell_get_default (),
+ dest_window, embed, flags);
+
+ new_view = ephy_embed_get_web_view (new_embed);
+ session_state = webkit_web_view_get_session_state (WEBKIT_WEB_VIEW (ephy_embed_get_web_view (embed)));
+ webkit_web_view_restore_session_state (WEBKIT_WEB_VIEW (new_view), session_state);
+ webkit_web_view_session_state_unref (session_state);
+ ephy_web_view_load_url (new_view, g_value_get_string (&value));
+ g_value_unset (&value);
}
void
-popup_cmd_link_in_new_window (GtkAction *action,
- EphyWindow *window)
+popup_cmd_link_in_new_window (GtkAction *action,
+ EphyWindow *window)
{
- view_in_destination (window, "link-uri", NEW_WINDOW);
+ view_in_destination (window, "link-uri", NEW_WINDOW);
}
void
-popup_cmd_media_in_new_window (GtkAction *action,
- EphyWindow *window)
+popup_cmd_media_in_new_window (GtkAction *action,
+ EphyWindow *window)
{
- view_in_destination (window, "media-uri", NEW_WINDOW);
+ view_in_destination (window, "media-uri", NEW_WINDOW);
}
void
-popup_cmd_bookmark_link (GtkAction *action,
- EphyWindow *window)
+popup_cmd_bookmark_link (GtkAction *action,
+ EphyWindow *window)
{
- EphyEmbedEvent *event;
- WebKitHitTestResult *result;
- const char *title;
- const char *location;
-
- event = ephy_window_get_context_event (window);
-
- result = ephy_embed_event_get_hit_test_result (event);
- if (!webkit_hit_test_result_context_is_link (result))
- {
- return;
- }
-
- location = webkit_hit_test_result_get_link_uri (result);
- title = webkit_hit_test_result_get_link_title (result);
- if (!title)
- {
- title = webkit_hit_test_result_get_link_label (result);
- }
-
- ephy_bookmarks_ui_add_bookmark (GTK_WINDOW (window), location, title);
+ EphyEmbedEvent *event;
+ WebKitHitTestResult *result;
+ const char *title;
+ const char *location;
+
+ event = ephy_window_get_context_event (window);
+
+ result = ephy_embed_event_get_hit_test_result (event);
+ if (!webkit_hit_test_result_context_is_link (result)) {
+ return;
+ }
+
+ location = webkit_hit_test_result_get_link_uri (result);
+ title = webkit_hit_test_result_get_link_title (result);
+ if (!title) {
+ title = webkit_hit_test_result_get_link_label (result);
+ }
+
+ ephy_bookmarks_ui_add_bookmark (GTK_WINDOW (window), location, title);
}
static void
popup_cmd_copy_to_clipboard (EphyWindow *window, const char *text)
{
- gtk_clipboard_set_text (gtk_clipboard_get (GDK_NONE),
- text, -1);
- gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY),
- text, -1);
+ gtk_clipboard_set_text (gtk_clipboard_get (GDK_NONE),
+ text, -1);
+ gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY),
+ text, -1);
}
void
-popup_cmd_copy_link_address (GtkAction *action,
- EphyWindow *window)
+popup_cmd_copy_link_address (GtkAction *action,
+ EphyWindow *window)
{
- EphyEmbedEvent *event;
- guint context;
- const char *address;
- GValue value = { 0, };
+ EphyEmbedEvent *event;
+ guint context;
+ const char *address;
+ GValue value = { 0, };
- event = ephy_window_get_context_event (window);
- g_return_if_fail (event != NULL);
+ event = ephy_window_get_context_event (window);
+ g_return_if_fail (event != NULL);
- context = ephy_embed_event_get_context (event);
+ context = ephy_embed_event_get_context (event);
- if (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK)
- {
- ephy_embed_event_get_property (event, "link-uri", &value);
- address = g_value_get_string (&value);
+ if (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK) {
+ ephy_embed_event_get_property (event, "link-uri", &value);
+ address = g_value_get_string (&value);
- if (g_str_has_prefix (address, "mailto:"))
- address = address + 7;
+ if (g_str_has_prefix (address, "mailto:"))
+ address = address + 7;
- popup_cmd_copy_to_clipboard (window, address);
- g_value_unset (&value);
- }
+ popup_cmd_copy_to_clipboard (window, address);
+ g_value_unset (&value);
+ }
}
static gboolean
cancel_download_idle_cb (EphyDownload *download)
{
- ephy_download_cancel (download);
+ ephy_download_cancel (download);
- return FALSE;
+ return FALSE;
}
typedef struct {
- char *title;
- EphyWindow *window;
+ char *title;
+ EphyWindow *window;
} SavePropertyURLData;
static void
-filename_suggested_cb (EphyDownload *download,
- const char *suggested_filename,
- SavePropertyURLData *data)
+filename_suggested_cb (EphyDownload *download,
+ const char *suggested_filename,
+ SavePropertyURLData *data)
{
- EphyFileChooser *dialog;
- char *sanitized_filename;
-
- dialog = ephy_file_chooser_new (data->title,
- GTK_WIDGET (data->window),
- GTK_FILE_CHOOSER_ACTION_SAVE,
- EPHY_FILE_FILTER_NONE);
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
- gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
-
- sanitized_filename = ephy_sanitize_filename (g_strdup (suggested_filename));
- gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), sanitized_filename);
- g_free (sanitized_filename);
-
- if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
- {
- char *uri;
- WebKitDownload *webkit_download;
-
- uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
- ephy_download_set_destination_uri (download, uri);
- g_free (uri);
-
- webkit_download = ephy_download_get_webkit_download (download);
- webkit_download_set_allow_overwrite (webkit_download, TRUE);
-
- ephy_downloads_manager_add_download (ephy_embed_shell_get_downloads_manager (ephy_embed_shell_get_default ()),
- download);
- }
- else
- {
- g_idle_add_full (G_PRIORITY_DEFAULT,
- (GSourceFunc)cancel_download_idle_cb,
- g_object_ref (download),
- g_object_unref);
- }
-
- gtk_widget_destroy (GTK_WIDGET (dialog));
- g_free (data->title);
- g_object_unref (data->window);
- g_free (data);
-
- g_object_unref (download);
+ EphyFileChooser *dialog;
+ char *sanitized_filename;
+
+ dialog = ephy_file_chooser_new (data->title,
+ GTK_WIDGET (data->window),
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ EPHY_FILE_FILTER_NONE);
+ gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+ gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
+
+ sanitized_filename = ephy_sanitize_filename (g_strdup (suggested_filename));
+ gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), sanitized_filename);
+ g_free (sanitized_filename);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+ char *uri;
+ WebKitDownload *webkit_download;
+
+ uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
+ ephy_download_set_destination_uri (download, uri);
+ g_free (uri);
+
+ webkit_download = ephy_download_get_webkit_download (download);
+ webkit_download_set_allow_overwrite (webkit_download, TRUE);
+
+ ephy_downloads_manager_add_download (ephy_embed_shell_get_downloads_manager (ephy_embed_shell_get_default ()),
+ download);
+ } else {
+ g_idle_add_full (G_PRIORITY_DEFAULT,
+ (GSourceFunc)cancel_download_idle_cb,
+ g_object_ref (download),
+ g_object_unref);
+ }
+
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+ g_free (data->title);
+ g_object_unref (data->window);
+ g_free (data);
+
+ g_object_unref (download);
}
static void
save_property_url (const char *title,
- EphyWindow *window,
- const char *property)
+ EphyWindow *window,
+ const char *property)
{
- EphyEmbedEvent *event;
- const char *location;
- EphyDownload *download;
- SavePropertyURLData *data;
- GValue value = { 0, };
-
- event = ephy_window_get_context_event (window);
- g_return_if_fail (event != NULL);
-
- ephy_embed_event_get_property (event, property, &value);
- location = g_value_get_string (&value);
- download = ephy_download_new_for_uri (location);
- data = g_new (SavePropertyURLData, 1);
- data->title = g_strdup (title);
- data->window = g_object_ref (window);
- g_signal_connect (download, "filename-suggested",
- G_CALLBACK (filename_suggested_cb),
- data);
-
- g_value_unset (&value);
+ EphyEmbedEvent *event;
+ const char *location;
+ EphyDownload *download;
+ SavePropertyURLData *data;
+ GValue value = { 0, };
+
+ event = ephy_window_get_context_event (window);
+ g_return_if_fail (event != NULL);
+
+ ephy_embed_event_get_property (event, property, &value);
+ location = g_value_get_string (&value);
+ download = ephy_download_new_for_uri (location);
+ data = g_new (SavePropertyURLData, 1);
+ data->title = g_strdup (title);
+ data->window = g_object_ref (window);
+ g_signal_connect (download, "filename-suggested",
+ G_CALLBACK (filename_suggested_cb),
+ data);
+
+ g_value_unset (&value);
}
void
-popup_cmd_download_link_as (GtkAction *action,
- EphyWindow *window)
+popup_cmd_download_link_as (GtkAction *action,
+ EphyWindow *window)
{
- save_property_url (_("Save Link As"), window, "link-uri");
+ save_property_url (_("Save Link As"), window, "link-uri");
}
void
-popup_cmd_save_image_as (GtkAction *action,
- EphyWindow *window)
+popup_cmd_save_image_as (GtkAction *action,
+ EphyWindow *window)
{
- save_property_url (_("Save Image As"), window, "image-uri");
+ save_property_url (_("Save Image As"), window, "image-uri");
}
void
-popup_cmd_save_media_as (GtkAction *action,
- EphyWindow *window)
+popup_cmd_save_media_as (GtkAction *action,
+ EphyWindow *window)
{
- save_property_url (_("Save Media As"), window, "media-uri");
+ save_property_url (_("Save Media As"), window, "media-uri");
}
static void
background_download_completed (EphyDownload *download,
- GtkWidget *window)
+ GtkWidget *window)
{
- const char *uri;
- GSettings *settings;
+ const char *uri;
+ GSettings *settings;
- uri = ephy_download_get_destination_uri (download);
- settings = ephy_settings_get ("org.gnome.desktop.background");
- g_settings_set_string (settings, "picture-uri", uri);
+ uri = ephy_download_get_destination_uri (download);
+ settings = ephy_settings_get ("org.gnome.desktop.background");
+ g_settings_set_string (settings, "picture-uri", uri);
}
void
-popup_cmd_set_image_as_background (GtkAction *action,
- EphyWindow *window)
+popup_cmd_set_image_as_background (GtkAction *action,
+ EphyWindow *window)
{
- EphyEmbedEvent *event;
- const char *location;
- char *dest_uri, *dest, *base, *base_converted;
- GValue value = { 0, };
- EphyDownload *download;
-
- event = ephy_window_get_context_event (window);
- g_return_if_fail (event != NULL);
-
- ephy_embed_event_get_property (event, "image-uri", &value);
- location = g_value_get_string (&value);
-
- download = ephy_download_new_for_uri (location);
-
- base = g_path_get_basename (location);
- base_converted = g_filename_from_utf8 (base, -1, NULL, NULL, NULL);
- dest = g_build_filename (g_get_user_special_dir (G_USER_DIRECTORY_PICTURES), base_converted, NULL);
- dest_uri = g_filename_to_uri (dest, NULL, NULL);
-
- ephy_download_set_destination_uri (download, dest_uri);
- ephy_download_set_action (download, EPHY_DOWNLOAD_ACTION_DO_NOTHING);
- ephy_downloads_manager_add_download (ephy_embed_shell_get_downloads_manager (ephy_embed_shell_get_default ()),
- download);
- g_object_unref (download);
-
- g_signal_connect (download, "completed",
- G_CALLBACK (background_download_completed), window);
-
- g_value_unset (&value);
- g_free (base);
- g_free (base_converted);
- g_free (dest);
- g_free (dest_uri);
+ EphyEmbedEvent *event;
+ const char *location;
+ char *dest_uri, *dest, *base, *base_converted;
+ GValue value = { 0, };
+ EphyDownload *download;
+
+ event = ephy_window_get_context_event (window);
+ g_return_if_fail (event != NULL);
+
+ ephy_embed_event_get_property (event, "image-uri", &value);
+ location = g_value_get_string (&value);
+
+ download = ephy_download_new_for_uri (location);
+
+ base = g_path_get_basename (location);
+ base_converted = g_filename_from_utf8 (base, -1, NULL, NULL, NULL);
+ dest = g_build_filename (g_get_user_special_dir (G_USER_DIRECTORY_PICTURES), base_converted, NULL);
+ dest_uri = g_filename_to_uri (dest, NULL, NULL);
+
+ ephy_download_set_destination_uri (download, dest_uri);
+ ephy_download_set_action (download, EPHY_DOWNLOAD_ACTION_DO_NOTHING);
+ ephy_downloads_manager_add_download (ephy_embed_shell_get_downloads_manager (ephy_embed_shell_get_default ()),
+ download);
+ g_object_unref (download);
+
+ g_signal_connect (download, "completed",
+ G_CALLBACK (background_download_completed), window);
+
+ g_value_unset (&value);
+ g_free (base);
+ g_free (base_converted);
+ g_free (dest);
+ g_free (dest_uri);
}
static void
popup_cmd_copy_location (EphyWindow *window,
- const char *property_name)
+ const char *property_name)
{
- EphyEmbedEvent *event;
- const char *location;
- GValue value = { 0, };
-
- event = ephy_window_get_context_event (window);
- ephy_embed_event_get_property (event, property_name, &value);
- location = g_value_get_string (&value);
- popup_cmd_copy_to_clipboard (window, location);
- g_value_unset (&value);
+ EphyEmbedEvent *event;
+ const char *location;
+ GValue value = { 0, };
+
+ event = ephy_window_get_context_event (window);
+ ephy_embed_event_get_property (event, property_name, &value);
+ location = g_value_get_string (&value);
+ popup_cmd_copy_to_clipboard (window, location);
+ g_value_unset (&value);
}
void
-popup_cmd_copy_image_location (GtkAction *action,
- EphyWindow *window)
+popup_cmd_copy_image_location (GtkAction *action,
+ EphyWindow *window)
{
- popup_cmd_copy_location (window, "image-uri");
+ popup_cmd_copy_location (window, "image-uri");
}
void
-popup_cmd_copy_media_location (GtkAction *action,
- EphyWindow *window)
+popup_cmd_copy_media_location (GtkAction *action,
+ EphyWindow *window)
{
- popup_cmd_copy_location (window, "media-uri");
+ popup_cmd_copy_location (window, "media-uri");
}
void
-popup_cmd_link_in_new_tab (GtkAction *action,
- EphyWindow *window)
+popup_cmd_link_in_new_tab (GtkAction *action,
+ EphyWindow *window)
{
- view_in_destination (window, "link-uri", NEW_TAB);
+ view_in_destination (window, "link-uri", NEW_TAB);
}
void
-popup_cmd_view_image_in_new_tab (GtkAction *action,
- EphyWindow *window)
+popup_cmd_view_image_in_new_tab (GtkAction *action,
+ EphyWindow *window)
{
- view_in_destination (window, "image-uri", NEW_TAB);
+ view_in_destination (window, "image-uri", NEW_TAB);
}
void
-popup_cmd_media_in_new_tab (GtkAction *action,
- EphyWindow *window)
+popup_cmd_media_in_new_tab (GtkAction *action,
+ EphyWindow *window)
{
- view_in_destination (window, "media-uri", NEW_TAB);
+ view_in_destination (window, "media-uri", NEW_TAB);
}
void
-popup_cmd_link_in_incognito_window (GtkAction *action,
- EphyWindow *window)
+popup_cmd_link_in_incognito_window (GtkAction *action,
+ EphyWindow *window)
{
- EphyEmbedEvent *event;
- GValue value = { 0, };
+ EphyEmbedEvent *event;
+ GValue value = { 0, };
- event = ephy_window_get_context_event (window);
- g_assert (event != NULL);
+ event = ephy_window_get_context_event (window);
+ g_assert (event != NULL);
- ephy_embed_event_get_property (event, "link-uri", &value);
- ephy_open_incognito_window (g_value_get_string (&value));
- g_value_unset (&value);
+ ephy_embed_event_get_property (event, "link-uri", &value);
+ ephy_open_incognito_window (g_value_get_string (&value));
+ g_value_unset (&value);
}
void
-popup_cmd_search_selection (GtkAction *action,
- EphyWindow *window)
+popup_cmd_search_selection (GtkAction *action,
+ EphyWindow *window)
{
- EphyEmbed *embed, *new_embed;
- const char *text;
- char *search_url;
-
- embed = ephy_embed_container_get_active_child
- (EPHY_EMBED_CONTAINER (window));
- g_assert (EPHY_IS_EMBED (embed));
-
- text = g_object_get_data (G_OBJECT (action), "selection");
- search_url = ephy_embed_utils_autosearch_address (text);
- new_embed = ephy_shell_new_tab (ephy_shell_get_default (),
- window, embed, EPHY_NEW_TAB_APPEND_AFTER);
- ephy_web_view_load_url (ephy_embed_get_web_view (new_embed), search_url);
- g_free (search_url);
+ EphyEmbed *embed, *new_embed;
+ const char *text;
+ char *search_url;
+
+ embed = ephy_embed_container_get_active_child
+ (EPHY_EMBED_CONTAINER (window));
+ g_assert (EPHY_IS_EMBED (embed));
+
+ text = g_object_get_data (G_OBJECT (action), "selection");
+ search_url = ephy_embed_utils_autosearch_address (text);
+ new_embed = ephy_shell_new_tab (ephy_shell_get_default (),
+ window, embed, EPHY_NEW_TAB_APPEND_AFTER);
+ ephy_web_view_load_url (ephy_embed_get_web_view (new_embed), search_url);
+ g_free (search_url);
}