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);