ソースを参照

Minor bits, placeholder aimed at facilitating merging of Tables branch into Docking

omar 5 年 前
コミット
f70204f2f4
2 ファイル変更64 行追加12 行削除
  1. 63 11
      imgui.cpp
  2. 1 1
      imgui_draw.cpp

+ 63 - 11
imgui.cpp

@@ -3875,6 +3875,21 @@ void ImGui::Initialize(ImGuiContext* context)
         ini_handler.WriteAllFn = WindowSettingsHandler_WriteAll;
         ini_handler.WriteAllFn = WindowSettingsHandler_WriteAll;
         g.SettingsHandlers.push_back(ini_handler);
         g.SettingsHandlers.push_back(ini_handler);
     }
     }
+    
+#if 0   // FIXME-WIP: This is a placeholder to facilitate merging of Tables branch into multiple branches.
+
+    // Add .ini handle for ImGuiTable type
+    {
+        ImGuiSettingsHandler ini_handler;
+        ini_handler.TypeName = "Table";
+        ini_handler.TypeHash = ImHashStr("Table");
+        ini_handler.ReadOpenFn = TableSettingsHandler_ReadOpen;
+        ini_handler.ReadLineFn = TableSettingsHandler_ReadLine;
+        ini_handler.WriteAllFn = TableSettingsHandler_WriteAll;
+        g.SettingsHandlers.push_back(ini_handler);
+    }
+
+#endif
 
 
     g.Initialized = true;
     g.Initialized = true;
 }
 }
@@ -9806,12 +9821,18 @@ void ImGui::ShowMetricsWindow(bool* p_open)
         return;
         return;
     }
     }
 
 
-    // State
+    // Debugging enums
     enum { WRT_OuterRect, WRT_OuterRectClipped, WRT_InnerRect, WRT_InnerClipRect, WRT_WorkRect, WRT_Content, WRT_ContentRegionRect, WRT_Count }; // Windows Rect Type
     enum { WRT_OuterRect, WRT_OuterRectClipped, WRT_InnerRect, WRT_InnerClipRect, WRT_WorkRect, WRT_Content, WRT_ContentRegionRect, WRT_Count }; // Windows Rect Type
     const char* wrt_rects_names[WRT_Count] = { "OuterRect", "OuterRectClipped", "InnerRect", "InnerClipRect", "WorkRect", "Content", "ContentRegionRect" };
     const char* wrt_rects_names[WRT_Count] = { "OuterRect", "OuterRectClipped", "InnerRect", "InnerClipRect", "WorkRect", "Content", "ContentRegionRect" };
+    enum { TRT_OuterRect, TRT_WorkRect, TRT_HostClipRect, TRT_InnerClipRect, TRT_BackgroundClipRect, TRT_ColumnsRect, TRT_ColumnsClipRect, TRT_ColumnsContentHeadersUsed, TRT_ColumnsContentHeadersDesired, TRT_ColumnsContentRowsFrozen, TRT_ColumnsContentRowsUnfrozen, TRT_Count }; // Tables Rect Type
+    const char* trt_rects_names[TRT_Count] = { "OuterRect", "WorkRect", "HostClipRect", "InnerClipRect", "BackgroundClipRect", "ColumnsRect", "ColumnsClipRect", "ColumnsContentHeadersUsed", "ColumnsContentHeadersDesired", "ColumnsContentRowsFrozen", "ColumnsContentRowsUnfrozen" };
+
+    // State
     static bool show_windows_rects = false;
     static bool show_windows_rects = false;
     static int  show_windows_rect_type = WRT_WorkRect;
     static int  show_windows_rect_type = WRT_WorkRect;
     static bool show_windows_begin_order = false;
     static bool show_windows_begin_order = false;
+    static bool show_tables_rects = false;
+    static int  show_tables_rect_type = TRT_WorkRect;
     static bool show_drawcmd_details = true;
     static bool show_drawcmd_details = true;
 
 
     // Basic info
     // Basic info
@@ -9825,11 +9846,12 @@ void ImGui::ShowMetricsWindow(bool* p_open)
     ImGui::Separator();
     ImGui::Separator();
 
 
     // Helper functions to display common structures:
     // Helper functions to display common structures:
-    // - NodeDrawList
-    // - NodeColumns
-    // - NodeWindow
-    // - NodeWindows
-    // - NodeTabBar
+    // - NodeDrawList()
+    // - NodeColumns()
+    // - NodeWindow()
+    // - NodeWindows()
+    // - NodeTabBar()
+    // - NodeStorage()
     struct Funcs
     struct Funcs
     {
     {
         static ImRect GetWindowRect(ImGuiWindow* window, int rect_type)
         static ImRect GetWindowRect(ImGuiWindow* window, int rect_type)
@@ -10057,6 +10079,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
         ImGui::TreePop();
         ImGui::TreePop();
     }
     }
 
 
+    // Details for Popups
     if (ImGui::TreeNode("Popups", "Popups (%d)", g.OpenPopupStack.Size))
     if (ImGui::TreeNode("Popups", "Popups (%d)", g.OpenPopupStack.Size))
     {
     {
         for (int i = 0; i < g.OpenPopupStack.Size; i++)
         for (int i = 0; i < g.OpenPopupStack.Size; i++)
@@ -10067,6 +10090,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
         ImGui::TreePop();
         ImGui::TreePop();
     }
     }
 
 
+    // Details for TabBars
     if (ImGui::TreeNode("TabBars", "Tab Bars (%d)", g.TabBars.GetSize()))
     if (ImGui::TreeNode("TabBars", "Tab Bars (%d)", g.TabBars.GetSize()))
     {
     {
         for (int n = 0; n < g.TabBars.GetSize(); n++)
         for (int n = 0; n < g.TabBars.GetSize(); n++)
@@ -10074,20 +10098,26 @@ void ImGui::ShowMetricsWindow(bool* p_open)
         ImGui::TreePop();
         ImGui::TreePop();
     }
     }
 
 
+    // Details for Tables
+    IM_UNUSED(trt_rects_names);
+    IM_UNUSED(show_tables_rects);
+    IM_UNUSED(show_tables_rect_type);
 #if 0
 #if 0
-    if (ImGui::TreeNode("Docking"))
+    if (ImGui::TreeNode("Tables", "Tables (%d)", g.Tables.GetSize()))
     {
     {
         ImGui::TreePop();
         ImGui::TreePop();
     }
     }
 #endif
 #endif
 
 
+    // Details for Docking
 #if 0
 #if 0
-    if (ImGui::TreeNode("Tables", "Tables (%d)", g.Tables.GetSize()))
+    if (ImGui::TreeNode("Docking"))
     {
     {
         ImGui::TreePop();
         ImGui::TreePop();
     }
     }
 #endif
 #endif
-
+    
+    // Misc Details
     if (ImGui::TreeNode("Internal state"))
     if (ImGui::TreeNode("Internal state"))
     {
     {
         const char* input_source_names[] = { "None", "Mouse", "Nav", "NavKeyboard", "NavGamepad" }; IM_ASSERT(IM_ARRAYSIZE(input_source_names) == ImGuiInputSource_COUNT);
         const char* input_source_names[] = { "None", "Mouse", "Nav", "NavKeyboard", "NavGamepad" }; IM_ASSERT(IM_ARRAYSIZE(input_source_names) == ImGuiInputSource_COUNT);
@@ -10108,6 +10138,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
         ImGui::TreePop();
         ImGui::TreePop();
     }
     }
 
 
+    // Tools
     if (ImGui::TreeNode("Tools"))
     if (ImGui::TreeNode("Tools"))
     {
     {
         // The Item Picker tool is super useful to visually select an item and break into the call-stack of where it was submitted.
         // The Item Picker tool is super useful to visually select an item and break into the call-stack of where it was submitted.
@@ -10120,7 +10151,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
         ImGui::Checkbox("Show windows rectangles", &show_windows_rects);
         ImGui::Checkbox("Show windows rectangles", &show_windows_rects);
         ImGui::SameLine();
         ImGui::SameLine();
         ImGui::SetNextItemWidth(ImGui::GetFontSize() * 12);
         ImGui::SetNextItemWidth(ImGui::GetFontSize() * 12);
-        show_windows_rects |= ImGui::Combo("##show_windows_rect_type", &show_windows_rect_type, wrt_rects_names, WRT_Count);
+        show_windows_rects |= ImGui::Combo("##show_windows_rect_type", &show_windows_rect_type, wrt_rects_names, WRT_Count, WRT_Count);
         if (show_windows_rects && g.NavWindow)
         if (show_windows_rects && g.NavWindow)
         {
         {
             ImGui::BulletText("'%s':", g.NavWindow->Name);
             ImGui::BulletText("'%s':", g.NavWindow->Name);
@@ -10136,7 +10167,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
         ImGui::TreePop();
         ImGui::TreePop();
     }
     }
 
 
-    // Tool: Display windows Rectangles and Begin Order
+    // Overlay: Display windows Rectangles and Begin Order
     if (show_windows_rects || show_windows_begin_order)
     if (show_windows_rects || show_windows_begin_order)
     {
     {
         for (int n = 0; n < g.Windows.Size; n++)
         for (int n = 0; n < g.Windows.Size; n++)
@@ -10160,6 +10191,27 @@ void ImGui::ShowMetricsWindow(bool* p_open)
             }
             }
         }
         }
     }
     }
+
+    // FIXME-WIP: This is a placeholder to facilitate merging of Tables branch into multiple branches.
+#if 0
+    // Overlay: Display Tables Rectangles
+    if (show_tables_rects)
+    {
+        for (int table_n = 0; table_n < g.Tables.GetSize(); table_n++)
+        {
+            ImGuiTable* table = g.Tables.GetByIndex(table_n);
+        }
+    }
+#endif
+
+    // FIXME-WIP: This is a placeholder to facilitate merging of Docking branch into multiple branches.
+#if 0
+    // Overlay: Display Docking info
+    if (show_docking_nodes && g.IO.KeyCtrl)
+    {
+    }
+#endif
+
     ImGui::End();
     ImGui::End();
 }
 }
 
 

+ 1 - 1
imgui_draw.cpp

@@ -1315,7 +1315,7 @@ void ImDrawListSplitter::Merge(ImDrawList* draw_list)
             // Merge previous channel last draw command with current channel first draw command if matching.
             // Merge previous channel last draw command with current channel first draw command if matching.
             last_cmd->ElemCount += ch._CmdBuffer[0].ElemCount;
             last_cmd->ElemCount += ch._CmdBuffer[0].ElemCount;
             idx_offset += ch._CmdBuffer[0].ElemCount;
             idx_offset += ch._CmdBuffer[0].ElemCount;
-            ch._CmdBuffer.erase(ch._CmdBuffer.Data);
+            ch._CmdBuffer.erase(ch._CmdBuffer.Data); // FIXME-OPT: Improve for multiple merges.
         }
         }
         if (ch._CmdBuffer.Size > 0)
         if (ch._CmdBuffer.Size > 0)
             last_cmd = &ch._CmdBuffer.back();
             last_cmd = &ch._CmdBuffer.back();