aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2017-06-12 13:49:46 +1000
committerNeil <nyamatongwe@gmail.com>2017-06-12 13:49:46 +1000
commit1995e565ce6566fced7a383d8114319da57974d5 (patch)
treeabd53d2e1d51cabb86852e9999822e7957b3fce2
parente57183504381c137e851265b0083c429ac65246f (diff)
downloadscintilla-mirror-1995e565ce6566fced7a383d8114319da57974d5.tar.gz
Simplify mouse and keyboard handling by only retaining the 'WithModifiers" form.
All events include a set of keyboard modifier flags. Older calls that passed individual parameters for each key were removed.
-rw-r--r--cocoa/ScintillaCocoa.mm35
-rw-r--r--gtk/ScintillaGTK.cxx15
-rw-r--r--qt/ScintillaEditBase/ScintillaEditBase.cpp28
-rw-r--r--qt/ScintillaEditBase/ScintillaEditBase.h1
-rw-r--r--src/Editor.cxx48
-rw-r--r--src/Editor.h13
-rw-r--r--src/ScintillaBase.cxx4
-rw-r--r--src/ScintillaBase.h1
-rw-r--r--win32/ScintillaWin.cxx46
9 files changed, 75 insertions, 116 deletions
diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm
index a9283686d..c849b39a1 100644
--- a/cocoa/ScintillaCocoa.mm
+++ b/cocoa/ScintillaCocoa.mm
@@ -2262,7 +2262,9 @@ void ScintillaCocoa::MouseEntered(NSEvent *event) {
// Mouse location is given in screen coordinates and might also be outside of our bounds.
Point location = ConvertPoint(event.locationInWindow);
- ButtonMove(location);
+ ButtonMoveWithModifiers(location,
+ (int)(event.timestamp * 1000),
+ TranslateModifierFlags(event.modifierFlags));
}
}
@@ -2276,22 +2278,16 @@ void ScintillaCocoa::MouseExited(NSEvent * /* event */) {
void ScintillaCocoa::MouseDown(NSEvent *event) {
Point location = ConvertPoint(event.locationInWindow);
- NSTimeInterval time = event.timestamp;
- bool command = (event.modifierFlags & NSCommandKeyMask) != 0;
- bool shift = (event.modifierFlags & NSShiftKeyMask) != 0;
- bool alt = (event.modifierFlags & NSAlternateKeyMask) != 0;
-
- ButtonDown(Point(location.x, location.y), (int)(time * 1000), shift, command, alt);
+ ButtonDownWithModifiers(location,
+ (int)(event.timestamp * 1000),
+ TranslateModifierFlags(event.modifierFlags));
}
void ScintillaCocoa::RightMouseDown(NSEvent *event) {
Point location = ConvertPoint(event.locationInWindow);
- NSTimeInterval time = event.timestamp;
- bool command = (event.modifierFlags & NSCommandKeyMask) != 0;
- bool shift = (event.modifierFlags & NSShiftKeyMask) != 0;
- bool alt = (event.modifierFlags & NSAlternateKeyMask) != 0;
-
- RightButtonDownWithModifiers(Point(location.x, location.y), (int)(time * 1000), ModifierFlags(shift, command, alt));
+ RightButtonDownWithModifiers(location,
+ (int)(event.timestamp * 1000),
+ TranslateModifierFlags(event.modifierFlags));
}
//--------------------------------------------------------------------------------------------------
@@ -2299,16 +2295,17 @@ void ScintillaCocoa::RightMouseDown(NSEvent *event) {
void ScintillaCocoa::MouseMove(NSEvent *event) {
lastMouseEvent = event;
- ButtonMoveWithModifiers(ConvertPoint(event.locationInWindow), TranslateModifierFlags(event.modifierFlags));
+ ButtonMoveWithModifiers(ConvertPoint(event.locationInWindow),
+ (int)(event.timestamp * 1000),
+ TranslateModifierFlags(event.modifierFlags));
}
//--------------------------------------------------------------------------------------------------
void ScintillaCocoa::MouseUp(NSEvent *event) {
- NSTimeInterval time = event.timestamp;
- bool control = (event.modifierFlags & NSControlKeyMask) != 0;
-
- ButtonUp(ConvertPoint(event.locationInWindow), (int)(time * 1000), control);
+ ButtonUpWithModifiers(ConvertPoint(event.locationInWindow),
+ (int)(event.timestamp * 1000),
+ TranslateModifierFlags(event.modifierFlags));
}
//--------------------------------------------------------------------------------------------------
@@ -2344,7 +2341,7 @@ void ScintillaCocoa::SelectAll() {
}
void ScintillaCocoa::DeleteBackward() {
- KeyDown(SCK_BACK, false, false, false, nil);
+ KeyDownWithModifiers(SCK_BACK, 0, nil);
}
void ScintillaCocoa::Cut() {
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx
index 1cd94e7ef..3def49966 100644
--- a/gtk/ScintillaGTK.cxx
+++ b/gtk/ScintillaGTK.cxx
@@ -1775,7 +1775,11 @@ gint ScintillaGTK::MouseRelease(GtkWidget *widget, GdkEventButton *event) {
// If mouse released on scroll bar then the position is relative to the
// scrollbar, not the drawing window so just repeat the most recent point.
pt = sciThis->ptMouseLast;
- sciThis->ButtonUp(pt, event->time, (event->state & GDK_CONTROL_MASK) != 0);
+ const int modifiers = ModifierFlags(
+ (event->state & GDK_SHIFT_MASK) != 0,
+ (event->state & GDK_CONTROL_MASK) != 0,
+ (event->state & modifierTranslated(sciThis->rectangularSelectionModifier)) != 0);
+ sciThis->ButtonUpWithModifiers(pt, event->time, modifiers);
}
} catch (...) {
sciThis->errorStatus = SC_STATUS_FAILURE;
@@ -1912,10 +1916,11 @@ gint ScintillaGTK::Motion(GtkWidget *widget, GdkEventMotion *event) {
//Platform::DebugPrintf("Move %x %x %d %c %d %d\n",
// sciThis,event->window,event->time,event->is_hint? 'h' :'.', x, y);
Point pt(x, y);
- int modifiers = ((event->state & GDK_SHIFT_MASK) != 0 ? SCI_SHIFT : 0) |
- ((event->state & GDK_CONTROL_MASK) != 0 ? SCI_CTRL : 0) |
- ((event->state & modifierTranslated(sciThis->rectangularSelectionModifier)) != 0 ? SCI_ALT : 0);
- sciThis->ButtonMoveWithModifiers(pt, modifiers);
+ const int modifiers = ModifierFlags(
+ (event->state & GDK_SHIFT_MASK) != 0,
+ (event->state & GDK_CONTROL_MASK) != 0,
+ (event->state & modifierTranslated(sciThis->rectangularSelectionModifier)) != 0);
+ sciThis->ButtonMoveWithModifiers(pt, event->time, modifiers);
} catch (...) {
sciThis->errorStatus = SC_STATUS_FAILURE;
}
diff --git a/qt/ScintillaEditBase/ScintillaEditBase.cpp b/qt/ScintillaEditBase/ScintillaEditBase.cpp
index 616fd2323..519db5468 100644
--- a/qt/ScintillaEditBase/ScintillaEditBase.cpp
+++ b/qt/ScintillaEditBase/ScintillaEditBase.cpp
@@ -241,7 +241,9 @@ void ScintillaEditBase::keyPressEvent(QKeyEvent *event)
bool alt = QApplication::keyboardModifiers() & Qt::AltModifier;
bool consumed = false;
- bool added = sqt->KeyDown(key, shift, ctrl, alt, &consumed) != 0;
+ bool added = sqt->KeyDownWithModifiers(key,
+ ScintillaQt::ModifierFlags(shift, ctrl, alt),
+ &consumed) != 0;
if (!consumed)
consumed = added;
@@ -314,24 +316,19 @@ void ScintillaEditBase::mousePressEvent(QMouseEvent *event)
bool alt = QApplication::keyboardModifiers() & Qt::AltModifier;
#endif
- sqt->ButtonDown(pos, time.elapsed(), shift, ctrl, alt);
+ sqt->ButtonDownWithModifiers(pos, time.elapsed(), ScintillaQt::ModifierFlags(shift, ctrl, alt));
}
if (event->button() == Qt::RightButton) {
- bool shift = QApplication::keyboardModifiers() & Qt::ShiftModifier;
- bool ctrl = QApplication::keyboardModifiers() & Qt::ControlModifier;
- bool alt = QApplication::keyboardModifiers() & Qt::AltModifier;
-
- sqt->RightButtonDownWithModifiers(pos, time.elapsed(), ScintillaQt::ModifierFlags(shift, ctrl, alt));
+ sqt->RightButtonDownWithModifiers(pos, time.elapsed(), ModifiersOfKeyboard());
}
}
void ScintillaEditBase::mouseReleaseEvent(QMouseEvent *event)
{
Point point = PointFromQPoint(event->pos());
- bool ctrl = QApplication::keyboardModifiers() & Qt::ControlModifier;
if (event->button() == Qt::LeftButton)
- sqt->ButtonUp(point, time.elapsed(), ctrl);
+ sqt->ButtonUpWithModifiers(point, time.elapsed(), ModifiersOfKeyboard());
int pos = send(SCI_POSITIONFROMPOINT, point.x, point.y);
int line = send(SCI_LINEFROMPOSITION, pos);
@@ -361,9 +358,9 @@ void ScintillaEditBase::mouseMoveEvent(QMouseEvent *event)
bool alt = QApplication::keyboardModifiers() & Qt::AltModifier;
#endif
- int modifiers = (shift ? SCI_SHIFT : 0) | (ctrl ? SCI_CTRL : 0) | (alt ? SCI_ALT : 0);
+ const int modifiers = ScintillaQt::ModifierFlags(shift, ctrl, alt);
- sqt->ButtonMoveWithModifiers(pos, modifiers);
+ sqt->ButtonMoveWithModifiers(pos, time.elapsed(), modifiers);
}
void ScintillaEditBase::contextMenuEvent(QContextMenuEvent *event)
@@ -794,3 +791,12 @@ void ScintillaEditBase::event_command(uptr_t wParam, sptr_t lParam)
{
emit command(wParam, lParam);
}
+
+int ScintillaEditBase::ModifiersOfKeyboard() const
+{
+ const bool shift = QApplication::keyboardModifiers() & Qt::ShiftModifier;
+ const bool ctrl = QApplication::keyboardModifiers() & Qt::ControlModifier;
+ const bool alt = QApplication::keyboardModifiers() & Qt::AltModifier;
+
+ return ScintillaQt::ModifierFlags(shift, ctrl, alt);
+}
diff --git a/qt/ScintillaEditBase/ScintillaEditBase.h b/qt/ScintillaEditBase/ScintillaEditBase.h
index 9490e8712..7692cf2b7 100644
--- a/qt/ScintillaEditBase/ScintillaEditBase.h
+++ b/qt/ScintillaEditBase/ScintillaEditBase.h
@@ -147,6 +147,7 @@ private:
static bool IsHangul(const QChar qchar);
void MoveImeCarets(int offset);
void DrawImeIndicator(int indicator, int len);
+ int ModifiersOfKeyboard() const;
};
#ifdef SCI_NAMESPACE
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 771353654..82c63dfb8 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -2340,10 +2340,6 @@ void Editor::NotifyDoubleClick(Point pt, int modifiers) {
NotifyParent(scn);
}
-void Editor::NotifyDoubleClick(Point pt, bool shift, bool ctrl, bool alt) {
- NotifyDoubleClick(pt, ModifierFlags(shift, ctrl, alt));
-}
-
void Editor::NotifyHotSpotDoubleClicked(Sci::Position position, int modifiers) {
SCNotification scn = {};
scn.nmhdr.code = SCN_HOTSPOTDOUBLECLICK;
@@ -2352,10 +2348,6 @@ void Editor::NotifyHotSpotDoubleClicked(Sci::Position position, int modifiers) {
NotifyParent(scn);
}
-void Editor::NotifyHotSpotDoubleClicked(Sci::Position position, bool shift, bool ctrl, bool alt) {
- NotifyHotSpotDoubleClicked(position, ModifierFlags(shift, ctrl, alt));
-}
-
void Editor::NotifyHotSpotClicked(Sci::Position position, int modifiers) {
SCNotification scn = {};
scn.nmhdr.code = SCN_HOTSPOTCLICK;
@@ -2364,10 +2356,6 @@ void Editor::NotifyHotSpotClicked(Sci::Position position, int modifiers) {
NotifyParent(scn);
}
-void Editor::NotifyHotSpotClicked(Sci::Position position, bool shift, bool ctrl, bool alt) {
- NotifyHotSpotClicked(position, ModifierFlags(shift, ctrl, alt));
-}
-
void Editor::NotifyHotSpotReleaseClick(Sci::Position position, int modifiers) {
SCNotification scn = {};
scn.nmhdr.code = SCN_HOTSPOTRELEASECLICK;
@@ -2376,10 +2364,6 @@ void Editor::NotifyHotSpotReleaseClick(Sci::Position position, int modifiers) {
NotifyParent(scn);
}
-void Editor::NotifyHotSpotReleaseClick(Sci::Position position, bool shift, bool ctrl, bool alt) {
- NotifyHotSpotReleaseClick(position, ModifierFlags(shift, ctrl, alt));
-}
-
bool Editor::NotifyUpdateUI() {
if (needUpdateUI) {
SCNotification scn = {};
@@ -2410,10 +2394,6 @@ void Editor::NotifyIndicatorClick(bool click, Sci::Position position, int modifi
}
}
-void Editor::NotifyIndicatorClick(bool click, Sci::Position position, bool shift, bool ctrl, bool alt) {
- NotifyIndicatorClick(click, position, ModifierFlags(shift, ctrl, alt));
-}
-
bool Editor::NotifyMarginClick(Point pt, int modifiers) {
const int marginClicked = vs.MarginFromLocation(pt);
if ((marginClicked >= 0) && vs.ms[marginClicked].sensitive) {
@@ -2452,10 +2432,6 @@ bool Editor::NotifyMarginClick(Point pt, int modifiers) {
}
}
-bool Editor::NotifyMarginClick(Point pt, bool shift, bool ctrl, bool alt) {
- return NotifyMarginClick(pt, ModifierFlags(shift, ctrl, alt));
-}
-
bool Editor::NotifyMarginRightClick(Point pt, int modifiers) {
int marginRightClicked = vs.MarginFromLocation(pt);
if ((marginRightClicked >= 0) && vs.ms[marginRightClicked].sensitive) {
@@ -3882,10 +3858,6 @@ int Editor::KeyDownWithModifiers(int key, int modifiers, bool *consumed) {
}
}
-int Editor::KeyDown(int key, bool shift, bool ctrl, bool alt, bool *consumed) {
- return KeyDownWithModifiers(key, ModifierFlags(shift, ctrl, alt), consumed);
-}
-
void Editor::Indent(bool forwards) {
UndoGroup ug(pdoc);
for (size_t r=0; r<sel.Count(); r++) {
@@ -4630,10 +4602,6 @@ void Editor::RightButtonDownWithModifiers(Point pt, unsigned int, int modifiers)
return;
}
-void Editor::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {
- return ButtonDownWithModifiers(pt, curTime, ModifierFlags(shift, ctrl, alt));
-}
-
bool Editor::PositionIsHotspot(Sci::Position position) const {
return vs.styles[pdoc->StyleIndexAt(position)].hotspot;
}
@@ -4703,7 +4671,7 @@ Range Editor::GetHotSpotRange() const {
return hotspot;
}
-void Editor::ButtonMoveWithModifiers(Point pt, int modifiers) {
+void Editor::ButtonMoveWithModifiers(Point pt, unsigned int, int modifiers) {
if ((ptMouseLast.x != pt.x) || (ptMouseLast.y != pt.y)) {
DwellEnd(true);
}
@@ -4830,11 +4798,7 @@ void Editor::ButtonMoveWithModifiers(Point pt, int modifiers) {
}
}
-void Editor::ButtonMove(Point pt) {
- ButtonMoveWithModifiers(pt, 0);
-}
-
-void Editor::ButtonUp(Point pt, unsigned int curTime, bool ctrl) {
+void Editor::ButtonUpWithModifiers(Point pt, unsigned int curTime, int modifiers) {
//Platform::DebugPrintf("ButtonUp %d %d\n", HaveMouseCapture(), inDragDrop);
SelectionPosition newPos = SPositionFromLocation(pt, false, false,
AllowVirtualSpace(virtualSpaceOptions, sel.IsRectangular()));
@@ -4851,7 +4815,7 @@ void Editor::ButtonUp(Point pt, unsigned int curTime, bool ctrl) {
hotSpotClickPos = INVALID_POSITION;
SelectionPosition newCharPos = SPositionFromLocation(pt, false, true, false);
newCharPos = MovePositionOutsideChar(newCharPos, -1);
- NotifyHotSpotReleaseClick(newCharPos.Position(), ctrl ? SCI_CTRL : 0);
+ NotifyHotSpotReleaseClick(newCharPos.Position(), modifiers & SCI_CTRL);
}
if (HaveMouseCapture()) {
if (PointInSelMargin(pt)) {
@@ -4872,7 +4836,7 @@ void Editor::ButtonUp(Point pt, unsigned int curTime, bool ctrl) {
if (selStart < selEnd) {
if (drag.Length()) {
const int length = static_cast<int>(drag.Length());
- if (ctrl) {
+ if (modifiers & SCI_CTRL) {
const Sci::Position lengthInserted = pdoc->InsertString(
newPos.Position(), drag.Data(), length);
if (lengthInserted > 0) {
@@ -4929,7 +4893,7 @@ void Editor::ButtonUp(Point pt, unsigned int curTime, bool ctrl) {
void Editor::Tick() {
if (HaveMouseCapture()) {
// Auto scroll
- ButtonMove(ptMouseLast);
+ ButtonMoveWithModifiers(ptMouseLast, 0, 0);
}
if (caret.period > 0) {
timer.ticksToWait -= timer.tickSize;
@@ -4996,7 +4960,7 @@ void Editor::TickFor(TickReason reason) {
break;
case tickScroll:
// Auto scroll
- ButtonMove(ptMouseLast);
+ ButtonMoveWithModifiers(ptMouseLast, 0, 0);
break;
case tickWiden:
SetScrollBars();
diff --git a/src/Editor.h b/src/Editor.h
index 69c816270..8adcff769 100644
--- a/src/Editor.h
+++ b/src/Editor.h
@@ -425,19 +425,13 @@ protected: // ScintillaBase subclass needs access to much of Editor
void NotifySavePoint(bool isSavePoint);
void NotifyModifyAttempt();
virtual void NotifyDoubleClick(Point pt, int modifiers);
- virtual void NotifyDoubleClick(Point pt, bool shift, bool ctrl, bool alt);
void NotifyHotSpotClicked(Sci::Position position, int modifiers);
- void NotifyHotSpotClicked(Sci::Position position, bool shift, bool ctrl, bool alt);
void NotifyHotSpotDoubleClicked(Sci::Position position, int modifiers);
- void NotifyHotSpotDoubleClicked(Sci::Position position, bool shift, bool ctrl, bool alt);
void NotifyHotSpotReleaseClick(Sci::Position position, int modifiers);
- void NotifyHotSpotReleaseClick(Sci::Position position, bool shift, bool ctrl, bool alt);
bool NotifyUpdateUI();
void NotifyPainted();
void NotifyIndicatorClick(bool click, Sci::Position position, int modifiers);
- void NotifyIndicatorClick(bool click, Sci::Position position, bool shift, bool ctrl, bool alt);
bool NotifyMarginClick(Point pt, int modifiers);
- bool NotifyMarginClick(Point pt, bool shift, bool ctrl, bool alt);
bool NotifyMarginRightClick(Point pt, int modifiers);
void NotifyNeedShown(Sci::Position pos, Sci::Position len);
void NotifyDwelling(Point pt, bool state);
@@ -476,7 +470,6 @@ protected: // ScintillaBase subclass needs access to much of Editor
virtual int KeyCommand(unsigned int iMessage);
virtual int KeyDefault(int /* key */, int /*modifiers*/);
int KeyDownWithModifiers(int key, int modifiers, bool *consumed);
- int KeyDown(int key, bool shift, bool ctrl, bool alt, bool *consumed=0);
void Indent(bool forwards);
@@ -510,10 +503,8 @@ protected: // ScintillaBase subclass needs access to much of Editor
void MouseLeave();
virtual void ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers);
virtual void RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers);
- virtual void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);
- void ButtonMoveWithModifiers(Point pt, int modifiers);
- void ButtonMove(Point pt);
- void ButtonUp(Point pt, unsigned int curTime, bool ctrl);
+ void ButtonMoveWithModifiers(Point pt, unsigned int curTime, int modifiers);
+ void ButtonUpWithModifiers(Point pt, unsigned int curTime, int modifiers);
void Tick();
bool Idle();
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx
index 2da142462..0c7df04cb 100644
--- a/src/ScintillaBase.cxx
+++ b/src/ScintillaBase.cxx
@@ -537,10 +537,6 @@ void ScintillaBase::ButtonDownWithModifiers(Point pt, unsigned int curTime, int
Editor::ButtonDownWithModifiers(pt, curTime, modifiers);
}
-void ScintillaBase::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {
- ButtonDownWithModifiers(pt, curTime, ModifierFlags(shift, ctrl, alt));
-}
-
void ScintillaBase::RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers) {
CancelModes();
Editor::RightButtonDownWithModifiers(pt, curTime, modifiers);
diff --git a/src/ScintillaBase.h b/src/ScintillaBase.h
index 9b8f08ae3..f63cf192c 100644
--- a/src/ScintillaBase.h
+++ b/src/ScintillaBase.h
@@ -88,7 +88,6 @@ protected:
void ContextMenu(Point pt);
void ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers) override;
- void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) override;
void RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers) override;
void NotifyStyleToNeeded(Sci::Position endStyleNeeded) override;
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx
index faf4701c3..d35e418a9 100644
--- a/win32/ScintillaWin.cxx
+++ b/win32/ScintillaWin.cxx
@@ -156,7 +156,7 @@ static Point PointFromPOINT(POINT pt) {
return Point::FromInts(pt.x, pt.y);
}
-static Point PointFromLong(long lpoint) {
+static Point PointFromLParam(sptr_t lpoint) {
return Point(static_cast<short>(LOWORD(lpoint)), static_cast<short>(HIWORD(lpoint)));
}
@@ -305,6 +305,8 @@ class ScintillaWin :
bool DragThreshold(Point ptStart, Point ptNow) override;
void StartDrag() override;
+ static int MouseModifiers(uptr_t wParam);
+
Sci::Position TargetAsUTF8(char *text);
void AddCharUTF16(wchar_t const *wcs, unsigned int wclen);
Sci::Position EncodedFromUTF8(char *utf8, char *encoded) const;
@@ -632,6 +634,12 @@ void ScintillaWin::StartDrag() {
SetDragPosition(SelectionPosition(Sci::invalidPosition));
}
+int ScintillaWin::MouseModifiers(uptr_t wParam) {
+ return ModifierFlags((wParam & MK_SHIFT) != 0,
+ (wParam & MK_CONTROL) != 0,
+ KeyboardIsKeyDown(VK_MENU));
+}
+
// Avoid warnings everywhere for old style casts by concentrating them here
static WORD LoWord(uptr_t l) {
return LOWORD(l);
@@ -1388,24 +1396,19 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam
// KeyboardIsKeyDown(VK_CONTROL),
// KeyboardIsKeyDown(VK_MENU));
::SetFocus(MainHWND());
- ButtonDown(PointFromLong(static_cast<long>(lParam)), ::GetMessageTime(),
- (wParam & MK_SHIFT) != 0,
- (wParam & MK_CONTROL) != 0,
- KeyboardIsKeyDown(VK_MENU));
+ ButtonDownWithModifiers(PointFromLParam(lParam), ::GetMessageTime(),
+ MouseModifiers(wParam));
}
break;
case WM_MOUSEMOVE: {
- const Point pt = PointFromLong(static_cast<long>(lParam));
+ const Point pt = PointFromLParam(lParam);
// Windows might send WM_MOUSEMOVE even though the mouse has not been moved:
// http://blogs.msdn.com/b/oldnewthing/archive/2003/10/01/55108.aspx
if (ptMouseLast.x != pt.x || ptMouseLast.y != pt.y) {
SetTrackMouseLeaveEvent(true);
- ButtonMoveWithModifiers(pt,
- ((wParam & MK_SHIFT) != 0 ? SCI_SHIFT : 0) |
- ((wParam & MK_CONTROL) != 0 ? SCI_CTRL : 0) |
- (KeyboardIsKeyDown(VK_MENU) ? SCI_ALT : 0));
+ ButtonMoveWithModifiers(pt, ::GetMessageTime(), MouseModifiers(wParam));
}
}
break;
@@ -1416,22 +1419,19 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam
return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam);
case WM_LBUTTONUP:
- ButtonUp(PointFromLong(static_cast<long>(lParam)),
- ::GetMessageTime(),
- (wParam & MK_CONTROL) != 0);
+ ButtonUpWithModifiers(PointFromLParam(lParam),
+ ::GetMessageTime(), MouseModifiers(wParam));
break;
case WM_RBUTTONDOWN: {
::SetFocus(MainHWND());
- Point pt = PointFromLong(static_cast<long>(lParam));
+ Point pt = PointFromLParam(lParam);
if (!PointInSelection(pt)) {
CancelModes();
- SetEmptySelection(PositionFromLocation(PointFromLong(static_cast<long>(lParam))));
+ SetEmptySelection(PositionFromLocation(PointFromLParam(lParam)));
}
- RightButtonDownWithModifiers(pt, ::GetMessageTime(), ModifierFlags((wParam & MK_SHIFT) != 0,
- (wParam & MK_CONTROL) != 0,
- KeyboardIsKeyDown(VK_MENU)));
+ RightButtonDownWithModifiers(pt, ::GetMessageTime(), MouseModifiers(wParam));
}
break;
@@ -1494,10 +1494,10 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam
case WM_KEYDOWN: {
//Platform::DebugPrintf("S keydown %d %x %x %x %x\n",iMessage, wParam, lParam, ::IsKeyDown(VK_SHIFT), ::IsKeyDown(VK_CONTROL));
lastKeyDownConsumed = false;
- const int ret = KeyDown(KeyTranslate(static_cast<int>(wParam)),
- KeyboardIsKeyDown(VK_SHIFT),
+ const int ret = KeyDownWithModifiers(KeyTranslate(static_cast<int>(wParam)),
+ ModifierFlags(KeyboardIsKeyDown(VK_SHIFT),
KeyboardIsKeyDown(VK_CONTROL),
- KeyboardIsKeyDown(VK_MENU),
+ KeyboardIsKeyDown(VK_MENU)),
&lastKeyDownConsumed);
if (!ret && !lastKeyDownConsumed) {
return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam);
@@ -1581,7 +1581,7 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam
}
case WM_CONTEXTMENU: {
- Point pt = PointFromLong(static_cast<long>(lParam));
+ Point pt = PointFromLParam(lParam);
POINT rpt = {static_cast<int>(pt.x), static_cast<int>(pt.y)};
::ScreenToClient(MainHWND(), &rpt);
const Point ptClient = PointFromPOINT(rpt);
@@ -3358,7 +3358,7 @@ LRESULT PASCAL ScintillaWin::CTWndProc(
return 0;
} else if (iMessage == WM_LBUTTONDOWN) {
// This does not fire due to the hit test code
- sciThis->ct.MouseClick(PointFromLong(static_cast<long>(lParam)));
+ sciThis->ct.MouseClick(PointFromLParam(lParam));
sciThis->CallTipClick();
return 0;
} else if (iMessage == WM_SETCURSOR) {