tests: Open a 2nd display in testclipboard2

This allows testing local transfer of data as well as remote transfer
(by transferring data between clipboards of both Displays).
This commit is contained in:
Benjamin Otte 2017-11-25 22:54:32 +01:00
parent 134076e738
commit 6fffa5b171

View File

@ -167,7 +167,8 @@ add_provider_button (GtkWidget *box,
} }
static GtkWidget * static GtkWidget *
get_button_list (GdkClipboard *clipboard) get_button_list (GdkClipboard *clipboard,
const char *info)
{ {
static const guchar invalid_utf8[] = { 'L', 'i', 'b', 'e', 'r', 't', 0xe9, ',', ' ', static const guchar invalid_utf8[] = { 'L', 'i', 'b', 'e', 'r', 't', 0xe9, ',', ' ',
0xc9, 'g', 'a', 'l', 'i', 't', 0xe9, ',', ' ', 0xc9, 'g', 'a', 'l', 'i', 't', 0xe9, ',', ' ',
@ -177,7 +178,7 @@ get_button_list (GdkClipboard *clipboard)
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (box), gtk_label_new ("Set Clipboard:")); gtk_container_add (GTK_CONTAINER (box), gtk_label_new (info));
add_provider_button (box, add_provider_button (box,
NULL, NULL,
@ -220,6 +221,7 @@ get_button_list (GdkClipboard *clipboard)
static GtkWidget * static GtkWidget *
get_clipboard_widget (GdkClipboard *clipboard, get_clipboard_widget (GdkClipboard *clipboard,
GdkClipboard *alt_clipboard,
const char *name) const char *name)
{ {
GtkWidget *vbox, *hbox, *stack, *switcher; GtkWidget *vbox, *hbox, *stack, *switcher;
@ -233,23 +235,28 @@ get_clipboard_widget (GdkClipboard *clipboard,
stack = get_contents_widget (clipboard); stack = get_contents_widget (clipboard);
gtk_container_add (GTK_CONTAINER (vbox), stack); gtk_container_add (GTK_CONTAINER (vbox), stack);
gtk_stack_switcher_set_stack (GTK_STACK_SWITCHER (switcher), GTK_STACK (stack)); gtk_stack_switcher_set_stack (GTK_STACK_SWITCHER (switcher), GTK_STACK (stack));
gtk_container_add (GTK_CONTAINER (hbox), get_button_list (clipboard)); gtk_container_add (GTK_CONTAINER (hbox), get_button_list (clipboard, "Set Locally:"));
if (clipboard != alt_clipboard)
gtk_container_add (GTK_CONTAINER (hbox), get_button_list (alt_clipboard, "Set Remotely:"));
return hbox; return hbox;
} }
static GtkWidget * static GtkWidget *
get_window_contents (GdkDisplay *display) get_window_contents (GdkDisplay *display,
GdkDisplay *alt_display)
{ {
GtkWidget *box; GtkWidget *box;
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_set_homogeneous (GTK_BOX (box), TRUE); gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
gtk_container_add (GTK_CONTAINER (box), gtk_container_add (GTK_CONTAINER (box),
get_clipboard_widget (gdk_display_get_clipboard (display), get_clipboard_widget (gdk_display_get_clipboard (display),
gdk_display_get_clipboard (alt_display),
"Clipboard")); "Clipboard"));
gtk_container_add (GTK_CONTAINER (box), gtk_container_add (GTK_CONTAINER (box),
get_clipboard_widget (gdk_display_get_primary_clipboard (display), get_clipboard_widget (gdk_display_get_primary_clipboard (display),
gdk_display_get_primary_clipboard (alt_display),
"Primary Clipboard")); "Primary Clipboard"));
return box; return box;
@ -259,12 +266,19 @@ int
main (int argc, char **argv) main (int argc, char **argv)
{ {
GtkWidget *window; GtkWidget *window;
GdkDisplay *alt_display;
gtk_init (); gtk_init ();
alt_display = gdk_display_open (NULL);
if (alt_display == NULL)
alt_display = gdk_display_get_default ();
window = gtk_window_new (GTK_WINDOW_TOPLEVEL); window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_container_add (GTK_CONTAINER (window), get_window_contents (gtk_widget_get_display (window))); gtk_container_add (GTK_CONTAINER (window),
get_window_contents (gtk_widget_get_display (window),
alt_display));
gtk_widget_show (window); gtk_widget_show (window);