Skip to content

Commit

Permalink
Fix appending to windows causing a child window to be inserted to g.W…
Browse files Browse the repository at this point in the history
…indowsFocusOrder which eventually causes a crash. (ocornut#5515, ocornut#3496, ocornut#4797)

Amend a528398
  • Loading branch information
rokups authored and kjblanchard committed May 5, 2023
1 parent b15a9aa commit 99dd04e
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 4 deletions.
1 change: 1 addition & 0 deletions docs/CHANGELOG.txt
Expand Up @@ -60,6 +60,7 @@ Other Changes:
next row in such state where subsequent SameLine() would move back to previous row.
- Tabs: Fixed a crash when closing multiple windows (possible with docking only) with an
appended TabItemButton(). (#5515, #3291) [@rokups]
- Window: Fixed a potential crash when appending to a child window. (#5515, #3496, #4797) [@rokups]
- IO: Added ImGuiKey_MouseXXX aliases for mouse buttons/wheel so all operations done on ImGuiKey
can apply to mouse data as well. (#4921)
- Nav: Fixed moving/resizing window with gamepad or keyboard when running at very high framerate.
Expand Down
4 changes: 1 addition & 3 deletions imgui.cpp
Expand Up @@ -5474,7 +5474,6 @@ static ImGuiWindow* CreateNewWindow(const char* name, ImGuiWindowFlags flags)
g.Windows.push_front(window); // Quite slow but rare and only once
else
g.Windows.push_back(window);
UpdateWindowInFocusOrderList(window, true, window->Flags);

return window;
}
Expand Down Expand Up @@ -6087,8 +6086,6 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
const bool window_just_created = (window == NULL);
if (window_just_created)
window = CreateNewWindow(name, flags);
else
UpdateWindowInFocusOrderList(window, window_just_created, flags);

// Automatically disable manual moving/resizing when NoInputs is set
if ((flags & ImGuiWindowFlags_NoInputs) == ImGuiWindowFlags_NoInputs)
Expand Down Expand Up @@ -6116,6 +6113,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
// Update Flags, LastFrameActive, BeginOrderXXX fields
if (first_begin_of_the_frame)
{
UpdateWindowInFocusOrderList(window, window_just_created, flags);
window->Flags = (ImGuiWindowFlags)flags;
window->LastFrameActive = current_frame;
window->LastTimeActive = (float)g.Time;
Expand Down
2 changes: 1 addition & 1 deletion imgui.h
Expand Up @@ -65,7 +65,7 @@ Index of this file:
// Version
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals. Work in progress versions typically starts at XYY99 then bounce up to XYY00, XYY01 etc. when release tagging happens)
#define IMGUI_VERSION "1.89 WIP"
#define IMGUI_VERSION_NUM 18805
#define IMGUI_VERSION_NUM 18806
#define IMGUI_CHECKVERSION() ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))
#define IMGUI_HAS_TABLE

Expand Down

0 comments on commit 99dd04e

Please sign in to comment.