static void on_popup_social_bm_link_activate (GtkWidget *widget, gpointer user_data) { gchar *url = social_get_bookmark_url ((gchar *)user_data, ""); (void)browser_tabs_add_new (url, url, TRUE); g_free (url); }
/** * A new window was requested. This is the case e.g. if the link * has target="_blank". In that case, we don't open the link in a new * tab, but do what the user requested as if it didn't have a target. */ static gboolean liferea_webkit_new_window_requested (WebKitWebView *view, WebKitWebFrame *frame, WebKitNetworkRequest *request, WebKitWebNavigationAction *navigation_action, WebKitWebPolicyDecision *policy_decision) { const gchar *uri = webkit_network_request_get_uri (request); if (webkit_web_navigation_action_get_button (navigation_action) == 2) { /* middle-click, let's open the link in a new tab */ browser_tabs_add_new (uri, uri, FALSE); } else if (liferea_htmlview_handle_URL (g_object_get_data (G_OBJECT (view), "htmlview"), uri)) { /* The link is to be opened externally, let's do nothing here */ } else { /* If the link is not to be opened in a new tab, nor externally, * it was likely a normal click on a target="_blank" link. * Let's open it in the current view to not disturb users */ webkit_web_view_load_uri (view, uri); } /* We handled the request ourselves */ webkit_web_policy_decision_ignore (policy_decision); return TRUE; }
void social_add_bookmark (const itemPtr item) { gchar *link = item_make_link (item); gchar *url = social_get_bookmark_url (link, item_get_title (item)); (void)browser_tabs_add_new (url, social_get_bookmark_site(), TRUE); g_free (link); g_free (url); }
/** * e.g. after a click on javascript:openZoom() */ static WebKitWebView* webkit_create_web_view (WebKitWebView *view, WebKitWebFrame *frame) { LifereaHtmlView *htmlview; GtkWidget *scrollpane; GtkWidget *htmlwidget; htmlview = browser_tabs_add_new (NULL, NULL, TRUE); scrollpane = liferea_htmlview_get_widget (htmlview); htmlwidget = gtk_bin_get_child (GTK_BIN (scrollpane)); return WEBKIT_WEB_VIEW (htmlwidget); }
static void liferea_shell_add_html_tab (const gchar *file, const gchar *name) { gchar *filepattern = g_strdup_printf (PACKAGE_DATA_DIR "/" PACKAGE "/doc/html/%s", file); gchar *filename = common_get_localized_filename (filepattern); gchar *fileuri = g_strdup_printf ("file://%s", filename); browser_tabs_add_new (fileuri, name, TRUE); g_free (filepattern); g_free (filename); g_free (fileuri); }
/** * e.g. after a click on javascript:openZoom() */ static WebKitWebView* webkit_create_web_view (WebKitWebView *view, WebKitWebFrame *frame) { LifereaHtmlView *htmlview; GtkWidget *container; GtkWidget *htmlwidget; GList *children; htmlview = browser_tabs_add_new (NULL, NULL, TRUE); container = liferea_htmlview_get_widget (htmlview); /* Ugly lookup of the webview. LifereaHtmlView uses a GtkBox with first a URL bar (sometimes invisble) and the HTML renderer as 2nd child */ children = gtk_container_get_children (GTK_CONTAINER (container)); htmlwidget = gtk_bin_get_child (GTK_BIN (children->next->data)); return WEBKIT_WEB_VIEW (htmlwidget); }
void on_popup_launchitem_in_tab_selected (void) { itemPtr item; gchar *link; item = itemlist_get_selected (); if (item) { link = item_make_link (item); if (link) { browser_tabs_add_new (link, link, FALSE); g_free (link); } else ui_show_error_box (_("This item has no link specified!")); item_unload (item); } else { liferea_shell_set_important_status_bar (_("No item has been selected")); } }
/** * A link has been clicked * * When a link has been clicked the link management is dispatched to Liferea * core in order to manage the different filetypes, remote URLs. */ static gboolean liferea_webkit_link_clicked (WebKitWebView *view, WebKitWebFrame *frame, WebKitNetworkRequest *request, WebKitWebNavigationAction *navigation_action, WebKitWebPolicyDecision *policy_decision) { const gchar *uri; WebKitWebNavigationReason reason; gboolean url_handled; g_return_val_if_fail (WEBKIT_IS_WEB_VIEW (view), FALSE); g_return_val_if_fail (WEBKIT_IS_NETWORK_REQUEST (request), FALSE); reason = webkit_web_navigation_action_get_reason (navigation_action); /* iframes in items return WEBKIT_WEB_NAVIGATION_REASON_OTHER and shouldn't be handled as clicks */ if (reason != WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) return FALSE; uri = webkit_network_request_get_uri (request); if (webkit_web_navigation_action_get_button (navigation_action) == 2) { /* middle click */ browser_tabs_add_new (uri, uri, FALSE); webkit_web_policy_decision_ignore (policy_decision); return TRUE; } url_handled = liferea_htmlview_handle_URL (g_object_get_data (G_OBJECT (view), "htmlview"), uri); if (url_handled) webkit_web_policy_decision_ignore (policy_decision); return url_handled; }
static void on_popup_open_link_in_tab_activate (GtkWidget *widget, gpointer user_data) { browser_tabs_add_new ((gchar *)user_data, (gchar *)user_data, FALSE); }