[epiphany] Create a new 'tabs-bar-visibility-policy' setting



commit 954fd17d06fe9453c355223d66207b23f359665b
Author: Xan Lopez <xan igalia com>
Date:   Mon Apr 16 13:41:52 2012 +0200

    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.

 data/org.gnome.epiphany.gschema.xml |    9 +++++++--
 lib/ephy-prefs.h                    |   17 ++++++++++++-----
 lib/ephy-profile-migrator.c         |   18 +++++++++++++++++-
 lib/ephy-profile-utils.h            |    2 +-
 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 3ceee40..69386bd 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 9c74deb..a510f65 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 a37638c..2ab42c9 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 e33b946..57837c6 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 db07f1a..22465ad 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);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]