From 13701660c9771219194c1b6a2fe3856caaf35d01 Mon Sep 17 00:00:00 2001 From: Patrick de Wit Date: Tue, 3 May 2016 21:07:33 +0200 Subject: [PATCH] Implement customizable toggle windowed mode shortcut (#3462) Implement customizable toggle windowed mode shortcut --- data/language/en-GB.txt | 2 +- src/config.c | 1 + src/config.h | 1 + src/interface/keyboard_shortcut.c | 9 ++++++++- src/localisation/string_ids.h | 1 + src/platform/platform.h | 1 + src/platform/shared.c | 15 ++++++++------- src/windows/shortcut_keys.c | 3 ++- 8 files changed, 23 insertions(+), 10 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index 8805f978aa..2a9b510bf3 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -4111,7 +4111,7 @@ STR_5802 :{SMALLFONT}{BLACK}Stops guests from littering and vomiting STR_5803 :{SMALLFONT}{BLACK}Rotate selected map element STR_5804 :Mute sound STR_5805 :{SMALLFONT}{BLACK}If checked, your server will be added to the{NEWLINE}public server list so everyone can find it - +STR_5806 :Toggle windowed mode STR_5807 :{WINDOW_COLOUR_2}Number of rides: {BLACK}{COMMA16} STR_5808 :{WINDOW_COLOUR_2}Number of shops and stalls: {BLACK}{COMMA16} STR_5809 :{WINDOW_COLOUR_2}Number of information kiosks and other facilities: {BLACK}{COMMA16} diff --git a/src/config.c b/src/config.c index 060dd40855..fd065eb692 100644 --- a/src/config.c +++ b/src/config.c @@ -1036,6 +1036,7 @@ static const uint16 _defaultShortcutKeys[SHORTCUT_COUNT] = { SHORTCUT_UNDEFINED, // SHORTCUT_SHOW_OPTIONS SHORTCUT_UNDEFINED, // SHORTCUT_MUTE_SOUND + ALT | SDL_SCANCODE_RETURN // SHORTCUT_WINDOWED_MODE_TOGGLE }; #define SHORTCUT_FILE_VERSION 1 diff --git a/src/config.h b/src/config.h index d2aeaae21e..45aaab52c8 100644 --- a/src/config.h +++ b/src/config.h @@ -80,6 +80,7 @@ enum { SHORTCUT_QUICK_SAVE_GAME, SHORTCUT_SHOW_OPTIONS, SHORTCUT_MUTE_SOUND, + SHORTCUT_WINDOWED_MODE_TOGGLE, SHORTCUT_COUNT }; diff --git a/src/interface/keyboard_shortcut.c b/src/interface/keyboard_shortcut.c index 8f8e633c67..0f86505f75 100644 --- a/src/interface/keyboard_shortcut.c +++ b/src/interface/keyboard_shortcut.c @@ -30,6 +30,7 @@ #include "window.h" #include "widget.h" #include "../audio/audio.h" +#include "../platform/platform.h" typedef void (*shortcut_action)(); @@ -535,6 +536,11 @@ static void shortcut_mute_sound() audio_toggle_all_sounds(); } +static void shortcut_windowed_mode_toggle() +{ + platform_toggle_windowed_mode(); +} + static const shortcut_action shortcut_table[SHORTCUT_COUNT] = { shortcut_close_top_most_window, shortcut_close_all_floating_windows, @@ -582,7 +588,8 @@ static const shortcut_action shortcut_table[SHORTCUT_COUNT] = { shortcut_open_chat_window, shortcut_quick_save_game, shortcut_show_options, - shortcut_mute_sound + shortcut_mute_sound, + shortcut_windowed_mode_toggle }; #pragma endregion diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index d7ec74e02a..03081c4dab 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -2445,6 +2445,7 @@ enum { STR_ADVERTISE_SERVER_TIP = 5805, + STR_SHORTCUT_WINDOWED_MODE_TOGGLE = 5806, STR_NUMBER_RIDES = 5807, STR_NUMBER_SHOPS_AND_STALLS = 5808, STR_NUMBER_RESTROOMS_AND_INFORMATION_KIOSKS = 5809, diff --git a/src/platform/platform.h b/src/platform/platform.h index b42b622d9e..019f49ce3f 100644 --- a/src/platform/platform.h +++ b/src/platform/platform.h @@ -130,6 +130,7 @@ void platform_free(); void platform_trigger_resize(); void platform_update_palette(const uint8 *colours, int start_index, int num_colours); void platform_set_fullscreen_mode(int mode); +void platform_toggle_windowed_mode(); void platform_set_cursor(uint8 cursor); void platform_refresh_video(); void platform_process_messages(); diff --git a/src/platform/shared.c b/src/platform/shared.c index a0f2b9b79b..16b523e8a8 100644 --- a/src/platform/shared.c +++ b/src/platform/shared.c @@ -583,13 +583,6 @@ void platform_process_messages() gLastKeyPressed = e.key.keysym.sym; gKeysPressed[e.key.keysym.scancode] = 1; - if (e.key.keysym.sym == SDLK_RETURN && e.key.keysym.mod & KMOD_ALT) { - int targetMode = gConfigGeneral.fullscreen_mode == 0 ? 2 : 0; - platform_set_fullscreen_mode(targetMode); - gConfigGeneral.fullscreen_mode = targetMode; - config_save_default(); - break; - } // Text input if (gTextInput.buffer == NULL) break; @@ -865,6 +858,14 @@ void platform_set_fullscreen_mode(int mode) } } +void platform_toggle_windowed_mode() +{ + int targetMode = gConfigGeneral.fullscreen_mode == 0 ? 2 : 0; + platform_set_fullscreen_mode(targetMode); + gConfigGeneral.fullscreen_mode = targetMode; + config_save_default(); +} + /** * This is not quite the same as the below function as we don't want to * derfererence the cursor before the function. diff --git a/src/windows/shortcut_keys.c b/src/windows/shortcut_keys.c index aef258e6a8..0b9d21b839 100644 --- a/src/windows/shortcut_keys.c +++ b/src/windows/shortcut_keys.c @@ -133,7 +133,8 @@ const rct_string_id ShortcutStringIds[] = { STR_SEND_MESSAGE, STR_SHORTCUT_QUICK_SAVE_GAME, STR_SHORTCUT_SHOW_OPTIONS, - STR_SHORTCUT_MUTE_SOUND + STR_SHORTCUT_MUTE_SOUND, + STR_SHORTCUT_WINDOWED_MODE_TOGGLE }; /**