mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Added IsWindowAppearing().
This commit is contained in:
		
							
								
								
									
										22
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -1789,6 +1789,7 @@ ImGuiWindow::ImGuiWindow(const char* name) | ||||
|     Accessed = false; | ||||
|     Collapsed = false; | ||||
|     SkipItems = false; | ||||
|     Appearing = false; | ||||
|     BeginCount = 0; | ||||
|     PopupId = 0; | ||||
|     AutoFitFramesX = AutoFitFramesY = -1; | ||||
| @@ -3976,13 +3977,15 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us | ||||
|     } | ||||
|  | ||||
|     const bool window_appearing_after_being_hidden = (window->HiddenFrames == 1); | ||||
|     window->Appearing = (!window_was_active || window_appearing_after_being_hidden); | ||||
|  | ||||
|     // Process SetNextWindow***() calls | ||||
|     bool window_pos_set_by_api = false, window_size_set_by_api = false; | ||||
|     if (g.SetNextWindowPosCond) | ||||
|     { | ||||
|         const ImVec2 backup_cursor_pos = window->DC.CursorPos;                  // FIXME: not sure of the exact reason of this saving/restore anymore :( need to look into that. | ||||
|         if (!window_was_active || window_appearing_after_being_hidden) window->SetWindowPosAllowFlags |= ImGuiCond_Appearing; | ||||
|         if (window->Appearing)  | ||||
|             window->SetWindowPosAllowFlags |= ImGuiCond_Appearing; | ||||
|         window_pos_set_by_api = (window->SetWindowPosAllowFlags & g.SetNextWindowPosCond) != 0; | ||||
|         if (window_pos_set_by_api && ImLengthSqr(g.SetNextWindowPosVal - ImVec2(-FLT_MAX,-FLT_MAX)) < 0.001f) | ||||
|         { | ||||
| @@ -3998,7 +4001,8 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us | ||||
|     } | ||||
|     if (g.SetNextWindowSizeCond) | ||||
|     { | ||||
|         if (!window_was_active || window_appearing_after_being_hidden) window->SetWindowSizeAllowFlags |= ImGuiCond_Appearing; | ||||
|         if (window->Appearing)  | ||||
|             window->SetWindowSizeAllowFlags |= ImGuiCond_Appearing; | ||||
|         window_size_set_by_api = (window->SetWindowSizeAllowFlags & g.SetNextWindowSizeCond) != 0; | ||||
|         SetWindowSize(window, g.SetNextWindowSizeVal, g.SetNextWindowSizeCond); | ||||
|         g.SetNextWindowSizeCond = 0; | ||||
| @@ -4014,13 +4018,14 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us | ||||
|     } | ||||
|     if (g.SetNextWindowCollapsedCond) | ||||
|     { | ||||
|         if (!window_was_active || window_appearing_after_being_hidden) window->SetWindowCollapsedAllowFlags |= ImGuiCond_Appearing; | ||||
|         if (window->Appearing) | ||||
|             window->SetWindowCollapsedAllowFlags |= ImGuiCond_Appearing; | ||||
|         SetWindowCollapsed(window, g.SetNextWindowCollapsedVal, g.SetNextWindowCollapsedCond); | ||||
|         g.SetNextWindowCollapsedCond = 0; | ||||
|     } | ||||
|     if (g.SetNextWindowFocus) | ||||
|     { | ||||
|         ImGui::SetWindowFocus(); | ||||
|         SetWindowFocus(); | ||||
|         g.SetNextWindowFocus = false; | ||||
|     } | ||||
|  | ||||
| @@ -5073,7 +5078,14 @@ void ImGui::SetWindowCollapsed(bool collapsed, ImGuiCond cond) | ||||
|  | ||||
| bool ImGui::IsWindowCollapsed() | ||||
| { | ||||
|     return GImGui->CurrentWindow->Collapsed; | ||||
|     ImGuiWindow* window = GetCurrentWindowRead(); | ||||
|     return window->Collapsed; | ||||
| } | ||||
|  | ||||
| bool ImGui::IsWindowAppearing() | ||||
| { | ||||
|     ImGuiWindow* window = GetCurrentWindowRead(); | ||||
|     return window->Appearing; | ||||
| } | ||||
|  | ||||
| void ImGui::SetWindowCollapsed(const char* name, bool collapsed, ImGuiCond cond) | ||||
|   | ||||
							
								
								
									
										1
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -149,6 +149,7 @@ namespace ImGui | ||||
|     IMGUI_API float         GetWindowWidth(); | ||||
|     IMGUI_API float         GetWindowHeight(); | ||||
|     IMGUI_API bool          IsWindowCollapsed(); | ||||
|     IMGUI_API bool          IsWindowAppearing(); | ||||
|     IMGUI_API void          SetWindowFontScale(float scale);                                    // per-window font scale. Adjust IO.FontGlobalScale if you want to scale all windows | ||||
|  | ||||
|     IMGUI_API void          SetNextWindowPos(const ImVec2& pos, ImGuiCond cond = 0);            // set next window position. call before Begin() | ||||
|   | ||||
| @@ -674,7 +674,8 @@ struct IMGUI_API ImGuiWindow | ||||
|     bool                    WasActive; | ||||
|     bool                    Accessed;                           // Set to true when any widget access the current window | ||||
|     bool                    Collapsed;                          // Set when collapsing window to become only title-bar | ||||
|     bool                    SkipItems;                          // == Visible && !Collapsed | ||||
|     bool                    SkipItems;                          // Set when items can safely be all clipped (e.g. window not visible or collapsed) | ||||
|     bool                    Appearing;                          // Set during the frame where the window is appearing (or re-appearing) | ||||
|     int                     BeginCount;                         // Number of Begin() during the current frame (generally 0 or 1, 1+ if appending via multiple Begin/End pairs) | ||||
|     ImGuiID                 PopupId;                            // ID in the popup stack when this window is used as a popup/menu (because we use generic Name/ID for recycling) | ||||
|     int                     AutoFitFramesX, AutoFitFramesY; | ||||
| @@ -701,7 +702,6 @@ struct IMGUI_API ImGuiWindow | ||||
|     ImGuiWindow*            RootWindow;                         // Generally point to ourself. If we are a child window, this is pointing to the first non-child parent window. | ||||
|     ImGuiWindow*            RootNonPopupWindow;                 // Generally point to ourself. Used to display TitleBgActive color and for selecting which window to use for NavWindowing | ||||
|  | ||||
|  | ||||
|     // Navigation / Focus | ||||
|     int                     FocusIdxAllCounter;                 // Start at -1 and increase as assigned via FocusItemRegister() | ||||
|     int                     FocusIdxTabCounter;                 // (same, but only count widgets which you can Tab through) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user