Sorry, there was a typo in one of the button labels on the original
patch here. Please use this new attached patch instead.
>From 1000f53010e858a23d7a24f3a6c063a3d9ae7318 Mon Sep 17 00:00:00 2001
From: Nikolas Nyby <[email protected]>
Date: Fri, 8 May 2026 20:06:54 -0400
Subject: [PATCH] GTK3 fix: Migrate off of DialogArea(... DA_BUTTONS)
gtk_dialog_add_button() is available in GTK 2.14 and later - I don't
think we need to worry about older GTK than that at this point so I did
not bother with version guards there.
---
gtkgame.c | 29 +++++++++++++----------------
gtkrelational.c | 16 +++++++++++-----
2 files changed, 24 insertions(+), 21 deletions(-)
diff --git a/gtkgame.c b/gtkgame.c
index 772c2c2e..00becfd4 100644
--- a/gtkgame.c
+++ b/gtkgame.c
@@ -4544,7 +4544,7 @@ extern int
GtkTutor(char *sz)
{
int f = FALSE;
- GtkWidget *pwTutorDialog, *pwOK, *pwCancel, *pwEndTutor, *pwButtons, *pwPrompt, *pwHint;
+ GtkWidget *pwTutorDialog, *pwOK, *pwCancel, *pwEndTutor, *pwPrompt, *pwHint;
pwTutorDialog = GTKCreateDialog(_("GNU Backgammon - Tutor"),
DT_CUSTOM, NULL, DIALOG_FLAG_MODAL, G_CALLBACK(OK), (void *) &f);
@@ -4552,18 +4552,15 @@ GtkTutor(char *sz)
pwOK = DialogArea(pwTutorDialog, DA_OK);
gtk_button_set_label(GTK_BUTTON(pwOK), _("Play Anyway"));
- pwCancel = gtk_button_new_with_label(_("Rethink"));
- pwEndTutor = gtk_button_new_with_label(_("End Tutor Mode"));
- pwHint = gtk_button_new_with_label(_("Hint"));
- pwButtons = DialogArea(pwTutorDialog, DA_BUTTONS);
+ pwCancel = gtk_dialog_add_button(
+ GTK_DIALOG(pwTutorDialog), _("Rethink"), 1);
+ pwEndTutor = gtk_dialog_add_button(
+ GTK_DIALOG(pwTutorDialog), _("End Tutor Mode"), 2);
+ pwHint = gtk_dialog_add_button(
+ GTK_DIALOG(pwTutorDialog), _("Hint"), 3);
- gtk_container_add(GTK_CONTAINER(pwButtons), pwCancel);
g_signal_connect(G_OBJECT(pwCancel), "clicked", G_CALLBACK(TutorRethink), (void *) &f);
-
- gtk_container_add(GTK_CONTAINER(pwButtons), pwEndTutor);
g_signal_connect(G_OBJECT(pwEndTutor), "clicked", G_CALLBACK(TutorEnd), (void *) &f);
-
- gtk_container_add(GTK_CONTAINER(pwButtons), pwHint);
g_signal_connect(G_OBJECT(pwHint), "clicked", G_CALLBACK(TutorHint), (void *) &f);
pwPrompt = gtk_label_new(sz);
@@ -5704,12 +5701,12 @@ SetRollouts(gpointer UNUSED(p), guint UNUSED(n), GtkWidget * UNUSED(pwIgnore))
pwDialog = GTKCreateDialog(_("GNU Backgammon - Rollouts"), DT_QUESTION,
NULL, DIALOG_FLAG_MODAL, G_CALLBACK(SetRolloutsOK), &rw);
- gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_BUTTONS)),
- saveAsButton = gtk_button_new_with_label(_("Save As")));
+ saveAsButton = gtk_dialog_add_button(
+ GTK_DIALOG(pwDialog), _("Save As"), 1);
g_signal_connect(saveAsButton, "clicked", G_CALLBACK(save_rollout_as_clicked), &rw);
- gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_BUTTONS)),
- loadRSButton = gtk_button_new_with_label(_("Load")));
+ loadRSButton = gtk_dialog_add_button(
+ GTK_DIALOG(pwDialog), _("Load"), 2);
g_signal_connect(loadRSButton, "clicked", G_CALLBACK(load_rs_clicked), &rw);
gtk_container_add(GTK_CONTAINER(DialogArea(pwDialog, DA_MAIN)), rw.RolloutNotebook = gtk_notebook_new());
@@ -7668,8 +7665,8 @@ GTKDumpStatcontext(int game)
// pwStatDialog = GTKCreateDialog("", DT_INFO, NULL, DIALOG_FLAG_NONE, G_CALLBACK(gtk_widget_destroy), NULL);
if (!fAutoDB) {
- gtk_container_add(GTK_CONTAINER(DialogArea(pwStatDialog, DA_BUTTONS)),
- addToDbButton = gtk_button_new_with_label(_("Add to DB")));
+ addToDbButton = gtk_dialog_add_button(
+ GTK_DIALOG(pwStatDialog), _("Add to DB"), 1);
g_signal_connect(addToDbButton, "clicked", G_CALLBACK(GtkRelationalAddMatch), pwStatDialog);
}
diff --git a/gtkrelational.c b/gtkrelational.c
index 6b32550d..f43ffaf2 100644
--- a/gtkrelational.c
+++ b/gtkrelational.c
@@ -525,11 +525,17 @@ static void CreateHistoryWindow (void) //GtkWidget* pwParent) {
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_widget_destroy), NULL);
- gtk_container_add(GTK_CONTAINER(DialogArea(window, DA_BUTTONS)),
- helpButton = gtk_button_new_with_label(_("Explanations")));
- gtk_widget_set_tooltip_text(helpButton,
- _("Click to obtain more explanations on this History plot"));
- g_signal_connect(helpButton, "clicked", G_CALLBACK(HistoryPlotInfo), window);
+ helpButton = gtk_button_new_with_label(_("Explanations"));
+
+ gtk_widget_set_tooltip_text(
+ helpButton,
+ _("Click to obtain more explanations on this History plot"));
+
+ gtk_dialog_add_action_widget(
+ GTK_DIALOG(window), helpButton, GTK_RESPONSE_NONE);
+
+ g_signal_connect(
+ helpButton, "clicked", G_CALLBACK(HistoryPlotInfo), window);
da = gtk_drawing_area_new();
gtk_container_add(GTK_CONTAINER(DialogArea(window, DA_MAIN)), da);
--
2.54.0