tAdd GTK+3 support for label mnemonics - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 65604cd8b7f5b777ebbb06e0b2c8b8188824ec93
(DIR) parent 8eb75d2a1f40c9d0733596a960edcf2c7ef76c37
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Wed, 25 Nov 2020 14:03:53 -0800
Add GTK+3 support for label mnemonics
Use new functions to support keyboard accelerators for
GtkLabels. These should in principle work in both GTK+2
and GTK+3, but in my testing they don't seem to work on
GTK+2 (at least on Mac) so keep the old code path there.
Diffstat:
M src/gtkport/gtkport.c | 10 ++++++++++
M src/gui_client/newgamedia.c | 10 ++++++++++
2 files changed, 20 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/src/gtkport/gtkport.c b/src/gtkport/gtkport.c
t@@ -5221,6 +5221,7 @@ guint SetAccelerator(GtkWidget *labelparent, gchar *Text,
GtkWidget *sendto, gchar *signal,
GtkAccelGroup *accel_group, gboolean needalt)
{
+#if GTK_MAJOR_VERSION == 2
guint AccelKey;
AccelKey =
t@@ -5231,6 +5232,15 @@ guint SetAccelerator(GtkWidget *labelparent, gchar *Text,
GTK_ACCEL_VISIBLE);
}
return AccelKey;
+#else
+ gtk_label_set_text_with_mnemonic(
+ GTK_LABEL(gtk_bin_get_child(GTK_BIN(labelparent))), Text);
+ if (sendto) {
+ gtk_label_set_mnemonic_widget(
+ GTK_LABEL(gtk_bin_get_child(GTK_BIN(labelparent))), sendto);
+ }
+ return 0;
+#endif
}
GtkWidget *gtk_scrolled_text_view_new(GtkWidget **pack_widg)
(DIR) diff --git a/src/gui_client/newgamedia.c b/src/gui_client/newgamedia.c
t@@ -463,7 +463,9 @@ void NewGameDialog(Player *play)
GtkWidget *vbox, *vbox2, *hbox, *label, *entry, *notebook;
GtkWidget *frame, *button, *dialog;
GtkAccelGroup *accel_group;
+#if GTK_MAJOR_VERSION == 2
guint AccelKey;
+#endif
#ifdef NETWORKING
GtkWidget *clist, *scrollwin, *table, *hbbox, *defbutton;
t@@ -501,15 +503,23 @@ void NewGameDialog(Player *play)
label = gtk_label_new("");
+#if GTK_MAJOR_VERSION == 2
AccelKey = gtk_label_parse_uline(GTK_LABEL(label),
+#else
+ gtk_label_set_text_with_mnemonic(GTK_LABEL(label),
+#endif
/* Prompt for player's name in 'New
Game' dialog */
_("Hey dude, what's your _name?"));
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
entry = stgam.name = gtk_entry_new();
+#if GTK_MAJOR_VERSION == 2
gtk_widget_add_accelerator(entry, "grab-focus", accel_group, AccelKey,
GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
+#else
+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry);
+#endif
gtk_entry_set_text(GTK_ENTRY(entry), GetPlayerName(stgam.play));
gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);