diff options
-rw-r--r-- | win32/ScintillaWin.cxx | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index cc2f6f90e..11f411ba2 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -444,7 +444,7 @@ class ScintillaWin : void ChangeScrollPos(int barType, Sci::Position pos); sptr_t GetTextLength(); sptr_t GetText(uptr_t wParam, sptr_t lParam); - Window::Cursor ContextCursor(); + Window::Cursor ContextCursor(Point pt); sptr_t ShowContextMenu(unsigned int iMessage, uptr_t wParam, sptr_t lParam); void SizeWindow(); sptr_t MouseMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam); @@ -1351,23 +1351,19 @@ sptr_t ScintillaWin::GetText(uptr_t wParam, sptr_t lParam) { } } -Window::Cursor ScintillaWin::ContextCursor() { +Window::Cursor ScintillaWin::ContextCursor(Point pt) { if (inDragDrop == ddDragging) { return Window::cursorUp; } else { // Display regular (drag) cursor over selection - POINT pt; - if (0 != ::GetCursorPos(&pt)) { - ::ScreenToClient(MainHWND(), &pt); - if (PointInSelMargin(PointFromPOINT(pt))) { - return GetMarginCursor(PointFromPOINT(pt)); - } else if (PointInSelection(PointFromPOINT(pt)) && !SelectionEmpty()) { - return Window::cursorArrow; - } else if (PointIsHotspot(PointFromPOINT(pt))) { - return Window::cursorHand; - } else if (hoverIndicatorPos != Sci::invalidPosition) { - return Window::cursorHand; - } + if (PointInSelMargin(pt)) { + return GetMarginCursor(pt); + } else if (!SelectionEmpty() && PointInSelection(pt)) { + return Window::cursorArrow; + } else if (PointIsHotspot(pt)) { + return Window::cursorHand; + } else if (hoverIndicatorPos != Sci::invalidPosition) { + return Window::cursorHand; } } return Window::cursorText; @@ -1896,7 +1892,11 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam case WM_SETCURSOR: if (LOWORD(lParam) == HTCLIENT) { - DisplayCursor(ContextCursor()); + POINT pt; + if (::GetCursorPos(&pt)) { + ::ScreenToClient(MainHWND(), &pt); + DisplayCursor(ContextCursor(PointFromPOINT(pt))); + } return TRUE; } else { return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam); |