summaryrefslogtreecommitdiff
path: root/gtk/gtkrecentmanager.c
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2013-02-13 11:05:47 -0500
committerCosimo Cecchi <cosimoc@gnome.org>2013-02-13 12:06:43 -0500
commit382c5f63b03b8b7c6b6c9c6d24f58531804bfc3c (patch)
treefb669e8bad572b1eab550a9e6172ab0155370c50 /gtk/gtkrecentmanager.c
parentc896adc9e915afd1ed29f5f2e726a5955205dfa6 (diff)
downloadgtk+-382c5f63b03b8b7c6b6c9c6d24f58531804bfc3c.tar.gz
recentmanager: follow gtk-recent-files-enabled GtkSetting
https://bugzilla.gnome.org/show_bug.cgi?id=693724
Diffstat (limited to 'gtk/gtkrecentmanager.c')
-rw-r--r--gtk/gtkrecentmanager.c35
1 files changed, 30 insertions, 5 deletions
diff --git a/gtk/gtkrecentmanager.c b/gtk/gtkrecentmanager.c
index d6b23e7c2e..1c5a188232 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)