mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	Tables: Fixed top-most and left-most outer border overlapping inner clip-rect when scrolling. (#6765)
This commit is contained in:
		| @@ -107,6 +107,7 @@ Other changes: | |||||||
|     so a scrolling table can contribute to initial window size. (#6510) |     so a scrolling table can contribute to initial window size. (#6510) | ||||||
|   - Fixed subtle drawing overlap between borders in some situations. |   - Fixed subtle drawing overlap between borders in some situations. | ||||||
|   - Fixed bottom-most and right-most outer border offset by one. (#6765, #3752) [@v-ein] |   - Fixed bottom-most and right-most outer border offset by one. (#6765, #3752) [@v-ein] | ||||||
|  |   - Fixed top-most and left-most outer border overlapping inner clip-rect when scrolling. (#6765) | ||||||
|   - Fixed top-most outer border being drawn with both TableBorderLight and TableBorderStrong |   - Fixed top-most outer border being drawn with both TableBorderLight and TableBorderStrong | ||||||
|     in some situations, causing the earlier to be visible underneath when alpha is not 1.0f. |     in some situations, causing the earlier to be visible underneath when alpha is not 1.0f. | ||||||
|   - Fixed right-clicking right-most section (past right-most column) from highlighting a column. |   - Fixed right-clicking right-most section (past right-most column) from highlighting a column. | ||||||
|   | |||||||
| @@ -445,6 +445,18 @@ bool    ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG | |||||||
|     temp_data->HostBackupItemWidthStackSize = outer_window->DC.ItemWidthStack.Size; |     temp_data->HostBackupItemWidthStackSize = outer_window->DC.ItemWidthStack.Size; | ||||||
|     inner_window->DC.PrevLineSize = inner_window->DC.CurrLineSize = ImVec2(0.0f, 0.0f); |     inner_window->DC.PrevLineSize = inner_window->DC.CurrLineSize = ImVec2(0.0f, 0.0f); | ||||||
|  |  | ||||||
|  |     // Make left and top borders not overlap our contents by offsetting HostClipRect (#6765) | ||||||
|  |     // (we normally shouldn't alter HostClipRect as we rely on TableMergeDrawChannels() expanding non-clipped column toward the | ||||||
|  |     // limits of that rectangle, in order for ImDrawListSplitter::Merge() to merge the draw commands. However since the overlap | ||||||
|  |     // problem only affect scrolling tables in this case we can get away with doing it without extra cost). | ||||||
|  |     if (inner_window != outer_window) | ||||||
|  |     { | ||||||
|  |         if (flags & ImGuiTableFlags_BordersOuterV) | ||||||
|  |             table->HostClipRect.Min.x = ImMin(table->HostClipRect.Min.x + TABLE_BORDER_SIZE, table->HostClipRect.Max.x); | ||||||
|  |         if (flags & ImGuiTableFlags_BordersOuterH) | ||||||
|  |             table->HostClipRect.Min.y = ImMin(table->HostClipRect.Min.y + TABLE_BORDER_SIZE, table->HostClipRect.Max.y); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     // Padding and Spacing |     // Padding and Spacing | ||||||
|     // - None               ........Content..... Pad .....Content........ |     // - None               ........Content..... Pad .....Content........ | ||||||
|     // - PadOuter           | Pad ..Content..... Pad .....Content.. Pad | |     // - PadOuter           | Pad ..Content..... Pad .....Content.. Pad | | ||||||
| @@ -1149,7 +1161,7 @@ void ImGui::TableUpdateLayout(ImGuiTable* table) | |||||||
|         table->InnerClipRect.Max.x = ImMin(table->InnerClipRect.Max.x, unused_x1); |         table->InnerClipRect.Max.x = ImMin(table->InnerClipRect.Max.x, unused_x1); | ||||||
|     } |     } | ||||||
|     table->InnerWindow->ParentWorkRect = table->WorkRect; |     table->InnerWindow->ParentWorkRect = table->WorkRect; | ||||||
|     table->BorderX1 = table->InnerClipRect.Min.x + ((table->Flags & ImGuiTableFlags_BordersOuterV) ? 1.0f : 0.0f); |     table->BorderX1 = table->InnerClipRect.Min.x; | ||||||
|     table->BorderX2 = table->InnerClipRect.Max.x; |     table->BorderX2 = table->InnerClipRect.Max.x; | ||||||
|  |  | ||||||
|     // Setup window's WorkRect.Max.y for GetContentRegionAvail(). Other values will be updated in each TableBeginCell() call. |     // Setup window's WorkRect.Max.y for GetContentRegionAvail(). Other values will be updated in each TableBeginCell() call. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 ocornut
					ocornut