mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-15 21:20:09 +00:00
9bcf401ef7
This is not reproducing the failure I'm after, unfortunately.
84 lines
1.9 KiB
C
84 lines
1.9 KiB
C
#include <stdlib.h>
|
|
|
|
#include <gtk/gtk.h>
|
|
|
|
static void
|
|
text_received (GObject *source,
|
|
GAsyncResult *res,
|
|
gpointer data)
|
|
{
|
|
GdkClipboard *clipboard = GDK_CLIPBOARD (source);
|
|
gboolean *done = data;
|
|
GError *error = NULL;
|
|
char *text;
|
|
|
|
text = gdk_clipboard_read_text_finish (clipboard, res, &error);
|
|
|
|
g_assert_no_error (error);
|
|
g_assert_cmpstr (text, ==, "testing, 1, 2");
|
|
|
|
g_free (text);
|
|
|
|
*done = TRUE;
|
|
|
|
g_main_context_wakeup (NULL);
|
|
}
|
|
|
|
static void
|
|
test_clipboard_basic (void)
|
|
{
|
|
GdkDisplay *display;
|
|
GdkClipboard *clipboard;
|
|
GdkContentFormats *formats;
|
|
GdkContentProvider *content;
|
|
gboolean done;
|
|
gboolean ret;
|
|
GValue value = G_VALUE_INIT;
|
|
GError *error = NULL;
|
|
|
|
display = gdk_display_get_default ();
|
|
clipboard = gdk_display_get_clipboard (display);
|
|
|
|
g_assert_true (gdk_clipboard_get_display (clipboard) == display);
|
|
|
|
gdk_clipboard_set_text (clipboard, "testing, 1, 2");
|
|
|
|
g_assert_true (gdk_clipboard_is_local (clipboard));
|
|
|
|
formats = gdk_clipboard_get_formats (clipboard);
|
|
|
|
g_assert_true (gdk_content_formats_contain_gtype (formats, G_TYPE_STRING));
|
|
g_assert_true (gdk_content_formats_contain_mime_type (formats, "text/plain"));
|
|
|
|
done = FALSE;
|
|
|
|
gdk_clipboard_read_text_async (clipboard, NULL, text_received, &done);
|
|
|
|
while (!done)
|
|
g_main_context_iteration (NULL, TRUE);
|
|
|
|
content = gdk_clipboard_get_content (clipboard);
|
|
g_assert_nonnull (content);
|
|
|
|
g_value_init (&value, G_TYPE_STRING);
|
|
ret = gdk_content_provider_get_value (content, &value, &error);
|
|
g_assert_true (ret);
|
|
g_assert_no_error (error);
|
|
g_assert_true (G_VALUE_TYPE (&value) == G_TYPE_STRING);
|
|
g_assert_cmpstr (g_value_get_string (&value), ==, "testing, 1, 2");
|
|
|
|
g_value_unset (&value);
|
|
}
|
|
|
|
int
|
|
main (int argc, char *argv[])
|
|
{
|
|
g_test_init (&argc, &argv, NULL);
|
|
|
|
gtk_init ();
|
|
|
|
g_test_add_func ("/clipboard/basic", test_clipboard_basic);
|
|
|
|
return g_test_run ();
|
|
}
|