From 907f18fd69a36e01b5c5c05751f91e7e0588bf22 Mon Sep 17 00:00:00 2001 From: Robert Jordan Date: Fri, 3 Nov 2017 12:02:12 -0400 Subject: [PATCH] Fix: Following canceling Stop previewing sequence now unfollows the current sprite. Using the arrow keys in-game cancels following. Resizing the window no longer cancels following. --- src/openrct2-ui/input/Input.cpp | 4 ++++ src/openrct2-ui/windows/TitleCommandEditor.cpp | 14 ++++++-------- src/openrct2/title/TitleScreen.cpp | 5 +++++ src/openrct2/title/TitleSequencePlayer.cpp | 2 +- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/openrct2-ui/input/Input.cpp b/src/openrct2-ui/input/Input.cpp index ecafaff622..ad2b0a73fc 100644 --- a/src/openrct2-ui/input/Input.cpp +++ b/src/openrct2-ui/input/Input.cpp @@ -101,6 +101,10 @@ static void game_handle_key_scroll() const uint8 * keysState = context_get_keys_state(); get_keyboard_map_scroll(keysState, &scrollX, &scrollY); + if (scrollX != 0 || scrollY != 0) + { + window_unfollow_sprite(mainWindow); + } input_scroll_viewport(scrollX, scrollY); } diff --git a/src/openrct2-ui/windows/TitleCommandEditor.cpp b/src/openrct2-ui/windows/TitleCommandEditor.cpp index 966fc9ed93..4c394da4c4 100644 --- a/src/openrct2-ui/windows/TitleCommandEditor.cpp +++ b/src/openrct2-ui/windows/TitleCommandEditor.cpp @@ -360,6 +360,10 @@ static void window_title_command_editor_mouseup(rct_window * w, rct_widgetindex { tool_set(w, WIDX_BACKGROUND, TOOL_CROSSHAIR); } + else + { + tool_cancel(); + } break; case WIDX_OKAY: if (_window_title_command_editor_insert) @@ -683,15 +687,9 @@ static void window_title_command_editor_tool_down(rct_window * w, rct_widgetinde { command.SpriteIndex = spriteIndex; window_follow_sprite(w, (size_t)command.SpriteIndex); + tool_cancel(); + window_invalidate(w); } - else - { - command.SpriteIndex = SPRITE_INDEX_NULL; - command.SpriteName[0] = '\0'; - window_unfollow_sprite(w); - } - tool_cancel(); - window_invalidate(w); } } diff --git a/src/openrct2/title/TitleScreen.cpp b/src/openrct2/title/TitleScreen.cpp index 37de990f2f..f833a5bd72 100644 --- a/src/openrct2/title/TitleScreen.cpp +++ b/src/openrct2/title/TitleScreen.cpp @@ -84,6 +84,11 @@ void TitleScreen::StopPreviewingSequence() { if (_previewingSequence) { + rct_window * mainWindow = window_get_main(); + if (mainWindow != nullptr) + { + window_unfollow_sprite(mainWindow); + } _previewingSequence = false; _currentSequence = title_get_config_sequence(); gPreviewingTitleSequenceInGame = false; diff --git a/src/openrct2/title/TitleSequencePlayer.cpp b/src/openrct2/title/TitleSequencePlayer.cpp index 17e4ddfaee..6e1a06cd0f 100644 --- a/src/openrct2/title/TitleSequencePlayer.cpp +++ b/src/openrct2/title/TitleSequencePlayer.cpp @@ -566,7 +566,7 @@ private: void FixViewLocation() { rct_window * w = window_get_main(); - if (w != nullptr) + if (w != nullptr && w->viewport_smart_follow_sprite == SPRITE_INDEX_NULL) { if (w->width != _lastScreenWidth || w->height != _lastScreenHeight)