Merge branch 'master' into 2016-02-colorpicker

This commit is contained in:
omar
2017-01-11 21:03:35 +01:00
5 changed files with 27 additions and 20 deletions

View File

@ -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;
}