mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Double-click on resize grip doesn't need to test HoveredWindow (as button has the flattenchild flag anyway) + double-click on title bar verify that we don't have overlapping items to allow contents in title bar. + Comments
This commit is contained in:
		@@ -5905,7 +5905,7 @@ static void ImGui::UpdateManualResize(ImGuiWindow* window, const ImVec2& size_au
 | 
				
			|||||||
        if (hovered || held)
 | 
					        if (hovered || held)
 | 
				
			||||||
            g.MouseCursor = (resize_grip_n & 1) ? ImGuiMouseCursor_ResizeNESW : ImGuiMouseCursor_ResizeNWSE;
 | 
					            g.MouseCursor = (resize_grip_n & 1) ? ImGuiMouseCursor_ResizeNESW : ImGuiMouseCursor_ResizeNWSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (g.HoveredWindow == window && held && g.IO.MouseDoubleClicked[0] && resize_grip_n == 0)
 | 
					        if (held && g.IO.MouseDoubleClicked[0] && resize_grip_n == 0)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // Manual auto-fit when double-clicking
 | 
					            // Manual auto-fit when double-clicking
 | 
				
			||||||
            size_target = CalcSizeAfterConstraint(window, size_auto_fit);
 | 
					            size_target = CalcSizeAfterConstraint(window, size_auto_fit);
 | 
				
			||||||
@@ -6159,8 +6159,11 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
 | 
				
			|||||||
        // At this point we don't have a clipping rectangle setup yet, so we can use the title bar area for hit detection and drawing
 | 
					        // At this point we don't have a clipping rectangle setup yet, so we can use the title bar area for hit detection and drawing
 | 
				
			||||||
        if (!(flags & ImGuiWindowFlags_NoTitleBar) && !(flags & ImGuiWindowFlags_NoCollapse))
 | 
					        if (!(flags & ImGuiWindowFlags_NoTitleBar) && !(flags & ImGuiWindowFlags_NoCollapse))
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            // We don't use a regular button+id to test for double-click on title bar (mostly due to legacy reason, could be fixed), so verify that we don't have items over the title bar.
 | 
				
			||||||
            ImRect title_bar_rect = window->TitleBarRect();
 | 
					            ImRect title_bar_rect = window->TitleBarRect();
 | 
				
			||||||
            if (window->CollapseToggleWanted || (g.HoveredWindow == window && IsMouseHoveringRect(title_bar_rect.Min, title_bar_rect.Max) && g.IO.MouseDoubleClicked[0]))
 | 
					            if (g.HoveredWindow == window && g.HoveredId == 0 && g.HoveredIdPreviousFrame == 0 && IsMouseHoveringRect(title_bar_rect.Min, title_bar_rect.Max) && g.IO.MouseDoubleClicked[0])
 | 
				
			||||||
 | 
					                window->CollapseToggleWanted = true;
 | 
				
			||||||
 | 
					            if (window->CollapseToggleWanted)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                window->Collapsed = !window->Collapsed;
 | 
					                window->Collapsed = !window->Collapsed;
 | 
				
			||||||
                MarkIniSettingsDirty(window);
 | 
					                MarkIniSettingsDirty(window);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								imgui.h
									
									
									
									
									
								
							@@ -328,8 +328,8 @@ namespace ImGui
 | 
				
			|||||||
    IMGUI_API bool          ImageButton(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0 = ImVec2(0,0),  const ImVec2& uv1 = ImVec2(1,1), int frame_padding = -1, const ImVec4& bg_col = ImVec4(0,0,0,0), const ImVec4& tint_col = ImVec4(1,1,1,1));    // <0 frame_padding uses default frame padding settings. 0 for no padding
 | 
					    IMGUI_API bool          ImageButton(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0 = ImVec2(0,0),  const ImVec2& uv1 = ImVec2(1,1), int frame_padding = -1, const ImVec4& bg_col = ImVec4(0,0,0,0), const ImVec4& tint_col = ImVec4(1,1,1,1));    // <0 frame_padding uses default frame padding settings. 0 for no padding
 | 
				
			||||||
    IMGUI_API bool          Checkbox(const char* label, bool* v);
 | 
					    IMGUI_API bool          Checkbox(const char* label, bool* v);
 | 
				
			||||||
    IMGUI_API bool          CheckboxFlags(const char* label, unsigned int* flags, unsigned int flags_value);
 | 
					    IMGUI_API bool          CheckboxFlags(const char* label, unsigned int* flags, unsigned int flags_value);
 | 
				
			||||||
    IMGUI_API bool          RadioButton(const char* label, bool active);
 | 
					    IMGUI_API bool          RadioButton(const char* label, bool active);                    // use with e.g. if (RadioButton("one", my_value==1)) { my_value = 1; }
 | 
				
			||||||
    IMGUI_API bool          RadioButton(const char* label, int* v, int v_button);
 | 
					    IMGUI_API bool          RadioButton(const char* label, int* v, int v_button);           // shortcut to handle the above pattern when value is an integer
 | 
				
			||||||
    IMGUI_API void          PlotLines(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0,0), int stride = sizeof(float));
 | 
					    IMGUI_API void          PlotLines(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0,0), int stride = sizeof(float));
 | 
				
			||||||
    IMGUI_API void          PlotLines(const char* label, float (*values_getter)(void* data, int idx), void* data, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0,0));
 | 
					    IMGUI_API void          PlotLines(const char* label, float (*values_getter)(void* data, int idx), void* data, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0,0));
 | 
				
			||||||
    IMGUI_API void          PlotHistogram(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0,0), int stride = sizeof(float));
 | 
					    IMGUI_API void          PlotHistogram(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0,0), int stride = sizeof(float));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -953,7 +953,7 @@ struct IMGUI_API ImGuiWindow
 | 
				
			|||||||
    float                   WindowRounding;                     // Window rounding at the time of begin.
 | 
					    float                   WindowRounding;                     // Window rounding at the time of begin.
 | 
				
			||||||
    float                   WindowBorderSize;                   // Window border size at the time of begin.
 | 
					    float                   WindowBorderSize;                   // Window border size at the time of begin.
 | 
				
			||||||
    ImGuiID                 MoveId;                             // == window->GetID("#MOVE")
 | 
					    ImGuiID                 MoveId;                             // == window->GetID("#MOVE")
 | 
				
			||||||
    ImGuiID                 ChildId;                            // Id of corresponding item in parent window (for child windows)
 | 
					    ImGuiID                 ChildId;                            // ID of corresponding item in parent window (for navigation to return from child window to parent window)
 | 
				
			||||||
    ImVec2                  Scroll;
 | 
					    ImVec2                  Scroll;
 | 
				
			||||||
    ImVec2                  ScrollTarget;                       // target scroll position. stored as cursor position with scrolling canceled out, so the highest point is always 0.0f. (FLT_MAX for no change)
 | 
					    ImVec2                  ScrollTarget;                       // target scroll position. stored as cursor position with scrolling canceled out, so the highest point is always 0.0f. (FLT_MAX for no change)
 | 
				
			||||||
    ImVec2                  ScrollTargetCenterRatio;            // 0.0f = scroll so that target position is at top, 0.5f = scroll so that target position is centered
 | 
					    ImVec2                  ScrollTargetCenterRatio;            // 0.0f = scroll so that target position is at top, 0.5f = scroll so that target position is centered
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user