From f0238ece9cba67ecabef438008fea53682bd6bc7 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Mon, 30 Sep 2019 21:16:30 -0700 Subject: [PATCH] Fixed backspace handling on MacOS (fixed https://github.com/ocornut/imgui/issues/2817). Allow null view passing as parameter to ImGui_ImplOSX_NewFrame --- examples/imgui_impl_osx.h | 2 +- examples/imgui_impl_osx.mm | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/examples/imgui_impl_osx.h b/examples/imgui_impl_osx.h index 66df25276..fe066eec4 100644 --- a/examples/imgui_impl_osx.h +++ b/examples/imgui_impl_osx.h @@ -13,5 +13,5 @@ IMGUI_API bool ImGui_ImplOSX_Init(); IMGUI_API void ImGui_ImplOSX_Shutdown(); -IMGUI_API void ImGui_ImplOSX_NewFrame(NSView *_Nonnull view); +IMGUI_API void ImGui_ImplOSX_NewFrame(NSView *_Nullable view); IMGUI_API bool ImGui_ImplOSX_HandleEvent(NSEvent *_Nonnull event, NSView *_Nullable view); diff --git a/examples/imgui_impl_osx.mm b/examples/imgui_impl_osx.mm index 9042e15f9..fd548bf6c 100644 --- a/examples/imgui_impl_osx.mm +++ b/examples/imgui_impl_osx.mm @@ -150,9 +150,12 @@ void ImGui_ImplOSX_NewFrame(NSView* view) { // Setup display size ImGuiIO& io = ImGui::GetIO(); - const float dpi = [view.window backingScaleFactor]; - io.DisplaySize = ImVec2((float)view.bounds.size.width, (float)view.bounds.size.height); - io.DisplayFramebufferScale = ImVec2(dpi, dpi); + if (view) + { + const float dpi = [view.window backingScaleFactor]; + io.DisplaySize = ImVec2((float)view.bounds.size.width, (float)view.bounds.size.height); + io.DisplayFramebufferScale = ImVec2(dpi, dpi); + } // Setup time step if (g_Time == 0.0) @@ -250,7 +253,7 @@ bool ImGui_ImplOSX_HandleEvent(NSEvent* event, NSView* view) for (int i = 0; i < len; i++) { int c = [str characterAtIndex:i]; - if (!io.KeyCtrl && !(c >= 0xF700 && c <= 0xFFFF)) + if (!io.KeyCtrl && !((c >= 0xF700 && c <= 0xFFFF) || c == 127)) io.AddInputCharacter((unsigned int)c); // We must reset in case we're pressing a sequence of special keys while keeping the command pressed