GTK dialog not correctly centered on Microsoft Windows
On Microsoft Windows, transient dialogs are note correctly centered on their parent window.
Steps to reproduce
- On Microsoft Windows, create file
prog.c
:
#include <gtk/gtk.h>
GtkWidget* window = NULL;
static void show_dialog_cb(GtkWidget* button){
GtkWidget* dialog = gtk_dialog_new();
gtk_window_set_default_size (GTK_WINDOW (dialog), 200, 100);
gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(window));
//gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
gtk_window_set_destroy_with_parent (GTK_WINDOW(dialog), TRUE);
gtk_widget_show (dialog);
}
static void my_application_activate_cb(GApplication* my_application, gpointer user_data) {
window = gtk_application_window_new(GTK_APPLICATION(my_application));
gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
gtk_widget_show(window);
gchar* title = g_strdup_printf("GTK %i.%i.%i", gtk_get_major_version(), gtk_get_minor_version(), gtk_get_micro_version());
gtk_window_set_title(GTK_WINDOW(window), title);
g_free(title);
GtkWidget* button = gtk_button_new_with_label("Show dialog");
g_signal_connect(button, "clicked", G_CALLBACK(show_dialog_cb), NULL);
gtk_widget_show(button);
#if (GTK_MAJOR_VERSION == 3)
gtk_container_add(GTK_CONTAINER(window), button);
#elif (GTK_MAJOR_VERSION == 4)
gtk_window_set_child(GTK_WINDOW(window), button);
#else
#error("not supported")
#endif
}
int main( int argc, char *argv[] ) {
GtkApplication* my_application = gtk_application_new(NULL, G_APPLICATION_FLAGS_NONE);
g_signal_connect (my_application, "activate", G_CALLBACK (my_application_activate_cb), NULL);
int status = g_application_run(G_APPLICATION(my_application), argc, argv);
g_object_unref(my_application);
return status;
}
- Compile this file with GTK3 and GTK4 :
$ gcc -o prog-gtk4 prog.c `pkg-config.exe gtk4 --cflags --libs` -w -mwindows
$ gcc -o prog-gtk3 prog.c `pkg-config.exe gtk+-3.0 --cflags --libs` -w -mwindows
- start
prog-gtk3.exe
andprog-gtk4.exe
programs. - click on the Show Dialog button.
Current behavior
On GTK 4.0.3, dialog window is not centered on it's parent window :
Expected outcome
Dialog should be centered like in GTK 3.24.26 :
Version information
- GTK 4.0.3
- Microsoft Windows 10
- MinGW64