X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/95b3e2768f12079b96999a2c31048cf29ed5e651..e4f0b986b904700fe3c9a8279fb20238305d0177:/contrib/src/stc/ScintillaWX.cpp diff --git a/contrib/src/stc/ScintillaWX.cpp b/contrib/src/stc/ScintillaWX.cpp index 2cc5c6d876..1bf2c8800a 100644 --- a/contrib/src/stc/ScintillaWX.cpp +++ b/contrib/src/stc/ScintillaWX.cpp @@ -80,6 +80,10 @@ public: m_ct = ct; } + ~wxSTCCallTip() { + if (HasCapture()) ReleaseMouse(); + } + void OnPaint(wxPaintEvent& evt) { wxPaintDC dc(this); Surface* surfaceWindow = Surface::Allocate(); @@ -106,12 +110,10 @@ public: virtual bool Show( bool show = TRUE ) { bool retval = wxSTCCallTipBase::Show(show); - if (show) { + if (show) CaptureMouse(); - } - else { - ReleaseMouse(); - } + else + if (HasCapture()) ReleaseMouse(); return retval; } @@ -467,8 +469,9 @@ void ScintillaWX::DoVScroll(int type, int pos) { ScrollTo(topLineNew); } - -void ScintillaWX::DoMouseWheel(int rotation, int delta, int linesPerAction, int ctrlDown) { +void ScintillaWX::DoMouseWheel(int rotation, int delta, + int linesPerAction, int ctrlDown, + bool isPageScroll ) { int topLineNew = topLine; int lines; @@ -485,7 +488,10 @@ void ScintillaWX::DoMouseWheel(int rotation, int delta, int linesPerAction, int lines = wheelRotation / delta; wheelRotation -= lines * delta; if (lines != 0) { - lines *= linesPerAction; + if (isPageScroll) + lines = lines * LinesOnScreen(); // lines is either +1 or -1 + else + lines *= linesPerAction; topLineNew -= lines; ScrollTo(topLineNew); } @@ -578,7 +584,8 @@ void ScintillaWX::DoCommand(int ID) { void ScintillaWX::DoContextMenu(Point pt) { - ContextMenu(pt); + if (displayPopupMenu) + ContextMenu(pt); } void ScintillaWX::DoOnListBox() {