|
@@ -2979,6 +2979,7 @@ void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window)
|
|
|
}
|
|
|
g.ActiveId = id;
|
|
|
g.ActiveIdAllowOverlap = false;
|
|
|
+ g.ActiveIdNoClearOnFocusLoss = false;
|
|
|
g.ActiveIdWindow = window;
|
|
|
g.ActiveIdHasBeenEditedThisFrame = false;
|
|
|
if (id)
|
|
@@ -2996,7 +2997,7 @@ void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window)
|
|
|
|
|
|
void ImGui::ClearActiveID()
|
|
|
{
|
|
|
- SetActiveID(0, NULL);
|
|
|
+ SetActiveID(0, NULL); // g.ActiveId = 0;
|
|
|
}
|
|
|
|
|
|
void ImGui::SetHoveredID(ImGuiID id)
|
|
@@ -3401,6 +3402,7 @@ void ImGui::StartMouseMovingWindow(ImGuiWindow* window)
|
|
|
FocusWindow(window);
|
|
|
SetActiveID(window->MoveId, window);
|
|
|
g.NavDisableHighlight = true;
|
|
|
+ g.ActiveIdNoClearOnFocusLoss = true;
|
|
|
g.ActiveIdClickOffset = g.IO.MousePos - window->RootWindow->Pos;
|
|
|
|
|
|
bool can_move_window = true;
|
|
@@ -6775,8 +6777,9 @@ void ImGui::FocusWindow(ImGuiWindow* window)
|
|
|
// - Focus a window while an InputText in another window is active, if focus happens before the old InputText can run.
|
|
|
// - When using Nav to activate menu items (due to timing of activating on press->new window appears->losing ActiveId)
|
|
|
// - Using dock host items (tab, collapse button) can trigger this before we redirect the ActiveIdWindow toward the child window.
|
|
|
- if (g.ActiveId != 0 && g.ActiveIdWindow && g.ActiveIdWindow->RootWindowDockStop != focus_front_window && !active_id_window_is_dock_node_host)
|
|
|
- ClearActiveID();
|
|
|
+ if (g.ActiveId != 0 && g.ActiveIdWindow && g.ActiveIdWindow->RootWindowDockStop != focus_front_window)
|
|
|
+ if (!g.ActiveIdNoClearOnFocusLoss && !active_id_window_is_dock_node_host)
|
|
|
+ ClearActiveID();
|
|
|
|
|
|
// Passing NULL allow to disable keyboard focus
|
|
|
if (!window)
|