Project

General

Profile

Bug #1435 » 1435_S3_3.patch

Dean Brown, 12/08/2025 02:07 AM

View differences:

client/gui-gtk-4.0/chatline.c
static gboolean il_gained_focus(GtkEventControllerFocus *controller,
gpointer data)
{
menus_disable_unit_commands();
menus_disable_char_commands();
return TRUE;
}
client/gui-gtk-4.0/menu.c
static void view_menu_update_sensitivity(GActionMap *map);
enum menu_entry_grouping { MGROUP_SAFE, MGROUP_EDIT, MGROUP_PLAYING,
MGROUP_UNIT, MGROUP_PLAYER, MGROUP_ALL };
enum menu_entry_grouping { MGROUP_SAFE = 0B00000001,
MGROUP_EDIT = 0B00000010,
MGROUP_PLAYING = 0B00000100,
MGROUP_UNIT = 0B00001000,
MGROUP_PLAYER = 0B00010000,
MGROUP_CHAR = 0B00100000,
MGROUP_ALL = 0B11111111 };
static GMenu *options_menu = NULL;
static GMenu *edit_menu = NULL;
......
"save_mapimg_as", NULL, MGROUP_SAFE,
NULL, FALSE },
{ "VOLUME_UP", N_("Volume Up"),
"volume_up", "greater", MGROUP_SAFE,
"volume_up", "greater", MGROUP_SAFE | MGROUP_CHAR,
NULL, FALSE },
{ "VOLUME_DOWN", N_("Volume Down"),
"volume_down", "less", MGROUP_SAFE,
"volume_down", "less", MGROUP_SAFE | MGROUP_CHAR,
NULL, FALSE },
{ "LEAVE", N_("_Leave"),
"leave", NULL, MGROUP_SAFE,
......
"full_screen", ACCL_MOD_KEY"F11", MGROUP_SAFE,
full_screen_callback, FALSE },
{ "CENTER_VIEW", N_("_Center View"),
"center_view", "c", MGROUP_PLAYER,
"center_view", "c", MGROUP_PLAYER | MGROUP_CHAR,
NULL, FALSE },
/* Select menu */
{ "SELECT_SINGLE", N_("_Single Unit (Unselect Others)"),
"select_single", "z", MGROUP_UNIT,
"select_single", "z", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "SELECT_ALL_ON_TILE", N_("_All On Tile"),
"select_all_tile", "v", MGROUP_UNIT,
"select_all_tile", "v", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "SELECT_SAME_TYPE_TILE", N_("Same Type on _Tile"),
"select_same_type_tile", "<shift>v", MGROUP_UNIT,
"select_same_type_tile", "<shift>v", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "SELECT_SAME_TYPE_CONT", N_("Same Type on _Continent"),
"select_same_type_cont", "<shift>c", MGROUP_UNIT,
"select_same_type_cont", "<shift>c", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "SELECT_SAME_TYPE", N_("Same Type _Everywhere"),
"select_same_type", "<shift>x", MGROUP_UNIT,
"select_same_type", "<shift>x", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "SELECT_DLG", N_("Unit Selection Dialog"),
"select_dlg", NULL, MGROUP_UNIT,
......
/* Unit menu */
{ "UNIT_GOTO", N_("_Go to"),
"goto", "g", MGROUP_UNIT,
"goto", "g", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_GOTO_CITY", N_("Go _to/Airlift to City..."),
"goto_city", "t", MGROUP_UNIT,
"goto_city", "t", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_RETURN", N_("_Return to Nearest City"),
"return", "<shift>g", MGROUP_UNIT,
"return", "<shift>g", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_EXPLORE", N_("Auto E_xplore"),
"explore", "x", MGROUP_UNIT,
"explore", "x", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_PATROL", N_("_Patrol"),
"patrol", "q", MGROUP_UNIT,
"patrol", "q", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_TELEPORT", N_("_Teleport"),
"teleport", NULL, MGROUP_UNIT,
NULL, FALSE },
{ "UNIT_SENTRY", N_("_Sentry"),
"sentry", "s", MGROUP_UNIT,
"sentry", "s", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNSENTRY_ALL", N_("Uns_entry All On Tile"),
"unsentry_all", "<shift>s", MGROUP_UNIT,
"unsentry_all", "<shift>s", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_BOARD", N_("_Load"),
"board", "l", MGROUP_UNIT,
"board", "l", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_DEBOARD", N_("_Unload"),
"deboard", "u", MGROUP_UNIT,
"deboard", "u", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_UNLOAD_TRANSPORTER", N_("U_nload All From Transporter"),
"unload_transporter", "<shift>t", MGROUP_UNIT,
"unload_transporter", "<shift>t", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_HOMECITY", N_("Set _Home City"),
"homecity", "h", MGROUP_UNIT,
"homecity", "h", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_UPGRADE", N_("Upgr_ade"),
"upgrade", "<shift>u", MGROUP_UNIT,
"upgrade", "<shift>u", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_CONVERT", N_("C_onvert"),
"convert", "<shift>o", MGROUP_UNIT,
"convert", "<shift>o", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_DISBAND", N_("_Disband"),
"disband", "<shift>d", MGROUP_UNIT,
"disband", "<shift>d", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "DO_ACTION", N_("_Do..."),
"do_action", "d", MGROUP_UNIT,
"do_action", "d", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_WAIT", N_("_Wait"),
"wait", "w", MGROUP_UNIT,
"wait", "w", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "UNIT_DONE", N_("_Done"),
"done", "space", MGROUP_UNIT,
"done", "space", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
/* Work menu */
{ "BUILD_CITY", N_("_Build City"),
"build_city", "b", MGROUP_UNIT,
"build_city", "b", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "AUTO_WORKER", N_("_Auto Worker"),
"auto_work", "a", MGROUP_UNIT,
"auto_work", "a", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "BUILD_ROAD", N_("Build _Road"),
"build_road", "r", MGROUP_UNIT,
"build_road", "r", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "BUILD_IRRIGATION", N_("Build _Irrigation"),
"build_irrigation", "i", MGROUP_UNIT,
"build_irrigation", "i", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "BUILD_MINE", N_("Build _Mine"),
"build_mine", "m", MGROUP_UNIT,
"build_mine", "m", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "CULTIVATE", N_("Cultivate"),
"cultivate", "<shift>i", MGROUP_UNIT,
"cultivate", "<shift>i", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "PLANT", N_("Plant"),
"plant", "<shift>m", MGROUP_UNIT,
"plant", "<shift>m", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "TRANSFORM_TERRAIN", N_("Transf_orm Terrain"),
"transform_terrain", "o", MGROUP_UNIT,
"transform_terrain", "o", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "CONNECT_ROAD", N_("Connect With Roa_d"),
"connect_road", ACCL_MOD_KEY"r", MGROUP_UNIT,
......
"connect_irrigation", ACCL_MOD_KEY"i", MGROUP_UNIT,
NULL, FALSE },
{ "CLEAN", N_("_Clean"),
"clean", "p", MGROUP_UNIT,
"clean", "p", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
/* Combat menu */
{ "FORTIFY", N_("Fortify"),
"fortify", "f", MGROUP_UNIT,
"fortify", "f", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "BUILD_FORTRESS", N_("Build Fortress"),
"build_base_fortress", "<shift>f", MGROUP_UNIT,
"build_base_fortress", "<shift>f", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "BUILD_AIRBASE", N_("Build Airbase"),
"build_base_airbase", "<shift>e", MGROUP_UNIT,
"build_base_airbase", "<shift>e", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "PARADROP", N_("P_aradrop"),
"paradrop", "j", MGROUP_UNIT,
"paradrop", "j", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
{ "PILLAGE", N_("_Pillage"),
"pillage", "<shift>p", MGROUP_UNIT,
"pillage", "<shift>p", MGROUP_UNIT | MGROUP_CHAR,
NULL, FALSE },
/* Civilization */
......
"report_spaceship", "F12", MGROUP_SAFE,
NULL, FALSE },
{ "REPORT_ACHIEVEMENTS", N_("_Achievements"),
"report_achievements", "asterisk", MGROUP_SAFE,
"report_achievements", "asterisk", MGROUP_SAFE | MGROUP_CHAR,
NULL, FALSE },
/* Battle Groups menu */
......
int i;
for (i = 0; menu_entries[i].key != NULL; i++) {
if (menu_entries[i].grouping == group || group == MGROUP_ALL) {
if (menu_entries[i].grouping & group) {
menu_entry_set_sensitive_info(map, &(menu_entries[i]), is_enabled);
}
}
......
&& can_client_issue_orders()
&& !editor_is_active());
menu_entry_set_sensitive(map, "CENTER_VIEW", can_client_issue_orders());
menu_entry_set_sensitive(map, "VOLUME_UP", TRUE);
menu_entry_set_sensitive(map, "VOLUME_DOWN", TRUE);
menu_entry_set_sensitive(map, "GAME_SAVE_AS",
can_client_access_hack() && C_S_RUNNING <= client_state());
menu_entry_set_sensitive(map, "GAME_SAVE",
......
{
menu_entry_group_set_sensitive(G_ACTION_MAP(gui_app()), MGROUP_UNIT, FALSE);
}
/**********************************************************************//**
Disable all char commands.
**************************************************************************/
void menus_disable_char_commands(void)
{
menu_entry_group_set_sensitive(G_ACTION_MAP(gui_app()), MGROUP_CHAR, FALSE);
}
client/gui-gtk-4.0/menu.h
void menus_set_initial_toggle_values(void);
void menus_disable_unit_commands(void);
void menus_disable_char_commands(void);
#endif /* FC__MENU_H */
(3-3/3)