Commit 954fd17d authored by Xan Lopez's avatar Xan Lopez
Browse files

Create a new 'tabs-bar-visibility-policy' setting

We need this to be an enum, since we'll a third option in the future
for the Overview (to never show the tabs bar). For now just add the
two values we have now and migrate the code and the user data.
parent 6ca35105
......@@ -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">
......
......@@ -43,6 +43,12 @@ typedef enum
EPHY_PREFS_RESTORE_SESSION_POLICY_CRASHED
} EphyPrefsRestoreSessionPolicy;
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,
......@@ -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"
......
......@@ -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
......
......@@ -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);
......
......@@ -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);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment