|
@@ -2328,7 +2328,7 @@ ImGuiWindow::ImGuiWindow(ImGuiContext* context, const char* name)
|
|
Name = ImStrdup(name);
|
|
Name = ImStrdup(name);
|
|
ID = ImHash(name, 0);
|
|
ID = ImHash(name, 0);
|
|
IDStack.push_back(ID);
|
|
IDStack.push_back(ID);
|
|
- Flags = 0;
|
|
|
|
|
|
+ Flags = ImGuiWindowFlags_None;
|
|
Pos = ImVec2(0.0f, 0.0f);
|
|
Pos = ImVec2(0.0f, 0.0f);
|
|
Size = SizeFull = ImVec2(0.0f, 0.0f);
|
|
Size = SizeFull = ImVec2(0.0f, 0.0f);
|
|
SizeContents = SizeContentsExplicit = ImVec2(0.0f, 0.0f);
|
|
SizeContents = SizeContentsExplicit = ImVec2(0.0f, 0.0f);
|
|
@@ -2620,7 +2620,7 @@ bool ImGui::ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb_arg)
|
|
|
|
|
|
window->DC.LastItemId = id;
|
|
window->DC.LastItemId = id;
|
|
window->DC.LastItemRect = bb;
|
|
window->DC.LastItemRect = bb;
|
|
- window->DC.LastItemStatusFlags = 0;
|
|
|
|
|
|
+ window->DC.LastItemStatusFlags = ImGuiItemStatusFlags_None;
|
|
|
|
|
|
#ifdef IMGUI_ENABLE_TEST_ENGINE
|
|
#ifdef IMGUI_ENABLE_TEST_ENGINE
|
|
ImGuiTestEngineHook_ItemAdd(id, bb);
|
|
ImGuiTestEngineHook_ItemAdd(id, bb);
|
|
@@ -4017,7 +4017,8 @@ bool ImGui::IsItemDeactivatedAfterEdit()
|
|
bool ImGui::IsItemFocused()
|
|
bool ImGui::IsItemFocused()
|
|
{
|
|
{
|
|
ImGuiContext& g = *GImGui;
|
|
ImGuiContext& g = *GImGui;
|
|
- return g.NavId && !g.NavDisableHighlight && g.NavId == g.CurrentWindow->DC.LastItemId;
|
|
|
|
|
|
+ ImGuiWindow* window = g.CurrentWindow;
|
|
|
|
+ return g.NavId && !g.NavDisableHighlight && g.NavId == window->DC.LastItemId;
|
|
}
|
|
}
|
|
|
|
|
|
bool ImGui::IsItemClicked(int mouse_button)
|
|
bool ImGui::IsItemClicked(int mouse_button)
|
|
@@ -4607,6 +4608,8 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
|
|
|
const int current_frame = g.FrameCount;
|
|
const int current_frame = g.FrameCount;
|
|
const bool first_begin_of_the_frame = (window->LastFrameActive != current_frame);
|
|
const bool first_begin_of_the_frame = (window->LastFrameActive != current_frame);
|
|
|
|
+
|
|
|
|
+ // Update Flags, LastFrameActive, BeginOrderXXX fields
|
|
if (first_begin_of_the_frame)
|
|
if (first_begin_of_the_frame)
|
|
window->Flags = (ImGuiWindowFlags)flags;
|
|
window->Flags = (ImGuiWindowFlags)flags;
|
|
else
|
|
else
|
|
@@ -4940,9 +4943,11 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
g.NextWindowData.BgAlphaCond = 0;
|
|
g.NextWindowData.BgAlphaCond = 0;
|
|
|
|
|
|
// Title bar
|
|
// Title bar
|
|
- ImU32 title_bar_col = GetColorU32(window->Collapsed ? ImGuiCol_TitleBgCollapsed : title_bar_is_highlight ? ImGuiCol_TitleBgActive : ImGuiCol_TitleBg);
|
|
|
|
if (!(flags & ImGuiWindowFlags_NoTitleBar))
|
|
if (!(flags & ImGuiWindowFlags_NoTitleBar))
|
|
|
|
+ {
|
|
|
|
+ ImU32 title_bar_col = GetColorU32(window->Collapsed ? ImGuiCol_TitleBgCollapsed : title_bar_is_highlight ? ImGuiCol_TitleBgActive : ImGuiCol_TitleBg);
|
|
window->DrawList->AddRectFilled(title_bar_rect.Min, title_bar_rect.Max, title_bar_col, window_rounding, ImDrawCornerFlags_Top);
|
|
window->DrawList->AddRectFilled(title_bar_rect.Min, title_bar_rect.Max, title_bar_col, window_rounding, ImDrawCornerFlags_Top);
|
|
|
|
+ }
|
|
|
|
|
|
// Menu bar
|
|
// Menu bar
|
|
if (flags & ImGuiWindowFlags_MenuBar)
|
|
if (flags & ImGuiWindowFlags_MenuBar)
|
|
@@ -5166,7 +5171,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
window->HiddenFramesRegular = 1;
|
|
window->HiddenFramesRegular = 1;
|
|
|
|
|
|
// Update the Hidden flag
|
|
// Update the Hidden flag
|
|
- window->Hidden = (window->HiddenFramesRegular > 0) || (window->HiddenFramesForResize);
|
|
|
|
|
|
+ window->Hidden = (window->HiddenFramesRegular > 0) || (window->HiddenFramesForResize > 0);
|
|
|
|
|
|
// Return false if we don't intend to display anything to allow user to perform an early out optimization
|
|
// Return false if we don't intend to display anything to allow user to perform an early out optimization
|
|
window->SkipItems = (window->Collapsed || !window->Active || window->Hidden) && window->AutoFitFramesX <= 0 && window->AutoFitFramesY <= 0 && window->HiddenFramesForResize <= 0;
|
|
window->SkipItems = (window->Collapsed || !window->Active || window->Hidden) && window->AutoFitFramesX <= 0 && window->AutoFitFramesY <= 0 && window->HiddenFramesForResize <= 0;
|
|
@@ -6574,7 +6579,8 @@ bool ImGui::BeginPopup(const char* str_id, ImGuiWindowFlags flags)
|
|
g.NextWindowData.Clear(); // We behave like Begin() and need to consume those values
|
|
g.NextWindowData.Clear(); // We behave like Begin() and need to consume those values
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
- return BeginPopupEx(g.CurrentWindow->GetID(str_id), flags|ImGuiWindowFlags_AlwaysAutoResize|ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoSavedSettings);
|
|
|
|
|
|
+ flags |= ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings;
|
|
|
|
+ return BeginPopupEx(g.CurrentWindow->GetID(str_id), flags);
|
|
}
|
|
}
|
|
|
|
|
|
bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
@@ -6593,7 +6599,8 @@ bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags fla
|
|
if (g.NextWindowData.PosCond == 0)
|
|
if (g.NextWindowData.PosCond == 0)
|
|
SetNextWindowPos(g.IO.DisplaySize * 0.5f, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f));
|
|
SetNextWindowPos(g.IO.DisplaySize * 0.5f, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f));
|
|
|
|
|
|
- bool is_open = Begin(name, p_open, flags | ImGuiWindowFlags_Popup | ImGuiWindowFlags_Modal | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings);
|
|
|
|
|
|
+ flags |= ImGuiWindowFlags_Popup | ImGuiWindowFlags_Modal | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings;
|
|
|
|
+ const bool is_open = Begin(name, p_open, flags);
|
|
if (!is_open || (p_open && !*p_open)) // NB: is_open can be 'false' when the popup is completely clipped (e.g. zero size display)
|
|
if (!is_open || (p_open && !*p_open)) // NB: is_open can be 'false' when the popup is completely clipped (e.g. zero size display)
|
|
{
|
|
{
|
|
EndPopup();
|
|
EndPopup();
|
|
@@ -6756,6 +6763,12 @@ ImVec2 ImGui::FindBestWindowPosForPopup(ImGuiWindow* window)
|
|
return window->Pos;
|
|
return window->Pos;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
|
+// [SECTION] VIEWPORTS, PLATFORM WINDOWS
|
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
|
+
|
|
|
|
+// (this section is filled in the 'viewport' and 'docking' branches)
|
|
|
|
+
|
|
//-----------------------------------------------------------------------------
|
|
//-----------------------------------------------------------------------------
|
|
// [SECTION] KEYBOARD/GAMEPAD NAVIGATION
|
|
// [SECTION] KEYBOARD/GAMEPAD NAVIGATION
|
|
//-----------------------------------------------------------------------------
|
|
//-----------------------------------------------------------------------------
|
|
@@ -6857,7 +6870,7 @@ static bool NavScoreItem(ImGuiNavMoveResult* result, ImRect cand)
|
|
if (ImGui::IsMouseHoveringRect(cand.Min, cand.Max))
|
|
if (ImGui::IsMouseHoveringRect(cand.Min, cand.Max))
|
|
{
|
|
{
|
|
ImFormatString(buf, IM_ARRAYSIZE(buf), "dbox (%.2f,%.2f->%.4f)\ndcen (%.2f,%.2f->%.4f)\nd (%.2f,%.2f->%.4f)\nnav %c, quadrant %c", dbx, dby, dist_box, dcx, dcy, dist_center, dax, day, dist_axial, "WENS"[g.NavMoveDir], "WENS"[quadrant]);
|
|
ImFormatString(buf, IM_ARRAYSIZE(buf), "dbox (%.2f,%.2f->%.4f)\ndcen (%.2f,%.2f->%.4f)\nd (%.2f,%.2f->%.4f)\nnav %c, quadrant %c", dbx, dby, dist_box, dcx, dcy, dist_center, dax, day, dist_axial, "WENS"[g.NavMoveDir], "WENS"[quadrant]);
|
|
- ImDrawList* draw_list = GetOverlayDrawList(window);
|
|
|
|
|
|
+ ImDrawList* draw_list = ImGui::GetOverlayDrawList(window);
|
|
draw_list->AddRect(curr.Min, curr.Max, IM_COL32(255,200,0,100));
|
|
draw_list->AddRect(curr.Min, curr.Max, IM_COL32(255,200,0,100));
|
|
draw_list->AddRect(cand.Min, cand.Max, IM_COL32(255,255,0,200));
|
|
draw_list->AddRect(cand.Min, cand.Max, IM_COL32(255,255,0,200));
|
|
draw_list->AddRectFilled(cand.Max-ImVec2(4,4), cand.Max+ImGui::CalcTextSize(buf)+ImVec2(4,4), IM_COL32(40,0,0,150));
|
|
draw_list->AddRectFilled(cand.Max-ImVec2(4,4), cand.Max+ImGui::CalcTextSize(buf)+ImVec2(4,4), IM_COL32(40,0,0,150));
|
|
@@ -6869,7 +6882,7 @@ static bool NavScoreItem(ImGuiNavMoveResult* result, ImRect cand)
|
|
if (quadrant == g.NavMoveDir)
|
|
if (quadrant == g.NavMoveDir)
|
|
{
|
|
{
|
|
ImFormatString(buf, IM_ARRAYSIZE(buf), "%.0f/%.0f", dist_box, dist_center);
|
|
ImFormatString(buf, IM_ARRAYSIZE(buf), "%.0f/%.0f", dist_box, dist_center);
|
|
- ImDrawList* draw_list = GetOverlayDrawList(window);
|
|
|
|
|
|
+ ImDrawList* draw_list = ImGui::GetOverlayDrawList(window);
|
|
draw_list->AddRectFilled(cand.Min, cand.Max, IM_COL32(255, 0, 0, 200));
|
|
draw_list->AddRectFilled(cand.Min, cand.Max, IM_COL32(255, 0, 0, 200));
|
|
draw_list->AddText(g.IO.FontDefault, 13.0f, cand.Min, IM_COL32(255, 255, 255, 255), buf);
|
|
draw_list->AddText(g.IO.FontDefault, 13.0f, cand.Min, IM_COL32(255, 255, 255, 255), buf);
|
|
}
|
|
}
|
|
@@ -7173,7 +7186,7 @@ ImVec2 ImGui::GetNavInputAmount2d(ImGuiNavDirSourceFlags dir_sources, ImGuiInput
|
|
static void NavScrollToBringItemIntoView(ImGuiWindow* window, const ImRect& item_rect)
|
|
static void NavScrollToBringItemIntoView(ImGuiWindow* window, const ImRect& item_rect)
|
|
{
|
|
{
|
|
ImRect window_rect(window->InnerMainRect.Min - ImVec2(1, 1), window->InnerMainRect.Max + ImVec2(1, 1));
|
|
ImRect window_rect(window->InnerMainRect.Min - ImVec2(1, 1), window->InnerMainRect.Max + ImVec2(1, 1));
|
|
- //g.OverlayDrawList.AddRect(window_rect.Min, window_rect.Max, IM_COL32_WHITE); // [DEBUG]
|
|
|
|
|
|
+ //GetOverlayDrawList(window)->AddRect(window_rect.Min, window_rect.Max, IM_COL32_WHITE); // [DEBUG]
|
|
if (window_rect.Contains(item_rect))
|
|
if (window_rect.Contains(item_rect))
|
|
return;
|
|
return;
|
|
|
|
|
|
@@ -7365,7 +7378,7 @@ static void ImGui::NavUpdate()
|
|
if (g.NavMoveRequestForward == ImGuiNavForward_None)
|
|
if (g.NavMoveRequestForward == ImGuiNavForward_None)
|
|
{
|
|
{
|
|
g.NavMoveDir = ImGuiDir_None;
|
|
g.NavMoveDir = ImGuiDir_None;
|
|
- g.NavMoveRequestFlags = 0;
|
|
|
|
|
|
+ g.NavMoveRequestFlags = ImGuiNavMoveFlags_None;
|
|
if (g.NavWindow && !g.NavWindowingTarget && allowed_dir_flags && !(g.NavWindow->Flags & ImGuiWindowFlags_NoNavInputs))
|
|
if (g.NavWindow && !g.NavWindowingTarget && allowed_dir_flags && !(g.NavWindow->Flags & ImGuiWindowFlags_NoNavInputs))
|
|
{
|
|
{
|
|
if ((allowed_dir_flags & (1<<ImGuiDir_Left)) && IsNavInputPressedAnyOfTwo(ImGuiNavInput_DpadLeft, ImGuiNavInput_KeyLeft_, ImGuiInputReadMode_Repeat)) g.NavMoveDir = ImGuiDir_Left;
|
|
if ((allowed_dir_flags & (1<<ImGuiDir_Left)) && IsNavInputPressedAnyOfTwo(ImGuiNavInput_DpadLeft, ImGuiNavInput_KeyLeft_, ImGuiInputReadMode_Repeat)) g.NavMoveDir = ImGuiDir_Left;
|
|
@@ -7716,7 +7729,9 @@ static void ImGui::NavUpdateWindowing()
|
|
{
|
|
{
|
|
// Move to parent menu if necessary
|
|
// Move to parent menu if necessary
|
|
ImGuiWindow* new_nav_window = g.NavWindow;
|
|
ImGuiWindow* new_nav_window = g.NavWindow;
|
|
- while ((new_nav_window->DC.NavLayerActiveMask & (1 << 1)) == 0 && (new_nav_window->Flags & ImGuiWindowFlags_ChildWindow) != 0 && (new_nav_window->Flags & (ImGuiWindowFlags_Popup | ImGuiWindowFlags_ChildMenu)) == 0)
|
|
|
|
|
|
+ while ((new_nav_window->DC.NavLayerActiveMask & (1 << 1)) == 0
|
|
|
|
+ && (new_nav_window->Flags & ImGuiWindowFlags_ChildWindow) != 0
|
|
|
|
+ && (new_nav_window->Flags & (ImGuiWindowFlags_Popup | ImGuiWindowFlags_ChildMenu)) == 0)
|
|
new_nav_window = new_nav_window->ParentWindow;
|
|
new_nav_window = new_nav_window->ParentWindow;
|
|
if (new_nav_window != g.NavWindow)
|
|
if (new_nav_window != g.NavWindow)
|
|
{
|
|
{
|
|
@@ -8101,7 +8116,7 @@ void ImGui::ClearDragDrop()
|
|
ImGuiContext& g = *GImGui;
|
|
ImGuiContext& g = *GImGui;
|
|
g.DragDropActive = false;
|
|
g.DragDropActive = false;
|
|
g.DragDropPayload.Clear();
|
|
g.DragDropPayload.Clear();
|
|
- g.DragDropAcceptFlags = 0;
|
|
|
|
|
|
+ g.DragDropAcceptFlags = ImGuiDragDropFlags_None;
|
|
g.DragDropAcceptIdCurr = g.DragDropAcceptIdPrev = 0;
|
|
g.DragDropAcceptIdCurr = g.DragDropAcceptIdPrev = 0;
|
|
g.DragDropAcceptIdCurrRectSurface = FLT_MAX;
|
|
g.DragDropAcceptIdCurrRectSurface = FLT_MAX;
|
|
g.DragDropAcceptFrameCount = -1;
|
|
g.DragDropAcceptFrameCount = -1;
|
|
@@ -8385,6 +8400,12 @@ void ImGui::EndDragDropTarget()
|
|
g.DragDropWithinSourceOrTarget = false;
|
|
g.DragDropWithinSourceOrTarget = false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
|
+// [SECTION] DOCKING
|
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
|
+
|
|
|
|
+// (this section is filled in the 'docking' branch)
|
|
|
|
+
|
|
//-----------------------------------------------------------------------------
|
|
//-----------------------------------------------------------------------------
|
|
// [SECTION] LOGGING/CAPTURING
|
|
// [SECTION] LOGGING/CAPTURING
|
|
//-----------------------------------------------------------------------------
|
|
//-----------------------------------------------------------------------------
|
|
@@ -8892,6 +8913,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
|
|
ImGui::End();
|
|
ImGui::End();
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+
|
|
static bool show_draw_cmd_clip_rects = true;
|
|
static bool show_draw_cmd_clip_rects = true;
|
|
static bool show_window_begin_order = false;
|
|
static bool show_window_begin_order = false;
|
|
ImGuiIO& io = ImGui::GetIO();
|
|
ImGuiIO& io = ImGui::GetIO();
|
|
@@ -8902,7 +8924,6 @@ void ImGui::ShowMetricsWindow(bool* p_open)
|
|
ImGui::Text("%d allocations", io.MetricsActiveAllocations);
|
|
ImGui::Text("%d allocations", io.MetricsActiveAllocations);
|
|
ImGui::Checkbox("Show clipping rectangles when hovering draw commands", &show_draw_cmd_clip_rects);
|
|
ImGui::Checkbox("Show clipping rectangles when hovering draw commands", &show_draw_cmd_clip_rects);
|
|
ImGui::Checkbox("Ctrl shows window begin order", &show_window_begin_order);
|
|
ImGui::Checkbox("Ctrl shows window begin order", &show_window_begin_order);
|
|
-
|
|
|
|
ImGui::Separator();
|
|
ImGui::Separator();
|
|
|
|
|
|
struct Funcs
|
|
struct Funcs
|