mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Merge branch 'master' into docking
# Conflicts: # imgui.h
This commit is contained in:
		
							
								
								
									
										14
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -51,6 +51,20 @@ jobs: | ||||
|       - name: Build example_null (extra warnings, mingw 64-bit) | ||||
|         run: mingw32-make -C examples/example_null WITH_EXTRA_WARNINGS=1 | ||||
|  | ||||
|       - name: Build example_null (mingw 64-bit, as DLL) | ||||
|         shell: bash | ||||
|         run: | | ||||
|           echo '#ifdef _EXPORT'                                  >  example_single_file.cpp | ||||
|           echo '#  define IMGUI_API __declspec(dllexport)'       >> example_single_file.cpp | ||||
|           echo '#else'                                           >> example_single_file.cpp | ||||
|           echo '#  define IMGUI_API __declspec(dllimport)'       >> example_single_file.cpp | ||||
|           echo '#endif'                                          >> example_single_file.cpp | ||||
|           echo '#define IMGUI_IMPLEMENTATION'                    >> example_single_file.cpp | ||||
|           echo '#include "misc/single_file/imgui_single_file.h"' >> example_single_file.cpp | ||||
|           g++ -I. -Wall -Wformat -D_EXPORT -shared -o libimgui.dll -Wl,--out-implib,libimgui.a example_single_file.cpp -limm32 | ||||
|           g++ -I. -Wall -Wformat -o example_null.exe examples/example_null/main.cpp -L. -limgui | ||||
|           rm -f example_null.exe libimgui.* example_single_file.* | ||||
|  | ||||
|       - name: Build example_null (extra warnings, msvc 64-bit) | ||||
|         shell: cmd | ||||
|         run: | | ||||
|   | ||||
| @@ -108,6 +108,18 @@ Docking+Viewports Branch: | ||||
| - Revert removal of io.ConfigDockingWithShift config option (removed in 1.83). (#4643) | ||||
|  | ||||
|  | ||||
| ----------------------------------------------------------------------- | ||||
|  VERSION 1.86 WIP (In Progress) | ||||
| ----------------------------------------------------------------------- | ||||
|  | ||||
| Breaking Changes: | ||||
|  | ||||
| Other Changes: | ||||
|  | ||||
| - Misc: Fix MinGW DLL build issue (when IMGUI_API is defined). [@rokups] | ||||
| - CI: Add MinGW DLL build to test suite. [@rokups] | ||||
|  | ||||
|  | ||||
| ----------------------------------------------------------------------- | ||||
|  VERSION 1.85 (Released 2021-10-12) | ||||
| ----------------------------------------------------------------------- | ||||
|   | ||||
							
								
								
									
										10
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| // dear imgui, v1.85 | ||||
| // dear imgui, v1.86 WIP | ||||
| // (main code and documentation) | ||||
|  | ||||
| // Help: | ||||
| @@ -4283,9 +4283,9 @@ void ImGui::NewFrame() | ||||
|     for (int i = 0; i < g.TablesLastTimeActive.Size; i++) | ||||
|         if (g.TablesLastTimeActive[i] >= 0.0f && g.TablesLastTimeActive[i] < memory_compact_start_time) | ||||
|             TableGcCompactTransientBuffers(g.Tables.GetByIndex(i)); | ||||
|     for (int i = 0; i < g.TablesTempDataStack.Size; i++) | ||||
|         if (g.TablesTempDataStack[i].LastTimeActive >= 0.0f && g.TablesTempDataStack[i].LastTimeActive < memory_compact_start_time) | ||||
|             TableGcCompactTransientBuffers(&g.TablesTempDataStack[i]); | ||||
|     for (int i = 0; i < g.TablesTempData.Size; i++) | ||||
|         if (g.TablesTempData[i].LastTimeActive >= 0.0f && g.TablesTempData[i].LastTimeActive < memory_compact_start_time) | ||||
|             TableGcCompactTransientBuffers(&g.TablesTempData[i]); | ||||
|     if (g.GcCompactAll) | ||||
|         GcCompactTransientMiscBuffers(); | ||||
|     g.GcCompactAll = false; | ||||
| @@ -4419,7 +4419,7 @@ void ImGui::Shutdown(ImGuiContext* context) | ||||
|     g.ShrinkWidthBuffer.clear(); | ||||
|  | ||||
|     g.Tables.Clear(); | ||||
|     g.TablesTempDataStack.clear_destruct(); | ||||
|     g.TablesTempData.clear_destruct(); | ||||
|     g.DrawChannelsTempMergeBuffer.clear(); | ||||
|  | ||||
|     g.ClipboardHandlerData.clear(); | ||||
|   | ||||
							
								
								
									
										6
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| // dear imgui, v1.85 | ||||
| // dear imgui, v1.86 WIP | ||||
| // (headers) | ||||
|  | ||||
| // Help: | ||||
| @@ -64,8 +64,8 @@ Index of this file: | ||||
|  | ||||
| // Version | ||||
| // (Integer encoded as XYYZZ for use in #if preprocessor conditionals. Work in progress versions typically starts at XYY99 then bounce up to XYY00, XYY01 etc. when release tagging happens) | ||||
| #define IMGUI_VERSION               "1.85" | ||||
| #define IMGUI_VERSION_NUM           18501 | ||||
| #define IMGUI_VERSION               "1.86 WIP" | ||||
| #define IMGUI_VERSION_NUM           18502 | ||||
| #define IMGUI_CHECKVERSION()        ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx)) | ||||
| #define IMGUI_HAS_TABLE | ||||
| #define IMGUI_HAS_VIEWPORT          // Viewport WIP branch | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // dear imgui, v1.85 | ||||
| // dear imgui, v1.86 WIP | ||||
| // (demo code) | ||||
|  | ||||
| // Help: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // dear imgui, v1.85 | ||||
| // dear imgui, v1.86 WIP | ||||
| // (drawing and font code) | ||||
|  | ||||
| /* | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // dear imgui, v1.85 | ||||
| // dear imgui, v1.86 WIP | ||||
| // (internal structures/api) | ||||
|  | ||||
| // You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility! | ||||
| @@ -1813,9 +1813,9 @@ struct ImGuiContext | ||||
|  | ||||
|     // Table | ||||
|     ImGuiTable*                     CurrentTable; | ||||
|     int                             CurrentTableStackIdx; | ||||
|     ImPool<ImGuiTable>              Tables; | ||||
|     ImVector<ImGuiTableTempData>    TablesTempDataStack; | ||||
|     int                             TablesTempDataStacked;      // Temporary table data size (because we leave previous instances undestructed, we generally don't use TablesTempData.Size) | ||||
|     ImVector<ImGuiTableTempData>    TablesTempData;             // Temporary table data (buffers reused/shared across instances, support nesting) | ||||
|     ImPool<ImGuiTable>              Tables;                     // Persistent table data | ||||
|     ImVector<float>                 TablesLastTimeActive;       // Last used timestamp of each tables (SOA, for efficient GC) | ||||
|     ImVector<ImDrawChannel>         DrawChannelsTempMergeBuffer; | ||||
|  | ||||
| @@ -2012,7 +2012,7 @@ struct ImGuiContext | ||||
|         memset(DragDropPayloadBufLocal, 0, sizeof(DragDropPayloadBufLocal)); | ||||
|  | ||||
|         CurrentTable = NULL; | ||||
|         CurrentTableStackIdx = -1; | ||||
|         TablesTempDataStacked = 0; | ||||
|         CurrentTabBar = NULL; | ||||
|  | ||||
|         TempInputId = 0; | ||||
| @@ -2418,7 +2418,7 @@ struct ImGuiTableCellData | ||||
| }; | ||||
|  | ||||
| // FIXME-TABLE: more transient data could be stored in a per-stacked table structure: DrawSplitter, SortSpecs, incoming RowData | ||||
| struct ImGuiTable | ||||
| struct IMGUI_API ImGuiTable | ||||
| { | ||||
|     ImGuiID                     ID; | ||||
|     ImGuiTableFlags             Flags; | ||||
| @@ -2524,14 +2524,14 @@ struct ImGuiTable | ||||
|     bool                        MemoryCompacted; | ||||
|     bool                        HostSkipItems;              // Backup of InnerWindow->SkipItem at the end of BeginTable(), because we will overwrite InnerWindow->SkipItem on a per-column basis | ||||
|  | ||||
|     IMGUI_API ImGuiTable()      { memset(this, 0, sizeof(*this)); LastFrameActive = -1; } | ||||
|     IMGUI_API ~ImGuiTable()     { IM_FREE(RawData); } | ||||
|     ImGuiTable()                { memset(this, 0, sizeof(*this)); LastFrameActive = -1; } | ||||
|     ~ImGuiTable()               { IM_FREE(RawData); } | ||||
| }; | ||||
|  | ||||
| // Transient data that are only needed between BeginTable() and EndTable(), those buffers are shared (1 per level of stacked table). | ||||
| // - Accessing those requires chasing an extra pointer so for very frequently used data we leave them in the main table structure. | ||||
| // - We also leave out of this structure data that tend to be particularly useful for debugging/metrics. | ||||
| struct ImGuiTableTempData | ||||
| struct IMGUI_API ImGuiTableTempData | ||||
| { | ||||
|     int                         TableIndex;                 // Index in g.Tables.Buf[] pool | ||||
|     float                       LastTimeActive;             // Last timestamp this structure was used | ||||
| @@ -2548,7 +2548,7 @@ struct ImGuiTableTempData | ||||
|     float                       HostBackupItemWidth;        // Backup of OuterWindow->DC.ItemWidth at the end of BeginTable() | ||||
|     int                         HostBackupItemWidthStackSize;//Backup of OuterWindow->DC.ItemWidthStack.Size at the end of BeginTable() | ||||
|  | ||||
|     IMGUI_API ImGuiTableTempData() { memset(this, 0, sizeof(*this)); LastTimeActive = -1.0f; } | ||||
|     ImGuiTableTempData()        { memset(this, 0, sizeof(*this)); LastTimeActive = -1.0f; } | ||||
| }; | ||||
|  | ||||
| // sizeof() ~ 12 | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // dear imgui, v1.85 | ||||
| // dear imgui, v1.86 WIP | ||||
| // (tables and columns code) | ||||
|  | ||||
| /* | ||||
| @@ -340,10 +340,9 @@ bool    ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG | ||||
|  | ||||
|     // Acquire temporary buffers | ||||
|     const int table_idx = g.Tables.GetIndex(table); | ||||
|     g.CurrentTableStackIdx++; | ||||
|     if (g.CurrentTableStackIdx + 1 > g.TablesTempDataStack.Size) | ||||
|         g.TablesTempDataStack.resize(g.CurrentTableStackIdx + 1, ImGuiTableTempData()); | ||||
|     ImGuiTableTempData* temp_data = table->TempData = &g.TablesTempDataStack[g.CurrentTableStackIdx]; | ||||
|     if (++g.TablesTempDataStacked > g.TablesTempData.Size) | ||||
|         g.TablesTempData.resize(g.TablesTempDataStacked, ImGuiTableTempData()); | ||||
|     ImGuiTableTempData* temp_data = table->TempData = &g.TablesTempData[g.TablesTempDataStacked - 1]; | ||||
|     temp_data->TableIndex = table_idx; | ||||
|     table->DrawSplitter = &table->TempData->DrawSplitter; | ||||
|     table->DrawSplitter->Clear(); | ||||
| @@ -1382,9 +1381,8 @@ void    ImGui::EndTable() | ||||
|  | ||||
|     // Clear or restore current table, if any | ||||
|     IM_ASSERT(g.CurrentWindow == outer_window && g.CurrentTable == table); | ||||
|     IM_ASSERT(g.CurrentTableStackIdx >= 0); | ||||
|     g.CurrentTableStackIdx--; | ||||
|     temp_data = g.CurrentTableStackIdx >= 0 ? &g.TablesTempDataStack[g.CurrentTableStackIdx] : NULL; | ||||
|     IM_ASSERT(g.TablesTempDataStacked > 0); | ||||
|     temp_data = (--g.TablesTempDataStacked > 0) ? &g.TablesTempData[g.TablesTempDataStacked - 1] : NULL; | ||||
|     g.CurrentTable = temp_data ? g.Tables.GetByIndex(temp_data->TableIndex) : NULL; | ||||
|     if (g.CurrentTable) | ||||
|     { | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // dear imgui, v1.85 | ||||
| // dear imgui, v1.86 WIP | ||||
| // (widgets code) | ||||
|  | ||||
| /* | ||||
|   | ||||
		Reference in New Issue
	
	Block a user