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 @@ + + + Folder + + + + + capture + + + + center + + + + 0 + start + + + + + + + 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. *