diff options
| -rw-r--r-- | cocoa/ScintillaCocoa.mm | 35 | ||||
| -rw-r--r-- | gtk/ScintillaGTK.cxx | 15 | ||||
| -rw-r--r-- | qt/ScintillaEditBase/ScintillaEditBase.cpp | 28 | ||||
| -rw-r--r-- | qt/ScintillaEditBase/ScintillaEditBase.h | 1 | ||||
| -rw-r--r-- | src/Editor.cxx | 48 | ||||
| -rw-r--r-- | src/Editor.h | 13 | ||||
| -rw-r--r-- | src/ScintillaBase.cxx | 4 | ||||
| -rw-r--r-- | src/ScintillaBase.h | 1 | ||||
| -rw-r--r-- | win32/ScintillaWin.cxx | 46 | 
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) { | 
