Add Always Show Tabbar preference

This commit is contained in:
Christian Dywan 2008-10-04 01:45:17 +02:00
parent f7436303f6
commit aa5602ec9e
3 changed files with 51 additions and 7 deletions

View file

@ -167,14 +167,31 @@ _midori_browser_open_uri (MidoriBrowser* browser,
midori_view_set_uri (MIDORI_VIEW (view), uri); midori_view_set_uri (MIDORI_VIEW (view), uri);
} }
static void
_toggle_tabbar_smartly (MidoriBrowser* browser)
{
guint n;
gboolean always_show_tabbar;
n = gtk_notebook_get_n_pages (GTK_NOTEBOOK (browser->notebook));
if (n < 2)
{
g_object_get (browser->settings, "always-show-tabbar",
&always_show_tabbar, NULL);
if (always_show_tabbar)
n++;
}
gtk_notebook_set_show_tabs (GTK_NOTEBOOK (browser->notebook), n > 1);
}
static void static void
_midori_browser_update_actions (MidoriBrowser* browser) _midori_browser_update_actions (MidoriBrowser* browser)
{ {
guint n; guint n;
gboolean trash_empty; gboolean trash_empty;
_toggle_tabbar_smartly (browser);
n = gtk_notebook_get_n_pages (GTK_NOTEBOOK (browser->notebook)); n = gtk_notebook_get_n_pages (GTK_NOTEBOOK (browser->notebook));
gtk_notebook_set_show_tabs (GTK_NOTEBOOK (browser->notebook), n > 1);
_action_set_sensitive (browser, "TabClose", n > 1); _action_set_sensitive (browser, "TabClose", n > 1);
_action_set_sensitive (browser, "TabPrevious", n > 1); _action_set_sensitive (browser, "TabPrevious", n > 1);
_action_set_sensitive (browser, "TabNext", n > 1); _action_set_sensitive (browser, "TabNext", n > 1);
@ -695,6 +712,11 @@ midori_browser_tab_destroy_cb (GtkWidget* widget,
midori_browser_tab_destroy_cb, browser); midori_browser_tab_destroy_cb, browser);
g_signal_emit (browser, signals[REMOVE_TAB], 0, widget); g_signal_emit (browser, signals[REMOVE_TAB], 0, widget);
/* We don't ever want to be in a situation with no tabs,
so just create an empty one if the last one is closed. */
if (!midori_browser_get_current_tab (browser))
midori_browser_add_uri (browser, "");
return FALSE; return FALSE;
} }
@ -3369,6 +3391,7 @@ _midori_browser_update_settings (MidoriBrowser* browser)
} }
_midori_browser_set_toolbar_style (browser, toolbar_style); _midori_browser_set_toolbar_style (browser, toolbar_style);
_toggle_tabbar_smartly (browser);
if (browser->search_engines) if (browser->search_engines)
{ {
@ -3412,6 +3435,8 @@ midori_browser_settings_notify (MidoriWebSettings* web_settings,
if (name == g_intern_string ("toolbar-style")) if (name == g_intern_string ("toolbar-style"))
_midori_browser_set_toolbar_style (browser, g_value_get_enum (&value)); _midori_browser_set_toolbar_style (browser, g_value_get_enum (&value));
else if (name == g_intern_string ("always-show-tabbar"))
_toggle_tabbar_smartly (browser);
else if (name == g_intern_string ("show-new-tab")) else if (name == g_intern_string ("show-new-tab"))
sokoke_widget_set_visible (browser->button_tab_new, sokoke_widget_set_visible (browser->button_tab_new,
g_value_get_boolean (&value)); g_value_get_boolean (&value));

View file

@ -339,18 +339,20 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
/* Page "Interface" */ /* Page "Interface" */
PAGE_NEW (_("Interface")); PAGE_NEW (_("Interface"));
FRAME_NEW (_("Navigationbar")); FRAME_NEW (_("Navigationbar"));
TABLE_NEW (3, 2); TABLE_NEW (4, 2);
INDENTED_ADD (katze_property_label (settings, "toolbar-style"), 0, 1, 0, 1); INDENTED_ADD (katze_property_label (settings, "toolbar-style"), 0, 1, 0, 1);
button = katze_property_proxy (settings, "toolbar-style", NULL); button = katze_property_proxy (settings, "toolbar-style", NULL);
FILLED_ADD (button, 1, 2, 0, 1); FILLED_ADD (button, 1, 2, 0, 1);
button = katze_property_proxy (settings, "show-new-tab", NULL); button = katze_property_proxy (settings, "always-show-tabbar", NULL);
INDENTED_ADD (button, 0, 1, 1, 2); INDENTED_ADD (button, 0, 1, 1, 2);
button = katze_property_proxy (settings, "show-web-search", NULL); button = katze_property_proxy (settings, "show-new-tab", NULL);
SPANNED_ADD (button, 1, 2, 1, 2);
button = katze_property_proxy (settings, "show-homepage", NULL);
INDENTED_ADD (button, 0, 1, 2, 3); INDENTED_ADD (button, 0, 1, 2, 3);
button = katze_property_proxy (settings, "show-trash", NULL); button = katze_property_proxy (settings, "show-web-search", NULL);
SPANNED_ADD (button, 1, 2, 2, 3); SPANNED_ADD (button, 1, 2, 2, 3);
button = katze_property_proxy (settings, "show-homepage", NULL);
INDENTED_ADD (button, 0, 1, 3, 4);
button = katze_property_proxy (settings, "show-trash", NULL);
SPANNED_ADD (button, 1, 2, 3, 4);
FRAME_NEW (_("Browsing")); FRAME_NEW (_("Browsing"));
TABLE_NEW (3, 2); TABLE_NEW (3, 2);
/* label = katze_property_label (settings, "open-new-pages-in"); /* label = katze_property_label (settings, "open-new-pages-in");

View file

@ -34,6 +34,7 @@ struct _MidoriWebSettings
gboolean show_statusbar; gboolean show_statusbar;
MidoriToolbarStyle toolbar_style; MidoriToolbarStyle toolbar_style;
gboolean always_show_tabbar;
gboolean show_new_tab; gboolean show_new_tab;
gboolean show_homepage; gboolean show_homepage;
gboolean show_web_search; gboolean show_web_search;
@ -86,6 +87,7 @@ enum
PROP_SHOW_STATUSBAR, PROP_SHOW_STATUSBAR,
PROP_TOOLBAR_STYLE, PROP_TOOLBAR_STYLE,
PROP_ALWAYS_SHOW_TABBAR,
PROP_SHOW_NEW_TAB, PROP_SHOW_NEW_TAB,
PROP_SHOW_HOMEPAGE, PROP_SHOW_HOMEPAGE,
PROP_SHOW_WEB_SEARCH, PROP_SHOW_WEB_SEARCH,
@ -345,6 +347,15 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
MIDORI_TOOLBAR_DEFAULT, MIDORI_TOOLBAR_DEFAULT,
flags)); flags));
g_object_class_install_property (gobject_class,
PROP_ALWAYS_SHOW_TABBAR,
g_param_spec_boolean (
"always-show-tabbar",
_("Always Show Tabbar"),
_("Always show the tabbar"),
FALSE,
flags));
g_object_class_install_property (gobject_class, g_object_class_install_property (gobject_class,
PROP_SHOW_NEW_TAB, PROP_SHOW_NEW_TAB,
g_param_spec_boolean ( g_param_spec_boolean (
@ -669,6 +680,9 @@ midori_web_settings_set_property (GObject* object,
case PROP_TOOLBAR_STYLE: case PROP_TOOLBAR_STYLE:
web_settings->toolbar_style = g_value_get_enum (value); web_settings->toolbar_style = g_value_get_enum (value);
break; break;
case PROP_ALWAYS_SHOW_TABBAR:
web_settings->always_show_tabbar = g_value_get_boolean (value);
break;
case PROP_SHOW_NEW_TAB: case PROP_SHOW_NEW_TAB:
web_settings->show_new_tab = g_value_get_boolean (value); web_settings->show_new_tab = g_value_get_boolean (value);
break; break;
@ -824,6 +838,9 @@ midori_web_settings_get_property (GObject* object,
case PROP_TOOLBAR_STYLE: case PROP_TOOLBAR_STYLE:
g_value_set_enum (value, web_settings->toolbar_style); g_value_set_enum (value, web_settings->toolbar_style);
break; break;
case PROP_ALWAYS_SHOW_TABBAR:
g_value_set_boolean (value, web_settings->always_show_tabbar);
break;
case PROP_SHOW_NEW_TAB: case PROP_SHOW_NEW_TAB:
g_value_set_boolean (value, web_settings->show_new_tab); g_value_set_boolean (value, web_settings->show_new_tab);
break; break;