[gtk+] recentmanager: follow gtk-recent-files-enabled GtkSetting



commit 382c5f63b03b8b7c6b6c9c6d24f58531804bfc3c
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Wed Feb 13 11:05:47 2013 -0500

    recentmanager: follow gtk-recent-files-enabled GtkSetting
    
    https://bugzilla.gnome.org/show_bug.cgi?id=693724

 gtk/gtkrecentmanager.c |   35 ++++++++++++++++++++++++++++++-----
 1 files changed, 30 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkrecentmanager.c b/gtk/gtkrecentmanager.c
index d6b23e7..1c5a188 100644
--- a/gtk/gtkrecentmanager.c
+++ b/gtk/gtkrecentmanager.c
@@ -213,6 +213,7 @@ static void     gtk_recent_manager_set_filename        (GtkRecentManager  *manag
                                                         const gchar       *filename);
 static void     gtk_recent_manager_clamp_to_age        (GtkRecentManager  *manager,
                                                         gint               age);
+static void     gtk_recent_manager_enabled_changed     (GtkRecentManager  *manager);
 
 
 static void build_recent_items_list (GtkRecentManager  *manager);
@@ -340,6 +341,7 @@ static void
 gtk_recent_manager_init (GtkRecentManager *manager)
 {
   GtkRecentManagerPrivate *priv;
+  GtkSettings *settings;
 
   manager->priv = G_TYPE_INSTANCE_GET_PRIVATE (manager,
                                                GTK_TYPE_RECENT_MANAGER,
@@ -348,6 +350,10 @@ gtk_recent_manager_init (GtkRecentManager *manager)
 
   priv->size = 0;
   priv->filename = NULL;
+
+  settings = gtk_settings_get_default ();
+  g_signal_connect_swapped (settings, "notify::gtk-recent-files-enabled",
+                            G_CALLBACK (gtk_recent_manager_enabled_changed), manager);
 }
 
 static void
@@ -438,6 +444,13 @@ gtk_recent_manager_dispose (GObject *gobject)
 }
 
 static void
+gtk_recent_manager_enabled_changed (GtkRecentManager *manager)
+{
+  manager->priv->is_dirty = TRUE;
+  gtk_recent_manager_changed (manager);
+}
+
+static void
 gtk_recent_manager_real_changed (GtkRecentManager *manager)
 {
   GtkRecentManagerPrivate *priv = manager->priv;
@@ -465,15 +478,20 @@ gtk_recent_manager_real_changed (GtkRecentManager *manager)
         {
           GtkSettings *settings = gtk_settings_get_default ();
           gint age = 30;
+          gboolean enabled;
 
-          g_object_get (G_OBJECT (settings), "gtk-recent-files-max-age", &age, NULL);
-          if (age > 0)
-            gtk_recent_manager_clamp_to_age (manager, age);
-          else if (age == 0)
+          g_object_get (G_OBJECT (settings),
+                        "gtk-recent-files-max-age", &age,
+                        "gtk-recent-files-enabled", &enabled,
+                        NULL);
+
+          if (age == 0 || !enabled)
             {
               g_bookmark_file_free (priv->recent_items);
               priv->recent_items = g_bookmark_file_new ();
             }
+          else if (age > 0)
+            gtk_recent_manager_clamp_to_age (manager, age);
         }
 
       write_error = NULL;
@@ -875,6 +893,8 @@ gtk_recent_manager_add_full (GtkRecentManager     *manager,
 			     const GtkRecentData  *data)
 {
   GtkRecentManagerPrivate *priv;
+  GtkSettings *settings;
+  gboolean enabled;
   
   g_return_val_if_fail (GTK_IS_RECENT_MANAGER (manager), FALSE);
   g_return_val_if_fail (uri != NULL, FALSE);
@@ -927,7 +947,12 @@ gtk_recent_manager_add_full (GtkRecentManager     *manager,
 		 uri);
       return FALSE;
     }
-  
+
+  settings = gtk_settings_get_default ();
+  g_object_get (G_OBJECT (settings), "gtk-recent-files-enabled", &enabled, NULL);
+  if (!enabled)
+    return TRUE;
+
   priv = manager->priv;
 
   if (!priv->recent_items)


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