mirror of
https://github.com/ocornut/imgui.git
synced 2025-02-02 12:37:20 +01:00
Tables, Menus: Fixed using BeginTable() in menu layer (any menu bar). (#8355)
This commit is contained in:
parent
4230e98720
commit
dfd1bc3c5b
@ -71,6 +71,9 @@ Other changes:
|
|||||||
scrollbar when using thick border sizes. (#8267, #7887)
|
scrollbar when using thick border sizes. (#8267, #7887)
|
||||||
- Windows: Fixed IsItemXXXX() functions not working on append-version of EndChild(). (#8350)
|
- Windows: Fixed IsItemXXXX() functions not working on append-version of EndChild(). (#8350)
|
||||||
Also made some of the fields accessible after BeginChild() to match Begin() logic.
|
Also made some of the fields accessible after BeginChild() to match Begin() logic.
|
||||||
|
- Tables, Menus: Fixed using BeginTable() in menu layer (any menu bar). (#8355)
|
||||||
|
It previously overrode the current layer back to main layer, which caused an issue
|
||||||
|
with MainMenuBar attempted to release focus when leaving the menu layer.
|
||||||
- ColorEdit, ColorPicker: Fixed alpha preview broken in 1.91.7. (#8336, #8241). [@PathogenDavid]
|
- ColorEdit, ColorPicker: Fixed alpha preview broken in 1.91.7. (#8336, #8241). [@PathogenDavid]
|
||||||
- Tabs, Style: reworked selected overline rendering to better accommodate
|
- Tabs, Style: reworked selected overline rendering to better accommodate
|
||||||
for rounded tabs. Reduced default thickness (style.TabBarOverlineSize),
|
for rounded tabs. Reduced default thickness (style.TabBarOverlineSize),
|
||||||
|
@ -2877,6 +2877,7 @@ struct IMGUI_API ImGuiTable
|
|||||||
ImGuiTableDrawChannelIdx DummyDrawChannel; // Redirect non-visible columns here.
|
ImGuiTableDrawChannelIdx DummyDrawChannel; // Redirect non-visible columns here.
|
||||||
ImGuiTableDrawChannelIdx Bg2DrawChannelCurrent; // For Selectable() and other widgets drawing across columns after the freezing line. Index within DrawSplitter.Channels[]
|
ImGuiTableDrawChannelIdx Bg2DrawChannelCurrent; // For Selectable() and other widgets drawing across columns after the freezing line. Index within DrawSplitter.Channels[]
|
||||||
ImGuiTableDrawChannelIdx Bg2DrawChannelUnfrozen;
|
ImGuiTableDrawChannelIdx Bg2DrawChannelUnfrozen;
|
||||||
|
ImS8 NavLayer; // ImGuiNavLayer at the time of BeginTable().
|
||||||
bool IsLayoutLocked; // Set by TableUpdateLayout() which is called when beginning the first row.
|
bool IsLayoutLocked; // Set by TableUpdateLayout() which is called when beginning the first row.
|
||||||
bool IsInsideRow; // Set when inside TableBeginRow()/TableEndRow().
|
bool IsInsideRow; // Set when inside TableBeginRow()/TableEndRow().
|
||||||
bool IsInitializing;
|
bool IsInitializing;
|
||||||
|
@ -374,6 +374,7 @@ bool ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG
|
|||||||
table->ColumnsCount = columns_count;
|
table->ColumnsCount = columns_count;
|
||||||
table->IsLayoutLocked = false;
|
table->IsLayoutLocked = false;
|
||||||
table->InnerWidth = inner_width;
|
table->InnerWidth = inner_width;
|
||||||
|
table->NavLayer = (ImS8)outer_window->DC.NavLayerCurrent;
|
||||||
temp_data->UserOuterSize = outer_size;
|
temp_data->UserOuterSize = outer_size;
|
||||||
|
|
||||||
// Instance data (for instance 0, TableID == TableInstanceID)
|
// Instance data (for instance 0, TableID == TableInstanceID)
|
||||||
@ -1050,7 +1051,8 @@ void ImGui::TableUpdateLayout(ImGuiTable* table)
|
|||||||
const int column_n = table->DisplayOrderToIndex[order_n];
|
const int column_n = table->DisplayOrderToIndex[order_n];
|
||||||
ImGuiTableColumn* column = &table->Columns[column_n];
|
ImGuiTableColumn* column = &table->Columns[column_n];
|
||||||
|
|
||||||
column->NavLayerCurrent = (ImS8)(table->FreezeRowsCount > 0 ? ImGuiNavLayer_Menu : ImGuiNavLayer_Main); // Use Count NOT request so Header line changes layer when frozen
|
// Initial nav layer: using FreezeRowsCount, NOT FreezeRowsRequest, so Header line changes layer when frozen
|
||||||
|
column->NavLayerCurrent = (ImS8)(table->FreezeRowsCount > 0 ? ImGuiNavLayer_Menu : table->NavLayer);
|
||||||
|
|
||||||
if (offset_x_frozen && table->FreezeColumnsCount == visible_n)
|
if (offset_x_frozen && table->FreezeColumnsCount == visible_n)
|
||||||
{
|
{
|
||||||
@ -1493,7 +1495,7 @@ void ImGui::EndTable()
|
|||||||
if (inner_window != outer_window)
|
if (inner_window != outer_window)
|
||||||
{
|
{
|
||||||
short backup_nav_layers_active_mask = inner_window->DC.NavLayersActiveMask;
|
short backup_nav_layers_active_mask = inner_window->DC.NavLayersActiveMask;
|
||||||
inner_window->DC.NavLayersActiveMask |= 1 << ImGuiNavLayer_Main; // So empty table don't appear to navigate differently.
|
inner_window->DC.NavLayersActiveMask |= 1 << table->NavLayer; // So empty table don't appear to navigate differently.
|
||||||
g.CurrentTable = NULL; // To avoid error recovery recursing
|
g.CurrentTable = NULL; // To avoid error recovery recursing
|
||||||
EndChild();
|
EndChild();
|
||||||
g.CurrentTable = table;
|
g.CurrentTable = table;
|
||||||
@ -2032,7 +2034,7 @@ void ImGui::TableEndRow(ImGuiTable* table)
|
|||||||
if (unfreeze_rows_request)
|
if (unfreeze_rows_request)
|
||||||
{
|
{
|
||||||
for (int column_n = 0; column_n < table->ColumnsCount; column_n++)
|
for (int column_n = 0; column_n < table->ColumnsCount; column_n++)
|
||||||
table->Columns[column_n].NavLayerCurrent = ImGuiNavLayer_Main;
|
table->Columns[column_n].NavLayerCurrent = table->NavLayer;
|
||||||
const float y0 = ImMax(table->RowPosY2 + 1, table->InnerClipRect.Min.y);
|
const float y0 = ImMax(table->RowPosY2 + 1, table->InnerClipRect.Min.y);
|
||||||
table_instance->LastFrozenHeight = y0 - table->OuterRect.Min.y;
|
table_instance->LastFrozenHeight = y0 - table->OuterRect.Min.y;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user