ui/gtk/window.c

changeset 58
0d25f15e2625
parent 56
294d5515583a
--- a/ui/gtk/window.c	Wed Oct 23 18:25:28 2024 +0200
+++ b/ui/gtk/window.c	Wed Oct 23 18:25:43 2024 +0200
@@ -610,8 +610,10 @@
 
 #if GTK_CHECK_VERSION(4, 0, 0)
 #define HEADERBAR_SHOW_CLOSEBUTTON(headerbar, set) gtk_header_bar_set_show_title_buttons(GTK_HEADER_BAR(headerbar), set)
+#define DEFAULT_BUTTON(window, button) gtk_window_set_default_widget(GTK_WINDOW(window), button)
 #else
 #define HEADERBAR_SHOW_CLOSEBUTTON(headerbar, set) gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(headerbar), set)
+#define DEFAULT_BUTTON(window, button) gtk_window_set_default(GTK_WINDOW(window), button)
 #endif
 
 
@@ -672,32 +674,36 @@
             }
             
             if(args.lbutton1) {
-                GtkWidget *button = ui_create_button(obj, args.lbutton1, NULL, args.onclick, args.onclickdata, 1);
+                GtkWidget *button = ui_create_button(obj, args.lbutton1, NULL, args.onclick, args.onclickdata, 1, args.default_button == 1);
                 gtk_header_bar_pack_start(GTK_HEADER_BAR(headerbar), button);
                 if(args.default_button == 1) {
                     WIDGET_ADD_CSS_CLASS(button, "suggested-action");
+                    DEFAULT_BUTTON(dialog, button);
                 }
             }
             if(args.lbutton2) {
-                GtkWidget *button = ui_create_button(obj, args.lbutton2, NULL, args.onclick, args.onclickdata, 2);
+                GtkWidget *button = ui_create_button(obj, args.lbutton2, NULL, args.onclick, args.onclickdata, 2, args.default_button == 2);
                 gtk_header_bar_pack_start(GTK_HEADER_BAR(headerbar), button);
                 if(args.default_button == 2) {
                     WIDGET_ADD_CSS_CLASS(button, "suggested-action");
+                    DEFAULT_BUTTON(dialog, button);
                 }
             }
             
             if(args.rbutton4) {
-                GtkWidget *button = ui_create_button(obj, args.rbutton4, NULL, args.onclick, args.onclickdata, 4);
+                GtkWidget *button = ui_create_button(obj, args.rbutton4, NULL, args.onclick, args.onclickdata, 4, args.default_button == 4);
                 gtk_header_bar_pack_end(GTK_HEADER_BAR(headerbar), button);
                 if(args.default_button == 4) {
                     WIDGET_ADD_CSS_CLASS(button, "suggested-action");
+                    DEFAULT_BUTTON(dialog, button);
                 }
             }
             if(args.rbutton3) {
-                GtkWidget *button = ui_create_button(obj, args.rbutton3, NULL, args.onclick, args.onclickdata, 3);
+                GtkWidget *button = ui_create_button(obj, args.rbutton3, NULL, args.onclick, args.onclickdata, 3, args.default_button == 3);
                 gtk_header_bar_pack_end(GTK_HEADER_BAR(headerbar), button);
                 if(args.default_button == 3) {
                     WIDGET_ADD_CSS_CLASS(button, "suggested-action");
+                    DEFAULT_BUTTON(dialog, button);
                 }
             }
             WINDOW_SET_CONTENT(obj->widget, content_vbox);
@@ -714,23 +720,39 @@
         gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE); 
         
         if(args.lbutton1) {
-            GtkWidget *button = ui_create_button(obj, args.lbutton1, NULL, args.onclick, args.onclickdata, 1);
+            GtkWidget *button = ui_create_button(obj, args.lbutton1, NULL, args.onclick, args.onclickdata, 1, args.default_button == 1);
             gtk_grid_attach(GTK_GRID(grid), button, 0, 0, 1, 1);
+            if(args.default_button == 1) {
+                WIDGET_ADD_CSS_CLASS(button, "suggested-action");
+                DEFAULT_BUTTON(dialog, button);
+            }
         }
         if(args.lbutton2) {
-            GtkWidget *button = ui_create_button(obj, args.lbutton2, NULL, args.onclick, args.onclickdata, 2);
+            GtkWidget *button = ui_create_button(obj, args.lbutton2, NULL, args.onclick, args.onclickdata, 2, args.default_button == 2);
             gtk_grid_attach(GTK_GRID(grid), button, 1, 0, 1, 1);
+            if(args.default_button == 2) {
+                WIDGET_ADD_CSS_CLASS(button, "suggested-action");
+                DEFAULT_BUTTON(dialog, button);
+            }
         }
         GtkWidget *space = gtk_label_new(NULL);
         gtk_widget_set_hexpand(space, TRUE);
         gtk_grid_attach(GTK_GRID(grid), space, 2, 0, 1, 1);
         if(args.rbutton3) {
-            GtkWidget *button = ui_create_button(obj, args.rbutton3, NULL, args.onclick, args.onclickdata, 3);
+            GtkWidget *button = ui_create_button(obj, args.rbutton3, NULL, args.onclick, args.onclickdata, 3, args.default_button == 3);
             gtk_grid_attach(GTK_GRID(grid), button, 3, 0, 1, 1);
+            if(args.default_button == 3) {
+                WIDGET_ADD_CSS_CLASS(button, "suggested-action");
+                DEFAULT_BUTTON(dialog, button);
+            }
         }
-        if(args.rbutton3) {
-            GtkWidget *button = ui_create_button(obj, args.rbutton4, NULL, args.onclick, args.onclickdata, 4);
+        if(args.rbutton4) {
+            GtkWidget *button = ui_create_button(obj, args.rbutton4, NULL, args.onclick, args.onclickdata, 4, args.default_button == 4);
             gtk_grid_attach(GTK_GRID(grid), button, 4, 0, 1, 1);
+            if(args.default_button == 4) {
+                WIDGET_ADD_CSS_CLASS(button, "suggested-action");
+                DEFAULT_BUTTON(dialog, button);
+            }
         }
         
         BOX_ADD_EXPAND(vbox, content_vbox);   

mercurial