Explorar el Código

Tables: fixed an issue detecting hovering column/row when using multiple synched instances layed out at different X positions. (#7933)

Was reading ClipRect from last frame.
ocornut hace 1 año
padre
commit
8dd33839f0
Se han modificado 2 ficheros con 8 adiciones y 5 borrados
  1. 2 0
      docs/CHANGELOG.txt
  2. 6 5
      imgui_tables.cpp

+ 2 - 0
docs/CHANGELOG.txt

@@ -85,6 +85,8 @@ Other changes:
 - Tables: fixes/revert a 1.90 change were outer border would be moved bottom and right
   by an extra pixel + rework the change so that contents doesn't overlap the bottom and
   right border in a scrolling table. (#6765, #3752, #7428)
+- Tables: fixed an issue detecting hovering column/row when using multiple synched instances,
+  layed out at different X positions. (#7932)
 - Tabs: avoid queuing a refocus when tab is already focused, which would have the
   side-effect of e.g. closing popup on a mouse release. (#7914)
 - InputText: allow callback to update buffer while in read-only mode. (imgui_club/#46)

+ 6 - 5
imgui_tables.cpp

@@ -1070,10 +1070,6 @@ void ImGui::TableUpdateLayout(ImGuiTable* table)
             continue;
         }
 
-        // Detect hovered column
-        if (is_hovering_table && mouse_skewed_x >= column->ClipRect.Min.x && mouse_skewed_x < column->ClipRect.Max.x)
-            table->HoveredColumnBody = (ImGuiTableColumnIdx)column_n;
-
         // Lock start position
         column->MinX = offset_x;
 
@@ -1128,8 +1124,13 @@ void ImGui::TableUpdateLayout(ImGuiTable* table)
             column->Flags |= ImGuiTableColumnFlags_IsVisible;
         if (column->SortOrder != -1)
             column->Flags |= ImGuiTableColumnFlags_IsSorted;
-        if (table->HoveredColumnBody == column_n)
+
+        // Detect hovered column
+        if (is_hovering_table && mouse_skewed_x >= column->ClipRect.Min.x && mouse_skewed_x < column->ClipRect.Max.x)
+        {
             column->Flags |= ImGuiTableColumnFlags_IsHovered;
+            table->HoveredColumnBody = (ImGuiTableColumnIdx)column_n;
+        }
 
         // Alignment
         // FIXME-TABLE: This align based on the whole column width, not per-cell, and therefore isn't useful in