Bug #1489 » 1489-S3_3+Main.patch
| 1489-S3_1+S3_2.patch | ||
|---|---|---|
| From fd92784ccd6310921f6173735ba46735b368596b Mon Sep 17 00:00:00 2001 | ||
| From: Dino <macwiz23@comcast.net> | ||
| Date: Sat, 7 Jun 2025 20:08:14 -0400 | ||
| Subject: [PATCH] #1489, handle_edit_key_press() needs to handle platform | ||
|  specific ctrl/meta modifier. Macro for platform specific menu accelerator | ||
|  modifier keys moved from menu,c to gui_main.h. | ||
| --- | ||
|  client/gui-gtk-3.22/editgui.c  |  6 ++++-- | ||
|  client/gui-gtk-3.22/gui_main.h |  7 +++++++ | ||
|  client/gui-gtk-3.22/menu.c     |  8 -------- | ||
|  client/gui-gtk-4.0/editgui.c   |  4 +++- | ||
|  client/gui-gtk-4.0/gui_main.h  | 10 ++++++++++ | ||
|  client/gui-gtk-4.0/menu.c      |  8 -------- | ||
|  6 files changed, 24 insertions(+), 19 deletions(-) | ||
| diff --git a/client/gui-gtk-3.22/editgui.c b/client/gui-gtk-3.22/editgui.c | ||
| index 75ed1ac454..35e1df638e 100644 | ||
| --- a/client/gui-gtk-3.22/editgui.c | ||
| +++ b/client/gui-gtk-3.22/editgui.c | ||
| @@ -1602,6 +1602,7 @@ static void editinfobox_refresh(struct editinfobox *ei) | ||
|  | ||
|  /************************************************************************//** | ||
|    Handle ctrl+[key] combinations. | ||
| +  Mac only - Handle meta+[key] combinations. | ||
|  ****************************************************************************/ | ||
|  static gboolean handle_edit_key_press_with_ctrl(GdkEventKey *ev) | ||
|  { | ||
| @@ -1663,9 +1664,10 @@ gboolean handle_edit_key_press(GdkEventKey *ev) | ||
|  { | ||
|    enum editor_tool_type ett, new_ett = NUM_EDITOR_TOOL_TYPES; | ||
|  | ||
| -  /* Check ctrl before shift - this is correct also for the case where | ||
| +  /* Check ctrl/meta before shift - this is correct also for the case where | ||
|     * they are both active. */ | ||
| -  if (ev->state & GDK_CONTROL_MASK) { | ||
| +  /* ACCL_MOD_KEY is GDK_META_MASK on Mac, else GDK_CONTROL_MASK */ | ||
| +  if (ev->state & ACCL_MOD_KEY) { | ||
|      return handle_edit_key_press_with_ctrl(ev); | ||
|    } | ||
|  | ||
| diff --git a/client/gui-gtk-3.22/gui_main.h b/client/gui-gtk-3.22/gui_main.h | ||
| index 8f7f665429..061aad71b2 100644 | ||
| --- a/client/gui-gtk-3.22/gui_main.h | ||
| +++ b/client/gui-gtk-3.22/gui_main.h | ||
| @@ -19,6 +19,13 @@ | ||
|  #include "gui_main_g.h" | ||
|  #include "options.h" | ||
|  | ||
| +/* Mac uses "command"/"meta" key for menu accelerator modifier key */ | ||
| +#ifdef __APPLE__ | ||
| +#define ACCL_MOD_KEY GDK_META_MASK | ||
| +#else | ||
| +#define ACCL_MOD_KEY GDK_CONTROL_MASK | ||
| +#endif | ||
| + | ||
|  #define GUI_NAME_FULL  "gui-gtk-3.22" | ||
|  #define GUI_NAME_SHORT "gtk3.22" | ||
|  | ||
| diff --git a/client/gui-gtk-3.22/menu.c b/client/gui-gtk-3.22/menu.c | ||
| index acfadeb3ea..a5ef17ff20 100644 | ||
| --- a/client/gui-gtk-3.22/menu.c | ||
| +++ b/client/gui-gtk-3.22/menu.c | ||
| @@ -75,14 +75,6 @@ | ||
|  #define GTK_STOCK_EDIT NULL | ||
|  #endif | ||
|  | ||
| -/* Mac uses "command"/"meta" key for menu accelerator modifier key */ | ||
| -#ifdef __APPLE__ | ||
| -#define ACCL_MOD_KEY GDK_META_MASK | ||
| -#else | ||
| -#define ACCL_MOD_KEY GDK_CONTROL_MASK | ||
| -#endif | ||
| - | ||
| - | ||
|  static GtkBuilder *ui_builder = NULL; | ||
|  | ||
|  static void menu_entry_set_active(const char *key, | ||
| diff --git a/client/gui-gtk-4.0/editgui.c b/client/gui-gtk-4.0/editgui.c | ||
| index 04cb8fde18..ba1501ddc8 100644 | ||
| --- a/client/gui-gtk-4.0/editgui.c | ||
| +++ b/client/gui-gtk-4.0/editgui.c | ||
| @@ -1612,6 +1612,7 @@ static void editinfobox_refresh(struct editinfobox *ei) | ||
|  | ||
|  /************************************************************************//** | ||
|    Handle ctrl+[key] combinations. | ||
| +  Mac only - Handle meta+[key] combinations. | ||
|  ****************************************************************************/ | ||
|  static gboolean handle_edit_key_press_with_ctrl(guint keyval) | ||
|  { | ||
| @@ -1675,7 +1676,8 @@ gboolean handle_edit_key_press(guint keyval, GdkModifierType state) | ||
|  | ||
|    /* Check ctrl before shift - this is correct also for the case where | ||
|     * they are both active. */ | ||
| -  if (state & GDK_CONTROL_MASK) { | ||
| +  /* ACCL_MOD_MASK is GDK_META_MASK on Mac, else GDK_CONTROL_MASK */ | ||
| +  if (state & ACCL_MOD_MASK) { | ||
|      return handle_edit_key_press_with_ctrl(keyval); | ||
|    } | ||
|  | ||
| diff --git a/client/gui-gtk-4.0/gui_main.h b/client/gui-gtk-4.0/gui_main.h | ||
| index 34ed5e7414..1a6e7571e6 100644 | ||
| --- a/client/gui-gtk-4.0/gui_main.h | ||
| +++ b/client/gui-gtk-4.0/gui_main.h | ||
| @@ -19,6 +19,16 @@ | ||
|  #include "gui_main_g.h" | ||
|  #include "options.h" | ||
|  | ||
| + | ||
| +/* Mac uses "command"/"meta" key for menu accelerator modifier key */ | ||
| +#ifdef __APPLE__ | ||
| +#define ACCL_MOD_KEY "<Meta>" | ||
| +#define ACCL_MOD_MASK GDK_META_MASK | ||
| +#else | ||
| +#define ACCL_MOD_KEY "<ctrl>" | ||
| +#define ACCL_MOD_MASK GDK_CONTROL_MASK | ||
| +#endif | ||
| + | ||
|  #define GUI_NAME_FULL "gui-gtk-4.0" | ||
|  #define GUI_NAME_SHORT "gtk4" | ||
|  | ||
| diff --git a/client/gui-gtk-4.0/menu.c b/client/gui-gtk-4.0/menu.c | ||
| index e3708c927c..1036d474b8 100644 | ||
| --- a/client/gui-gtk-4.0/menu.c | ||
| +++ b/client/gui-gtk-4.0/menu.c | ||
| @@ -71,14 +71,6 @@ | ||
|  | ||
|  #include "menu.h" | ||
|  | ||
| -/* Mac uses "command"/"meta" key for menu accelerator modifier key */ | ||
| -#ifdef __APPLE__ | ||
| -#define ACCL_MOD_KEY "<Meta>" | ||
| -#else | ||
| -#define ACCL_MOD_KEY "<ctrl>" | ||
| -#endif | ||
| - | ||
| - | ||
|  static GMenu *main_menubar = NULL; | ||
|  static bool menus_built = FALSE; | ||
|  | ||
| --  | ||
| 2.31.0 | ||
| client/gui-gtk-3.22/editgui.c | ||
|---|---|---|
| /************************************************************************//** | ||
|   Handle ctrl+[key] combinations. | ||
|   Mac only - Handle meta+[key] combinations. | ||
| ****************************************************************************/ | ||
| static gboolean handle_edit_key_press_with_ctrl(GdkEventKey *ev) | ||
| { | ||
| ... | ... | |
| { | ||
|   enum editor_tool_type ett, new_ett = NUM_EDITOR_TOOL_TYPES; | ||
|   /* Check ctrl before shift - this is correct also for the case where | ||
|   /* Check ctrl/meta before shift - this is correct also for the case where | ||
|    * they are both active. */ | ||
|   if (ev->state & GDK_CONTROL_MASK) { | ||
|   /* ACCL_MOD_KEY is GDK_META_MASK on Mac, else GDK_CONTROL_MASK */ | ||
|   if (ev->state & ACCL_MOD_KEY) { | ||
|     return handle_edit_key_press_with_ctrl(ev); | ||
|   } | ||
| client/gui-gtk-3.22/gui_main.h | ||
|---|---|---|
| #include "gui_main_g.h" | ||
| #include "options.h" | ||
| /* Mac uses "command"/"meta" key for menu accelerator modifier key */ | ||
| #ifdef __APPLE__ | ||
| #define ACCL_MOD_KEY GDK_META_MASK | ||
| #else | ||
| #define ACCL_MOD_KEY GDK_CONTROL_MASK | ||
| #endif | ||
| #define GUI_NAME_FULL  "gui-gtk-3.22" | ||
| #define GUI_NAME_SHORT "gtk3.22" | ||
| client/gui-gtk-3.22/menu.c | ||
|---|---|---|
| #define GTK_STOCK_EDIT NULL | ||
| #endif | ||
| /* Mac uses "command"/"meta" key for menu accelerator modifier key */ | ||
| #ifdef __APPLE__ | ||
| #define ACCL_MOD_KEY GDK_META_MASK | ||
| #else | ||
| #define ACCL_MOD_KEY GDK_CONTROL_MASK | ||
| #endif | ||
| static GtkBuilder *ui_builder = NULL; | ||
| static void menu_entry_set_active(const char *key, | ||
| client/gui-gtk-4.0/editgui.c | ||
|---|---|---|
| /************************************************************************//** | ||
|   Handle ctrl+[key] combinations. | ||
|   Mac only - Handle meta+[key] combinations. | ||
| ****************************************************************************/ | ||
| static gboolean handle_edit_key_press_with_ctrl(guint keyval) | ||
| { | ||
| ... | ... | |
|   /* Check ctrl before shift - this is correct also for the case where | ||
|    * they are both active. */ | ||
|   if (state & GDK_CONTROL_MASK) { | ||
|   /* ACCL_MOD_MASK is GDK_META_MASK on Mac, else GDK_CONTROL_MASK */ | ||
|   if (state & ACCL_MOD_MASK) { | ||
|     return handle_edit_key_press_with_ctrl(keyval); | ||
|   } | ||
| client/gui-gtk-4.0/gui_main.h | ||
|---|---|---|
| #include "gui_main_g.h" | ||
| #include "options.h" | ||
| /* Mac uses "command"/"meta" key for menu accelerator modifier key */ | ||
| #ifdef __APPLE__ | ||
| #define ACCL_MOD_KEY "<Meta>" | ||
| #define ACCL_MOD_MASK GDK_META_MASK | ||
| #else | ||
| #define ACCL_MOD_KEY "<ctrl>" | ||
| #define ACCL_MOD_MASK GDK_CONTROL_MASK | ||
| #endif | ||
| #define GUI_NAME_FULL "gui-gtk-4.0" | ||
| #define GUI_NAME_SHORT "gtk4" | ||
| client/gui-gtk-4.0/menu.c | ||
|---|---|---|
| #include "menu.h" | ||
| /* Mac uses "command"/"meta" key for menu accelerator modifier key */ | ||
| #ifdef __APPLE__ | ||
| #define ACCL_MOD_KEY "<Meta>" | ||
| #else | ||
| #define ACCL_MOD_KEY "<ctrl>" | ||
| #endif | ||
| static GMenu *main_menubar = NULL; | ||
| static bool menus_built = FALSE; | ||
| client/gui-gtk-5.0/editgui.c | ||
|---|---|---|
| /************************************************************************//** | ||
|   Handle ctrl+[key] combinations. | ||
|   Mac only - Handle meta+[key] combinations. | ||
| ****************************************************************************/ | ||
| static gboolean handle_edit_key_press_with_ctrl(guint keyval) | ||
| { | ||
| ... | ... | |
|   /* Check ctrl before shift - this is correct also for the case where | ||
|    * they are both active. */ | ||
|   if (state & GDK_CONTROL_MASK) { | ||
|   /* ACCL_MOD_MASK is GDK_META_MASK on Mac, else GDK_CONTROL_MASK */ | ||
|   if (state & ACCL_MOD_MASK) { | ||
|     return handle_edit_key_press_with_ctrl(keyval); | ||
|   } | ||
| client/gui-gtk-5.0/gui_main.h | ||
|---|---|---|
| #include "gui_main_g.h" | ||
| #include "options.h" | ||
| /* Mac uses "command"/"meta" key for menu accelerator modifier key */ | ||
| #ifdef __APPLE__ | ||
| #define ACCL_MOD_KEY "<Meta>" | ||
| #define ACCL_MOD_MASK GDK_META_MASK | ||
| #else | ||
| #define ACCL_MOD_KEY "<ctrl>" | ||
| #define ACCL_MOD_MASK GDK_CONTROL_MASK | ||
| #endif | ||
| #define GUI_NAME_FULL "gui-gtk-4.x" | ||
| #define GUI_NAME_SHORT "gtk4x" | ||
| client/gui-gtk-5.0/menu.c | ||
|---|---|---|
| #include "menu.h" | ||
| /* Mac uses "command"/"meta" key for menu accelerator modifier key */ | ||
| #ifdef __APPLE__ | ||
| #define ACCL_MOD_KEY "<Meta>" | ||
| #else | ||
| #define ACCL_MOD_KEY "<ctrl>" | ||
| #endif | ||
| static GMenu *main_menubar = NULL; | ||
| static bool menus_built = FALSE; | ||