diff options
-rw-r--r-- | data/org.gnome.epiphany.gschema.xml | 9 | ||||
-rw-r--r-- | lib/ephy-prefs.h | 17 | ||||
-rw-r--r-- | lib/ephy-profile-migrator.c | 18 | ||||
-rw-r--r-- | lib/ephy-profile-utils.h | 2 | ||||
-rw-r--r-- | src/ephy-notebook.c | 9 |
5 files changed, 43 insertions, 12 deletions
diff --git a/data/org.gnome.epiphany.gschema.xml b/data/org.gnome.epiphany.gschema.xml index 3ceee4047..69386bdf1 100644 --- a/data/org.gnome.epiphany.gschema.xml +++ b/data/org.gnome.epiphany.gschema.xml @@ -77,14 +77,19 @@ </key> <key type="b" name="always-show-tabs-bar"> <default>false</default> - <summary>Always show the tab bar</summary> - <description>Show the tab bar also when there is only one tab open.</description> + <summary>[Deprecated]</summary> + <description>[Deprecated] This setting is deprecated, use 'tabs-bar-visibility-policy' instead.</description> </key> <key type="b" name="downloads-hidden"> <default>false</default> <summary>Visibility of the downloads window</summary> <description>Hide or show the downloads window. When hidden, a notification will be shown when new downloads are started.</description> </key> + <key name="tabs-bar-visibility-policy" enum="org.gnome.Epiphany.EphyPrefsUITabsBarVisibilityPolicy"> + <default>'more-than-one'</default> + <summary>The visibility policy for the tabs bar.</summary> + <description>Controls when the tabs bar is shown. Possible values are 'always' (the tabs bar is always shown) and 'more-than-one' (the tabs bar is only shown if there's two or more tabs).</description> + </key> </schema> <schema path="/org/gnome/epiphany/web/" id="org.gnome.Epiphany.web"> <key type="i" name="min-font-size"> diff --git a/lib/ephy-prefs.h b/lib/ephy-prefs.h index 9c74deb39..a510f657a 100644 --- a/lib/ephy-prefs.h +++ b/lib/ephy-prefs.h @@ -45,6 +45,12 @@ typedef enum typedef enum { + EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY_ALWAYS, + EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY_MORE_THAN_ONE +} EphyPrefsUITabsBarVisibilityPolicy; + +typedef enum +{ EPHY_PREFS_WEB_COOKIES_POLICY_ALWAYS, EPHY_PREFS_WEB_COOKIES_POLICY_NO_THIRD_PARTY, EPHY_PREFS_WEB_COOKIES_POLICY_NEVER @@ -60,11 +66,12 @@ typedef enum EPHY_PREFS_STATE_HISTORY_DATE_FILTER_EVER, } EphyPrefsStateHistoryDateFilter; -#define EPHY_PREFS_UI_SCHEMA "org.gnome.Epiphany.ui" -#define EPHY_PREFS_UI_ALWAYS_SHOW_TABS_BAR "always-show-tabs-bar" -#define EPHY_PREFS_UI_SHOW_TOOLBARS "show-toolbars" -#define EPHY_PREFS_UI_TOOLBAR_STYLE "toolbar-style" -#define EPHY_PREFS_UI_DOWNLOADS_HIDDEN "downloads-hidden" +#define EPHY_PREFS_UI_SCHEMA "org.gnome.Epiphany.ui" +#define EPHY_PREFS_UI_ALWAYS_SHOW_TABS_BAR "always-show-tabs-bar" +#define EPHY_PREFS_UI_SHOW_TOOLBARS "show-toolbars" +#define EPHY_PREFS_UI_TOOLBAR_STYLE "toolbar-style" +#define EPHY_PREFS_UI_DOWNLOADS_HIDDEN "downloads-hidden" +#define EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY "tabs-bar-visibility-policy" #define EPHY_PREFS_STATE_SCHEMA "org.gnome.Epiphany.state" #define EPHY_PREFS_STATE_SAVE_DIR "save-dir" diff --git a/lib/ephy-profile-migrator.c b/lib/ephy-profile-migrator.c index a37638c25..2ab42c95e 100644 --- a/lib/ephy-profile-migrator.c +++ b/lib/ephy-profile-migrator.c @@ -36,6 +36,7 @@ #include "ephy-file-helpers.h" #include "ephy-history-service.h" #include "ephy-profile-utils.h" +#include "ephy-settings.h" #ifdef ENABLE_NSS #include "ephy-nss-glue.h" #endif @@ -605,6 +606,20 @@ migrate_history () g_object_unref (history_service); } +static void +migrate_tabs_visibility () +{ + gboolean always_show_tabs; + + always_show_tabs = g_settings_get_boolean (EPHY_SETTINGS_UI, + EPHY_PREFS_UI_ALWAYS_SHOW_TABS_BAR); + + if (always_show_tabs) + g_settings_set_enum (EPHY_SETTINGS_UI, + EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY, + EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY_ALWAYS); +} + const EphyProfileMigrator migrators[] = { migrate_cookies, migrate_passwords, @@ -614,7 +629,8 @@ const EphyProfileMigrator migrators[] = { /* Very similar to migrate_passwords, but this migrates * login/passwords for page forms, which we previously ignored */ migrate_passwords2, - migrate_history + migrate_history, + migrate_tabs_visibility }; static void diff --git a/lib/ephy-profile-utils.h b/lib/ephy-profile-utils.h index e33b94633..57837c64a 100644 --- a/lib/ephy-profile-utils.h +++ b/lib/ephy-profile-utils.h @@ -26,7 +26,7 @@ #define FORM_USERNAME_KEY "form_username" #define FORM_PASSWORD_KEY "form_password" -#define EPHY_PROFILE_MIGRATION_VERSION 5 +#define EPHY_PROFILE_MIGRATION_VERSION 6 int ephy_profile_utils_get_migration_version (void); diff --git a/src/ephy-notebook.c b/src/ephy-notebook.c index db07f1ae6..22465ad43 100644 --- a/src/ephy-notebook.c +++ b/src/ephy-notebook.c @@ -400,15 +400,18 @@ update_tabs_visibility (EphyNotebook *nb, EphyEmbedShellMode mode; gboolean show_tabs; guint num; + EphyPrefsUITabsBarVisibilityPolicy policy; mode = ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (ephy_shell_get_default ())); num = gtk_notebook_get_n_pages (GTK_NOTEBOOK (nb)); if (before_inserting) num++; + policy = g_settings_get_enum (EPHY_SETTINGS_UI, + EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY); + show_tabs = mode != EPHY_EMBED_SHELL_MODE_APPLICATION && - (g_settings_get_boolean (EPHY_SETTINGS_UI, - EPHY_PREFS_UI_ALWAYS_SHOW_TABS_BAR) + (policy == EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY_ALWAYS || num > 1) && priv->show_tabs == TRUE; @@ -455,7 +458,7 @@ ephy_notebook_init (EphyNotebook *notebook) gtk_drag_dest_add_text_targets (widget); g_signal_connect (EPHY_SETTINGS_UI, - "changed::" EPHY_PREFS_UI_ALWAYS_SHOW_TABS_BAR, + "changed::" EPHY_PREFS_UI_TABS_BAR_VISIBILITY_POLICY, G_CALLBACK (show_tabs_changed_cb), notebook); } |