mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	Merge 20a0fde012 Tidying up default clipboard handler for non Windows-OS (from Nav branch)
				
					
				
			This commit is contained in:
		
							
								
								
									
										19
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -2391,11 +2391,7 @@ void ImGui::Shutdown() | |||||||
|     for (int i = 0; i < IM_ARRAYSIZE(g.RenderDrawLists); i++) |     for (int i = 0; i < IM_ARRAYSIZE(g.RenderDrawLists); i++) | ||||||
|         g.RenderDrawLists[i].clear(); |         g.RenderDrawLists[i].clear(); | ||||||
|     g.OverlayDrawList.ClearFreeMemory(); |     g.OverlayDrawList.ClearFreeMemory(); | ||||||
|     if (g.PrivateClipboard) |     g.PrivateClipboard.clear(); | ||||||
|     { |  | ||||||
|         ImGui::MemFree(g.PrivateClipboard); |  | ||||||
|         g.PrivateClipboard = NULL; |  | ||||||
|     } |  | ||||||
|     g.InputTextState.Text.clear(); |     g.InputTextState.Text.clear(); | ||||||
|     g.InputTextState.InitialText.clear(); |     g.InputTextState.InitialText.clear(); | ||||||
|     g.InputTextState.TempTextBuffer.clear(); |     g.InputTextState.TempTextBuffer.clear(); | ||||||
| @@ -10297,21 +10293,18 @@ static void SetClipboardTextFn_DefaultImpl(void*, const char* text) | |||||||
| // Local ImGui-only clipboard implementation, if user hasn't defined better clipboard handlers | // Local ImGui-only clipboard implementation, if user hasn't defined better clipboard handlers | ||||||
| static const char* GetClipboardTextFn_DefaultImpl(void*) | static const char* GetClipboardTextFn_DefaultImpl(void*) | ||||||
| { | { | ||||||
|     return GImGui->PrivateClipboard; |     ImGuiContext& g = *GImGui; | ||||||
|  |     return g.PrivateClipboard.empty() ? NULL : g.PrivateClipboard.begin(); | ||||||
| } | } | ||||||
|  |  | ||||||
| // Local ImGui-only clipboard implementation, if user hasn't defined better clipboard handlers | // Local ImGui-only clipboard implementation, if user hasn't defined better clipboard handlers | ||||||
| static void SetClipboardTextFn_DefaultImpl(void*, const char* text) | static void SetClipboardTextFn_DefaultImpl(void*, const char* text) | ||||||
| { | { | ||||||
|     ImGuiContext& g = *GImGui; |     ImGuiContext& g = *GImGui; | ||||||
|     if (g.PrivateClipboard) |     g.PrivateClipboard.clear(); | ||||||
|     { |  | ||||||
|         ImGui::MemFree(g.PrivateClipboard); |  | ||||||
|         g.PrivateClipboard = NULL; |  | ||||||
|     } |  | ||||||
|     const char* text_end = text + strlen(text); |     const char* text_end = text + strlen(text); | ||||||
|     g.PrivateClipboard = (char*)ImGui::MemAlloc((size_t)(text_end - text) + 1); |     g.PrivateClipboard.resize((size_t)(text_end - text) + 1); | ||||||
|     memcpy(g.PrivateClipboard, text, (size_t)(text_end - text)); |     memcpy(&g.PrivateClipboard[0], text, (size_t)(text_end - text)); | ||||||
|     g.PrivateClipboard[(int)(text_end - text)] = 0; |     g.PrivateClipboard[(int)(text_end - text)] = 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -471,7 +471,7 @@ struct ImGuiContext | |||||||
|     float                   DragSpeedScaleFast; |     float                   DragSpeedScaleFast; | ||||||
|     ImVec2                  ScrollbarClickDeltaToGrabCenter;    // Distance between mouse and center of grab box, normalized in parent space. Use storage? |     ImVec2                  ScrollbarClickDeltaToGrabCenter;    // Distance between mouse and center of grab box, normalized in parent space. Use storage? | ||||||
|     int                     TooltipOverrideCount; |     int                     TooltipOverrideCount; | ||||||
|     char*                   PrivateClipboard;                   // If no custom clipboard handler is defined |     ImVector<char>          PrivateClipboard;                   // If no custom clipboard handler is defined | ||||||
|     ImVec2                  OsImePosRequest, OsImePosSet;       // Cursor position request & last passed to the OS Input Method Editor |     ImVec2                  OsImePosRequest, OsImePosSet;       // Cursor position request & last passed to the OS Input Method Editor | ||||||
|  |  | ||||||
|     // Logging |     // Logging | ||||||
| @@ -541,7 +541,6 @@ struct ImGuiContext | |||||||
|         DragSpeedScaleFast = 10.0f; |         DragSpeedScaleFast = 10.0f; | ||||||
|         ScrollbarClickDeltaToGrabCenter = ImVec2(0.0f, 0.0f); |         ScrollbarClickDeltaToGrabCenter = ImVec2(0.0f, 0.0f); | ||||||
|         TooltipOverrideCount = 0; |         TooltipOverrideCount = 0; | ||||||
|         PrivateClipboard = NULL; |  | ||||||
|         OsImePosRequest = OsImePosSet = ImVec2(-1.0f, -1.0f); |         OsImePosRequest = OsImePosSet = ImVec2(-1.0f, -1.0f); | ||||||
|  |  | ||||||
|         ModalWindowDarkeningRatio = 0.0f; |         ModalWindowDarkeningRatio = 0.0f; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user