summaryrefslogtreecommitdiff
path: root/tests/simple.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/simple.c')
-rw-r--r--tests/simple.c67
1 files changed, 61 insertions, 6 deletions
diff --git a/tests/simple.c b/tests/simple.c
index 63ae18f2f6..17991b3465 100644
--- a/tests/simple.c
+++ b/tests/simple.c
@@ -20,15 +20,59 @@
void
-hello (void)
+copy (void)
{
- g_print ("hello world\n");
+ GdkClipboard *clipboard = gdk_display_get_clipboard (gdk_display_get_default ());
+ GFile *file = g_file_new_for_path ("/home/mclasen/faw-sig");
+
+ gdk_clipboard_set (clipboard, G_TYPE_FILE, file);
+
+ g_object_unref (file);
+}
+
+static void
+value_received (GObject *object,
+ GAsyncResult *result,
+ gpointer data)
+{
+ const GValue *value;
+ GError *error = NULL;
+ GSList *l;
+
+ value = gdk_clipboard_read_value_finish (GDK_CLIPBOARD (object), result, &error);
+ if (value == NULL)
+ {
+ g_print ("Failed to read: %s\n", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ for (l = g_value_get_boxed (value); l; l = l->next)
+ g_print ("%s\n", g_file_get_path (l->data));
+}
+
+void
+paste (void)
+{
+ GdkClipboard *clipboard = gdk_display_get_clipboard (gdk_display_get_default ());
+
+ gdk_clipboard_read_value_async (clipboard, GDK_TYPE_FILE_LIST, 0, NULL, value_received, NULL);
+
+}
+
+static void
+clipboard_changed (GdkClipboard *clipboard)
+{
+ GdkContentFormats *formats = gdk_clipboard_get_formats (clipboard);
+ g_autofree char *s = gdk_content_formats_to_string (formats);
+ g_print ("clipboard contents now: %s, local: %d\n", s, gdk_clipboard_is_local (clipboard));
}
int
main (int argc, char *argv[])
{
- GtkWidget *window, *button;
+ GtkWidget *window, *button, *box;
+ GdkClipboard *clipboard;
gtk_init ();
@@ -37,11 +81,22 @@ main (int argc, char *argv[])
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
+ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+
button = gtk_button_new ();
- gtk_button_set_label (GTK_BUTTON (button), "hello world");
- g_signal_connect (button, "clicked", G_CALLBACK (hello), NULL);
+ gtk_button_set_label (GTK_BUTTON (button), "copy");
+ g_signal_connect (button, "clicked", G_CALLBACK (copy), NULL);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ button = gtk_button_new ();
+ gtk_button_set_label (GTK_BUTTON (button), "paste");
+ g_signal_connect (button, "clicked", G_CALLBACK (paste), NULL);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ gtk_container_add (GTK_CONTAINER (window), box);
- gtk_container_add (GTK_CONTAINER (window), button);
+ clipboard = gdk_display_get_clipboard (gdk_display_get_default ());
+ g_signal_connect (clipboard, "changed", G_CALLBACK (clipboard_changed), NULL);
gtk_widget_show (window);