|
@@ -1858,7 +1858,7 @@ ImGuiWindow* ImGui::GetParentWindow()
|
|
return g.CurrentWindowStack[(unsigned int)g.CurrentWindowStack.Size - 2];
|
|
return g.CurrentWindowStack[(unsigned int)g.CurrentWindowStack.Size - 2];
|
|
}
|
|
}
|
|
|
|
|
|
-void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window = NULL)
|
|
|
|
|
|
+void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window)
|
|
{
|
|
{
|
|
ImGuiContext& g = *GImGui;
|
|
ImGuiContext& g = *GImGui;
|
|
g.ActiveId = id;
|
|
g.ActiveId = id;
|
|
@@ -1869,6 +1869,11 @@ void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window = NULL)
|
|
g.ActiveIdWindow = window;
|
|
g.ActiveIdWindow = window;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void ImGui::ClearActiveID()
|
|
|
|
+{
|
|
|
|
+ SetActiveID(0, NULL);
|
|
|
|
+}
|
|
|
|
+
|
|
void ImGui::SetHoveredID(ImGuiID id)
|
|
void ImGui::SetHoveredID(ImGuiID id)
|
|
{
|
|
{
|
|
ImGuiContext& g = *GImGui;
|
|
ImGuiContext& g = *GImGui;
|
|
@@ -2204,7 +2209,7 @@ void ImGui::NewFrame()
|
|
g.HoveredId = 0;
|
|
g.HoveredId = 0;
|
|
g.HoveredIdAllowOverlap = false;
|
|
g.HoveredIdAllowOverlap = false;
|
|
if (!g.ActiveIdIsAlive && g.ActiveIdPreviousFrame == g.ActiveId && g.ActiveId != 0)
|
|
if (!g.ActiveIdIsAlive && g.ActiveIdPreviousFrame == g.ActiveId && g.ActiveId != 0)
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
g.ActiveIdPreviousFrame = g.ActiveId;
|
|
g.ActiveIdPreviousFrame = g.ActiveId;
|
|
g.ActiveIdIsAlive = false;
|
|
g.ActiveIdIsAlive = false;
|
|
g.ActiveIdIsJustActivated = false;
|
|
g.ActiveIdIsJustActivated = false;
|
|
@@ -2227,7 +2232,7 @@ void ImGui::NewFrame()
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
g.MovedWindow = NULL;
|
|
g.MovedWindow = NULL;
|
|
g.MovedWindowMoveId = 0;
|
|
g.MovedWindowMoveId = 0;
|
|
}
|
|
}
|
|
@@ -4214,7 +4219,7 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
|
|
ApplySizeFullWithConstraint(window, size_auto_fit);
|
|
ApplySizeFullWithConstraint(window, size_auto_fit);
|
|
if (!(flags & ImGuiWindowFlags_NoSavedSettings))
|
|
if (!(flags & ImGuiWindowFlags_NoSavedSettings))
|
|
MarkIniSettingsDirty();
|
|
MarkIniSettingsDirty();
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
}
|
|
}
|
|
else if (held)
|
|
else if (held)
|
|
{
|
|
{
|
|
@@ -4563,7 +4568,7 @@ void ImGui::FocusWindow(ImGuiWindow* window)
|
|
// Steal focus on active widgets
|
|
// Steal focus on active widgets
|
|
if (window->Flags & ImGuiWindowFlags_Popup) // FIXME: This statement should be unnecessary. Need further testing before removing it..
|
|
if (window->Flags & ImGuiWindowFlags_Popup) // FIXME: This statement should be unnecessary. Need further testing before removing it..
|
|
if (g.ActiveId != 0 && g.ActiveIdWindow && g.ActiveIdWindow->RootWindow != window)
|
|
if (g.ActiveId != 0 && g.ActiveIdWindow && g.ActiveIdWindow->RootWindow != window)
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
|
|
|
|
// Bring to front
|
|
// Bring to front
|
|
if ((window->Flags & ImGuiWindowFlags_NoBringToFrontOnFocus) || g.Windows.back() == window)
|
|
if ((window->Flags & ImGuiWindowFlags_NoBringToFrontOnFocus) || g.Windows.back() == window)
|
|
@@ -5536,7 +5541,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool
|
|
{
|
|
{
|
|
if (out_hovered) *out_hovered = false;
|
|
if (out_hovered) *out_hovered = false;
|
|
if (out_held) *out_held = false;
|
|
if (out_held) *out_held = false;
|
|
- if (g.ActiveId == id) SetActiveID(0);
|
|
|
|
|
|
+ if (g.ActiveId == id) ClearActiveID();
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -5564,14 +5569,14 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool
|
|
if (((flags & ImGuiButtonFlags_PressedOnClick) && g.IO.MouseClicked[0]) || ((flags & ImGuiButtonFlags_PressedOnDoubleClick) && g.IO.MouseDoubleClicked[0]))
|
|
if (((flags & ImGuiButtonFlags_PressedOnClick) && g.IO.MouseClicked[0]) || ((flags & ImGuiButtonFlags_PressedOnDoubleClick) && g.IO.MouseDoubleClicked[0]))
|
|
{
|
|
{
|
|
pressed = true;
|
|
pressed = true;
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
FocusWindow(window);
|
|
FocusWindow(window);
|
|
}
|
|
}
|
|
if ((flags & ImGuiButtonFlags_PressedOnRelease) && g.IO.MouseReleased[0])
|
|
if ((flags & ImGuiButtonFlags_PressedOnRelease) && g.IO.MouseReleased[0])
|
|
{
|
|
{
|
|
if (!((flags & ImGuiButtonFlags_Repeat) && g.IO.MouseDownDurationPrev[0] >= g.IO.KeyRepeatDelay)) // Repeat mode trumps <on release>
|
|
if (!((flags & ImGuiButtonFlags_Repeat) && g.IO.MouseDownDurationPrev[0] >= g.IO.KeyRepeatDelay)) // Repeat mode trumps <on release>
|
|
pressed = true;
|
|
pressed = true;
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
}
|
|
}
|
|
|
|
|
|
// 'Repeat' mode acts when held regardless of _PressedOn flags (see table above).
|
|
// 'Repeat' mode acts when held regardless of _PressedOn flags (see table above).
|
|
@@ -5593,7 +5598,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool
|
|
if (hovered && (flags & ImGuiButtonFlags_PressedOnClickRelease))
|
|
if (hovered && (flags & ImGuiButtonFlags_PressedOnClickRelease))
|
|
if (!((flags & ImGuiButtonFlags_Repeat) && g.IO.MouseDownDurationPrev[0] >= g.IO.KeyRepeatDelay)) // Repeat mode trumps <on release>
|
|
if (!((flags & ImGuiButtonFlags_Repeat) && g.IO.MouseDownDurationPrev[0] >= g.IO.KeyRepeatDelay)) // Repeat mode trumps <on release>
|
|
pressed = true;
|
|
pressed = true;
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -6558,7 +6563,7 @@ bool ImGui::SliderBehavior(const ImRect& frame_bb, ImGuiID id, float* v, float v
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -6874,7 +6879,7 @@ bool ImGui::DragBehavior(const ImRect& frame_bb, ImGuiID id, float* v, float v_s
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -7777,7 +7782,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
|
|
{
|
|
{
|
|
// Release focus when we click outside
|
|
// Release focus when we click outside
|
|
if (g.ActiveId == id)
|
|
if (g.ActiveId == id)
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
}
|
|
}
|
|
|
|
|
|
bool value_changed = false;
|
|
bool value_changed = false;
|
|
@@ -7879,7 +7884,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
|
|
bool ctrl_enter_for_new_line = (flags & ImGuiInputTextFlags_CtrlEnterForNewLine) != 0;
|
|
bool ctrl_enter_for_new_line = (flags & ImGuiInputTextFlags_CtrlEnterForNewLine) != 0;
|
|
if (!is_multiline || (ctrl_enter_for_new_line && !io.KeyCtrl) || (!ctrl_enter_for_new_line && io.KeyCtrl))
|
|
if (!is_multiline || (ctrl_enter_for_new_line && !io.KeyCtrl) || (!ctrl_enter_for_new_line && io.KeyCtrl))
|
|
{
|
|
{
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
enter_pressed = true;
|
|
enter_pressed = true;
|
|
}
|
|
}
|
|
else if (is_editable)
|
|
else if (is_editable)
|
|
@@ -7895,7 +7900,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
|
|
if (InputTextFilterCharacter(&c, flags, callback, user_data))
|
|
if (InputTextFilterCharacter(&c, flags, callback, user_data))
|
|
edit_state.OnKeyPressed((int)c);
|
|
edit_state.OnKeyPressed((int)c);
|
|
}
|
|
}
|
|
- else if (IsKeyPressedMap(ImGuiKey_Escape)) { SetActiveID(0); cancel_edit = true; }
|
|
|
|
|
|
+ else if (IsKeyPressedMap(ImGuiKey_Escape)) { ClearActiveID(); cancel_edit = true; }
|
|
else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Z) && is_editable) { edit_state.OnKeyPressed(STB_TEXTEDIT_K_UNDO); edit_state.ClearSelection(); }
|
|
else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Z) && is_editable) { edit_state.OnKeyPressed(STB_TEXTEDIT_K_UNDO); edit_state.ClearSelection(); }
|
|
else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Y) && is_editable) { edit_state.OnKeyPressed(STB_TEXTEDIT_K_REDO); edit_state.ClearSelection(); }
|
|
else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Y) && is_editable) { edit_state.OnKeyPressed(STB_TEXTEDIT_K_REDO); edit_state.ClearSelection(); }
|
|
else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_A)) { edit_state.SelectAll(); edit_state.CursorFollow = true; }
|
|
else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_A)) { edit_state.SelectAll(); edit_state.CursorFollow = true; }
|
|
@@ -8490,7 +8495,7 @@ bool ImGui::Combo(const char* label, int* current_item, bool (*items_getter)(voi
|
|
SetHoveredID(id);
|
|
SetHoveredID(id);
|
|
if (g.IO.MouseClicked[0])
|
|
if (g.IO.MouseClicked[0])
|
|
{
|
|
{
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
if (IsPopupOpen(id))
|
|
if (IsPopupOpen(id))
|
|
{
|
|
{
|
|
ClosePopup(id);
|
|
ClosePopup(id);
|
|
@@ -8539,7 +8544,7 @@ bool ImGui::Combo(const char* label, int* current_item, bool (*items_getter)(voi
|
|
item_text = "*Unknown item*";
|
|
item_text = "*Unknown item*";
|
|
if (Selectable(item_text, item_selected))
|
|
if (Selectable(item_text, item_selected))
|
|
{
|
|
{
|
|
- SetActiveID(0);
|
|
|
|
|
|
+ ClearActiveID();
|
|
value_changed = true;
|
|
value_changed = true;
|
|
*current_item = i;
|
|
*current_item = i;
|
|
}
|
|
}
|