I just tried the Nim GTK4 version of
The C one is still GTK3, I was not able to find a GTK4 variant, so I did the small fixes myself:
// https://www.gtk.org/docs/getting-started/hello-world/
// gcc -Wall hello-world-gtk.c -o hello-world-gtk `pkg-config --cflags --libs gtk4`
#include <gtk/gtk.h>
static void
print_hello (GtkWidget *widget,
gpointer data)
{
g_print ("Hello World\n");
}
static void
activate (GtkApplication *app,
gpointer user_data)
{
GtkWidget *window;
GtkWidget *button;
GtkWidget *button_box;
window = gtk_application_window_new (app);
gtk_window_set_title (GTK_WINDOW (window), "Window");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
button_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
gtk_window_set_child (GTK_WINDOW (window), button_box);
button = gtk_button_new_with_label ("Hello World");
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_destroy), window);
gtk_box_append (GTK_BOX (button_box), button);
gtk_widget_show (window);
}
int
main (int argc,
char **argv)
{
GtkApplication *app;
int status;
app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);
return status;
}
Well works, but the box layout looks not that nice centered. I wonder what happened with
https://developer.gnome.org/gtk3/stable/GtkButtonBox.html
in GTK4.
Another question: For top level GTK3 windows we can resize them generally by grabbing the borders, and when mouse hovers over border the mouse pointer is changed to indicate that we can do resize.
For above code I can grab the window border only on left or top border and do resize. No chance on right side or bottom. And even on left side and top mouse pointer does not change when hovering over window border, but only when I press left mouse button. Is that intended? It is for Gnome wayland.
[EDIT]
Oh, I finally found the GTK4 version:
But above questions remain…