Web lists-archives.com

Re: Different behaviour under Wayland




I wrote:
>Firstly, when run under Wayland the application has a size slightly
>greater than its natural size.  That is, I am able to reduce its size
>manually.  Under X11 the application appears at its natural size and
>can only be made bigger manually.

I've looked into this further, new program attached.  It appears
that under Wayland the natural size of the widget (determined by
gtk_widget_get_preferred_size) is 52 pixels larger than under X11:

   $ ./tester
   window default size -1 -1
   widget min size 802 652   widget natural size 802 652
   $ GDK_BACKEND=x11 ./tester 
   window default size -1 -1
   widget min size 750 600   widget natural size 750 600

Under Wayland the window is larger when realised but it can be reduced
manually to the same size as under X11.

Adding an argument to the command changes the default size of the window
by calling:

   gtk_window_set_default_size(GTK_WINDOW(shell), 0, 0);

This reports:

   $ ./tester bodge
   window default size 1 1
   widget min size 802 652   widget natural size 802 652
   $ GDK_BACKEND=x11 ./tester bodge
   window default size 1 1
   widget min size 750 600   widget natural size 750 600

The natural sizes are unchanged but, surprisingly, in Wayland the window
is now realised at the same size as in X11.

Ron
#include <gtk/gtk.h>

int main(int argc, char **argv)
{
    GtkWidget *shell, *mainw, *graph;
	int width, height;
	GtkRequisition minsize, natsize;

	gtk_init(&argc, &argv);

	shell = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(shell), "tester");
	g_signal_connect(G_OBJECT(shell), "destroy",
						G_CALLBACK(gtk_main_quit), NULL);

	mainw = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);

	gtk_container_add(GTK_CONTAINER(shell), GTK_WIDGET(mainw));
	gtk_widget_set_name(GTK_WIDGET(mainw), "MainWindow");
	gtk_widget_show(GTK_WIDGET(mainw));

	graph = gtk_drawing_area_new();

	gtk_widget_set_size_request(GTK_WIDGET(graph), 750, 600);
	gtk_widget_set_name(GTK_WIDGET(graph), "graph");

	gtk_box_pack_start(GTK_BOX(mainw), GTK_WIDGET(graph), TRUE, TRUE, 0);
	gtk_widget_show(GTK_WIDGET(graph)) ;

	if ( argc > 1 ) {
		gtk_window_set_default_size(GTK_WINDOW(shell), 0, 0);
	}

	gtk_window_get_default_size(GTK_WINDOW(shell), &width, &height);
	fprintf(stderr, "window default size %d %d\n", width, height);

	gtk_widget_get_preferred_size(GTK_WIDGET(shell), &minsize, &natsize);
	fprintf(stderr, "widget min size %d %d   widget natural size %d %d\n",
			minsize.width, minsize.height, natsize.width, natsize.height);

	gtk_widget_show_all(shell);

	gtk_main();

    return 0;
}
_______________________________________________
gtk-list mailing list
gtk-list@xxxxxxxxx
https://mail.gnome.org/mailman/listinfo/gtk-list