summaryrefslogtreecommitdiff
path: root/gtk/gtkrecentchoosermenu.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2006-08-14 20:58:21 +0000
committerEmmanuele Bassi <ebassi@src.gnome.org>2006-08-14 20:58:21 +0000
commite4f6c9d4d00daf6bac3898e75268ebdb92bba091 (patch)
tree071c9c5f0bd7b54a77bdb16f9a39406f24ba0e0f /gtk/gtkrecentchoosermenu.c
parentf060a9866f4a1b6214ac8defd13cb875b9050630 (diff)
downloadgtk+-e4f6c9d4d00daf6bac3898e75268ebdb92bba091.tar.gz
Add a check on the filter argument, instead of blindly passing it to
2006-08-14 Emmanuele Bassi <ebassi@gnome.org> * gtk/gtkrecentchooser.c: (gtk_recent_chooser_add_filter), (gtk_recent_chooser_remove_filter), (gtk_recent_chooser_set_filter): Add a check on the filter argument, instead of blindly passing it to underlying implementation. * gtk/gtkrecentchoosermenu.c: (gtk_recent_chooser_menu_add_filter), (gtk_recent_chooser_menu_remove_filter), (gtk_recent_chooser_menu_list_filters): Implement these GtkRecentChooser methods, by setting and returning the only GtkRecentFilter object supported by a GtkRecentChooserMenu. (#347856, reported by Rod Butcher)
Diffstat (limited to 'gtk/gtkrecentchoosermenu.c')
-rw-r--r--gtk/gtkrecentchoosermenu.c39
1 files changed, 27 insertions, 12 deletions
diff --git a/gtk/gtkrecentchoosermenu.c b/gtk/gtkrecentchoosermenu.c
index 1e066744b3..6f1b636993 100644
--- a/gtk/gtkrecentchoosermenu.c
+++ b/gtk/gtkrecentchoosermenu.c
@@ -671,28 +671,40 @@ static void
gtk_recent_chooser_menu_add_filter (GtkRecentChooser *chooser,
GtkRecentFilter *filter)
{
- g_warning (_("This function is not implemented for "
- "widgets of class '%s'"),
- g_type_name (G_OBJECT_TYPE (chooser)));
+ GtkRecentChooserMenu *menu;
+
+ menu = GTK_RECENT_CHOOSER_MENU (chooser);
+
+ gtk_recent_chooser_menu_set_current_filter (menu, filter);
}
static void
gtk_recent_chooser_menu_remove_filter (GtkRecentChooser *chooser,
GtkRecentFilter *filter)
{
- g_warning (_("This function is not implemented for "
- "widgets of class '%s'"),
- g_type_name (G_OBJECT_TYPE (chooser)));
+ GtkRecentChooserMenu *menu;
+
+ menu = GTK_RECENT_CHOOSER_MENU (chooser);
+
+ if (filter == menu->priv->current_filter)
+ {
+ g_object_unref (menu->priv->current_filter);
+ menu->priv->current_filter = NULL;
+
+ g_object_notify (G_OBJECT (menu), "filter");
+ }
}
static GSList *
gtk_recent_chooser_menu_list_filters (GtkRecentChooser *chooser)
{
- g_warning (_("This function is not implemented for "
- "widgets of class '%s'"),
- g_type_name (G_OBJECT_TYPE (chooser)));
+ GtkRecentChooserMenu *menu;
+ GSList *retval = NULL;
+
+ if (menu->priv->current_filter)
+ retval = g_slist_prepend (retval, menu->priv->current_filter);
- return NULL;
+ return retval;
}
static void
@@ -706,8 +718,11 @@ gtk_recent_chooser_menu_set_current_filter (GtkRecentChooserMenu *menu,
if (priv->current_filter)
g_object_unref (G_OBJECT (priv->current_filter));
- priv->current_filter = filter;
- g_object_ref_sink (priv->current_filter);
+ if (filter)
+ {
+ priv->current_filter = filter;
+ g_object_ref_sink (priv->current_filter);
+ }
g_object_notify (G_OBJECT (menu), "filter");
}