mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	Using named flags instead of 0 + shallow formatting tweaks from other branches.
This commit is contained in:
		
							
								
								
									
										49
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										49
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -2328,7 +2328,7 @@ ImGuiWindow::ImGuiWindow(ImGuiContext* context, const char* name) | ||||
|     Name = ImStrdup(name); | ||||
|     ID = ImHash(name, 0); | ||||
|     IDStack.push_back(ID); | ||||
|     Flags = 0; | ||||
|     Flags = ImGuiWindowFlags_None; | ||||
|     Pos = ImVec2(0.0f, 0.0f); | ||||
|     Size = SizeFull = 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.LastItemRect = bb; | ||||
|     window->DC.LastItemStatusFlags = 0; | ||||
|     window->DC.LastItemStatusFlags = ImGuiItemStatusFlags_None; | ||||
|  | ||||
| #ifdef IMGUI_ENABLE_TEST_ENGINE | ||||
|     ImGuiTestEngineHook_ItemAdd(id, bb); | ||||
| @@ -4017,7 +4017,8 @@ bool ImGui::IsItemDeactivatedAfterEdit() | ||||
| bool ImGui::IsItemFocused() | ||||
| { | ||||
|     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) | ||||
| @@ -4607,6 +4608,8 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | ||||
|  | ||||
|     const int current_frame = g.FrameCount; | ||||
|     const bool first_begin_of_the_frame = (window->LastFrameActive != current_frame); | ||||
|  | ||||
|     // Update Flags, LastFrameActive, BeginOrderXXX fields | ||||
|     if (first_begin_of_the_frame) | ||||
|         window->Flags = (ImGuiWindowFlags)flags; | ||||
|     else | ||||
| @@ -4940,9 +4943,11 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | ||||
|             g.NextWindowData.BgAlphaCond = 0; | ||||
|  | ||||
|             // Title bar | ||||
|             ImU32 title_bar_col = GetColorU32(window->Collapsed ? ImGuiCol_TitleBgCollapsed : title_bar_is_highlight ? ImGuiCol_TitleBgActive : ImGuiCol_TitleBg); | ||||
|             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); | ||||
|             } | ||||
|  | ||||
|             // Menu bar | ||||
|             if (flags & ImGuiWindowFlags_MenuBar) | ||||
| @@ -5166,7 +5171,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | ||||
|         window->HiddenFramesRegular = 1; | ||||
|  | ||||
|     // 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 | ||||
|     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 | ||||
|         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) | ||||
| @@ -6593,7 +6599,8 @@ bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags fla | ||||
|     if (g.NextWindowData.PosCond == 0) | ||||
|         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) | ||||
|     { | ||||
|         EndPopup(); | ||||
| @@ -6756,6 +6763,12 @@ ImVec2 ImGui::FindBestWindowPosForPopup(ImGuiWindow* window) | ||||
|     return window->Pos; | ||||
| } | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
| // [SECTION] VIEWPORTS, PLATFORM WINDOWS | ||||
| //----------------------------------------------------------------------------- | ||||
|  | ||||
| // (this section is filled in the 'viewport' and 'docking' branches) | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
| // [SECTION] KEYBOARD/GAMEPAD NAVIGATION | ||||
| //----------------------------------------------------------------------------- | ||||
| @@ -6857,7 +6870,7 @@ static bool NavScoreItem(ImGuiNavMoveResult* result, ImRect cand) | ||||
|     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]); | ||||
|         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(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)); | ||||
| @@ -6869,7 +6882,7 @@ static bool NavScoreItem(ImGuiNavMoveResult* result, ImRect cand) | ||||
|         if (quadrant == g.NavMoveDir) | ||||
|         { | ||||
|             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->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) | ||||
| { | ||||
|     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)) | ||||
|         return; | ||||
|  | ||||
| @@ -7365,7 +7378,7 @@ static void ImGui::NavUpdate() | ||||
|     if (g.NavMoveRequestForward == ImGuiNavForward_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 ((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 | ||||
|         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; | ||||
|         if (new_nav_window != g.NavWindow) | ||||
|         { | ||||
| @@ -8101,7 +8116,7 @@ void ImGui::ClearDragDrop() | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     g.DragDropActive = false; | ||||
|     g.DragDropPayload.Clear(); | ||||
|     g.DragDropAcceptFlags = 0; | ||||
|     g.DragDropAcceptFlags = ImGuiDragDropFlags_None; | ||||
|     g.DragDropAcceptIdCurr = g.DragDropAcceptIdPrev = 0; | ||||
|     g.DragDropAcceptIdCurrRectSurface = FLT_MAX; | ||||
|     g.DragDropAcceptFrameCount = -1; | ||||
| @@ -8385,6 +8400,12 @@ void ImGui::EndDragDropTarget() | ||||
|     g.DragDropWithinSourceOrTarget = false; | ||||
| } | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
| // [SECTION] DOCKING | ||||
| //----------------------------------------------------------------------------- | ||||
|  | ||||
| // (this section is filled in the 'docking' branch) | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
| // [SECTION] LOGGING/CAPTURING | ||||
| //----------------------------------------------------------------------------- | ||||
| @@ -8892,6 +8913,7 @@ void ImGui::ShowMetricsWindow(bool* p_open) | ||||
|         ImGui::End(); | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     static bool show_draw_cmd_clip_rects = true; | ||||
|     static bool show_window_begin_order = false; | ||||
|     ImGuiIO& io = ImGui::GetIO(); | ||||
| @@ -8902,7 +8924,6 @@ void ImGui::ShowMetricsWindow(bool* p_open) | ||||
|     ImGui::Text("%d allocations", io.MetricsActiveAllocations); | ||||
|     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::Separator(); | ||||
|  | ||||
|     struct Funcs | ||||
|   | ||||
		Reference in New Issue
	
	Block a user