From 8270fe254248af0cfd00bf3e2d1858765e96b6b0 Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Tue, 30 Dec 2025 13:06:36 +0100 Subject: [PATCH] Assign ActiveWindowID to NullWindowID if window doesn't exist, misc --- src/text_editor/text_editor.cpp | 17 ++++++++++++----- src/text_editor/window.cpp | 12 +++++------- src/text_editor/window_debug.cpp | 2 +- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/text_editor/text_editor.cpp b/src/text_editor/text_editor.cpp index 0e0f0ed..676a785 100644 --- a/src/text_editor/text_editor.cpp +++ b/src/text_editor/text_editor.cpp @@ -603,11 +603,17 @@ void Update(Event event) { } } - ActiveWindowID = NextActiveWindowID; - Window *window = GetWindow(ActiveWindowID, NULL); - if (window == NULL || window->visible == false) { - ActiveWindowID = NextActiveWindowID = LastActiveLayoutWindowID; - window = GetWindow(ActiveWindowID); + { + ActiveWindowID = NextActiveWindowID; + Window *window = GetWindow(ActiveWindowID, NULL); + if (window == NULL || window->visible == false) { + ActiveWindowID = NextActiveWindowID = LastActiveLayoutWindowID; + window = GetWindow(ActiveWindowID, NULL); + if (window == NULL) { + ActiveWindowID = NullWindowID; + Assert(GetWindow(ActiveWindowID, NULL)); + } + } } // Behavior where these windows cannot be visible at the same time @@ -625,6 +631,7 @@ void Update(Event event) { } if (ActiveWindowID != LastActiveLayoutWindowID) { + Window *window = GetWindow(ActiveWindowID, NULL); if (window->layout) { LastActiveLayoutWindowID = ActiveWindowID; } diff --git a/src/text_editor/window.cpp b/src/text_editor/window.cpp index af90416..94e134c 100644 --- a/src/text_editor/window.cpp +++ b/src/text_editor/window.cpp @@ -26,14 +26,12 @@ Window *GetWindow(WindowID id, Window *default_window = Windows[0]) { } void Close(WindowID id) { - Window *window = GetWindow(id, NULL); - if (window) { - if (window->id.id == 0) { - return; - } - window->close = true; - RunGCThisFrame = true; + Window *window = GetWindow(id); + if (window->id.id == 0) { + return; } + window->close = true; + RunGCThisFrame = true; } Window *FindWindow(ViewID view_id, Window *default_window = NULL) { diff --git a/src/text_editor/window_debug.cpp b/src/text_editor/window_debug.cpp index 612c3f3..517bcf6 100644 --- a/src/text_editor/window_debug.cpp +++ b/src/text_editor/window_debug.cpp @@ -21,7 +21,7 @@ void DebugWindowInit() { } void DebugWindowLayout(Rect2I *rect, Int wx, Int wy) { - Window *n = GetWindow(DebugWindowID); + Window *n = GetWindow(DebugWindowID); Rect2 screen_rect = Rect0Size((float)wx, (float)wy); Vec2 size = GetSize(screen_rect);