From 324e5e1ea12cc041e817e50e733f59f5eb9148c6 Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Sun, 4 Aug 2024 08:01:25 +0200 Subject: [PATCH] Fixing ActiveWindow switching, actual happens switch after event is handled --- src/text_editor/management.cpp | 7 ++----- src/text_editor/text_editor.cpp | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/text_editor/management.cpp b/src/text_editor/management.cpp index 2892370..9522ceb 100644 --- a/src/text_editor/management.cpp +++ b/src/text_editor/management.cpp @@ -18,6 +18,7 @@ WindowID ConsoleWindowID; Array WindowSwitchHistory; // @todo: probably better as a circular buffer WindowID ActiveWindow; +WindowID NextActiveWindow; Int CaretChangeID; inline ViewID AllocViewID() { return {ViewIDs.id++}; } @@ -101,11 +102,7 @@ WindowID GetLastActiveWindow() { } void SetActiveWindow(WindowID window) { - ActiveWindow = window; - Window *w = GetWindow(window); - if (!w->dont_save_in_active_window_history) { - Add(&WindowSwitchHistory, window); - } + NextActiveWindow = window; } void SetActiveView(Window *window, ViewID view_id) { diff --git a/src/text_editor/text_editor.cpp b/src/text_editor/text_editor.cpp index 0cd6d93..827b449 100644 --- a/src/text_editor/text_editor.cpp +++ b/src/text_editor/text_editor.cpp @@ -163,6 +163,21 @@ void Update(const Event &event) { For(Windows) if (it.is_title_bar) ReplaceTitleBarData(&it); ReplaceDebugData(); + { + if (ActiveWindow.id != NextActiveWindow.id) { + Window *window = GetWindow(ActiveWindow); + window->mouse_selecting = false; + window->mouse_selecting_scrollbar = false; + View *view = GetView(window->active_view); + view->underline_count = 0; + } + ActiveWindow = NextActiveWindow; + Window *w = GetWindow(ActiveWindow); + if (!w->dont_save_in_active_window_history) { + Add(&WindowSwitchHistory, ActiveWindow); + } + } + For(IterateInReverse(&order)) { Window *window = &Windows[it]; {