|
@@ -1105,18 +1105,10 @@ void ImGui::TableUpdateLayout(ImGuiTable* table)
|
|
|
table->IsUsingHeaders = false;
|
|
|
|
|
|
// [Part 11] Context menu
|
|
|
- if (table->IsContextPopupOpen && table->InstanceCurrent == table->InstanceInteracted)
|
|
|
+ if (TableBeginContextMenuPopup(table))
|
|
|
{
|
|
|
- const ImGuiID context_menu_id = ImHashStr("##ContextMenu", 0, table->ID);
|
|
|
- if (BeginPopupEx(context_menu_id, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings))
|
|
|
- {
|
|
|
- TableDrawContextMenu(table);
|
|
|
- EndPopup();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- table->IsContextPopupOpen = false;
|
|
|
- }
|
|
|
+ TableDrawContextMenu(table);
|
|
|
+ EndPopup();
|
|
|
}
|
|
|
|
|
|
// [Part 13] Sanitize and build sort specs before we have a change to use them for display.
|
|
@@ -3035,6 +3027,17 @@ void ImGui::TableOpenContextMenu(int column_n)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+bool ImGui::TableBeginContextMenuPopup(ImGuiTable* table)
|
|
|
+{
|
|
|
+ if (!table->IsContextPopupOpen || table->InstanceCurrent != table->InstanceInteracted)
|
|
|
+ return false;
|
|
|
+ const ImGuiID context_menu_id = ImHashStr("##ContextMenu", 0, table->ID);
|
|
|
+ if (BeginPopupEx(context_menu_id, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings))
|
|
|
+ return true;
|
|
|
+ table->IsContextPopupOpen = false;
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
// Output context menu into current window (generally a popup)
|
|
|
// FIXME-TABLE: Ideally this should be writable by the user. Full programmatic access to that data?
|
|
|
void ImGui::TableDrawContextMenu(ImGuiTable* table)
|