Add an Open external pages in Preference
This commit is contained in:
parent
e848d1df6e
commit
2fccaa1bea
5 changed files with 93 additions and 28 deletions
|
@ -210,6 +210,8 @@ midori_browser_message_received_cb (UniqueApp* instance,
|
||||||
UniqueResponse response;
|
UniqueResponse response;
|
||||||
MidoriBrowser* browser;
|
MidoriBrowser* browser;
|
||||||
gchar** uris;
|
gchar** uris;
|
||||||
|
MidoriNewPage open_external_pages_in;
|
||||||
|
gboolean first;
|
||||||
|
|
||||||
switch (command)
|
switch (command)
|
||||||
{
|
{
|
||||||
|
@ -244,10 +246,35 @@ midori_browser_message_received_cb (UniqueApp* instance,
|
||||||
response = UNIQUE_RESPONSE_FAIL;
|
response = UNIQUE_RESPONSE_FAIL;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
g_object_get (app->settings, "open-external-pages-in",
|
||||||
|
&open_external_pages_in, NULL);
|
||||||
|
if (open_external_pages_in == MIDORI_NEW_PAGE_WINDOW)
|
||||||
|
{
|
||||||
|
browser = g_object_new (MIDORI_TYPE_BROWSER,
|
||||||
|
"settings", app->settings,
|
||||||
|
"bookmarks", app->bookmarks,
|
||||||
|
"trash", app->trash,
|
||||||
|
"search-engines", app->search_engines,
|
||||||
|
"history", app->history,
|
||||||
|
NULL);
|
||||||
|
midori_app_add_browser (app, browser);
|
||||||
|
gtk_window_set_screen (GTK_WINDOW (app->browser),
|
||||||
|
unique_message_data_get_screen (message));
|
||||||
|
gtk_widget_show (GTK_WIDGET (browser));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
browser = app->browser;
|
||||||
|
first = (open_external_pages_in == MIDORI_NEW_PAGE_CURRENT);
|
||||||
while (*uris)
|
while (*uris)
|
||||||
{
|
{
|
||||||
midori_browser_set_current_page (app->browser,
|
if (first)
|
||||||
midori_browser_add_uri (app->browser, *uris));
|
{
|
||||||
|
midori_browser_set_current_uri (browser, *uris);
|
||||||
|
first = FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
midori_browser_set_current_page (browser,
|
||||||
|
midori_browser_add_uri (browser, *uris));
|
||||||
uris++;
|
uris++;
|
||||||
}
|
}
|
||||||
/* g_strfreev (uris); */
|
/* g_strfreev (uris); */
|
||||||
|
|
|
@ -154,17 +154,6 @@ _action_set_active (MidoriBrowser* browser,
|
||||||
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active);
|
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_midori_browser_open_uri (MidoriBrowser* browser,
|
|
||||||
const gchar* uri)
|
|
||||||
{
|
|
||||||
GtkWidget* view;
|
|
||||||
|
|
||||||
view = midori_browser_get_current_tab (browser);
|
|
||||||
if (view)
|
|
||||||
midori_view_set_uri (MIDORI_VIEW (view), uri);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_toggle_tabbar_smartly (MidoriBrowser* browser)
|
_toggle_tabbar_smartly (MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
|
@ -1169,7 +1158,7 @@ _action_open_activate (GtkAction* action,
|
||||||
{
|
{
|
||||||
uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
|
uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
|
||||||
gchar* folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
gchar* folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
||||||
_midori_browser_open_uri (browser, uri);
|
midori_browser_set_current_uri (browser, uri);
|
||||||
|
|
||||||
g_free (last_dir);
|
g_free (last_dir);
|
||||||
last_dir = folder;
|
last_dir = folder;
|
||||||
|
@ -1472,7 +1461,7 @@ _action_history_activate_item (GtkAction* action,
|
||||||
KatzeItem* item,
|
KatzeItem* item,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
_midori_browser_open_uri (browser, katze_item_get_uri (item));
|
midori_browser_set_current_uri (browser, katze_item_get_uri (item));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1494,7 +1483,7 @@ _action_bookmarks_activate_item (GtkAction* action,
|
||||||
KatzeItem* item,
|
KatzeItem* item,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
_midori_browser_open_uri (browser, katze_item_get_uri (item));
|
midori_browser_set_current_uri (browser, katze_item_get_uri (item));
|
||||||
gtk_widget_grab_focus (midori_browser_get_current_tab (browser));
|
gtk_widget_grab_focus (midori_browser_get_current_tab (browser));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1712,7 +1701,7 @@ _action_homepage_activate (GtkAction* action,
|
||||||
gchar* homepage;
|
gchar* homepage;
|
||||||
|
|
||||||
g_object_get (browser->settings, "homepage", &homepage, NULL);
|
g_object_get (browser->settings, "homepage", &homepage, NULL);
|
||||||
_midori_browser_open_uri (browser, homepage);
|
midori_browser_set_current_uri (browser, homepage);
|
||||||
g_free (homepage);
|
g_free (homepage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1734,7 +1723,7 @@ _action_location_active_changed (GtkAction* action,
|
||||||
if (index > -1)
|
if (index > -1)
|
||||||
{
|
{
|
||||||
uri = midori_location_action_get_uri (MIDORI_LOCATION_ACTION (action));
|
uri = midori_location_action_get_uri (MIDORI_LOCATION_ACTION (action));
|
||||||
_midori_browser_open_uri (browser, uri);
|
midori_browser_set_current_uri (browser, uri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1781,7 +1770,7 @@ _action_location_submit_uri (GtkAction* action,
|
||||||
midori_browser_set_current_page (browser, n);
|
midori_browser_set_current_page (browser, n);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_midori_browser_open_uri (browser, new_uri);
|
midori_browser_set_current_uri (browser, new_uri);
|
||||||
g_free (new_uri);
|
g_free (new_uri);
|
||||||
gtk_widget_grab_focus (midori_browser_get_current_tab (browser));
|
gtk_widget_grab_focus (midori_browser_get_current_tab (browser));
|
||||||
}
|
}
|
||||||
|
@ -1793,7 +1782,7 @@ midori_browser_menu_feed_item_activate_cb (GtkWidget* widget,
|
||||||
const gchar* uri;
|
const gchar* uri;
|
||||||
|
|
||||||
uri = g_object_get_data (G_OBJECT (widget), "uri");
|
uri = g_object_get_data (G_OBJECT (widget), "uri");
|
||||||
_midori_browser_open_uri (browser, uri);
|
midori_browser_set_current_uri (browser, uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1889,7 +1878,7 @@ _action_search_submit (GtkAction* action,
|
||||||
if (new_tab)
|
if (new_tab)
|
||||||
midori_browser_add_uri (browser, search);
|
midori_browser_add_uri (browser, search);
|
||||||
else
|
else
|
||||||
_midori_browser_open_uri (browser, search);
|
midori_browser_set_current_uri (browser, search);
|
||||||
|
|
||||||
g_free (search);
|
g_free (search);
|
||||||
g_free (location_entry_search);
|
g_free (location_entry_search);
|
||||||
|
@ -1941,7 +1930,7 @@ midori_panel_bookmarks_row_activated_cb (GtkTreeView* treeview,
|
||||||
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
||||||
uri = katze_item_get_uri (item);
|
uri = katze_item_get_uri (item);
|
||||||
if (uri && *uri)
|
if (uri && *uri)
|
||||||
_midori_browser_open_uri (browser, uri);
|
midori_browser_set_current_uri (browser, uri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2053,7 +2042,7 @@ midori_panel_history_row_activated_cb (GtkTreeView* treeview,
|
||||||
if (KATZE_IS_ITEM (item))
|
if (KATZE_IS_ITEM (item))
|
||||||
{
|
{
|
||||||
uri = katze_item_get_uri (item);
|
uri = katze_item_get_uri (item);
|
||||||
_midori_browser_open_uri (browser, uri);
|
midori_browser_set_current_uri (browser, uri);
|
||||||
}
|
}
|
||||||
g_object_unref (item);
|
g_object_unref (item);
|
||||||
}
|
}
|
||||||
|
@ -2308,7 +2297,7 @@ midori_browser_menu_bookmarks_item_activate_cb (GtkWidget* widget,
|
||||||
KatzeItem* item;
|
KatzeItem* item;
|
||||||
|
|
||||||
item = (KatzeItem*)g_object_get_data (G_OBJECT (widget), "KatzeItem");
|
item = (KatzeItem*)g_object_get_data (G_OBJECT (widget), "KatzeItem");
|
||||||
_midori_browser_open_uri (browser, katze_item_get_uri (item));
|
midori_browser_set_current_uri (browser, katze_item_get_uri (item));
|
||||||
gtk_widget_grab_focus (midori_browser_get_current_tab (browser));
|
gtk_widget_grab_focus (midori_browser_get_current_tab (browser));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2657,7 +2646,7 @@ _action_bookmark_open_activate (GtkAction* action,
|
||||||
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
||||||
uri = katze_item_get_uri (item);
|
uri = katze_item_get_uri (item);
|
||||||
if (uri && *uri)
|
if (uri && *uri)
|
||||||
_midori_browser_open_uri (browser, uri);
|
midori_browser_set_current_uri (browser, uri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2743,7 +2732,7 @@ _action_history_open_activate (GtkAction* action,
|
||||||
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
||||||
uri = katze_item_get_uri (item);
|
uri = katze_item_get_uri (item);
|
||||||
if (uri && *uri)
|
if (uri && *uri)
|
||||||
_midori_browser_open_uri (browser, uri);
|
midori_browser_set_current_uri (browser, uri);
|
||||||
g_object_unref (item);
|
g_object_unref (item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4142,7 +4131,7 @@ midori_browser_set_property (GObject* object,
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_URI:
|
case PROP_URI:
|
||||||
_midori_browser_open_uri (browser, g_value_get_string (value));
|
midori_browser_set_current_uri (browser, g_value_get_string (value));
|
||||||
break;
|
break;
|
||||||
case PROP_TAB:
|
case PROP_TAB:
|
||||||
midori_browser_set_current_tab (browser, g_value_get_object (value));
|
midori_browser_set_current_tab (browser, g_value_get_object (value));
|
||||||
|
@ -4387,6 +4376,29 @@ midori_browser_activate_action (MidoriBrowser* browser,
|
||||||
g_signal_emit (browser, signals[ACTIVATE_ACTION], 0, name);
|
g_signal_emit (browser, signals[ACTIVATE_ACTION], 0, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* midori_browser_set_current_uri:
|
||||||
|
* @browser: a #MidoriBrowser
|
||||||
|
* @uri: an URI
|
||||||
|
*
|
||||||
|
* Loads the specified URI in the current view.
|
||||||
|
*
|
||||||
|
* If the current view is opaque, and cannot load
|
||||||
|
* new pages, it will automatically open a new tab.
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
midori_browser_set_current_uri (MidoriBrowser* browser,
|
||||||
|
const gchar* uri)
|
||||||
|
{
|
||||||
|
GtkWidget* view;
|
||||||
|
|
||||||
|
g_return_if_fail (MIDORI_IS_BROWSER (browser));
|
||||||
|
g_return_if_fail (uri);
|
||||||
|
|
||||||
|
view = midori_browser_get_current_tab (browser);
|
||||||
|
midori_view_set_uri (MIDORI_VIEW (view), uri);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* midori_browser_get_current_uri:
|
* midori_browser_get_current_uri:
|
||||||
* @browser: a #MidoriBrowser
|
* @browser: a #MidoriBrowser
|
||||||
|
|
|
@ -93,6 +93,10 @@ void
|
||||||
midori_browser_activate_action (MidoriBrowser* browser,
|
midori_browser_activate_action (MidoriBrowser* browser,
|
||||||
const gchar* name);
|
const gchar* name);
|
||||||
|
|
||||||
|
void
|
||||||
|
midori_browser_set_current_uri (MidoriBrowser* browser,
|
||||||
|
const gchar* uri);
|
||||||
|
|
||||||
const gchar*
|
const gchar*
|
||||||
midori_browser_get_current_uri (MidoriBrowser* browser);
|
midori_browser_get_current_uri (MidoriBrowser* browser);
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ midori_preferences_init (MidoriPreferences* preferences)
|
||||||
|
|
||||||
preferences->notebook = NULL;
|
preferences->notebook = NULL;
|
||||||
|
|
||||||
dialog_title = g_strdup_printf (_("%s Preferences"),
|
dialog_title = g_strdup_printf (_("Preferences for %s"),
|
||||||
g_get_application_name ());
|
g_get_application_name ());
|
||||||
g_object_set (preferences,
|
g_object_set (preferences,
|
||||||
"icon-name", GTK_STOCK_PREFERENCES,
|
"icon-name", GTK_STOCK_PREFERENCES,
|
||||||
|
@ -419,6 +419,10 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
|
||||||
INDENTED_ADD (button, 0, 1, 3, 4);
|
INDENTED_ADD (button, 0, 1, 3, 4);
|
||||||
FRAME_NEW (_("Browsing"));
|
FRAME_NEW (_("Browsing"));
|
||||||
TABLE_NEW (3, 2);
|
TABLE_NEW (3, 2);
|
||||||
|
label = katze_property_label (settings, "open-external-pages-in");
|
||||||
|
INDENTED_ADD (label, 0, 1, 0, 1);
|
||||||
|
button = katze_property_proxy (settings, "open-external-pages-in", NULL);
|
||||||
|
FILLED_ADD (button, 1, 2, 0, 1);
|
||||||
/* label = katze_property_label (settings, "open-new-pages-in");
|
/* label = katze_property_label (settings, "open-new-pages-in");
|
||||||
INDENTED_ADD (label, 0, 1, 0, 1);
|
INDENTED_ADD (label, 0, 1, 0, 1);
|
||||||
button = katze_property_proxy (settings, "open-new-pages-in", NULL);
|
button = katze_property_proxy (settings, "open-new-pages-in", NULL);
|
||||||
|
|
|
@ -51,6 +51,7 @@ struct _MidoriWebSettings
|
||||||
|
|
||||||
gboolean close_buttons_on_tabs;
|
gboolean close_buttons_on_tabs;
|
||||||
MidoriNewPage open_new_pages_in;
|
MidoriNewPage open_new_pages_in;
|
||||||
|
MidoriNewPage open_external_pages_in;
|
||||||
gboolean middle_click_opens_selection;
|
gboolean middle_click_opens_selection;
|
||||||
gboolean open_tabs_in_the_background;
|
gboolean open_tabs_in_the_background;
|
||||||
gboolean open_tabs_next_to_current;
|
gboolean open_tabs_next_to_current;
|
||||||
|
@ -106,6 +107,7 @@ enum
|
||||||
|
|
||||||
PROP_CLOSE_BUTTONS_ON_TABS,
|
PROP_CLOSE_BUTTONS_ON_TABS,
|
||||||
PROP_OPEN_NEW_PAGES_IN,
|
PROP_OPEN_NEW_PAGES_IN,
|
||||||
|
PROP_OPEN_EXTERNAL_PAGES_IN,
|
||||||
PROP_MIDDLE_CLICK_OPENS_SELECTION,
|
PROP_MIDDLE_CLICK_OPENS_SELECTION,
|
||||||
PROP_OPEN_TABS_IN_THE_BACKGROUND,
|
PROP_OPEN_TABS_IN_THE_BACKGROUND,
|
||||||
PROP_OPEN_TABS_NEXT_TO_CURRENT,
|
PROP_OPEN_TABS_NEXT_TO_CURRENT,
|
||||||
|
@ -491,6 +493,16 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
MIDORI_NEW_PAGE_TAB,
|
MIDORI_NEW_PAGE_TAB,
|
||||||
G_PARAM_READABLE));
|
G_PARAM_READABLE));
|
||||||
|
|
||||||
|
g_object_class_install_property (gobject_class,
|
||||||
|
PROP_OPEN_EXTERNAL_PAGES_IN,
|
||||||
|
g_param_spec_enum (
|
||||||
|
"open-external-pages-in",
|
||||||
|
_("Open external pages in"),
|
||||||
|
_("Where to open externally opened pages"),
|
||||||
|
MIDORI_TYPE_NEW_PAGE,
|
||||||
|
MIDORI_NEW_PAGE_TAB,
|
||||||
|
G_PARAM_READWRITE));
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_MIDDLE_CLICK_OPENS_SELECTION,
|
PROP_MIDDLE_CLICK_OPENS_SELECTION,
|
||||||
g_param_spec_boolean (
|
g_param_spec_boolean (
|
||||||
|
@ -770,6 +782,9 @@ midori_web_settings_set_property (GObject* object,
|
||||||
case PROP_OPEN_NEW_PAGES_IN:
|
case PROP_OPEN_NEW_PAGES_IN:
|
||||||
web_settings->open_new_pages_in = g_value_get_enum (value);
|
web_settings->open_new_pages_in = g_value_get_enum (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_OPEN_EXTERNAL_PAGES_IN:
|
||||||
|
web_settings->open_external_pages_in = g_value_get_enum (value);
|
||||||
|
break;
|
||||||
case PROP_MIDDLE_CLICK_OPENS_SELECTION:
|
case PROP_MIDDLE_CLICK_OPENS_SELECTION:
|
||||||
web_settings->middle_click_opens_selection = g_value_get_boolean (value);
|
web_settings->middle_click_opens_selection = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
@ -913,6 +928,9 @@ midori_web_settings_get_property (GObject* object,
|
||||||
case PROP_OPEN_NEW_PAGES_IN:
|
case PROP_OPEN_NEW_PAGES_IN:
|
||||||
g_value_set_enum (value, web_settings->open_new_pages_in);
|
g_value_set_enum (value, web_settings->open_new_pages_in);
|
||||||
break;
|
break;
|
||||||
|
case PROP_OPEN_EXTERNAL_PAGES_IN:
|
||||||
|
g_value_set_enum (value, web_settings->open_external_pages_in);
|
||||||
|
break;
|
||||||
case PROP_MIDDLE_CLICK_OPENS_SELECTION:
|
case PROP_MIDDLE_CLICK_OPENS_SELECTION:
|
||||||
g_value_set_boolean (value, web_settings->middle_click_opens_selection);
|
g_value_set_boolean (value, web_settings->middle_click_opens_selection);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue