diff --git a/scintilla/src/Editor.cxx b/scintilla/src/Editor.cxx index d6593ea2..f9de3103 100644 --- a/scintilla/src/Editor.cxx +++ b/scintilla/src/Editor.cxx @@ -4486,6 +4486,12 @@ void Editor::DwellEnd(bool mouseMoved) { void Editor::MouseLeave() { SetHotSpotRange(nullptr); + // Fix the following issue: + // #8647 + // It could be fixed in Scintilla release superior to v4.4.4 - to verify. + // ++ added + SetHoverIndicatorPosition(INVALID_POSITION); + // -- added if (!HaveMouseCapture()) { ptMouseLast = Point(-1, -1); DwellEnd(true); @@ -4675,6 +4681,12 @@ void Editor::ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifie lastClick = pt; lastXChosen = static_cast(pt.x) + xOffset; ShowCaretAtCurrentPosition(); + // Fix the following issue: + // #8647 + // It could be fixed in Scintilla release superior to v4.4.4 - to verify. + // ++ added + if (inSelMargin) SetHoverIndicatorPosition(INVALID_POSITION); + // -- added } void Editor::RightButtonDownWithModifiers(Point pt, unsigned int, int modifiers) { @@ -4848,18 +4860,37 @@ void Editor::ButtonMoveWithModifiers(Point pt, unsigned int, int modifiers) { } hotSpotClickPos = INVALID_POSITION; } - + // Fix the following issue: + // #8647 + // It could be fixed in Scintilla release superior to v4.4.4 - to verify. + // ++ added + if ((vs.fixedColumnWidth > 0) && PointInSelMargin(pt)) { + SetHoverIndicatorPosition(INVALID_POSITION); + } + // -- added } else { if (vs.fixedColumnWidth > 0) { // There is a margin if (PointInSelMargin(pt)) { DisplayCursor(GetMarginCursor(pt)); SetHotSpotRange(nullptr); + // Fix the following issue: + // #8647 + // It could be fixed in Scintilla release superior to v4.4.4 - to verify. + // ++ added + SetHoverIndicatorPosition(INVALID_POSITION); + // -- added return; // No need to test for selection } } // Display regular (drag) cursor over selection if (PointInSelection(pt) && !SelectionEmpty()) { DisplayCursor(Window::cursorArrow); + // Fix the following issue: + // #8647 + // It could be fixed in Scintilla release superior to v4.4.4 - to verify. + // ++ added + SetHoverIndicatorPosition(INVALID_POSITION); + // -- added } else { SetHoverIndicatorPoint(pt); if (PointIsHotspot(pt)) { diff --git a/scintilla/win32/ScintillaWin.cxx b/scintilla/win32/ScintillaWin.cxx index 8c0b6e5c..92e64d44 100644 --- a/scintilla/win32/ScintillaWin.cxx +++ b/scintilla/win32/ScintillaWin.cxx @@ -1463,7 +1463,16 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam } else if (PointIsHotspot(PointFromPOINT(pt))) { DisplayCursor(Window::cursorHand); } else { - DisplayCursor(Window::cursorText); + // Fix the following issue: + // #8588 + // It should be fixed in Scintilla release superior to v4.4.4 - to verify. + // ++ added + Sci::Position pos = PositionFromLocation(PointFromPOINT(pt), true, true); + if ((pos != INVALID_POSITION) && (hoverIndicatorPos != Sci::invalidPosition)) + DisplayCursor(Window::cursorHand); + else + // -- added + DisplayCursor(Window::cursorText); } } }