mirror of
https://github.com/ocornut/imgui.git
synced 2026-06-01 09:44:20 +08:00
Tables, Multi-Select: Fixed an issue using Multi-Select within a Table causing column width measurement to be invalid when trailing column contents is not submitted in the last row. (#9341, #8250)
build / Build - Windows (push) Has been cancelled
build / Build - Linux (push) Has been cancelled
build / Build - MacOS (push) Has been cancelled
build / Build - iOS (push) Has been cancelled
build / Build - Emscripten (push) Has been cancelled
build / Build - Android (push) Has been cancelled
build / Test - Windows (push) Has been cancelled
build / Test - Linux (push) Has been cancelled
build / Build - Windows (push) Has been cancelled
build / Build - Linux (push) Has been cancelled
build / Build - MacOS (push) Has been cancelled
build / Build - iOS (push) Has been cancelled
build / Build - Emscripten (push) Has been cancelled
build / Build - Android (push) Has been cancelled
build / Test - Windows (push) Has been cancelled
build / Test - Linux (push) Has been cancelled
This commit is contained in:
@@ -59,6 +59,8 @@ Other Changes:
|
|||||||
- Child windows with only ImGuiChildFlags_AutoResizeY flag keep using the proportional
|
- Child windows with only ImGuiChildFlags_AutoResizeY flag keep using the proportional
|
||||||
default ItemWidth. (#9355)
|
default ItemWidth. (#9355)
|
||||||
- Multi-Select:
|
- Multi-Select:
|
||||||
|
- Fixed an issue using Multi-Select within a Table causing column width measurement to
|
||||||
|
be invalid when trailing column contents is not submitted in the last row. (#9341, #8250)
|
||||||
- Box-Select: fixed an issue using ImGuiMultiSelectFlags_BoxSelect2d mode, where
|
- Box-Select: fixed an issue using ImGuiMultiSelectFlags_BoxSelect2d mode, where
|
||||||
items out of view wouldn't be properly selected while scrolling while mouse cursor
|
items out of view wouldn't be properly selected while scrolling while mouse cursor
|
||||||
is hovering outside of selection scope. (#7994, #1861, #6518)
|
is hovering outside of selection scope. (#7994, #1861, #6518)
|
||||||
|
|||||||
+6
-2
@@ -7917,6 +7917,7 @@ static ImRect CalcScopeRect(ImGuiMultiSelectTempData* ms, ImGuiWindow* window)
|
|||||||
if (ms->Flags & ImGuiMultiSelectFlags_ScopeRect)
|
if (ms->Flags & ImGuiMultiSelectFlags_ScopeRect)
|
||||||
{
|
{
|
||||||
// Warning: this depends on CursorMaxPos so it means to be called by EndMultiSelect() only
|
// Warning: this depends on CursorMaxPos so it means to be called by EndMultiSelect() only
|
||||||
|
// This probably doesn't work inside a table as there are ample ambiguities related to exact time of calling BeginMultiSelect()/EndMultiSelect().
|
||||||
return ImRect(ms->ScopeRectMin, ImMax(window->DC.CursorMaxPos, ms->ScopeRectMin));
|
return ImRect(ms->ScopeRectMin, ImMax(window->DC.CursorMaxPos, ms->ScopeRectMin));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -7974,7 +7975,7 @@ ImGuiMultiSelectIO* ImGui::BeginMultiSelect(ImGuiMultiSelectFlags flags, int sel
|
|||||||
ms->Flags = flags;
|
ms->Flags = flags;
|
||||||
ms->IsFocused = (ms->FocusScopeId == g.NavFocusScopeId);
|
ms->IsFocused = (ms->FocusScopeId == g.NavFocusScopeId);
|
||||||
ms->BackupCursorMaxPos = window->DC.CursorMaxPos;
|
ms->BackupCursorMaxPos = window->DC.CursorMaxPos;
|
||||||
ms->ScopeRectMin = window->DC.CursorMaxPos = window->DC.CursorPos;
|
ms->ScopeRectMin = window->DC.CursorMaxPos = window->DC.CursorPos; // CalcScopeRect() for ImGuiMultiSelectFlags_ScopeRect will measure in EndMultiSelect().
|
||||||
PushFocusScope(ms->FocusScopeId);
|
PushFocusScope(ms->FocusScopeId);
|
||||||
if (flags & ImGuiMultiSelectFlags_ScopeWindow) // Mark parent child window as navigable into, with highlight. Assume user will always submit interactive items.
|
if (flags & ImGuiMultiSelectFlags_ScopeWindow) // Mark parent child window as navigable into, with highlight. Assume user will always submit interactive items.
|
||||||
window->DC.NavLayersActiveMask |= 1 << ImGuiNavLayer_Main;
|
window->DC.NavLayersActiveMask |= 1 << ImGuiNavLayer_Main;
|
||||||
@@ -8129,10 +8130,13 @@ ImGuiMultiSelectIO* ImGui::EndMultiSelect()
|
|||||||
if (ms->Flags & ImGuiMultiSelectFlags_NavWrapX)
|
if (ms->Flags & ImGuiMultiSelectFlags_NavWrapX)
|
||||||
{
|
{
|
||||||
IM_ASSERT(ms->Flags & ImGuiMultiSelectFlags_ScopeWindow); // Only supported at window scope
|
IM_ASSERT(ms->Flags & ImGuiMultiSelectFlags_ScopeWindow); // Only supported at window scope
|
||||||
ImGui::NavMoveRequestTryWrapping(ImGui::GetCurrentWindow(), ImGuiNavMoveFlags_WrapX);
|
NavMoveRequestTryWrapping(GetCurrentWindow(), ImGuiNavMoveFlags_WrapX);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unwind
|
// Unwind
|
||||||
|
if (ImGuiTable* table = g.CurrentTable)
|
||||||
|
if (table->IsInsideRow)
|
||||||
|
TableEndRow(table);
|
||||||
window->DC.CursorMaxPos = ImMax(ms->BackupCursorMaxPos, window->DC.CursorMaxPos);
|
window->DC.CursorMaxPos = ImMax(ms->BackupCursorMaxPos, window->DC.CursorMaxPos);
|
||||||
PopFocusScope();
|
PopFocusScope();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user