mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	Update changelog, comments, made empty/no-text clipboard return NULL as with other implementation. Minor style tweaks. (#2546)
Fixed IMGUI_DISABLE_WIN32_FUNCTIONS not disabling IME code.
This commit is contained in:
		| @@ -49,6 +49,8 @@ Other Changes: | |||||||
| - Scrollbar: Very minor bounding box adjustment to cope with various border size. | - Scrollbar: Very minor bounding box adjustment to cope with various border size. | ||||||
| - ImFontAtlas: FreeType: Added RasterizerFlags::Monochrome flag to disable font anti-aliasing. (#2545) | - ImFontAtlas: FreeType: Added RasterizerFlags::Monochrome flag to disable font anti-aliasing. (#2545) | ||||||
|   Combine with RasterizerFlags::MonoHinting for best results. |   Combine with RasterizerFlags::MonoHinting for best results. | ||||||
|  | - Add native Mac clipboard copy/paste default implementation in core library to match what we are | ||||||
|  |   dealing with Win32, and to facilitate integration in custom engines. (#2546) [@andrewwillmott] | ||||||
| - Examples/Backends: Don't filter characters under 0x10000 before calling io.AddInputCharacter(), | - Examples/Backends: Don't filter characters under 0x10000 before calling io.AddInputCharacter(), | ||||||
|   the filtering is done in io.AddInputCharacter() itself. This is in prevision for fuller Unicode |   the filtering is done in io.AddInputCharacter() itself. This is in prevision for fuller Unicode | ||||||
|   support. (#2538, #2541) |   support. (#2538, #2541) | ||||||
|   | |||||||
| @@ -12,6 +12,7 @@ | |||||||
|  |  | ||||||
| // CHANGELOG | // CHANGELOG | ||||||
| // (minor and older changes stripped away, please see git history for details) | // (minor and older changes stripped away, please see git history for details) | ||||||
|  | //  2019-05-18: Misc: Removed clipboard handlers as they are now supported by core imgui.cpp. | ||||||
| //  2019-05-11: Inputs: Don't filter character values before calling AddInputCharacter() apart from 0xF700..0xFFFF range. | //  2019-05-11: Inputs: Don't filter character values before calling AddInputCharacter() apart from 0xF700..0xFFFF range. | ||||||
| //  2018-11-30: Misc: Setting up io.BackendPlatformName so it can be displayed in the About Window. | //  2018-11-30: Misc: Setting up io.BackendPlatformName so it can be displayed in the About Window. | ||||||
| //  2018-07-07: Initial version. | //  2018-07-07: Initial version. | ||||||
| @@ -55,6 +56,9 @@ bool ImGui_ImplOSX_Init() | |||||||
|     io.KeyMap[ImGuiKey_Y]           = 'Y'; |     io.KeyMap[ImGuiKey_Y]           = 'Y'; | ||||||
|     io.KeyMap[ImGuiKey_Z]           = 'Z'; |     io.KeyMap[ImGuiKey_Z]           = 'Z'; | ||||||
|  |  | ||||||
|  |     // We don't set the io.SetClipboardTextFn/io.GetClipboardTextFn handlers, | ||||||
|  |     // because imgui.cpp has a default for them that works with OSX. | ||||||
|  |  | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -31,7 +31,8 @@ | |||||||
| //---- Don't implement some functions to reduce linkage requirements. | //---- Don't implement some functions to reduce linkage requirements. | ||||||
| //#define IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS   // [Win32] Don't implement default clipboard handler. Won't use and link with OpenClipboard/GetClipboardData/CloseClipboard etc. | //#define IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS   // [Win32] Don't implement default clipboard handler. Won't use and link with OpenClipboard/GetClipboardData/CloseClipboard etc. | ||||||
| //#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS         // [Win32] Don't implement default IME handler. Won't use and link with ImmGetContext/ImmSetCompositionWindow. | //#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS         // [Win32] Don't implement default IME handler. Won't use and link with ImmGetContext/ImmSetCompositionWindow. | ||||||
| //#define IMGUI_DISABLE_WIN32_FUNCTIONS                     // [Win32] Won't use and link with any Win32 function. | //#define IMGUI_DISABLE_WIN32_FUNCTIONS                     // [Win32] Won't use and link with any Win32 function (clipboard, ime). | ||||||
|  | //#define IMGUI_DISABLE_OSX_FUNCTIONS                       // [OSX] Won't use and link with any OSX function (clipboard). | ||||||
| //#define IMGUI_DISABLE_FORMAT_STRING_FUNCTIONS             // Don't implement ImFormatString/ImFormatStringV so you can implement them yourself if you don't want to link with vsnprintf. | //#define IMGUI_DISABLE_FORMAT_STRING_FUNCTIONS             // Don't implement ImFormatString/ImFormatStringV so you can implement them yourself if you don't want to link with vsnprintf. | ||||||
| //#define IMGUI_DISABLE_MATH_FUNCTIONS                      // Don't implement ImFabs/ImSqrt/ImPow/ImFmod/ImCos/ImSin/ImAcos/ImAtan2 wrapper so you can implement them yourself. Declare your prototypes in imconfig.h. | //#define IMGUI_DISABLE_MATH_FUNCTIONS                      // Don't implement ImFabs/ImSqrt/ImPow/ImFmod/ImCos/ImSin/ImAcos/ImAtan2 wrapper so you can implement them yourself. Declare your prototypes in imconfig.h. | ||||||
| //#define IMGUI_DISABLE_DEFAULT_ALLOCATORS                  // Don't implement default allocators calling malloc()/free() to avoid linking with them. You will need to call ImGui::SetAllocatorFunctions(). | //#define IMGUI_DISABLE_DEFAULT_ALLOCATORS                  // Don't implement default allocators calling malloc()/free() to avoid linking with them. You will need to call ImGui::SetAllocatorFunctions(). | ||||||
|   | |||||||
							
								
								
									
										24
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -9528,13 +9528,13 @@ static void SettingsHandlerWindow_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandl | |||||||
| #include <TargetConditionals.h> | #include <TargetConditionals.h> | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| // Win32 API clipboard implementation |  | ||||||
| #if defined(_WIN32) && !defined(IMGUI_DISABLE_WIN32_FUNCTIONS) && !defined(IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS) | #if defined(_WIN32) && !defined(IMGUI_DISABLE_WIN32_FUNCTIONS) && !defined(IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS) | ||||||
|  |  | ||||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||||
| #pragma comment(lib, "user32") | #pragma comment(lib, "user32") | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | // Win32 clipboard implementation | ||||||
| static const char* GetClipboardTextFn_DefaultImpl(void*) | static const char* GetClipboardTextFn_DefaultImpl(void*) | ||||||
| { | { | ||||||
|     static ImVector<char> buf_local; |     static ImVector<char> buf_local; | ||||||
| @@ -9579,18 +9579,20 @@ static void SetClipboardTextFn_DefaultImpl(void*, const char* text) | |||||||
| } | } | ||||||
|  |  | ||||||
| #elif defined(__APPLE__) && TARGET_OS_OSX && !defined(IMGUI_DISABLE_OSX_FUNCTIONS) | #elif defined(__APPLE__) && TARGET_OS_OSX && !defined(IMGUI_DISABLE_OSX_FUNCTIONS) | ||||||
| #include <Carbon/Carbon.h>  // use ye olde worlde API to avoid need for separate .mm file |  | ||||||
|  | #include <Carbon/Carbon.h>  // Use old API to avoid need for separate .mm file | ||||||
| static PasteboardRef main_clipboard = 0; | static PasteboardRef main_clipboard = 0; | ||||||
|  |  | ||||||
|  | // OSX clipboard implementation | ||||||
| static void SetClipboardTextFn_DefaultImpl(void*, const char* text) | static void SetClipboardTextFn_DefaultImpl(void*, const char* text) | ||||||
| { | { | ||||||
|     if (!main_clipboard) |     if (!main_clipboard) | ||||||
|         PasteboardCreate(kPasteboardClipboard, &main_clipboard); |         PasteboardCreate(kPasteboardClipboard, &main_clipboard); | ||||||
|     PasteboardClear(main_clipboard); |     PasteboardClear(main_clipboard); | ||||||
|     CFDataRef cf_data = CFDataCreate(kCFAllocatorDefault, (const UInt8*) text, strlen(text)); |     CFDataRef cf_data = CFDataCreate(kCFAllocatorDefault, (const UInt8*)text, strlen(text)); | ||||||
|     if (cf_data) |     if (cf_data) | ||||||
|     { |     { | ||||||
|         PasteboardPutItemFlavor(main_clipboard, (PasteboardItemID) 1, CFSTR("public.utf8-plain-text"), cf_data, 0); |         PasteboardPutItemFlavor(main_clipboard, (PasteboardItemID)1, CFSTR("public.utf8-plain-text"), cf_data, 0); | ||||||
|         CFRelease(cf_data); |         CFRelease(cf_data); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -9603,7 +9605,6 @@ static const char* GetClipboardTextFn_DefaultImpl(void*) | |||||||
|  |  | ||||||
|     ItemCount item_count = 0; |     ItemCount item_count = 0; | ||||||
|     PasteboardGetItemCount(main_clipboard, &item_count); |     PasteboardGetItemCount(main_clipboard, &item_count); | ||||||
|  |  | ||||||
|     for (int i = 0; i < item_count; i++) |     for (int i = 0; i < item_count; i++) | ||||||
|     { |     { | ||||||
|         PasteboardItemID item_id = 0; |         PasteboardItemID item_id = 0; | ||||||
| @@ -9616,30 +9617,27 @@ static const char* GetClipboardTextFn_DefaultImpl(void*) | |||||||
|             if (PasteboardCopyItemFlavorData(main_clipboard, item_id, CFSTR("public.utf8-plain-text"), &cf_data) == noErr) |             if (PasteboardCopyItemFlavorData(main_clipboard, item_id, CFSTR("public.utf8-plain-text"), &cf_data) == noErr) | ||||||
|             { |             { | ||||||
|                 static ImVector<char> clipboard_text; |                 static ImVector<char> clipboard_text; | ||||||
|  |                 int length = (int)CFDataGetLength(cf_data); | ||||||
|                 int length = (int) CFDataGetLength(cf_data); |  | ||||||
|                 clipboard_text.resize(length + 1); |                 clipboard_text.resize(length + 1); | ||||||
|                 CFDataGetBytes(cf_data, CFRangeMake(0, length), (UInt8*) clipboard_text.Data); |                 CFDataGetBytes(cf_data, CFRangeMake(0, length), (UInt8*)clipboard_text.Data); | ||||||
|                 clipboard_text[length] = 0; |                 clipboard_text[length] = 0; | ||||||
|  |  | ||||||
|                 CFRelease(cf_data); |                 CFRelease(cf_data); | ||||||
|                 return clipboard_text.Data; |                 return clipboard_text.Data; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     return ""; |     return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| #else | #else | ||||||
|  |  | ||||||
| // Local ImGui-only clipboard implementation, if user hasn't defined better clipboard handlers | // Local Dear ImGui-only clipboard implementation, if user hasn't defined better clipboard handlers. | ||||||
| static const char* GetClipboardTextFn_DefaultImpl(void*) | static const char* GetClipboardTextFn_DefaultImpl(void*) | ||||||
| { | { | ||||||
|     ImGuiContext& g = *GImGui; |     ImGuiContext& g = *GImGui; | ||||||
|     return g.PrivateClipboard.empty() ? NULL : g.PrivateClipboard.begin(); |     return g.PrivateClipboard.empty() ? NULL : g.PrivateClipboard.begin(); | ||||||
| } | } | ||||||
|  |  | ||||||
| // 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; | ||||||
| @@ -9653,7 +9651,7 @@ static void SetClipboardTextFn_DefaultImpl(void*, const char* text) | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| // Win32 API IME support (for Asian languages, etc.) | // Win32 API IME support (for Asian languages, etc.) | ||||||
| #if defined(_WIN32) && !defined(__GNUC__) && !defined(IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS) | #if defined(_WIN32) && !defined(__GNUC__) && !defined(IMGUI_DISABLE_WIN32_FUNCTIONS) && !defined(IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS) | ||||||
|  |  | ||||||
| #include <imm.h> | #include <imm.h> | ||||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 omar
					omar