|  |  |  | @ -7674,9 +7674,21 @@ static void ShowExampleAppConstrainedResize(bool* p_open) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         // Helper functions to demonstrate programmatic constraints
 | 
			
		
	
		
			
				
					|  |  |  |  |         // FIXME: This doesn't take account of decoration size (e.g. title bar), library should make this easier.
 | 
			
		
	
		
			
				
					|  |  |  |  |         static void AspectRatio(ImGuiSizeCallbackData* data)    { float aspect_ratio = *(float*)data->UserData; data->DesiredSize.x = IM_MAX(data->CurrentSize.x, data->CurrentSize.y); data->DesiredSize.y = (float)(int)(data->DesiredSize.x / aspect_ratio); } | 
			
		
	
		
			
				
					|  |  |  |  |         static void Square(ImGuiSizeCallbackData* data)         { data->DesiredSize.x = data->DesiredSize.y = IM_MAX(data->CurrentSize.x, data->CurrentSize.y); } | 
			
		
	
		
			
				
					|  |  |  |  |         static void Step(ImGuiSizeCallbackData* data)           { float step = *(float*)data->UserData; data->DesiredSize = ImVec2((int)(data->CurrentSize.x / step + 0.5f) * step, (int)(data->CurrentSize.y / step + 0.5f) * step); } | 
			
		
	
		
			
				
					|  |  |  |  |         // FIXME: None of the three demos works consistently when resizing from borders.
 | 
			
		
	
		
			
				
					|  |  |  |  |         static void AspectRatio(ImGuiSizeCallbackData* data) | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             float aspect_ratio = *(float*)data->UserData; | 
			
		
	
		
			
				
					|  |  |  |  |             data->DesiredSize.y = (float)(int)(data->DesiredSize.x / aspect_ratio); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         static void Square(ImGuiSizeCallbackData* data) | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             data->DesiredSize.x = data->DesiredSize.y = IM_MAX(data->DesiredSize.x, data->DesiredSize.y); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         static void Step(ImGuiSizeCallbackData* data) | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             float step = *(float*)data->UserData; | 
			
		
	
		
			
				
					|  |  |  |  |             data->DesiredSize = ImVec2((int)(data->DesiredSize.x / step + 0.5f) * step, (int)(data->DesiredSize.y / step + 0.5f) * step); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |     }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     const char* test_desc[] = | 
			
		
	
	
		
			
				
					|  |  |  | 
 |