aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32/ScintillaWin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'win32/ScintillaWin.cxx')
-rw-r--r--win32/ScintillaWin.cxx20
1 files changed, 18 insertions, 2 deletions
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx
index 068cef15f..0af4a6d65 100644
--- a/win32/ScintillaWin.cxx
+++ b/win32/ScintillaWin.cxx
@@ -371,6 +371,8 @@ class ScintillaWin :
static sptr_t DirectFunction(
sptr_t ptr, UINT iMessage, uptr_t wParam, sptr_t lParam);
+ static sptr_t DirectStatusFunction(
+ sptr_t ptr, UINT iMessage, uptr_t wParam, sptr_t lParam, int *pStatus);
static LRESULT PASCAL SWndProc(
HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam);
static LRESULT PASCAL CTWndProc(
@@ -1792,6 +1794,9 @@ sptr_t ScintillaWin::SciMessage(Message iMessage, uptr_t wParam, sptr_t lParam)
case Message::GetDirectFunction:
return reinterpret_cast<sptr_t>(DirectFunction);
+ case Message::GetDirectStatusFunction:
+ return reinterpret_cast<sptr_t>(DirectStatusFunction);
+
case Message::GetDirectPointer:
return reinterpret_cast<sptr_t>(this);
@@ -2032,6 +2037,7 @@ sptr_t ScintillaWin::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {
iMessage = SciMessageFromEM(msg);
switch (iMessage) {
case Message::GetDirectFunction:
+ case Message::GetDirectStatusFunction:
case Message::GetDirectPointer:
case Message::GrabFocus:
case Message::SetTechnology:
@@ -3549,8 +3555,18 @@ LRESULT PASCAL ScintillaWin::CTWndProc(
sptr_t ScintillaWin::DirectFunction(
sptr_t ptr, UINT iMessage, uptr_t wParam, sptr_t lParam) {
- PLATFORM_ASSERT(::GetCurrentThreadId() == ::GetWindowThreadProcessId(reinterpret_cast<ScintillaWin *>(ptr)->MainHWND(), nullptr));
- return reinterpret_cast<ScintillaWin *>(ptr)->WndProc(static_cast<Message>(iMessage), wParam, lParam);
+ ScintillaWin *sci = reinterpret_cast<ScintillaWin *>(ptr);
+ PLATFORM_ASSERT(::GetCurrentThreadId() == ::GetWindowThreadProcessId(sci->MainHWND(), nullptr));
+ return sci->WndProc(static_cast<Message>(iMessage), wParam, lParam);
+}
+
+sptr_t ScintillaWin::DirectStatusFunction(
+ sptr_t ptr, UINT iMessage, uptr_t wParam, sptr_t lParam, int *pStatus) {
+ ScintillaWin *sci = reinterpret_cast<ScintillaWin *>(ptr);
+ PLATFORM_ASSERT(::GetCurrentThreadId() == ::GetWindowThreadProcessId(sci->MainHWND(), nullptr));
+ const sptr_t returnValue = sci->WndProc(static_cast<Message>(iMessage), wParam, lParam);
+ *pStatus = static_cast<int>(sci->errorStatus);
+ return returnValue;
}
namespace Scintilla::Internal {