mirror of
https://github.com/Drezil/imgui.git
synced 2025-07-04 12:08:47 +02:00
Merge branch 'master' into 2016-02-colorpicker
This commit is contained in:
37
imgui.cpp
37
imgui.cpp
@ -1860,7 +1860,7 @@ ImGuiWindow* ImGui::GetParentWindow()
|
||||
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;
|
||||
g.ActiveId = id;
|
||||
@ -1871,6 +1871,11 @@ void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window = NULL)
|
||||
g.ActiveIdWindow = window;
|
||||
}
|
||||
|
||||
void ImGui::ClearActiveID()
|
||||
{
|
||||
SetActiveID(0, NULL);
|
||||
}
|
||||
|
||||
void ImGui::SetHoveredID(ImGuiID id)
|
||||
{
|
||||
ImGuiContext& g = *GImGui;
|
||||
@ -2206,7 +2211,7 @@ void ImGui::NewFrame()
|
||||
g.HoveredId = 0;
|
||||
g.HoveredIdAllowOverlap = false;
|
||||
if (!g.ActiveIdIsAlive && g.ActiveIdPreviousFrame == g.ActiveId && g.ActiveId != 0)
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
g.ActiveIdPreviousFrame = g.ActiveId;
|
||||
g.ActiveIdIsAlive = false;
|
||||
g.ActiveIdIsJustActivated = false;
|
||||
@ -2229,7 +2234,7 @@ void ImGui::NewFrame()
|
||||
}
|
||||
else
|
||||
{
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
g.MovedWindow = NULL;
|
||||
g.MovedWindowMoveId = 0;
|
||||
}
|
||||
@ -4216,7 +4221,7 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
|
||||
ApplySizeFullWithConstraint(window, size_auto_fit);
|
||||
if (!(flags & ImGuiWindowFlags_NoSavedSettings))
|
||||
MarkIniSettingsDirty();
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
}
|
||||
else if (held)
|
||||
{
|
||||
@ -4564,7 +4569,7 @@ void ImGui::FocusWindow(ImGuiWindow* window)
|
||||
// Steal focus on active widgets
|
||||
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)
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
|
||||
// Bring to front
|
||||
if ((window->Flags & ImGuiWindowFlags_NoBringToFrontOnFocus) || g.Windows.back() == window)
|
||||
@ -5537,7 +5542,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool
|
||||
{
|
||||
if (out_hovered) *out_hovered = false;
|
||||
if (out_held) *out_held = false;
|
||||
if (g.ActiveId == id) SetActiveID(0);
|
||||
if (g.ActiveId == id) ClearActiveID();
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -5565,14 +5570,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]))
|
||||
{
|
||||
pressed = true;
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
FocusWindow(window);
|
||||
}
|
||||
if ((flags & ImGuiButtonFlags_PressedOnRelease) && g.IO.MouseReleased[0])
|
||||
{
|
||||
if (!((flags & ImGuiButtonFlags_Repeat) && g.IO.MouseDownDurationPrev[0] >= g.IO.KeyRepeatDelay)) // Repeat mode trumps <on release>
|
||||
pressed = true;
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
}
|
||||
|
||||
// 'Repeat' mode acts when held regardless of _PressedOn flags (see table above).
|
||||
@ -5594,7 +5599,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool
|
||||
if (hovered && (flags & ImGuiButtonFlags_PressedOnClickRelease))
|
||||
if (!((flags & ImGuiButtonFlags_Repeat) && g.IO.MouseDownDurationPrev[0] >= g.IO.KeyRepeatDelay)) // Repeat mode trumps <on release>
|
||||
pressed = true;
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
}
|
||||
}
|
||||
|
||||
@ -6559,7 +6564,7 @@ bool ImGui::SliderBehavior(const ImRect& frame_bb, ImGuiID id, float* v, float v
|
||||
}
|
||||
else
|
||||
{
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
}
|
||||
}
|
||||
|
||||
@ -6875,7 +6880,7 @@ bool ImGui::DragBehavior(const ImRect& frame_bb, ImGuiID id, float* v, float v_s
|
||||
}
|
||||
else
|
||||
{
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
}
|
||||
}
|
||||
|
||||
@ -7778,7 +7783,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
|
||||
{
|
||||
// Release focus when we click outside
|
||||
if (g.ActiveId == id)
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
}
|
||||
|
||||
bool value_changed = false;
|
||||
@ -7880,7 +7885,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
|
||||
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))
|
||||
{
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
enter_pressed = true;
|
||||
}
|
||||
else if (is_editable)
|
||||
@ -7896,7 +7901,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
|
||||
if (InputTextFilterCharacter(&c, flags, callback, user_data))
|
||||
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_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; }
|
||||
@ -8491,7 +8496,7 @@ bool ImGui::Combo(const char* label, int* current_item, bool (*items_getter)(voi
|
||||
SetHoveredID(id);
|
||||
if (g.IO.MouseClicked[0])
|
||||
{
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
if (IsPopupOpen(id))
|
||||
{
|
||||
ClosePopup(id);
|
||||
@ -8540,7 +8545,7 @@ bool ImGui::Combo(const char* label, int* current_item, bool (*items_getter)(voi
|
||||
item_text = "*Unknown item*";
|
||||
if (Selectable(item_text, item_selected))
|
||||
{
|
||||
SetActiveID(0);
|
||||
ClearActiveID();
|
||||
value_changed = true;
|
||||
*current_item = i;
|
||||
}
|
||||
|
Reference in New Issue
Block a user