Undo part of 32dbe836d0 to keep the same name for both overloads (#891, #799)

This commit is contained in:
omar 2017-08-16 13:42:41 +08:00
parent f98376d02b
commit d2259f65e5
2 changed files with 16 additions and 18 deletions

View File

@ -618,7 +618,6 @@ static bool BeginPopupEx(ImGuiID id, ImGuiWindowFlags extra_flags);
static void CloseInactivePopups(); static void CloseInactivePopups();
static void ClosePopupToLevel(int remaining); static void ClosePopupToLevel(int remaining);
static void ClosePopup(ImGuiID id); static void ClosePopup(ImGuiID id);
static bool IsPopupIdOpen(ImGuiID id);
static ImGuiWindow* GetFrontMostModalRootWindow(); static ImGuiWindow* GetFrontMostModalRootWindow();
static ImVec2 FindBestPopupWindowPos(const ImVec2& base_pos, const ImVec2& size, int* last_dir, const ImRect& rect_to_avoid); static ImVec2 FindBestPopupWindowPos(const ImVec2& base_pos, const ImVec2& size, int* last_dir, const ImRect& rect_to_avoid);
@ -3396,12 +3395,6 @@ void ImGui::EndTooltip()
ImGui::End(); ImGui::End();
} }
static bool IsPopupIdOpen(ImGuiID id)
{
ImGuiContext& g = *GImGui;
return g.OpenPopupStack.Size > g.CurrentPopupStack.Size && g.OpenPopupStack[g.CurrentPopupStack.Size].PopupId == id;
}
// Mark popup as open (toggle toward open state). // Mark popup as open (toggle toward open state).
// Popups are closed when user click outside, or activate a pressable item, or CloseCurrentPopup() is called within a BeginPopup()/EndPopup() block. // Popups are closed when user click outside, or activate a pressable item, or CloseCurrentPopup() is called within a BeginPopup()/EndPopup() block.
// Popup identifiers are relative to the current ID-stack (so OpenPopup and BeginPopup needs to be at the same level). // Popup identifiers are relative to the current ID-stack (so OpenPopup and BeginPopup needs to be at the same level).
@ -3480,7 +3473,7 @@ static void ClosePopupToLevel(int remaining)
static void ClosePopup(ImGuiID id) static void ClosePopup(ImGuiID id)
{ {
if (!IsPopupIdOpen(id)) if (!ImGui::IsPopupOpen(id))
return; return;
ImGuiContext& g = *GImGui; ImGuiContext& g = *GImGui;
ClosePopupToLevel(g.OpenPopupStack.Size - 1); ClosePopupToLevel(g.OpenPopupStack.Size - 1);
@ -3509,7 +3502,7 @@ static bool BeginPopupEx(ImGuiID id, ImGuiWindowFlags extra_flags)
{ {
ImGuiContext& g = *GImGui; ImGuiContext& g = *GImGui;
ImGuiWindow* window = g.CurrentWindow; ImGuiWindow* window = g.CurrentWindow;
if (!IsPopupIdOpen(id)) if (!ImGui::IsPopupOpen(id))
{ {
ClearSetNextWindowData(); // We behave like Begin() and need to consume those values ClearSetNextWindowData(); // We behave like Begin() and need to consume those values
return false; return false;
@ -3544,12 +3537,16 @@ bool ImGui::BeginPopup(const char* str_id)
return BeginPopupEx(g.CurrentWindow->GetID(str_id), ImGuiWindowFlags_ShowBorders); return BeginPopupEx(g.CurrentWindow->GetID(str_id), ImGuiWindowFlags_ShowBorders);
} }
bool ImGui::IsPopupOpen(ImGuiID id)
{
ImGuiContext& g = *GImGui;
return g.OpenPopupStack.Size > g.CurrentPopupStack.Size && g.OpenPopupStack[g.CurrentPopupStack.Size].PopupId == id;
}
bool ImGui::IsPopupOpen(const char* str_id) bool ImGui::IsPopupOpen(const char* str_id)
{ {
ImGuiContext& g = *GImGui; ImGuiContext& g = *GImGui;
ImGuiWindow* window = g.CurrentWindow; return g.OpenPopupStack.Size > g.CurrentPopupStack.Size && g.OpenPopupStack[g.CurrentPopupStack.Size].PopupId == g.CurrentWindow->GetID(str_id);
const ImGuiID id = window->GetID(str_id);
return IsPopupIdOpen(id);
} }
bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags extra_flags) bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags extra_flags)
@ -3557,7 +3554,7 @@ bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags ext
ImGuiContext& g = *GImGui; ImGuiContext& g = *GImGui;
ImGuiWindow* window = g.CurrentWindow; ImGuiWindow* window = g.CurrentWindow;
const ImGuiID id = window->GetID(name); const ImGuiID id = window->GetID(name);
if (!IsPopupIdOpen(id)) if (!IsPopupOpen(id))
{ {
ClearSetNextWindowData(); // We behave like Begin() and need to consume those values ClearSetNextWindowData(); // We behave like Begin() and need to consume those values
return false; return false;
@ -8483,7 +8480,7 @@ bool ImGui::Combo(const char* label, int* current_item, bool (*items_getter)(voi
const float arrow_size = (g.FontSize + style.FramePadding.x * 2.0f); const float arrow_size = (g.FontSize + style.FramePadding.x * 2.0f);
const bool hovered = IsHovered(frame_bb, id); const bool hovered = IsHovered(frame_bb, id);
bool popup_open = IsPopupIdOpen(id); bool popup_open = IsPopupOpen(id);
bool popup_opened_now = false; bool popup_opened_now = false;
const ImRect value_bb(frame_bb.Min, frame_bb.Max - ImVec2(arrow_size, 0.0f)); const ImRect value_bb(frame_bb.Min, frame_bb.Max - ImVec2(arrow_size, 0.0f));
@ -8507,7 +8504,7 @@ bool ImGui::Combo(const char* label, int* current_item, bool (*items_getter)(voi
if (g.IO.MouseClicked[0]) if (g.IO.MouseClicked[0])
{ {
ClearActiveID(); ClearActiveID();
if (IsPopupIdOpen(id)) if (IsPopupOpen(id))
{ {
ClosePopup(id); ClosePopup(id);
} }
@ -8521,7 +8518,7 @@ bool ImGui::Combo(const char* label, int* current_item, bool (*items_getter)(voi
} }
bool value_changed = false; bool value_changed = false;
if (IsPopupIdOpen(id)) if (IsPopupOpen(id))
{ {
// Size default to hold ~7 items // Size default to hold ~7 items
if (height_in_items < 0) if (height_in_items < 0)
@ -8867,7 +8864,7 @@ bool ImGui::BeginMenu(const char* label, bool enabled)
ImGuiWindow* backed_focused_window = g.FocusedWindow; ImGuiWindow* backed_focused_window = g.FocusedWindow;
bool pressed; bool pressed;
bool menu_is_open = IsPopupIdOpen(id); bool menu_is_open = IsPopupOpen(id);
bool menuset_is_open = !(window->Flags & ImGuiWindowFlags_Popup) && (g.OpenPopupStack.Size > g.CurrentPopupStack.Size && g.OpenPopupStack[g.CurrentPopupStack.Size].ParentMenuSet == window->GetID("##menus")); bool menuset_is_open = !(window->Flags & ImGuiWindowFlags_Popup) && (g.OpenPopupStack.Size > g.CurrentPopupStack.Size && g.OpenPopupStack[g.CurrentPopupStack.Size].ParentMenuSet == window->GetID("##menus"));
if (menuset_is_open) if (menuset_is_open)
g.FocusedWindow = window; g.FocusedWindow = window;
@ -8934,7 +8931,7 @@ bool ImGui::BeginMenu(const char* label, bool enabled)
want_open = true; want_open = true;
if (!enabled) // explicitly close if an open menu becomes disabled, facilitate users code a lot in pattern such as 'if (BeginMenu("options", has_object)) { ..use object.. }' if (!enabled) // explicitly close if an open menu becomes disabled, facilitate users code a lot in pattern such as 'if (BeginMenu("options", has_object)) { ..use object.. }'
want_close = true; want_close = true;
if (want_close && IsPopupIdOpen(id)) if (want_close && IsPopupOpen(id))
ClosePopupToLevel(GImGui->CurrentPopupStack.Size); ClosePopupToLevel(GImGui->CurrentPopupStack.Size);
if (!menu_is_open && want_open && g.OpenPopupStack.Size > g.CurrentPopupStack.Size) if (!menu_is_open && want_open && g.OpenPopupStack.Size > g.CurrentPopupStack.Size)

View File

@ -746,6 +746,7 @@ namespace ImGui
IMGUI_API float CalcWrapWidthForPos(const ImVec2& pos, float wrap_pos_x); IMGUI_API float CalcWrapWidthForPos(const ImVec2& pos, float wrap_pos_x);
IMGUI_API void OpenPopupEx(const char* str_id, bool reopen_existing); IMGUI_API void OpenPopupEx(const char* str_id, bool reopen_existing);
IMGUI_API bool IsPopupOpen(ImGuiID id);
// NB: All position are in absolute pixels coordinates (never using window coordinates internally) // NB: All position are in absolute pixels coordinates (never using window coordinates internally)
// AVOID USING OUTSIDE OF IMGUI.CPP! NOT FOR PUBLIC CONSUMPTION. THOSE FUNCTIONS ARE A MESS. THEIR SIGNATURE AND BEHAVIOR WILL CHANGE, THEY NEED TO BE REFACTORED INTO SOMETHING DECENT. // AVOID USING OUTSIDE OF IMGUI.CPP! NOT FOR PUBLIC CONSUMPTION. THOSE FUNCTIONS ARE A MESS. THEIR SIGNATURE AND BEHAVIOR WILL CHANGE, THEY NEED TO BE REFACTORED INTO SOMETHING DECENT.