diff options
-rw-r--r-- | cocoa/ScintillaCocoa.mm | 94 |
1 files changed, 50 insertions, 44 deletions
diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm index 6bd9d4c32..b70975c28 100644 --- a/cocoa/ScintillaCocoa.mm +++ b/cocoa/ScintillaCocoa.mm @@ -837,50 +837,56 @@ sptr_t scintilla_send_message(void* sci, unsigned int iMessage, uptr_t wParam, s */ sptr_t ScintillaCocoa::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { - switch (iMessage) - { - case SCI_GETDIRECTFUNCTION: - return reinterpret_cast<sptr_t>(DirectFunction); - - case SCI_GETDIRECTPOINTER: - return reinterpret_cast<sptr_t>(this); - - case SCI_TARGETASUTF8: - return TargetAsUTF8(reinterpret_cast<char*>(lParam)); - - case SCI_ENCODEDFROMUTF8: - return EncodedFromUTF8(reinterpret_cast<char*>(wParam), - reinterpret_cast<char*>(lParam)); - - case SCI_SETIMEINTERACTION: - // Only inline IME supported on Cocoa - break; - - case SCI_GRABFOCUS: - [[ContentView() window] makeFirstResponder:ContentView()]; - break; - - case SCI_SETBUFFEREDDRAW: - // Buffered drawing not supported on Cocoa - view.bufferedDraw = false; - break; - - case SCI_FINDINDICATORSHOW: - ShowFindIndicatorForRange(NSMakeRange(wParam, lParam-wParam), YES); - return 0; - - case SCI_FINDINDICATORFLASH: - ShowFindIndicatorForRange(NSMakeRange(wParam, lParam-wParam), NO); - return 0; - - case SCI_FINDINDICATORHIDE: - HideFindIndicator(); - return 0; - - default: - sptr_t r = ScintillaBase::WndProc(iMessage, wParam, lParam); - - return r; + try { + switch (iMessage) + { + case SCI_GETDIRECTFUNCTION: + return reinterpret_cast<sptr_t>(DirectFunction); + + case SCI_GETDIRECTPOINTER: + return reinterpret_cast<sptr_t>(this); + + case SCI_TARGETASUTF8: + return TargetAsUTF8(reinterpret_cast<char*>(lParam)); + + case SCI_ENCODEDFROMUTF8: + return EncodedFromUTF8(reinterpret_cast<char*>(wParam), + reinterpret_cast<char*>(lParam)); + + case SCI_SETIMEINTERACTION: + // Only inline IME supported on Cocoa + break; + + case SCI_GRABFOCUS: + [[ContentView() window] makeFirstResponder:ContentView()]; + break; + + case SCI_SETBUFFEREDDRAW: + // Buffered drawing not supported on Cocoa + view.bufferedDraw = false; + break; + + case SCI_FINDINDICATORSHOW: + ShowFindIndicatorForRange(NSMakeRange(wParam, lParam-wParam), YES); + return 0; + + case SCI_FINDINDICATORFLASH: + ShowFindIndicatorForRange(NSMakeRange(wParam, lParam-wParam), NO); + return 0; + + case SCI_FINDINDICATORHIDE: + HideFindIndicator(); + return 0; + + default: + sptr_t r = ScintillaBase::WndProc(iMessage, wParam, lParam); + + return r; + } + } catch (std::bad_alloc &) { + errorStatus = SC_STATUS_BADALLOC; + } catch (...) { + errorStatus = SC_STATUS_FAILURE; } return 0l; } |