mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 20:51:06 +01:00 
			
		
		
		
	Scrollbar: Avoid overlapping the opposite side when window (often a child window) is forcibly too small.
This commit is contained in:
		| @@ -43,6 +43,7 @@ Breaking Changes: | |||||||
|  |  | ||||||
| Other Changes: | Other Changes: | ||||||
| - Window: Fixed InnerClipRect right-most coordinates using wrong padding setting (introduced in 1.71). | - Window: Fixed InnerClipRect right-most coordinates using wrong padding setting (introduced in 1.71). | ||||||
|  | - Scrollbar: Avoid overlapping the opposite side when window (often a child window) is forcibly too small. | ||||||
| - Word-wrapping: Fixed overzealous word-wrapping when glyph edge lands exactly on the limit. Because | - Word-wrapping: Fixed overzealous word-wrapping when glyph edge lands exactly on the limit. Because | ||||||
|   of this, auto-fitting exactly unwrapped text would make it wrap. (fixes initial 1.15 commit, 78645a7d). |   of this, auto-fitting exactly unwrapped text would make it wrap. (fixes initial 1.15 commit, 78645a7d). | ||||||
| - Scrolling: Added SetScrollHereX(), SetScrollFromPosX() for completeness. (#1580) [@kevreco] | - Scrolling: Added SetScrollHereX(), SetScrollFromPosX() for completeness. (#1580) [@kevreco] | ||||||
|   | |||||||
| @@ -2079,8 +2079,8 @@ static void ShowDemoWindowLayout() | |||||||
|  |  | ||||||
|         ImGuiStyle& style = ImGui::GetStyle(); |         ImGuiStyle& style = ImGui::GetStyle(); | ||||||
|         float child_w = (ImGui::GetContentRegionAvail().x - 4 * style.ItemSpacing.x) / 5; |         float child_w = (ImGui::GetContentRegionAvail().x - 4 * style.ItemSpacing.x) / 5; | ||||||
|         if (child_w < 20.0f) |         if (child_w < 1.0f) | ||||||
|             child_w = 20.0f; |             child_w = 1.0f; | ||||||
|         ImGui::PushID("##VerticalScrolling"); |         ImGui::PushID("##VerticalScrolling"); | ||||||
|         for (int i = 0; i < 5; i++) |         for (int i = 0; i < 5; i++) | ||||||
|         { |         { | ||||||
|   | |||||||
| @@ -895,13 +895,13 @@ void ImGui::Scrollbar(ImGuiAxis axis) | |||||||
|     ImRect bb; |     ImRect bb; | ||||||
|     if (axis == ImGuiAxis_X) |     if (axis == ImGuiAxis_X) | ||||||
|     { |     { | ||||||
|         bb.Min = ImVec2(inner_rect.Min.x, outer_rect.Max.y - border_size - scrollbar_size); |         bb.Min = ImVec2(inner_rect.Min.x, ImMax(outer_rect.Min.y, outer_rect.Max.y - border_size - scrollbar_size)); | ||||||
|         bb.Max = ImVec2(inner_rect.Max.x, outer_rect.Max.y); |         bb.Max = ImVec2(inner_rect.Max.x, outer_rect.Max.y); | ||||||
|         rounding_corners |= ImDrawCornerFlags_BotLeft; |         rounding_corners |= ImDrawCornerFlags_BotLeft; | ||||||
|     } |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         bb.Min = ImVec2(outer_rect.Max.x - border_size - scrollbar_size, inner_rect.Min.y); |         bb.Min = ImVec2(ImMax(outer_rect.Min.x, outer_rect.Max.x - border_size - scrollbar_size), inner_rect.Min.y); | ||||||
|         bb.Max = ImVec2(outer_rect.Max.x, window->InnerRect.Max.y); |         bb.Max = ImVec2(outer_rect.Max.x, window->InnerRect.Max.y); | ||||||
|         rounding_corners |= ((window->Flags & ImGuiWindowFlags_NoTitleBar) && !(window->Flags & ImGuiWindowFlags_MenuBar)) ? ImDrawCornerFlags_TopRight : 0; |         rounding_corners |= ((window->Flags & ImGuiWindowFlags_NoTitleBar) && !(window->Flags & ImGuiWindowFlags_MenuBar)) ? ImDrawCornerFlags_TopRight : 0; | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user