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:
parent
02de498a41
commit
31e3e861ef
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user