diff --git a/demos/gtk-demo/clipboard.c b/demos/gtk-demo/clipboard.c
index f397285fae..fd103a676c 100644
--- a/demos/gtk-demo/clipboard.c
+++ b/demos/gtk-demo/clipboard.c
@@ -1,4 +1,5 @@
/* Clipboard
+ * #Keywords: drag-and-drop, dnd
*
* GdkClipboard is used for clipboard handling. This demo shows how to
* copy and paste text, images, colors or files to and from the clipboard.
@@ -247,6 +248,38 @@ open_file_cb (GtkWidget *button)
file_chooser_response, button);
}
+static void
+folder_chooser_response (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GtkFileDialog *dialog = GTK_FILE_DIALOG (source);
+ GtkButton *button = GTK_BUTTON (user_data);
+ GFile *file;
+
+ file = gtk_file_dialog_select_folder_finish (dialog, result, NULL);
+ if (file)
+ {
+ file_button_set_file (button, file);
+ g_object_unref (file);
+
+ update_copy_button_sensitivity (gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_STACK));
+ }
+}
+
+static void
+open_folder_cb (GtkWidget *button)
+{
+ GtkFileDialog *dialog;
+
+ dialog = gtk_file_dialog_new ();
+
+ gtk_file_dialog_select_folder (dialog,
+ GTK_WINDOW (gtk_widget_get_ancestor (button, GTK_TYPE_WINDOW)),
+ NULL,
+ NULL,
+ folder_chooser_response, button);
+}
static void
update_paste_button_sensitivity (GdkClipboard *clipboard,
GtkWidget *paste_button)
@@ -345,6 +378,7 @@ do_clipboard (GtkWidget *do_widget)
gtk_builder_cscope_add_callback (scope, source_changed_cb);
gtk_builder_cscope_add_callback (scope, text_changed_cb);
gtk_builder_cscope_add_callback (scope, open_file_cb);
+ gtk_builder_cscope_add_callback (scope, open_folder_cb);
gtk_builder_cscope_add_callback (scope, on_drop);
gtk_builder_cscope_add_callback (scope, drag_prepare);
builder = gtk_builder_new ();
diff --git a/demos/gtk-demo/clipboard.ui b/demos/gtk-demo/clipboard.ui
index 6cc7ed4324..a373537f6b 100644
--- a/demos/gtk-demo/clipboard.ui
+++ b/demos/gtk-demo/clipboard.ui
@@ -32,6 +32,7 @@
- Color
- Image
- File
+ - Folder
@@ -166,6 +167,30 @@
+
+
+
diff --git a/demos/gtk-demo/iconview_edit.c b/demos/gtk-demo/iconview_edit.c
index 83dc2b02ea..609b9b003b 100644
--- a/demos/gtk-demo/iconview_edit.c
+++ b/demos/gtk-demo/iconview_edit.c
@@ -1,4 +1,5 @@
/* Icon View/Editing and Drag-and-Drop
+ * #Keywords: dnd
*
* The GtkIconView widget supports Editing and Drag-and-Drop.
* This example also demonstrates using the generic GtkCellLayout
diff --git a/demos/gtk-demo/peg_solitaire.c b/demos/gtk-demo/peg_solitaire.c
index 913e521ff5..12ed5a439d 100644
--- a/demos/gtk-demo/peg_solitaire.c
+++ b/demos/gtk-demo/peg_solitaire.c
@@ -1,5 +1,5 @@
/* Peg Solitaire
- * #Keywords: GtkGridView, game
+ * #Keywords: GtkGridView, game, drag-and-drop, dnd
*
* This demo demonstrates how to use drag-and-drop to implement peg solitaire.
*