diff --git a/ChangeLog b/ChangeLog index 6284be3f51..3a838684e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,7 +2,15 @@ Merge from trunk: - * gtk/gtkfilechooserdefault.c: Add a keybinding to + * gtk/gtkfilechooserdefault.c: Add a keybinding (C-h) to + toggle whether to show hidden files. (#344657, + Wouter Bolsterlee, Priit Laes, et al) + +2007-03-23 Matthias Clasen + + Merge from trunk: + + * gtk/gtkfilechooserdefault.c: Add a keybinding (C-l) to toggle the visibility of the location entry. (#383354, John Pye, patch by Carlos Garnacho) diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index d379367b1d..88ce2f35b8 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -80,7 +80,6 @@ #include #include - #ifdef HAVE_UNISTD_H #include @@ -138,7 +137,7 @@ _gtk_file_chooser_profile_log (const char *func, int indent, const char *msg1, c #define profile_msg(x, y) #endif - + typedef struct _GtkFileChooserDefaultClass GtkFileChooserDefaultClass; @@ -163,6 +162,7 @@ enum { DESKTOP_FOLDER, QUICK_BOOKMARK, LOCATION_TOGGLE_POPUP, + SHOW_HIDDEN, LAST_SIGNAL }; @@ -325,6 +325,7 @@ static void home_folder_handler (GtkFileChooserDefault *impl); static void desktop_folder_handler (GtkFileChooserDefault *impl); static void quick_bookmark_handler (GtkFileChooserDefault *impl, gint bookmark_index); +static void show_hidden_handler (GtkFileChooserDefault *impl); static void update_appearance (GtkFileChooserDefault *impl); static void set_current_filter (GtkFileChooserDefault *impl, @@ -452,7 +453,7 @@ static GtkTreeModel *shortcuts_model_filter_new (GtkFileChooserDefault *impl, GtkTreeModel *child_model, GtkTreePath *root); - + G_DEFINE_TYPE_WITH_CODE (GtkFileChooserDefault, _gtk_file_chooser_default, GTK_TYPE_VBOX, G_IMPLEMENT_INTERFACE (GTK_TYPE_FILE_CHOOSER, @@ -548,6 +549,14 @@ _gtk_file_chooser_default_class_init (GtkFileChooserDefaultClass *class) NULL, NULL, _gtk_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT); + signals[SHOW_HIDDEN] = + _gtk_binding_signal_new ("show-hidden", + G_OBJECT_CLASS_TYPE (class), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + G_CALLBACK (show_hidden_handler), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); binding_set = gtk_binding_set_by_class (class); @@ -576,7 +585,6 @@ _gtk_file_chooser_default_class_init (GtkFileChooserDefaultClass *class) GDK_v, GDK_CONTROL_MASK, "location-popup-on-paste", 0); - gtk_binding_entry_add_signal (binding_set, GDK_Up, GDK_MOD1_MASK, "up-folder", @@ -611,6 +619,10 @@ _gtk_file_chooser_default_class_init (GtkFileChooserDefaultClass *class) GDK_d, GDK_MOD1_MASK, "desktop-folder", 0); + gtk_binding_entry_add_signal (binding_set, + GDK_h, GDK_CONTROL_MASK, + "show-hidden", + 0); for (i = 0; i < 10; i++) gtk_binding_entry_add_signal (binding_set, @@ -8736,7 +8748,14 @@ quick_bookmark_handler (GtkFileChooserDefault *impl, switch_to_shortcut (impl, bookmark_pos); } - +static void +show_hidden_handler (GtkFileChooserDefault *impl) +{ + g_object_set (impl, + "show-hidden", !impl->show_hidden, + NULL); +} + /* Drag and drop interfaces */