Browse Source

Tables: Angled headers: fixed border hit box extending beyond non-scrollable tables. (#7416)

cfillion 1 year ago
parent
commit
38ddfb24f0
2 changed files with 3 additions and 1 deletions
  1. 2 0
      docs/CHANGELOG.txt
  2. 1 1
      imgui_tables.cpp

+ 2 - 0
docs/CHANGELOG.txt

@@ -55,6 +55,8 @@ Other changes:
 - Windows: Scrollbar visibility decision uses current size when both size and contents
 - Windows: Scrollbar visibility decision uses current size when both size and contents
   size are submitted by API. (#7252)
   size are submitted by API. (#7252)
 - Windows: Double-click to collapse may be disabled via key-ownership mechanism. (#7369)
 - Windows: Double-click to collapse may be disabled via key-ownership mechanism. (#7369)
+- Tables: Angled headers: fixed border hit box extending beyond when used within
+  non-scrollable tables. (#7416) [@cfillion]
 - Menus, Popups: Fixed an issue where sibling menu popups re-opening in successive
 - Menus, Popups: Fixed an issue where sibling menu popups re-opening in successive
   frames would erroneously close the window. While it is technically a popup issue
   frames would erroneously close the window. While it is technically a popup issue
   it would generally manifest when fast moving the mouse bottom to top in a sub-menu.
   it would generally manifest when fast moving the mouse bottom to top in a sub-menu.

+ 1 - 1
imgui_tables.cpp

@@ -1240,7 +1240,7 @@ void ImGui::TableUpdateBorders(ImGuiTable* table)
     ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table->InstanceCurrent);
     ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table->InstanceCurrent);
     const float hit_half_width = TABLE_RESIZE_SEPARATOR_HALF_THICKNESS;
     const float hit_half_width = TABLE_RESIZE_SEPARATOR_HALF_THICKNESS;
     const float hit_y1 = (table->FreezeRowsCount >= 1 ? table->OuterRect.Min.y : table->WorkRect.Min.y) + table->AngledHeadersHeight;
     const float hit_y1 = (table->FreezeRowsCount >= 1 ? table->OuterRect.Min.y : table->WorkRect.Min.y) + table->AngledHeadersHeight;
-    const float hit_y2_body = ImMax(table->OuterRect.Max.y, hit_y1 + table_instance->LastOuterHeight);
+    const float hit_y2_body = ImMax(table->OuterRect.Max.y, hit_y1 + table_instance->LastOuterHeight - table->AngledHeadersHeight);
     const float hit_y2_head = hit_y1 + table_instance->LastTopHeadersRowHeight;
     const float hit_y2_head = hit_y1 + table_instance->LastTopHeadersRowHeight;
 
 
     for (int order_n = 0; order_n < table->ColumnsCount; order_n++)
     for (int order_n = 0; order_n < table->ColumnsCount; order_n++)