author | Srujana Peddinti <srujana.htt121@gmail.com> |
Sun, 21 Apr 2019 20:13:34 +0000 | |
changeset 529138 | b061de30553d63447163d449f1ae78c8e8cb7827 |
parent 529137 | 8c32486b90c57e1f104ea8e6415a9f53436050ae |
child 529139 | 6ccf33c9e56e44937858a86890a65c4296861d98 |
push id | 11265 |
push user | ffxbld-merge |
push date | Mon, 13 May 2019 10:53:39 +0000 |
treeherder | mozilla-beta@77e0fe8dbdd3 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | masayuki |
bugs | 1259660 |
milestone | 68.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/accessible/base/nsCoreUtils.cpp +++ b/accessible/base/nsCoreUtils.cpp @@ -118,17 +118,17 @@ void nsCoreUtils::DispatchMouseEvent(Eve nsIFrame *aFrame, PresShell *aPresShell, nsIWidget *aRootWidget) { WidgetMouseEvent event(true, aMessage, aRootWidget, WidgetMouseEvent::eReal, WidgetMouseEvent::eNormal); event.mRefPoint = LayoutDeviceIntPoint(aX, aY); event.mClickCount = 1; - event.mButton = WidgetMouseEvent::eLeftButton; + event.mButton = MouseButton::eLeft; event.mTime = PR_IntervalNow(); event.mInputSource = dom::MouseEvent_Binding::MOZ_SOURCE_UNKNOWN; nsEventStatus status = nsEventStatus_eIgnore; aPresShell->HandleEventWithTarget(&event, aFrame, aContent, &status); } void nsCoreUtils::DispatchTouchEvent(EventMessage aMessage, int32_t aX,
--- a/dom/base/Element.cpp +++ b/dom/base/Element.cpp @@ -3092,18 +3092,17 @@ nsresult Element::PostHandleEventForLink if (!CheckHandleEventForLinksPrecondition(aVisitor, getter_AddRefs(absURI))) { return NS_OK; } nsresult rv = NS_OK; switch (aVisitor.mEvent->mMessage) { case eMouseDown: { - if (aVisitor.mEvent->AsMouseEvent()->mButton == - WidgetMouseEvent::eLeftButton) { + if (aVisitor.mEvent->AsMouseEvent()->mButton == MouseButton::eLeft) { // don't make the link grab the focus if there is no link handler nsILinkHandler* handler = aVisitor.mPresContext->GetLinkHandler(); Document* document = GetComposedDoc(); if (handler && document) { nsIFocusManager* fm = nsFocusManager::GetFocusManager(); if (fm) { aVisitor.mEvent->mFlags.mMultipleActionsPrevented = true; RefPtr<Element> kungFuDeathGrip(this);
--- a/dom/base/PopupBlocker.cpp +++ b/dom/base/PopupBlocker.cpp @@ -288,17 +288,17 @@ PopupBlocker::PopupControlState PopupBlo break; default: break; } } break; case eMouseEventClass: if (aEvent->IsTrusted()) { - if (aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton) { + if (aEvent->AsMouseEvent()->mButton == MouseButton::eLeft) { abuse = PopupBlocker::openBlocked; switch (aEvent->mMessage) { case eMouseUp: if (PopupAllowedForEvent("mouseup")) { abuse = PopupBlocker::openControlled; } break; case eMouseDown: @@ -345,17 +345,17 @@ PopupBlocker::PopupControlState PopupBlo break; default: break; } } break; case ePointerEventClass: if (aEvent->IsTrusted() && - aEvent->AsPointerEvent()->mButton == WidgetMouseEvent::eLeftButton) { + aEvent->AsPointerEvent()->mButton == MouseButton::eLeft) { switch (aEvent->mMessage) { case ePointerUp: if (PopupAllowedForEvent("pointerup")) { abuse = PopupBlocker::openControlled; } break; case ePointerDown: if (PopupAllowedForEvent("pointerdown")) {
--- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -7871,27 +7871,27 @@ nsIWidget* nsContentUtils::GetWidget(nsI if (frame) return frame->GetView()->GetNearestWidget(aOffset); } return nullptr; } int16_t nsContentUtils::GetButtonsFlagForButton(int32_t aButton) { switch (aButton) { case -1: - return WidgetMouseEvent::eNoButtonFlag; - case WidgetMouseEvent::eLeftButton: - return WidgetMouseEvent::eLeftButtonFlag; - case WidgetMouseEvent::eMiddleButton: - return WidgetMouseEvent::eMiddleButtonFlag; - case WidgetMouseEvent::eRightButton: - return WidgetMouseEvent::eRightButtonFlag; + return MouseButtonsFlag::eNoButtons; + case MouseButton::eLeft: + return MouseButtonsFlag::eLeftFlag; + case MouseButton::eMiddle: + return MouseButtonsFlag::eMiddleFlag; + case MouseButton::eRight: + return MouseButtonsFlag::eRightFlag; case 4: - return WidgetMouseEvent::e4thButtonFlag; + return MouseButtonsFlag::e4thFlag; case 5: - return WidgetMouseEvent::e5thButtonFlag; + return MouseButtonsFlag::e5thFlag; default: NS_ERROR("Button not known."); return 0; } } LayoutDeviceIntPoint nsContentUtils::ToWidgetPoint( const CSSPoint& aPoint, const nsPoint& aOffset,
--- a/dom/events/EventStateManager.cpp +++ b/dom/events/EventStateManager.cpp @@ -515,47 +515,47 @@ nsresult EventStateManager::PreHandleEve } break; case eMouseTouchDrag: mInTouchDrag = true; BeginTrackingDragGesture(aPresContext, mouseEvent, aTargetFrame); break; case eMouseDown: { switch (mouseEvent->mButton) { - case WidgetMouseEvent::eLeftButton: + case MouseButton::eLeft: BeginTrackingDragGesture(aPresContext, mouseEvent, aTargetFrame); mLClickCount = mouseEvent->mClickCount; SetClickCount(mouseEvent, aStatus); sNormalLMouseEventInProcess = true; break; - case WidgetMouseEvent::eMiddleButton: + case MouseButton::eMiddle: mMClickCount = mouseEvent->mClickCount; SetClickCount(mouseEvent, aStatus); break; - case WidgetMouseEvent::eRightButton: + case MouseButton::eRight: mRClickCount = mouseEvent->mClickCount; SetClickCount(mouseEvent, aStatus); break; } NotifyTargetUserActivation(aEvent, aTargetContent); break; } case eMouseUp: { switch (mouseEvent->mButton) { - case WidgetMouseEvent::eLeftButton: + case MouseButton::eLeft: if (Prefs::ClickHoldContextMenu()) { KillClickHoldTimer(); } mInTouchDrag = false; StopTrackingDragGesture(); sNormalLMouseEventInProcess = false; // then fall through... MOZ_FALLTHROUGH; - case WidgetMouseEvent::eRightButton: - case WidgetMouseEvent::eMiddleButton: + case MouseButton::eRight: + case MouseButton::eMiddle: RefPtr<EventStateManager> esm = ESMFromContentOrThis(aOverrideClickTarget); esm->SetClickCount(mouseEvent, aStatus, aOverrideClickTarget); break; } break; } case eMouseEnterIntoWidget: @@ -3015,17 +3015,17 @@ nsresult EventStateManager::PostHandleEv // Keep the prescontext alive, we might need it after event dispatch RefPtr<nsPresContext> presContext = aPresContext; nsresult ret = NS_OK; switch (aEvent->mMessage) { case eMouseDown: { WidgetMouseEvent* mouseEvent = aEvent->AsMouseEvent(); - if (mouseEvent->mButton == WidgetMouseEvent::eLeftButton && + if (mouseEvent->mButton == MouseButton::eLeft && !sNormalLMouseEventInProcess) { // We got a mouseup event while a mousedown event was being processed. // Make sure that the capturing content is cleared. nsIPresShell::SetCapturingContent(nullptr, 0); break; } // For remote content, capture the event in the parent process at the @@ -3172,17 +3172,17 @@ nsresult EventStateManager::PostHandleEv #endif fm->ClearFocus(mDocument->GetWindow()); fm->SetFocusedWindow(mDocument->GetWindow()); } } } // The rest is left button-specific. - if (mouseEvent->mButton != WidgetMouseEvent::eLeftButton) { + if (mouseEvent->mButton != MouseButton::eLeft) { break; } // The nearest enclosing element goes into the :active state. If we're // not an element (so we're text or something) we need to obtain // our parent element and put it into :active instead. if (activeContent && !activeContent->IsElement()) { if (nsIContent* par = activeContent->GetFlattenedTreeParent()) { @@ -4764,51 +4764,51 @@ nsresult EventStateManager::SetClickCoun if (mouseContent && mouseContent->IsText()) { nsINode* parent = mouseContent->GetFlattenedTreeParentNode(); if (parent && parent->IsContent()) { mouseContent = parent->AsContent(); } } switch (aEvent->mButton) { - case WidgetMouseEvent::eLeftButton: + case MouseButton::eLeft: if (aEvent->mMessage == eMouseDown) { mLastLeftMouseDownContent = mouseContent; } else if (aEvent->mMessage == eMouseUp) { aEvent->mClickTarget = nsContentUtils::GetCommonAncestorUnderInteractiveContent( mouseContent, mLastLeftMouseDownContent); if (aEvent->mClickTarget) { aEvent->mClickCount = mLClickCount; mLClickCount = 0; } else { aEvent->mClickCount = 0; } mLastLeftMouseDownContent = nullptr; } break; - case WidgetMouseEvent::eMiddleButton: + case MouseButton::eMiddle: if (aEvent->mMessage == eMouseDown) { mLastMiddleMouseDownContent = mouseContent; } else if (aEvent->mMessage == eMouseUp) { aEvent->mClickTarget = nsContentUtils::GetCommonAncestorUnderInteractiveContent( mouseContent, mLastMiddleMouseDownContent); if (aEvent->mClickTarget) { aEvent->mClickCount = mMClickCount; mMClickCount = 0; } else { aEvent->mClickCount = 0; } mLastMiddleMouseDownContent = nullptr; } break; - case WidgetMouseEvent::eRightButton: + case MouseButton::eRight: if (aEvent->mMessage == eMouseDown) { mLastRightMouseDownContent = mouseContent; } else if (aEvent->mMessage == eMouseUp) { aEvent->mClickTarget = nsContentUtils::GetCommonAncestorUnderInteractiveContent( mouseContent, mLastRightMouseDownContent); if (aEvent->mClickTarget) { aEvent->mClickCount = mRClickCount; @@ -4941,17 +4941,17 @@ nsresult EventStateManager::PostHandleMo // conform to DOM events. If we need to keep compatibility with Chromium, // we should change it later. if (status == nsEventStatus_eConsumeNoDefault) { *aStatus = nsEventStatus_eConsumeNoDefault; return NS_OK; } // Handle middle click paste if it's enabled and the mouse button is middle. - if (aMouseUpEvent->mButton != WidgetMouseEventBase::eMiddleButton || + if (aMouseUpEvent->mButton != MouseButton::eMiddle || !WidgetMouseEvent::IsMiddleClickPasteEnabled()) { return NS_OK; } DebugOnly<nsresult> rvIgnored = HandleMiddleClickPaste(presShell, aMouseUpEvent, &status, nullptr); NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), "Failed to paste for a middle click"); @@ -4974,18 +4974,18 @@ nsresult EventStateManager::DispatchClic nsIContent* aOverrideClickTarget) { MOZ_ASSERT(aPresShell); MOZ_ASSERT(aMouseUpEvent); MOZ_ASSERT(EventCausesClickEvents(*aMouseUpEvent)); MOZ_ASSERT(aStatus); MOZ_ASSERT(aClickTarget || aOverrideClickTarget); bool notDispatchToContents = - (aMouseUpEvent->mButton == WidgetMouseEvent::eMiddleButton || - aMouseUpEvent->mButton == WidgetMouseEvent::eRightButton); + (aMouseUpEvent->mButton == MouseButton::eMiddle || + aMouseUpEvent->mButton == MouseButton::eRight); bool fireAuxClick = notDispatchToContents; AutoWeakFrame currentTarget = aClickTarget->GetPrimaryFrame(); nsresult rv = InitAndDispatchClickEvent( aMouseUpEvent, aStatus, eMouseClick, aPresShell, aClickTarget, currentTarget, notDispatchToContents, aOverrideClickTarget); if (NS_WARN_IF(NS_FAILED(rv))) { @@ -5016,17 +5016,17 @@ nsresult EventStateManager::DispatchClic } nsresult EventStateManager::HandleMiddleClickPaste( nsIPresShell* aPresShell, WidgetMouseEvent* aMouseEvent, nsEventStatus* aStatus, TextEditor* aTextEditor) { MOZ_ASSERT(aPresShell); MOZ_ASSERT(aMouseEvent); MOZ_ASSERT((aMouseEvent->mMessage == eMouseAuxClick && - aMouseEvent->mButton == WidgetMouseEventBase::eMiddleButton) || + aMouseEvent->mButton == MouseButton::eMiddle) || EventCausesClickEvents(*aMouseEvent)); MOZ_ASSERT(aStatus); MOZ_ASSERT(*aStatus != nsEventStatus_eConsumeNoDefault); // Even if we're called twice or more for a mouse operation, we should // handle only once. Although mMultipleActionsPrevented may be set to // true by different event handler in the future, we can use it for now. if (aMouseEvent->mFlags.mMultipleActionsPrevented) { @@ -5469,17 +5469,17 @@ void EventStateManager::ContentRemoved(D for (auto iter = mPointersEnterLeaveHelper.Iter(); !iter.Done(); iter.Next()) { ResetLastOverForContent(iter.Key(), iter.Data(), aContent); } } bool EventStateManager::EventStatusOK(WidgetGUIEvent* aEvent) { return !(aEvent->mMessage == eMouseDown && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton && + aEvent->AsMouseEvent()->mButton == MouseButton::eLeft && !sNormalLMouseEventInProcess); } //------------------------------------------- // Access Key Registration //------------------------------------------- void EventStateManager::RegisterAccessKey(Element* aElement, uint32_t aKey) { if (aElement && mAccessKeys.IndexOf(aElement) == -1)
--- a/dom/events/MouseEvent.cpp +++ b/dom/events/MouseEvent.cpp @@ -161,17 +161,17 @@ int16_t MouseEvent::Button() { case eMouseScrollEventClass: case eWheelEventClass: case eDragEventClass: case ePointerEventClass: case eSimpleGestureEventClass: return mEvent->AsMouseEventBase()->mButton; default: NS_WARNING("Tried to get mouse mButton for non-mouse event!"); - return WidgetMouseEvent::eLeftButton; + return MouseButton::eLeft; } } uint16_t MouseEvent::Buttons() { switch (mEvent->mClass) { case eMouseEventClass: case eMouseScrollEventClass: case eWheelEventClass:
--- a/dom/events/PointerEventHandler.cpp +++ b/dom/events/PointerEventHandler.cpp @@ -441,17 +441,17 @@ void PointerEventHandler::InitPointerEve WidgetPointerEvent* aPointerEvent, WidgetMouseEvent* aMouseEvent, EventMessage aMessage) { MOZ_ASSERT(aPointerEvent); MOZ_ASSERT(aMouseEvent); aPointerEvent->pointerId = aMouseEvent->pointerId; aPointerEvent->mInputSource = aMouseEvent->mInputSource; aPointerEvent->mMessage = aMessage; aPointerEvent->mButton = aMouseEvent->mMessage == eMouseMove - ? WidgetMouseEvent::eNoButton + ? MouseButton::eNotPressed : aMouseEvent->mButton; aPointerEvent->mButtons = aMouseEvent->mButtons; aPointerEvent->mPressure = aPointerEvent->mButtons ? aMouseEvent->mPressure ? aMouseEvent->mPressure : 0.5f : 0.0f; } @@ -459,22 +459,22 @@ void PointerEventHandler::InitPointerEve /* static */ void PointerEventHandler::InitPointerEventFromTouch( WidgetPointerEvent* aPointerEvent, WidgetTouchEvent* aTouchEvent, mozilla::dom::Touch* aTouch, bool aIsPrimary) { MOZ_ASSERT(aPointerEvent); MOZ_ASSERT(aTouchEvent); int16_t button = aTouchEvent->mMessage == eTouchMove - ? WidgetMouseEvent::eNoButton - : WidgetMouseEvent::eLeftButton; + ? MouseButton::eNotPressed + : MouseButton::eLeft; int16_t buttons = aTouchEvent->mMessage == eTouchEnd - ? WidgetMouseEvent::eNoButtonFlag - : WidgetMouseEvent::eLeftButtonFlag; + ? MouseButtonsFlag::eNoButtons + : MouseButtonsFlag::eLeftFlag; aPointerEvent->mIsPrimary = aIsPrimary; aPointerEvent->pointerId = aTouch->Identifier(); aPointerEvent->mRefPoint = aTouch->mRefPoint; aPointerEvent->mModifiers = aTouchEvent->mModifiers; aPointerEvent->mWidth = aTouch->RadiusX(CallerType::System); aPointerEvent->mHeight = aTouch->RadiusY(CallerType::System); aPointerEvent->tiltX = aTouch->tiltX; @@ -504,17 +504,17 @@ void PointerEventHandler::DispatchPointe // dispatched to DOM. if (!mouseEvent->convertToPointer || !aEvent->IsAllowedToDispatchDOMEvent()) { return; } int16_t button = mouseEvent->mButton; switch (mouseEvent->mMessage) { case eMouseMove: - button = WidgetMouseEvent::eNoButton; + button = MouseButton::eNotPressed; pointerMessage = ePointerMove; break; case eMouseUp: pointerMessage = mouseEvent->mButtons ? ePointerMove : ePointerUp; break; case eMouseDown: pointerMessage = mouseEvent->mButtons &
--- a/dom/html/HTMLInputElement.cpp +++ b/dom/html/HTMLInputElement.cpp @@ -4007,29 +4007,29 @@ nsresult HTMLInputElement::PostHandleEve } break; // eKeyPress || eKeyUp case eMouseDown: case eMouseUp: case eMouseDoubleClick: { // cancel all of these events for buttons // XXXsmaug Why? WidgetMouseEvent* mouseEvent = aVisitor.mEvent->AsMouseEvent(); - if (mouseEvent->mButton == WidgetMouseEvent::eMiddleButton || - mouseEvent->mButton == WidgetMouseEvent::eRightButton) { + if (mouseEvent->mButton == MouseButton::eMiddle || + mouseEvent->mButton == MouseButton::eRight) { if (mType == NS_FORM_INPUT_BUTTON || mType == NS_FORM_INPUT_RESET || mType == NS_FORM_INPUT_SUBMIT) { if (aVisitor.mDOMEvent) { aVisitor.mDOMEvent->StopPropagation(); } else { rv = NS_ERROR_FAILURE; } } } if (mType == NS_FORM_INPUT_NUMBER && aVisitor.mEvent->IsTrusted()) { - if (mouseEvent->mButton == WidgetMouseEvent::eLeftButton && + if (mouseEvent->mButton == MouseButton::eLeft && !IgnoreInputEventWithModifier(mouseEvent, false)) { nsNumberControlFrame* numberControlFrame = do_QueryFrame(GetPrimaryFrame()); if (numberControlFrame) { if (aVisitor.mEvent->mMessage == eMouseDown && IsMutable()) { switch (numberControlFrame->GetSpinButtonForPointerEvent( aVisitor.mEvent->AsMouseEvent())) { case nsNumberControlFrame::eSpinButtonUp: @@ -4187,17 +4187,17 @@ void HTMLInputElement::PostHandleEventFo break; // don't start drag if someone else is already capturing } WidgetInputEvent* inputEvent = aVisitor.mEvent->AsInputEvent(); if (IgnoreInputEventWithModifier(inputEvent, true)) { break; // ignore } if (aVisitor.mEvent->mMessage == eMouseDown) { if (aVisitor.mEvent->AsMouseEvent()->mButtons == - WidgetMouseEvent::eLeftButtonFlag) { + MouseButtonsFlag::eLeftFlag) { StartRangeThumbDrag(inputEvent); } else if (mIsDraggingRange) { CancelRangeThumbDrag(); } } else { if (aVisitor.mEvent->AsTouchEvent()->mTouches.Length() == 1) { StartRangeThumbDrag(inputEvent); } else if (mIsDraggingRange) {
--- a/dom/html/HTMLLabelElement.cpp +++ b/dom/html/HTMLLabelElement.cpp @@ -84,17 +84,17 @@ nsresult HTMLLabelElement::PostHandleEve // Strong ref because event dispatch is going to happen. RefPtr<Element> content = GetLabeledElement(); if (content) { mHandlingEvent = true; switch (aVisitor.mEvent->mMessage) { case eMouseDown: - if (mouseEvent->mButton == WidgetMouseEvent::eLeftButton) { + if (mouseEvent->mButton == MouseButton::eLeft) { // We reset the mouse-down point on every event because there is // no guarantee we will reach the eMouseClick code below. LayoutDeviceIntPoint* curPoint = new LayoutDeviceIntPoint(mouseEvent->mRefPoint); SetProperty(nsGkAtoms::labelMouseDownPtProperty, static_cast<void*>(curPoint), nsINode::DeleteProperty<LayoutDeviceIntPoint>); }
--- a/dom/interfaces/base/nsIDOMWindowUtils.idl +++ b/dom/interfaces/base/nsIDOMWindowUtils.idl @@ -1972,22 +1972,22 @@ interface nsIDOMWindowUtils : nsISupport */ void resetPrefersReducedMotionOverrideForTest(); // These consts are only for testing purposes. const long DEFAULT_MOUSE_POINTER_ID = 0; const long DEFAULT_PEN_POINTER_ID = 1; const long DEFAULT_TOUCH_POINTER_ID = 2; - // Match WidgetMouseEventBase::buttonType. + // Match mozilla::MouseButton. const long MOUSE_BUTTON_LEFT_BUTTON = 0; const long MOUSE_BUTTON_MIDDLE_BUTTON = 1; const long MOUSE_BUTTON_RIGHT_BUTTON = 2; - // Match WidgetMouseEventBase::buttonsFlag. + // Match mozilla::MouseButtonsFlag. const long MOUSE_BUTTONS_NO_BUTTON = 0x00; const long MOUSE_BUTTONS_LEFT_BUTTON = 0x01; const long MOUSE_BUTTONS_RIGHT_BUTTON = 0x02; const long MOUSE_BUTTONS_MIDDLE_BUTTON = 0x04; // Typically, "back" button being left side of 5-button // mice, see "buttons" attribute document of DOM3 Events. const long MOUSE_BUTTONS_4TH_BUTTON = 0x08; // Typically, "forward" button being right side of 5-button
--- a/dom/plugins/base/nsPluginInstanceOwner.cpp +++ b/dom/plugins/base/nsPluginInstanceOwner.cpp @@ -1860,23 +1860,23 @@ static NPCocoaEvent TranslateToNPCocoaEv } switch (anEvent->mMessage) { case eMouseDown: case eMouseUp: { WidgetMouseEvent* mouseEvent = anEvent->AsMouseEvent(); if (mouseEvent) { switch (mouseEvent->mButton) { - case WidgetMouseEvent::eLeftButton: + case MouseButton::eLeft: cocoaEvent.data.mouse.buttonNumber = 0; break; - case WidgetMouseEvent::eRightButton: + case MouseButton::eRight: cocoaEvent.data.mouse.buttonNumber = 1; break; - case WidgetMouseEvent::eMiddleButton: + case MouseButton::eMiddle: cocoaEvent.data.mouse.buttonNumber = 2; break; default: NS_WARNING("Mouse mButton we don't know about?"); } cocoaEvent.data.mouse.clickCount = mouseEvent->mClickCount; } else { NS_WARNING("eMouseUp/DOWN is not a WidgetMouseEvent?"); @@ -2028,17 +2028,17 @@ nsEventStatus nsPluginInstanceOwner::Pro mInstance->HandleEvent(&textEvent, nullptr); } } } bool handled = (response == kNPEventHandled || response == kNPEventStartIME); bool leftMouseButtonDown = (anEvent.mMessage == eMouseDown) && - (anEvent.AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton); + (anEvent.AsMouseEvent()->mButton == MouseButton::eLeft); if (handled && !(leftMouseButtonDown && !mContentFocused)) { rv = nsEventStatus_eConsumeNoDefault; } #endif #ifdef XP_WIN // this code supports windowless plugins const NPEvent* pPluginEvent = @@ -2314,23 +2314,23 @@ nsEventStatus nsPluginInstanceOwner::Pro event.root = root; event.time = anEvent.mTime; event.x = pluginPoint.x; event.y = pluginPoint.y; event.x_root = rootPoint.x; event.y_root = rootPoint.y; event.state = XInputEventState(mouseEvent); switch (mouseEvent.mButton) { - case WidgetMouseEvent::eMiddleButton: + case MouseButton::eMiddle: event.button = 2; break; - case WidgetMouseEvent::eRightButton: + case MouseButton::eRight: event.button = 3; break; - default: // WidgetMouseEvent::eLeftButton; + default: // MouseButton::eLeft; event.button = 1; break; } // information lost: event.subwindow = X11None; event.same_screen = X11True; } break; default:
--- a/editor/libeditor/EditorEventListener.cpp +++ b/editor/libeditor/EditorEventListener.cpp @@ -398,17 +398,17 @@ EditorEventListener::HandleEvent(Event* } RefPtr<MouseEvent> mouseEvent = aEvent->AsMouseEvent(); return NS_WARN_IF(!mouseEvent) ? NS_OK : MouseUp(mouseEvent); } // click case eMouseClick: { WidgetMouseEvent* widgetMouseEvent = internalEvent->AsMouseEvent(); // Don't handle non-primary click events - if (widgetMouseEvent->mButton != WidgetMouseEventBase::eLeftButton) { + if (widgetMouseEvent->mButton != MouseButton::eLeft) { return NS_OK; } MOZ_FALLTHROUGH; } // auxclick case eMouseAuxClick: { WidgetMouseEvent* widgetMouseEvent = internalEvent->AsMouseEvent(); if (NS_WARN_IF(!widgetMouseEvent)) { @@ -637,17 +637,17 @@ nsresult EditorEventListener::MouseClick // any non-primary button click event handlers in our UI still keep // listening to "click" events. Additionally, "auxclick" event is // fired after "click" events and even if we do this in the system event // group, middle click opens new tab before us. Therefore, we need to // handle middle click at capturing phase of the default group even // though this makes web apps cannot prevent middle click paste with // calling preventDefault() of "click" nor "auxclick". - if (aMouseClickEvent->mButton != WidgetMouseEventBase::eMiddleButton || + if (aMouseClickEvent->mButton != MouseButton::eMiddle || !WidgetMouseEvent::IsMiddleClickPasteEnabled()) { return NS_OK; } RefPtr<PresShell> presShell = GetPresShell(); if (NS_WARN_IF(!presShell)) { return NS_OK; }
--- a/gfx/layers/apz/src/APZCTreeManager.cpp +++ b/gfx/layers/apz/src/APZCTreeManager.cpp @@ -1852,17 +1852,17 @@ nsEventStatus APZCTreeManager::ProcessTo MOZ_ASSERT(mApzcForInputBlock); MOZ_ASSERT(aTouchInput.mTouches.Length() == 1); // Synthesize a mouse event based on the touch event, so that we can // reuse code in InputQueue and APZC for handling scrollbar mouse-drags. MouseInput mouseInput{MultiTouchTypeToMouseType(aTouchInput.mType), MouseInput::LEFT_BUTTON, dom::MouseEvent_Binding::MOZ_SOURCE_TOUCH, - WidgetMouseEvent::eLeftButtonFlag, + MouseButtonsFlag::eLeftFlag, aTouchInput.mTouches[0].mScreenPoint, aTouchInput.mTime, aTouchInput.mTimeStamp, aTouchInput.modifiers}; mouseInput.mHandledByAPZ = true; // The value of |targetConfirmed| passed to InputQueue::ReceiveInputEvent() // only matters for the first event, which creates the drag block. For
--- a/gfx/layers/apz/util/APZCCallbackHelper.cpp +++ b/gfx/layers/apz/util/APZCCallbackHelper.cpp @@ -551,17 +551,17 @@ nsEventStatus APZCCallbackHelper::Dispat Modifiers aModifiers, int32_t aClickCount, nsIWidget* aWidget) { MOZ_ASSERT(aMsg == eMouseMove || aMsg == eMouseDown || aMsg == eMouseUp || aMsg == eMouseLongTap); WidgetMouseEvent event(true, aMsg, aWidget, WidgetMouseEvent::eReal, WidgetMouseEvent::eNormal); event.mRefPoint = LayoutDeviceIntPoint::Truncate(aRefPoint.x, aRefPoint.y); event.mTime = aTime; - event.mButton = WidgetMouseEvent::eLeftButton; + event.mButton = MouseButton::eLeft; event.mInputSource = dom::MouseEvent_Binding::MOZ_SOURCE_TOUCH; if (aMsg == eMouseLongTap) { event.mFlags.mOnlyChromeDispatch = true; } event.mIgnoreRootScrollFrame = true; if (aMsg != eMouseMove) { event.mClickCount = aClickCount; }
--- a/layout/base/AccessibleCaretEventHub.cpp +++ b/layout/base/AccessibleCaretEventHub.cpp @@ -423,17 +423,17 @@ nsEventStatus AccessibleCaretEventHub::H return status; } nsEventStatus AccessibleCaretEventHub::HandleMouseEvent( WidgetMouseEvent* aEvent) { nsEventStatus rv = nsEventStatus_eIgnore; - if (aEvent->mButton != WidgetMouseEvent::eLeftButton) { + if (aEvent->mButton != MouseButton::eLeft) { return rv; } int32_t id = (mActiveTouchId == kInvalidTouchId ? kDefaultTouchId : mActiveTouchId); nsPoint point = GetMouseEventPosition(aEvent); if (aEvent->mMessage == eMouseDown || aEvent->mMessage == eMouseUp ||
--- a/layout/base/gtest/TestAccessibleCaretEventHub.cpp +++ b/layout/base/gtest/TestAccessibleCaretEventHub.cpp @@ -102,17 +102,17 @@ class AccessibleCaretEventHubTester : pu mHub.get()->Release(); } static UniquePtr<WidgetEvent> CreateMouseEvent(EventMessage aMessage, nscoord aX, nscoord aY) { auto event = MakeUnique<WidgetMouseEvent>(true, aMessage, nullptr, WidgetMouseEvent::eReal); - event->mButton = WidgetMouseEvent::eLeftButton; + event->mButton = MouseButton::eLeft; event->mRefPoint = LayoutDeviceIntPoint(aX, aY); return std::move(event); } static UniquePtr<WidgetEvent> CreateMousePressEvent(nscoord aX, nscoord aY) { return CreateMouseEvent(eMouseDown, aX, aY); }
--- a/layout/forms/nsImageControlFrame.cpp +++ b/layout/forms/nsImageControlFrame.cpp @@ -133,17 +133,17 @@ nsresult nsImageControlFrame::HandleEven if (IsContentDisabled()) { return nsFrame::HandleEvent(aPresContext, aEvent, aEventStatus); } *aEventStatus = nsEventStatus_eIgnore; if (aEvent->mMessage == eMouseUp && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton) { + aEvent->AsMouseEvent()->mButton == MouseButton::eLeft) { // Store click point for HTMLInputElement::SubmitNamesValues // Do this on MouseUp because the specs don't say and that's what IE does nsIntPoint* lastClickPoint = static_cast<nsIntPoint*>( mContent->GetProperty(nsGkAtoms::imageClickedPoint)); if (lastClickPoint) { // normally lastClickedPoint is not null, as it's allocated in Init() nsPoint pt = nsLayoutUtils::GetEventCoordinatesRelativeTo(aEvent, this); TranslateEventCoords(pt, *lastClickPoint);
--- a/layout/generic/nsFrame.cpp +++ b/layout/generic/nsFrame.cpp @@ -4020,17 +4020,17 @@ nsresult nsFrame::HandleEvent(nsPresCont nsEventStatus* aEventStatus) { if (aEvent->mMessage == eMouseMove) { // XXX If the second argument of HandleDrag() is WidgetMouseEvent, // the implementation becomes simpler. return HandleDrag(aPresContext, aEvent, aEventStatus); } if ((aEvent->mClass == eMouseEventClass && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton) || + aEvent->AsMouseEvent()->mButton == MouseButton::eLeft) || aEvent->mClass == eTouchEventClass) { if (aEvent->mMessage == eMouseDown || aEvent->mMessage == eTouchStart) { HandlePress(aPresContext, aEvent, aEventStatus); } else if (aEvent->mMessage == eMouseUp || aEvent->mMessage == eTouchEnd) { HandleRelease(aPresContext, aEvent, aEventStatus); } } return NS_OK; @@ -4057,17 +4057,17 @@ nsresult nsFrame::GetDataForTableSelecti // continue selecting with mouse drag or end on mouse up, // or when using shift key to extend block of cells // (Mouse down does normal selection unless Ctrl/Cmd is pressed) bool doTableSelection = displaySelection == nsISelectionDisplay::DISPLAY_ALL && selectingTableCells && (aMouseEvent->mMessage == eMouseMove || (aMouseEvent->mMessage == eMouseUp && - aMouseEvent->mButton == WidgetMouseEvent::eLeftButton) || + aMouseEvent->mButton == MouseButton::eLeft) || aMouseEvent->IsShift()); if (!doTableSelection) { // In Browser, special 'table selection' key must be pressed for table // selection or when just Shift is pressed and we're already in table/cell // selection mode #ifdef XP_MACOSX doTableSelection = aMouseEvent->IsMeta() ||
--- a/layout/generic/nsFrameSetFrame.cpp +++ b/layout/generic/nsFrameSetFrame.cpp @@ -613,17 +613,17 @@ nsresult nsHTMLFramesetFrame::HandleEven NS_ENSURE_ARG_POINTER(aEventStatus); if (mDragger) { // the nsFramesetBorderFrame has captured NS_MOUSE_DOWN switch (aEvent->mMessage) { case eMouseMove: MouseDrag(aPresContext, aEvent); break; case eMouseUp: - if (aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton) { + if (aEvent->AsMouseEvent()->mButton == MouseButton::eLeft) { EndMouseDrag(aPresContext); } break; default: break; } *aEventStatus = nsEventStatus_eConsumeNoDefault; } else { @@ -1448,17 +1448,17 @@ nsresult nsHTMLFramesetBorderFrame::Hand *aEventStatus = nsEventStatus_eIgnore; // XXX Mouse setting logic removed. The remaining logic should also move. if (!mCanResize) { return NS_OK; } if (aEvent->mMessage == eMouseDown && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton) { + aEvent->AsMouseEvent()->mButton == MouseButton::eLeft) { nsHTMLFramesetFrame* parentFrame = do_QueryFrame(GetParent()); if (parentFrame) { parentFrame->StartMouseDrag(aPresContext, this, aEvent); *aEventStatus = nsEventStatus_eConsumeNoDefault; } } return NS_OK; }
--- a/layout/generic/nsImageFrame.cpp +++ b/layout/generic/nsImageFrame.cpp @@ -2230,17 +2230,17 @@ nsresult nsImageFrame::GetContentForEven // XXX what should clicks on transparent pixels do? nsresult nsImageFrame::HandleEvent(nsPresContext* aPresContext, WidgetGUIEvent* aEvent, nsEventStatus* aEventStatus) { NS_ENSURE_ARG_POINTER(aEventStatus); if ((aEvent->mMessage == eMouseClick && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton) || + aEvent->AsMouseEvent()->mButton == MouseButton::eLeft) || aEvent->mMessage == eMouseMove) { nsImageMap* map = GetImageMap(); bool isServerMap = IsServerImageMap(); if (map || isServerMap) { nsIntPoint p; TranslateEventCoords( nsLayoutUtils::GetEventCoordinatesRelativeTo(aEvent, this), p); bool inside = false;
--- a/layout/xul/nsMenuFrame.cpp +++ b/layout/xul/nsMenuFrame.cpp @@ -381,34 +381,34 @@ nsresult nsMenuFrame::HandleEvent(nsPres // On other platforms, toggle menulist on unmodified F4 or Alt arrow if ((keyCode == NS_VK_F4 && !keyEvent->IsAlt()) || ((keyCode == NS_VK_UP || keyCode == NS_VK_DOWN) && keyEvent->IsAlt())) { *aEventStatus = nsEventStatus_eConsumeNoDefault; ToggleMenuState(); } #endif } else if (aEvent->mMessage == eMouseDown && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton && + aEvent->AsMouseEvent()->mButton == MouseButton::eLeft && !IsDisabled() && IsMenu()) { // The menu item was selected. Bring up the menu. // We have children. // Don't prevent the default action here, since that will also cancel // potential drag starts. if (!menuParent || menuParent->IsMenuBar()) { ToggleMenuState(); } else { if (!IsOpen()) { menuParent->ChangeMenuItem(this, false, false); OpenMenu(false); } } } else if ( #ifndef NSCONTEXTMENUISMOUSEUP (aEvent->mMessage == eMouseUp && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eRightButton) && + aEvent->AsMouseEvent()->mButton == MouseButton::eRight) && #else aEvent->mMessage == eContextMenu && #endif onmenu && !IsMenu() && !IsDisabled()) { // if this menu is a context menu it accepts right-clicks...fire away! // Make sure we cancel default processing of the context menu event so // that it doesn't bubble and get seen again by the popuplistener and show // another context menu. @@ -418,17 +418,17 @@ nsresult nsMenuFrame::HandleEvent(nsPres // on others we get it on a mouse down. For the ones where we get it on a // mouse down, we must continue listening for the right button up event to // dismiss the menu. if (menuParent->IsContextMenu()) { *aEventStatus = nsEventStatus_eConsumeNoDefault; Execute(aEvent); } } else if (aEvent->mMessage == eMouseUp && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton && + aEvent->AsMouseEvent()->mButton == MouseButton::eLeft && !IsMenu() && !IsDisabled()) { // Execute the execute event handler. *aEventStatus = nsEventStatus_eConsumeNoDefault; Execute(aEvent); } else if (aEvent->mMessage == eMouseOut) { // Kill our timer if one is active. if (mOpenTimer) { mOpenTimer->Cancel();
--- a/layout/xul/nsResizerFrame.cpp +++ b/layout/xul/nsResizerFrame.cpp @@ -59,17 +59,17 @@ nsresult nsResizerFrame::HandleEvent(nsP AutoWeakFrame weakFrame(this); bool doDefault = true; switch (aEvent->mMessage) { case eTouchStart: case eMouseDown: { if (aEvent->mClass == eTouchEventClass || (aEvent->mClass == eMouseEventClass && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton)) { + aEvent->AsMouseEvent()->mButton == MouseButton::eLeft)) { nsCOMPtr<nsIBaseWindow> window; mozilla::PresShell* presShell = aPresContext->GetPresShell(); nsIContent* contentToResize = GetContentToResize(presShell, getter_AddRefs(window)); if (contentToResize) { nsIFrame* frameToResize = contentToResize->GetPrimaryFrame(); if (!frameToResize) break; @@ -116,17 +116,17 @@ nsresult nsResizerFrame::HandleEvent(nsP nsIPresShell::SetCapturingContent(GetContent(), CAPTURE_IGNOREALLOWED); } } break; case eTouchEnd: case eMouseUp: { if (aEvent->mClass == eTouchEventClass || (aEvent->mClass == eMouseEventClass && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton)) { + aEvent->AsMouseEvent()->mButton == MouseButton::eLeft)) { // we're done tracking. mTrackingMouseMove = false; nsIPresShell::SetCapturingContent(nullptr, 0); doDefault = false; } } break; @@ -286,17 +286,17 @@ nsresult nsResizerFrame::HandleEvent(nsP case eMouseClick: { WidgetMouseEvent* mouseEvent = aEvent->AsMouseEvent(); if (mouseEvent->IsLeftClickEvent()) { MouseClicked(mouseEvent); } break; } case eMouseDoubleClick: - if (aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton) { + if (aEvent->AsMouseEvent()->mButton == MouseButton::eLeft) { nsCOMPtr<nsIBaseWindow> window; mozilla::PresShell* presShell = aPresContext->GetPresShell(); nsIContent* contentToResize = GetContentToResize(presShell, getter_AddRefs(window)); if (contentToResize) { nsMenuPopupFrame* menuPopupFrame = do_QueryFrame(contentToResize->GetPrimaryFrame()); if (menuPopupFrame)
--- a/layout/xul/nsScrollbarButtonFrame.cpp +++ b/layout/xul/nsScrollbarButtonFrame.cpp @@ -82,21 +82,21 @@ nsresult nsScrollbarButtonFrame::HandleE } bool nsScrollbarButtonFrame::HandleButtonPress(nsPresContext* aPresContext, WidgetGUIEvent* aEvent, nsEventStatus* aEventStatus) { // Get the desired action for the scrollbar button. LookAndFeel::IntID tmpAction; uint16_t button = aEvent->AsMouseEvent()->mButton; - if (button == WidgetMouseEvent::eLeftButton) { + if (button == MouseButton::eLeft) { tmpAction = LookAndFeel::eIntID_ScrollButtonLeftMouseButtonAction; - } else if (button == WidgetMouseEvent::eMiddleButton) { + } else if (button == MouseButton::eMiddle) { tmpAction = LookAndFeel::eIntID_ScrollButtonMiddleMouseButtonAction; - } else if (button == WidgetMouseEvent::eRightButton) { + } else if (button == MouseButton::eRight) { tmpAction = LookAndFeel::eIntID_ScrollButtonRightMouseButtonAction; } else { return false; } // Get the button action metric from the pres. shell. int32_t pressedButtonAction; if (NS_FAILED(LookAndFeel::GetInt(tmpAction, &pressedButtonAction))) {
--- a/layout/xul/nsSliderFrame.cpp +++ b/layout/xul/nsSliderFrame.cpp @@ -611,17 +611,17 @@ nsresult nsSliderFrame::HandleEvent(nsPr mThumbStart = thumbFrame->GetPosition().x; else mThumbStart = thumbFrame->GetPosition().y; mDragStart = pos - mThumbStart; } #ifdef MOZ_WIDGET_GTK else if (ShouldScrollForEvent(aEvent) && aEvent->mClass == eMouseEventClass && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eRightButton) { + aEvent->AsMouseEvent()->mButton == MouseButton::eRight) { // HandlePress and HandleRelease are usually called via // nsFrame::HandleEvent, but only for the left mouse button. if (aEvent->mMessage == eMouseDown) { HandlePress(aPresContext, aEvent, aEventStatus); } else if (aEvent->mMessage == eMouseUp) { HandleRelease(aPresContext, aEvent, aEventStatus); } @@ -1180,23 +1180,23 @@ bool nsSliderFrame::ShouldScrollForEvent switch (aEvent->mMessage) { case eTouchStart: case eTouchEnd: return true; case eMouseDown: case eMouseUp: { uint16_t button = aEvent->AsMouseEvent()->mButton; #ifdef MOZ_WIDGET_GTK - return (button == WidgetMouseEvent::eLeftButton) || - (button == WidgetMouseEvent::eRightButton && GetScrollToClick()) || - (button == WidgetMouseEvent::eMiddleButton && gMiddlePref && + return (button == MouseButton::eLeft) || + (button == MouseButton::eRight && GetScrollToClick()) || + (button == MouseButton::eMiddle && gMiddlePref && !GetScrollToClick()); #else - return (button == WidgetMouseEvent::eLeftButton) || - (button == WidgetMouseEvent::eMiddleButton && gMiddlePref); + return (button == MouseButton::eLeft) || + (button == MouseButton::eMiddle && gMiddlePref); #endif } default: return false; } } bool nsSliderFrame::ShouldScrollToClickForEvent(WidgetGUIEvent* aEvent) { @@ -1216,27 +1216,27 @@ bool nsSliderFrame::ShouldScrollToClickF } #endif if (aEvent->mMessage == eTouchStart) { return GetScrollToClick(); } WidgetMouseEvent* mouseEvent = aEvent->AsMouseEvent(); - if (mouseEvent->mButton == WidgetMouseEvent::eLeftButton) { + if (mouseEvent->mButton == MouseButton::eLeft) { #ifdef XP_MACOSX bool invertPref = mouseEvent->IsAlt(); #else bool invertPref = mouseEvent->IsShift(); #endif return GetScrollToClick() != invertPref; } #ifdef MOZ_WIDGET_GTK - if (mouseEvent->mButton == WidgetMouseEvent::eRightButton) { + if (mouseEvent->mButton == MouseButton::eRight) { return !GetScrollToClick(); } #endif return true; } bool nsSliderFrame::IsEventOverThumb(WidgetGUIEvent* aEvent) {
--- a/layout/xul/nsSplitterFrame.cpp +++ b/layout/xul/nsSplitterFrame.cpp @@ -329,17 +329,17 @@ nsresult nsSplitterFrame::HandleEvent(ns AutoWeakFrame weakFrame(this); RefPtr<nsSplitterFrameInner> inner(mInner); switch (aEvent->mMessage) { case eMouseMove: inner->MouseDrag(aPresContext, aEvent); break; case eMouseUp: - if (aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton) { + if (aEvent->AsMouseEvent()->mButton == MouseButton::eLeft) { inner->MouseUp(aPresContext, aEvent); } break; default: break; }
--- a/layout/xul/nsTitleBarFrame.cpp +++ b/layout/xul/nsTitleBarFrame.cpp @@ -59,17 +59,17 @@ nsresult nsTitleBarFrame::HandleEvent(ns if (nsEventStatus_eConsumeNoDefault == *aEventStatus) { return NS_OK; } bool doDefault = true; switch (aEvent->mMessage) { case eMouseDown: { - if (aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton) { + if (aEvent->AsMouseEvent()->mButton == MouseButton::eLeft) { // titlebar has no effect in non-chrome shells nsCOMPtr<nsIDocShellTreeItem> dsti = aPresContext->GetDocShell(); if (dsti) { if (dsti->ItemType() == nsIDocShellTreeItem::typeChrome) { // we're tracking. mTrackingMouseMove = true; // start capture. @@ -83,17 +83,17 @@ nsresult nsTitleBarFrame::HandleEvent(ns *aEventStatus = nsEventStatus_eConsumeNoDefault; doDefault = false; } } break; case eMouseUp: { if (mTrackingMouseMove && - aEvent->AsMouseEvent()->mButton == WidgetMouseEvent::eLeftButton) { + aEvent->AsMouseEvent()->mButton == MouseButton::eLeft) { // we're done tracking. mTrackingMouseMove = false; // end capture nsIPresShell::SetCapturingContent(nullptr, 0); *aEventStatus = nsEventStatus_eConsumeNoDefault; doDefault = false;
--- a/widget/EventForwards.h +++ b/widget/EventForwards.h @@ -257,11 +257,26 @@ struct TextRangeStyle; struct TextRange; class EditCommands; class TextRangeArray; // FontRange.h struct FontRange; +enum MouseButton { eNotPressed = -1, eLeft = 0, eMiddle = 1, eRight = 2 }; + +enum MouseButtonsFlag { + eNoButtons = 0x00, + eLeftFlag = 0x01, + eRightFlag = 0x02, + eMiddleFlag = 0x04, + // typicall, "back" button being left side of 5-button + // mice, see "buttons" attribute document of DOM3 Events. + e4thFlag = 0x08, + // typicall, "forward" button being right side of 5-button + // mice, see "buttons" attribute document of DOM3 Events. + e5thFlag = 0x10 +}; + } // namespace mozilla #endif // mozilla_EventForwards_h__
--- a/widget/InputData.cpp +++ b/widget/InputData.cpp @@ -217,17 +217,17 @@ WidgetMouseEvent MultiTouchInput::ToWidg WidgetMouseEvent event(true, mouseEventMessage, aWidget, WidgetMouseEvent::eReal, WidgetMouseEvent::eNormal); const SingleTouchData& firstTouch = mTouches[0]; event.mRefPoint.x = firstTouch.mScreenPoint.x; event.mRefPoint.y = firstTouch.mScreenPoint.y; event.mTime = mTime; - event.mButton = WidgetMouseEvent::eLeftButton; + event.mButton = MouseButton::eLeft; event.mInputSource = MouseEvent_Binding::MOZ_SOURCE_TOUCH; event.mModifiers = modifiers; event.mFlags.mHandledByAPZ = mHandledByAPZ; event.mFocusSequenceNumber = mFocusSequenceNumber; if (mouseEventMessage != eMouseMove) { event.mClickCount = 1; } @@ -286,23 +286,23 @@ MouseInput::MouseInput(const WidgetMouse mButtons(aMouseEvent.mButtons), mHandledByAPZ(aMouseEvent.mFlags.mHandledByAPZ) { MOZ_ASSERT(NS_IsMainThread(), "Can only copy from WidgetTouchEvent on main thread"); mButtonType = NONE; switch (aMouseEvent.mButton) { - case WidgetMouseEventBase::eLeftButton: + case MouseButton::eLeft: mButtonType = MouseInput::LEFT_BUTTON; break; - case WidgetMouseEventBase::eMiddleButton: + case MouseButton::eMiddle: mButtonType = MouseInput::MIDDLE_BUTTON; break; - case WidgetMouseEventBase::eRightButton: + case MouseButton::eRight: mButtonType = MouseInput::RIGHT_BUTTON; break; } switch (aMouseEvent.mMessage) { case eMouseMove: mType = MOUSE_MOVE; break; @@ -393,23 +393,23 @@ WidgetMouseEvent MouseInput::ToWidgetMou WidgetMouseEvent::eNormal); if (msg == eVoidEvent) { return event; } switch (mButtonType) { case MouseInput::LEFT_BUTTON: - event.mButton = WidgetMouseEventBase::eLeftButton; + event.mButton = MouseButton::eLeft; break; case MouseInput::MIDDLE_BUTTON: - event.mButton = WidgetMouseEventBase::eMiddleButton; + event.mButton = MouseButton::eMiddle; break; case MouseInput::RIGHT_BUTTON: - event.mButton = WidgetMouseEventBase::eRightButton; + event.mButton = MouseButton::eRight; break; case MouseInput::NONE: default: break; } event.mButtons = mButtons; event.mModifiers = modifiers;
--- a/widget/MouseEvents.h +++ b/widget/MouseEvents.h @@ -122,73 +122,62 @@ class WidgetMouseEventBase : public Widg } // ID of the canvas HitRegion nsString mRegion; // Finger or touch pressure of event. It ranges between 0.0 and 1.0. float mPressure; - enum buttonType { - eNoButton = -1, - eLeftButton = 0, - eMiddleButton = 1, - eRightButton = 2 - }; // Pressed button ID of mousedown or mouseup event. // This is set only when pressing a button causes the event. int16_t mButton; - enum buttonsFlag { - eNoButtonFlag = 0x00, - eLeftButtonFlag = 0x01, - eRightButtonFlag = 0x02, - eMiddleButtonFlag = 0x04, - // typicall, "back" button being left side of 5-button - // mice, see "buttons" attribute document of DOM3 Events. - e4thButtonFlag = 0x08, - // typicall, "forward" button being right side of 5-button - // mice, see "buttons" attribute document of DOM3 Events. - e5thButtonFlag = 0x10 - }; - // Flags of all pressed buttons at the event fired. // This is set at any mouse event, don't be confused with |mButton|. int16_t mButtons; // Possible values a in MouseEvent uint16_t mInputSource; // Touch near a cluster of links (true) bool mHitCluster; - bool IsLeftButtonPressed() const { return !!(mButtons & eLeftButtonFlag); } - bool IsRightButtonPressed() const { return !!(mButtons & eRightButtonFlag); } + bool IsLeftButtonPressed() const { + return !!(mButtons & MouseButtonsFlag::eLeftFlag); + } + bool IsRightButtonPressed() const { + return !!(mButtons & MouseButtonsFlag::eRightFlag); + } bool IsMiddleButtonPressed() const { - return !!(mButtons & eMiddleButtonFlag); + return !!(mButtons & MouseButtonsFlag::eMiddleFlag); } - bool Is4thButtonPressed() const { return !!(mButtons & e4thButtonFlag); } - bool Is5thButtonPressed() const { return !!(mButtons & e5thButtonFlag); } + bool Is4thButtonPressed() const { + return !!(mButtons & MouseButtonsFlag::e4thFlag); + } + bool Is5thButtonPressed() const { + return !!(mButtons & MouseButtonsFlag::e5thFlag); + } void AssignMouseEventBaseData(const WidgetMouseEventBase& aEvent, bool aCopyTargets) { AssignInputEventData(aEvent, aCopyTargets); mButton = aEvent.mButton; mButtons = aEvent.mButtons; mPressure = aEvent.mPressure; mHitCluster = aEvent.mHitCluster; mInputSource = aEvent.mInputSource; } /** * Returns true if left click event. */ bool IsLeftClickEvent() const { - return mMessage == eMouseClick && mButton == eLeftButton; + return mMessage == eMouseClick && mButton == MouseButton::eLeft; } }; /****************************************************************************** * mozilla::WidgetMouseEvent ******************************************************************************/ class WidgetMouseEvent : public WidgetMouseEventBase, @@ -235,26 +224,27 @@ class WidgetMouseEvent : public WidgetMo : WidgetMouseEventBase(aIsTrusted, aMessage, aWidget, eMouseEventClass), mReason(aReason), mContextMenuTrigger(aContextMenuTrigger), mExitFrom(eChild), mIgnoreRootScrollFrame(false), mClickCount(0), mUseLegacyNonPrimaryDispatch(false) { if (aMessage == eContextMenu) { - mButton = (mContextMenuTrigger == eNormal) ? eRightButton : eLeftButton; + mButton = (mContextMenuTrigger == eNormal) ? MouseButton::eRight + : MouseButton::eLeft; } } #ifdef DEBUG virtual ~WidgetMouseEvent() { NS_WARNING_ASSERTION( mMessage != eContextMenu || - mButton == - ((mContextMenuTrigger == eNormal) ? eRightButton : eLeftButton), + mButton == ((mContextMenuTrigger == eNormal) ? MouseButton::eRight + : MouseButton::eLeft), "Wrong button set to eContextMenu event?"); } #endif virtual WidgetEvent* Duplicate() const override { MOZ_ASSERT(mClass == eMouseEventClass, "Duplicate() must be overridden by sub class"); // Not copying widget, it is a weak reference.
--- a/widget/android/nsWindow.cpp +++ b/widget/android/nsWindow.cpp @@ -558,29 +558,29 @@ class nsWindow::NPZCSupport final return result; } static int16_t ConvertButtons(int buttons) { int16_t result = 0; if (buttons & java::sdk::MotionEvent::BUTTON_PRIMARY) { - result |= WidgetMouseEventBase::eLeftButtonFlag; + result |= MouseButtonsFlag::eLeftFlag; } if (buttons & java::sdk::MotionEvent::BUTTON_SECONDARY) { - result |= WidgetMouseEventBase::eRightButtonFlag; + result |= MouseButtonsFlag::eRightFlag; } if (buttons & java::sdk::MotionEvent::BUTTON_TERTIARY) { - result |= WidgetMouseEventBase::eMiddleButtonFlag; + result |= MouseButtonsFlag::eMiddleFlag; } if (buttons & java::sdk::MotionEvent::BUTTON_BACK) { - result |= WidgetMouseEventBase::e4thButtonFlag; + result |= MouseButtonsFlag::e4thFlag; } if (buttons & java::sdk::MotionEvent::BUTTON_FORWARD) { - result |= WidgetMouseEventBase::e5thButtonFlag; + result |= MouseButtonsFlag::e5thFlag; } return result; } public: bool HandleMouseEvent(int32_t aAction, int64_t aTime, int32_t aMetaState, float aX, float aY, int buttons) {
--- a/widget/cocoa/nsChildView.mm +++ b/widget/cocoa/nsChildView.mm @@ -4060,19 +4060,19 @@ NSEvent* gLastDragMouseDownEvent = nil; if (mBlockedLastMouseDown && clickCount > 1) { // Don't send a double click if the first click of the double click was // blocked. clickCount--; } geckoEvent.mClickCount = clickCount; if (modifierFlags & NSControlKeyMask) - geckoEvent.mButton = WidgetMouseEvent::eRightButton; + geckoEvent.mButton = MouseButton::eRight; else - geckoEvent.mButton = WidgetMouseEvent::eLeftButton; + geckoEvent.mButton = MouseButton::eLeft; mGeckoChild->DispatchInputEvent(&geckoEvent); mBlockedLastMouseDown = NO; // XXX maybe call markedTextSelectionChanged:client: here? NS_OBJC_END_TRY_ABORT_BLOCK; } @@ -4085,19 +4085,19 @@ NSEvent* gLastDragMouseDownEvent = nil; return; } nsAutoRetainCocoaObject kungFuDeathGrip(self); WidgetMouseEvent geckoEvent(true, eMouseUp, mGeckoChild, WidgetMouseEvent::eReal); [self convertCocoaMouseEvent:theEvent toGeckoEvent:&geckoEvent]; if ([theEvent modifierFlags] & NSControlKeyMask) - geckoEvent.mButton = WidgetMouseEvent::eRightButton; + geckoEvent.mButton = MouseButton::eRight; else - geckoEvent.mButton = WidgetMouseEvent::eLeftButton; + geckoEvent.mButton = MouseButton::eLeft; // Remember the event's position before calling DispatchInputEvent, because // that call can mutate it and convert it into a different coordinate space. LayoutDeviceIntPoint pos = geckoEvent.mRefPoint; // This might destroy our widget (and null out mGeckoChild). bool defaultPrevented = (mGeckoChild->DispatchInputEvent(&geckoEvent) == nsEventStatus_eConsumeNoDefault); @@ -4187,17 +4187,17 @@ NSEvent* gLastDragMouseDownEvent = nil; if (!mGeckoChild) return; if (mTextInputHandler->OnHandleEvent(theEvent)) { return; } // The right mouse went down, fire off a right mouse down event to gecko WidgetMouseEvent geckoEvent(true, eMouseDown, mGeckoChild, WidgetMouseEvent::eReal); [self convertCocoaMouseEvent:theEvent toGeckoEvent:&geckoEvent]; - geckoEvent.mButton = WidgetMouseEvent::eRightButton; + geckoEvent.mButton = MouseButton::eRight; geckoEvent.mClickCount = [theEvent clickCount]; mGeckoChild->DispatchInputEvent(&geckoEvent); if (!mGeckoChild) return; if (!nsBaseWidget::ShowContextMenuAfterMouseUp()) { // Let the superclass do the context menu stuff. [super rightMouseDown:theEvent]; @@ -4211,17 +4211,17 @@ NSEvent* gLastDragMouseDownEvent = nil; if (!mGeckoChild) return; if (mTextInputHandler->OnHandleEvent(theEvent)) { return; } WidgetMouseEvent geckoEvent(true, eMouseUp, mGeckoChild, WidgetMouseEvent::eReal); [self convertCocoaMouseEvent:theEvent toGeckoEvent:&geckoEvent]; - geckoEvent.mButton = WidgetMouseEvent::eRightButton; + geckoEvent.mButton = MouseButton::eRight; geckoEvent.mClickCount = [theEvent clickCount]; nsAutoRetainCocoaObject kungFuDeathGrip(self); mGeckoChild->DispatchInputEvent(&geckoEvent); if (!mGeckoChild) return; if (nsBaseWidget::ShowContextMenuAfterMouseUp()) { // Let the superclass do the context menu stuff, but pretend it's rightMouseDown. @@ -4244,17 +4244,17 @@ NSEvent* gLastDragMouseDownEvent = nil; - (void)rightMouseDragged:(NSEvent*)theEvent { if (!mGeckoChild) return; if (mTextInputHandler->OnHandleEvent(theEvent)) { return; } WidgetMouseEvent geckoEvent(true, eMouseMove, mGeckoChild, WidgetMouseEvent::eReal); [self convertCocoaMouseEvent:theEvent toGeckoEvent:&geckoEvent]; - geckoEvent.mButton = WidgetMouseEvent::eRightButton; + geckoEvent.mButton = MouseButton::eRight; // send event into Gecko by going directly to the // the widget. mGeckoChild->DispatchInputEvent(&geckoEvent); } - (void)otherMouseDown:(NSEvent*)theEvent { NS_OBJC_BEGIN_TRY_ABORT_BLOCK; @@ -4267,47 +4267,47 @@ NSEvent* gLastDragMouseDownEvent = nil; if (!mGeckoChild) return; if (mTextInputHandler->OnHandleEvent(theEvent)) { return; } WidgetMouseEvent geckoEvent(true, eMouseDown, mGeckoChild, WidgetMouseEvent::eReal); [self convertCocoaMouseEvent:theEvent toGeckoEvent:&geckoEvent]; - geckoEvent.mButton = WidgetMouseEvent::eMiddleButton; + geckoEvent.mButton = MouseButton::eMiddle; geckoEvent.mClickCount = [theEvent clickCount]; mGeckoChild->DispatchInputEvent(&geckoEvent); NS_OBJC_END_TRY_ABORT_BLOCK; } - (void)otherMouseUp:(NSEvent*)theEvent { if (!mGeckoChild) return; if (mTextInputHandler->OnHandleEvent(theEvent)) { return; } WidgetMouseEvent geckoEvent(true, eMouseUp, mGeckoChild, WidgetMouseEvent::eReal); [self convertCocoaMouseEvent:theEvent toGeckoEvent:&geckoEvent]; - geckoEvent.mButton = WidgetMouseEvent::eMiddleButton; + geckoEvent.mButton = MouseButton::eMiddle; nsAutoRetainCocoaObject kungFuDeathGrip(self); mGeckoChild->DispatchInputEvent(&geckoEvent); } - (void)otherMouseDragged:(NSEvent*)theEvent { if (!mGeckoChild) return; if (mTextInputHandler->OnHandleEvent(theEvent)) { return; } WidgetMouseEvent geckoEvent(true, eMouseMove, mGeckoChild, WidgetMouseEvent::eReal); [self convertCocoaMouseEvent:theEvent toGeckoEvent:&geckoEvent]; - geckoEvent.mButton = WidgetMouseEvent::eMiddleButton; + geckoEvent.mButton = MouseButton::eMiddle; // send event into Gecko by going directly to the // the widget. mGeckoChild->DispatchInputEvent(&geckoEvent); } - (void)sendWheelStartOrStop:(EventMessage)msg forEvent:(NSEvent*)theEvent { WidgetWheelEvent wheelEvent(true, msg, mGeckoChild); @@ -4542,17 +4542,17 @@ static gfx::IntPoint GetIntegerDeltaForE // get that event sent first if this is a left mouse click. if ([theEvent type] == NSLeftMouseDown) { [self mouseDown:theEvent]; if (!mGeckoChild) return nil; } WidgetMouseEvent geckoEvent(true, eContextMenu, mGeckoChild, WidgetMouseEvent::eReal); [self convertCocoaMouseEvent:theEvent toGeckoEvent:&geckoEvent]; - geckoEvent.mButton = WidgetMouseEvent::eRightButton; + geckoEvent.mButton = MouseButton::eRight; mGeckoChild->DispatchInputEvent(&geckoEvent); if (!mGeckoChild) return nil; [self maybeInitContextMenuTracking]; // We never return an actual NSMenu* for the context menu. Gecko might have // responded to the eContextMenu event by putting up a fake context menu. return nil; @@ -4586,29 +4586,29 @@ static gfx::IntPoint GetIntegerDeltaForE outGeckoEvent->mRefPoint = [self convertWindowCoordinates:locationInWindow]; WidgetMouseEventBase* mouseEvent = outGeckoEvent->AsMouseEventBase(); mouseEvent->mButtons = 0; NSUInteger mouseButtons = [NSEvent pressedMouseButtons]; if (mouseButtons & 0x01) { - mouseEvent->mButtons |= WidgetMouseEvent::eLeftButtonFlag; + mouseEvent->mButtons |= MouseButtonsFlag::eLeftFlag; } if (mouseButtons & 0x02) { - mouseEvent->mButtons |= WidgetMouseEvent::eRightButtonFlag; + mouseEvent->mButtons |= MouseButtonsFlag::eRightFlag; } if (mouseButtons & 0x04) { - mouseEvent->mButtons |= WidgetMouseEvent::eMiddleButtonFlag; + mouseEvent->mButtons |= MouseButtonsFlag::eMiddleFlag; } if (mouseButtons & 0x08) { - mouseEvent->mButtons |= WidgetMouseEvent::e4thButtonFlag; + mouseEvent->mButtons |= MouseButtonsFlag::e4thFlag; } if (mouseButtons & 0x10) { - mouseEvent->mButtons |= WidgetMouseEvent::e5thButtonFlag; + mouseEvent->mButtons |= MouseButtonsFlag::e5thFlag; } switch ([aMouseEvent type]) { case NSLeftMouseDown: case NSLeftMouseUp: case NSLeftMouseDragged: case NSRightMouseDown: case NSRightMouseUp:
--- a/widget/gtk/nsGtkKeyUtils.cpp +++ b/widget/gtk/nsGtkKeyUtils.cpp @@ -1047,37 +1047,36 @@ void KeymapWrapper::InitInputEvent(Widge break; default: return; } WidgetMouseEventBase& mouseEvent = *aInputEvent.AsMouseEventBase(); mouseEvent.mButtons = 0; if (aModifierState & GDK_BUTTON1_MASK) { - mouseEvent.mButtons |= WidgetMouseEvent::eLeftButtonFlag; + mouseEvent.mButtons |= MouseButtonsFlag::eLeftFlag; } if (aModifierState & GDK_BUTTON3_MASK) { - mouseEvent.mButtons |= WidgetMouseEvent::eRightButtonFlag; + mouseEvent.mButtons |= MouseButtonsFlag::eRightFlag; } if (aModifierState & GDK_BUTTON2_MASK) { - mouseEvent.mButtons |= WidgetMouseEvent::eMiddleButtonFlag; + mouseEvent.mButtons |= MouseButtonsFlag::eMiddleFlag; } if (doLog) { - MOZ_LOG( - gKeymapWrapperLog, LogLevel::Debug, - ("%p InitInputEvent, aInputEvent has mButtons, " - "aInputEvent.mButtons=0x%04X (Left: %s, Right: %s, Middle: %s, " - "4th (BACK): %s, 5th (FORWARD): %s)", - keymapWrapper, mouseEvent.mButtons, - GetBoolName(mouseEvent.mButtons & WidgetMouseEvent::eLeftButtonFlag), - GetBoolName(mouseEvent.mButtons & WidgetMouseEvent::eRightButtonFlag), - GetBoolName(mouseEvent.mButtons & WidgetMouseEvent::eMiddleButtonFlag), - GetBoolName(mouseEvent.mButtons & WidgetMouseEvent::e4thButtonFlag), - GetBoolName(mouseEvent.mButtons & WidgetMouseEvent::e5thButtonFlag))); + MOZ_LOG(gKeymapWrapperLog, LogLevel::Debug, + ("%p InitInputEvent, aInputEvent has mButtons, " + "aInputEvent.mButtons=0x%04X (Left: %s, Right: %s, Middle: %s, " + "4th (BACK): %s, 5th (FORWARD): %s)", + keymapWrapper, mouseEvent.mButtons, + GetBoolName(mouseEvent.mButtons & MouseButtonsFlag::eLeftFlag), + GetBoolName(mouseEvent.mButtons & MouseButtonsFlag::eRightFlag), + GetBoolName(mouseEvent.mButtons & MouseButtonsFlag::eMiddleFlag), + GetBoolName(mouseEvent.mButtons & MouseButtonsFlag::e4thFlag), + GetBoolName(mouseEvent.mButtons & MouseButtonsFlag::e5thFlag))); } } /* static */ uint32_t KeymapWrapper::ComputeDOMKeyCode(const GdkEventKey* aGdkKeyEvent) { // If the keyval indicates it's a modifier key, we should use unshifted // key's modifier keyval. guint keyval = aGdkKeyEvent->keyval;
--- a/widget/gtk/nsWindow.cpp +++ b/widget/gtk/nsWindow.cpp @@ -2453,25 +2453,25 @@ void nsWindow::DispatchMissedButtonRelea // Loop over each button, excluding mouse wheel buttons 4 and 5 for which // GDK ignores releases. for (guint buttonMask = GDK_BUTTON1_MASK; buttonMask <= GDK_BUTTON3_MASK; buttonMask <<= 1) { if (released & buttonMask) { int16_t buttonType; switch (buttonMask) { case GDK_BUTTON1_MASK: - buttonType = WidgetMouseEvent::eLeftButton; + buttonType = MouseButton::eLeft; break; case GDK_BUTTON2_MASK: - buttonType = WidgetMouseEvent::eMiddleButton; + buttonType = MouseButton::eMiddle; break; default: NS_ASSERTION(buttonMask == GDK_BUTTON3_MASK, "Unexpected button mask"); - buttonType = WidgetMouseEvent::eRightButton; + buttonType = MouseButton::eRight; } LOG(("Synthesized button %u release on %p\n", guint(buttonType + 1), (void *)this)); // Dispatch a synthesized button up event to tell Gecko about the // change in state. This event is marked as synthesized so that // it is not dispatched as a DOM event, because we don't know the @@ -2528,18 +2528,17 @@ void nsWindow::InitButtonEvent(WidgetMou } static guint ButtonMaskFromGDKButton(guint button) { return GDK_BUTTON1_MASK << (button - 1); } void nsWindow::DispatchContextMenuEventFromMouseEvent(uint16_t domButton, GdkEventButton *aEvent) { - if (domButton == WidgetMouseEvent::eRightButton && - MOZ_LIKELY(!mIsDestroyed)) { + if (domButton == MouseButton::eRight && MOZ_LIKELY(!mIsDestroyed)) { WidgetMouseEvent contextMenuEvent(true, eContextMenu, this, WidgetMouseEvent::eReal); InitButtonEvent(contextMenuEvent, aEvent); contextMenuEvent.mPressure = mLastMotionPressure; DispatchInputEvent(&contextMenuEvent); } } @@ -2569,23 +2568,23 @@ void nsWindow::OnButtonPressEvent(GdkEve gdouble pressure = 0; gdk_event_get_axis((GdkEvent *)aEvent, GDK_AXIS_PRESSURE, &pressure); mLastMotionPressure = pressure; uint16_t domButton; switch (aEvent->button) { case 1: - domButton = WidgetMouseEvent::eLeftButton; + domButton = MouseButton::eLeft; break; case 2: - domButton = WidgetMouseEvent::eMiddleButton; + domButton = MouseButton::eMiddle; break; case 3: - domButton = WidgetMouseEvent::eRightButton; + domButton = MouseButton::eRight; break; // These are mapped to horizontal scroll case 6: case 7: NS_WARNING("We're not supporting legacy horizontal scroll event"); return; // Map buttons 8-9 to back/forward case 8: @@ -2605,17 +2604,17 @@ void nsWindow::OnButtonPressEvent(GdkEve InitButtonEvent(event, aEvent); event.mPressure = mLastMotionPressure; nsEventStatus eventStatus = DispatchInputEvent(&event); LayoutDeviceIntPoint refPoint = GdkEventCoordsToDevicePixels(aEvent->x, aEvent->y); if (mDraggableRegion.Contains(refPoint.x, refPoint.y) && - domButton == WidgetMouseEvent::eLeftButton && + domButton == MouseButton::eLeft && eventStatus != nsEventStatus_eConsumeNoDefault) { mWindowShouldStartDragging = true; } // right menu click on linux should also pop up a context menu if (!nsBaseWidget::ShowContextMenuAfterMouseUp()) { DispatchContextMenuEventFromMouseEvent(domButton, aEvent); } @@ -2626,23 +2625,23 @@ void nsWindow::OnButtonReleaseEvent(GdkE if (mWindowShouldStartDragging) { mWindowShouldStartDragging = false; } uint16_t domButton; switch (aEvent->button) { case 1: - domButton = WidgetMouseEvent::eLeftButton; + domButton = MouseButton::eLeft; break; case 2: - domButton = WidgetMouseEvent::eMiddleButton; + domButton = MouseButton::eMiddle; break; case 3: - domButton = WidgetMouseEvent::eRightButton; + domButton = MouseButton::eRight; break; default: return; } gButtonState &= ~ButtonMaskFromGDKButton(aEvent->button); WidgetMouseEvent event(true, eMouseUp, this, WidgetMouseEvent::eReal); @@ -2657,18 +2656,18 @@ void nsWindow::OnButtonReleaseEvent(GdkE LayoutDeviceIntPoint pos = event.mRefPoint; nsEventStatus eventStatus = DispatchInputEvent(&event); bool defaultPrevented = (eventStatus == nsEventStatus_eConsumeNoDefault); // Check if mouse position in titlebar and doubleclick happened to // trigger restore/maximize. if (!defaultPrevented && mDrawInTitlebar && - event.mButton == WidgetMouseEvent::eLeftButton && - event.mClickCount == 2 && mDraggableRegion.Contains(pos.x, pos.y)) { + event.mButton == MouseButton::eLeft && event.mClickCount == 2 && + mDraggableRegion.Contains(pos.x, pos.y)) { if (mSizeState == nsSizeMode_Maximized) { SetSizeMode(nsSizeMode_Normal); } else { SetSizeMode(nsSizeMode_Maximized); } } mLastMotionPressure = pressure; @@ -5934,17 +5933,17 @@ already_AddRefed<DrawTarget> nsWindow::S void nsWindow::EndRemoteDrawingInRegion(DrawTarget *aDrawTarget, LayoutDeviceIntRegion &aInvalidRegion) { mSurfaceProvider.EndRemoteDrawingInRegion(aDrawTarget, aInvalidRegion); } // Code shared begin BeginMoveDrag and BeginResizeDrag bool nsWindow::GetDragInfo(WidgetMouseEvent *aMouseEvent, GdkWindow **aWindow, gint *aButton, gint *aRootX, gint *aRootY) { - if (aMouseEvent->mButton != WidgetMouseEvent::eLeftButton) { + if (aMouseEvent->mButton != MouseButton::eLeft) { // we can only begin a move drag with the left mouse button return false; } *aButton = 1; // get the gdk window for this widget GdkWindow *gdk_window = mGdkWindow; if (!gdk_window) {
--- a/widget/headless/HeadlessWidget.cpp +++ b/widget/headless/HeadlessWidget.cpp @@ -434,17 +434,17 @@ nsresult HeadlessWidget::SynthesizeNativ break; default: MOZ_ASSERT_UNREACHABLE("Unsupported synthesized mouse event"); return NS_ERROR_UNEXPECTED; } WidgetMouseEvent event(true, msg, this, WidgetMouseEvent::eReal); event.mRefPoint = aPoint - WidgetToScreenOffset(); if (msg == eMouseDown || msg == eMouseUp) { - event.mButton = WidgetMouseEvent::eLeftButton; + event.mButton = MouseButton::eLeft; } if (msg == eMouseDown) { event.mClickCount = 1; } event.AssignEventTime(WidgetEventTime()); DispatchInputEvent(&event); return NS_OK; }
--- a/widget/uikit/nsWindow.mm +++ b/widget/uikit/nsWindow.mm @@ -130,17 +130,17 @@ class nsAutoRetainUIKitObject { - (void)sendMouseEvent:(EventMessage)aType point:(LayoutDeviceIntPoint)aPoint widget:(nsWindow*)aWindow { WidgetMouseEvent event(true, aType, aWindow, WidgetMouseEvent::eReal, WidgetMouseEvent::eNormal); event.mRefPoint = aPoint; event.mClickCount = 1; - event.button = WidgetMouseEvent::eLeftButton; + event.button = MouseButton::eLeft; event.mTime = PR_IntervalNow(); event.inputSource = MouseEvent_Binding::MOZ_SOURCE_UNKNOWN; nsEventStatus status; aWindow->DispatchEvent(&event, status); } - (void)handleTap:(UITapGestureRecognizer*)sender {
--- a/widget/windows/IMMHandler.cpp +++ b/widget/windows/IMMHandler.cpp @@ -2466,23 +2466,23 @@ nsresult IMMHandler::OnMouseButtonEvent( compositionStart + gIMMHandler->mCompositionString.Length(); if (aIMENotification.mMouseButtonEventData.mOffset < compositionStart || aIMENotification.mMouseButtonEventData.mOffset >= compositionEnd) { return NS_OK; } BYTE button; switch (aIMENotification.mMouseButtonEventData.mButton) { - case WidgetMouseEventBase::eLeftButton: + case MouseButton::eLeft: button = IMEMOUSE_LDOWN; break; - case WidgetMouseEventBase::eMiddleButton: + case MouseButton::eMiddle: button = IMEMOUSE_MDOWN; break; - case WidgetMouseEventBase::eRightButton: + case MouseButton::eRight: button = IMEMOUSE_RDOWN; break; default: return NS_OK; } // calcurate positioning and offset // char : JCH1|JCH2|JCH3
--- a/widget/windows/KeyboardLayout.cpp +++ b/widget/windows/KeyboardLayout.cpp @@ -913,29 +913,29 @@ void ModifierKeyState::InitMouseEvent(Wi aMouseEvent.mClass == eWheelEventClass || aMouseEvent.mClass == eDragEventClass || aMouseEvent.mClass == eSimpleGestureEventClass, "called with non-mouse event"); WidgetMouseEventBase& mouseEvent = *aMouseEvent.AsMouseEventBase(); mouseEvent.mButtons = 0; if (::GetKeyState(VK_LBUTTON) < 0) { - mouseEvent.mButtons |= WidgetMouseEvent::eLeftButtonFlag; + mouseEvent.mButtons |= MouseButtonsFlag::eLeftFlag; } if (::GetKeyState(VK_RBUTTON) < 0) { - mouseEvent.mButtons |= WidgetMouseEvent::eRightButtonFlag; + mouseEvent.mButtons |= MouseButtonsFlag::eRightFlag; } if (::GetKeyState(VK_MBUTTON) < 0) { - mouseEvent.mButtons |= WidgetMouseEvent::eMiddleButtonFlag; + mouseEvent.mButtons |= MouseButtonsFlag::eMiddleFlag; } if (::GetKeyState(VK_XBUTTON1) < 0) { - mouseEvent.mButtons |= WidgetMouseEvent::e4thButtonFlag; + mouseEvent.mButtons |= MouseButtonsFlag::e4thFlag; } if (::GetKeyState(VK_XBUTTON2) < 0) { - mouseEvent.mButtons |= WidgetMouseEvent::e5thButtonFlag; + mouseEvent.mButtons |= MouseButtonsFlag::e5thFlag; } } bool ModifierKeyState::IsShift() const { return (mModifiers & MODIFIER_SHIFT) != 0; } bool ModifierKeyState::IsControl() const {
--- a/widget/windows/TSFTextStore.cpp +++ b/widget/windows/TSFTextStore.cpp @@ -526,53 +526,53 @@ static nsCString GetDisplayAttrStr(const str += GetColorName(aDispAttr.crLine); str += " }, bAttr: "; str += GetClauseAttrName(aDispAttr.bAttr); return str; } static const char* GetMouseButtonName(int16_t aButton) { switch (aButton) { - case WidgetMouseEventBase::eLeftButton: + case MouseButton::eLeft: return "LeftButton"; - case WidgetMouseEventBase::eMiddleButton: + case MouseButton::eMiddle: return "MiddleButton"; - case WidgetMouseEventBase::eRightButton: + case MouseButton::eRight: return "RightButton"; default: return "UnknownButton"; } } #define ADD_SEPARATOR_IF_NECESSARY(aStr) \ if (!aStr.IsEmpty()) { \ aStr.AppendLiteral(", "); \ } static nsCString GetMouseButtonsName(int16_t aButtons) { if (!aButtons) { return NS_LITERAL_CSTRING("no buttons"); } nsCString names; - if (aButtons & WidgetMouseEventBase::eLeftButtonFlag) { + if (aButtons & MouseButtonsFlag::eLeftFlag) { names = "LeftButton"; } - if (aButtons & WidgetMouseEventBase::eRightButtonFlag) { + if (aButtons & MouseButtonsFlag::eRightFlag) { ADD_SEPARATOR_IF_NECESSARY(names); names += "RightButton"; } - if (aButtons & WidgetMouseEventBase::eMiddleButtonFlag) { + if (aButtons & MouseButtonsFlag::eMiddleFlag) { ADD_SEPARATOR_IF_NECESSARY(names); names += "MiddleButton"; } - if (aButtons & WidgetMouseEventBase::e4thButtonFlag) { + if (aButtons & MouseButtonsFlag::e4thFlag) { ADD_SEPARATOR_IF_NECESSARY(names); names += "4thButton"; } - if (aButtons & WidgetMouseEventBase::e5thButtonFlag) { + if (aButtons & MouseButtonsFlag::e5thFlag) { ADD_SEPARATOR_IF_NECESSARY(names); names += "5thButton"; } return names; } static nsCString GetModifiersName(Modifiers aModifiers) { if (aModifiers == MODIFIER_NONE) { @@ -6435,23 +6435,23 @@ nsresult TSFTextStore::OnMouseButtonEven quadrant = (quadrant + 2) % 4; } ULONG edge = quadrant < 2 ? offset + 1 : offset; DWORD buttonStatus = 0; bool isMouseUp = aIMENotification.mMouseButtonEventData.mEventMessage == eMouseUp; if (!isMouseUp) { switch (aIMENotification.mMouseButtonEventData.mButton) { - case WidgetMouseEventBase::eLeftButton: + case MouseButton::eLeft: buttonStatus = MK_LBUTTON; break; - case WidgetMouseEventBase::eMiddleButton: + case MouseButton::eMiddle: buttonStatus = MK_MBUTTON; break; - case WidgetMouseEventBase::eRightButton: + case MouseButton::eRight: buttonStatus = MK_RBUTTON; break; } } if (aIMENotification.mMouseButtonEventData.mModifiers & MODIFIER_CONTROL) { buttonStatus |= MK_CONTROL; } if (aIMENotification.mMouseButtonEventData.mModifiers & MODIFIER_SHIFT) {
--- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -1921,17 +1921,17 @@ nsresult nsWindow::BeginResizeDrag(Widge int32_t aVertical) { NS_ENSURE_ARG_POINTER(aEvent); if (aEvent->mClass != eMouseEventClass) { // you can only begin a resize drag with a mouse event return NS_ERROR_INVALID_ARG; } - if (aEvent->AsMouseEvent()->mButton != WidgetMouseEvent::eLeftButton) { + if (aEvent->AsMouseEvent()->mButton != MouseButton::eLeft) { // you can only begin a resize drag with the left mouse button return NS_ERROR_INVALID_ARG; } // work out what sizemode we're talking about WPARAM syscommand; if (aVertical < 0) { if (aHorizontal < 0) { @@ -4264,23 +4264,23 @@ bool nsWindow::DispatchMouseEvent(EventM bool insideMovementThreshold = (DeprecatedAbs(sLastMousePoint.x - eventPoint.x) < (short)::GetSystemMetrics(SM_CXDOUBLECLK)) && (DeprecatedAbs(sLastMousePoint.y - eventPoint.y) < (short)::GetSystemMetrics(SM_CYDOUBLECLK)); BYTE eventButton; switch (aButton) { - case WidgetMouseEvent::eLeftButton: + case MouseButton::eLeft: eventButton = VK_LBUTTON; break; - case WidgetMouseEvent::eMiddleButton: + case MouseButton::eMiddle: eventButton = VK_MBUTTON; break; - case WidgetMouseEvent::eRightButton: + case MouseButton::eRight: eventButton = VK_RBUTTON; break; default: eventButton = 0; break; } // Doubleclicks are used to set the click count, then changed to mousedowns @@ -4331,53 +4331,53 @@ bool nsWindow::DispatchMouseEvent(EventM ("Msg Time: %d Click Count: %d\n", curMsgTime, event.mClickCount)); #endif NPEvent pluginEvent; switch (aEventMessage) { case eMouseDown: switch (aButton) { - case WidgetMouseEvent::eLeftButton: + case MouseButton::eLeft: pluginEvent.event = WM_LBUTTONDOWN; break; - case WidgetMouseEvent::eMiddleButton: + case MouseButton::eMiddle: pluginEvent.event = WM_MBUTTONDOWN; break; - case WidgetMouseEvent::eRightButton: + case MouseButton::eRight: pluginEvent.event = WM_RBUTTONDOWN; break; default: break; } break; case eMouseUp: switch (aButton) { - case WidgetMouseEvent::eLeftButton: + case MouseButton::eLeft: pluginEvent.event = WM_LBUTTONUP; break; - case WidgetMouseEvent::eMiddleButton: + case MouseButton::eMiddle: pluginEvent.event = WM_MBUTTONUP; break; - case WidgetMouseEvent::eRightButton: + case MouseButton::eRight: pluginEvent.event = WM_RBUTTONUP; break; default: break; } break; case eMouseDoubleClick: switch (aButton) { - case WidgetMouseEvent::eLeftButton: + case MouseButton::eLeft: pluginEvent.event = WM_LBUTTONDBLCLK; break; - case WidgetMouseEvent::eMiddleButton: + case MouseButton::eMiddle: pluginEvent.event = WM_MBUTTONDBLCLK; break; - case WidgetMouseEvent::eRightButton: + case MouseButton::eRight: pluginEvent.event = WM_RBUTTONDBLCLK; break; default: break; } break; case eMouseMove: pluginEvent.event = WM_MOUSEMOVE; @@ -4400,26 +4400,26 @@ bool nsWindow::DispatchMouseEvent(EventM if (aEventMessage == eMouseMove) { LayoutDeviceIntRect rect = GetBounds(); rect.MoveTo(0, 0); if (rect.Contains(event.mRefPoint)) { if (sCurrentWindow == nullptr || sCurrentWindow != this) { if ((nullptr != sCurrentWindow) && (!sCurrentWindow->mInDtor)) { LPARAM pos = sCurrentWindow->lParamToClient(lParamToScreen(lParam)); - sCurrentWindow->DispatchMouseEvent( - eMouseExitFromWidget, wParam, pos, false, - WidgetMouseEvent::eLeftButton, aInputSource, aPointerInfo); + sCurrentWindow->DispatchMouseEvent(eMouseExitFromWidget, wParam, + pos, false, MouseButton::eLeft, + aInputSource, aPointerInfo); } sCurrentWindow = this; if (!mInDtor) { LPARAM pos = sCurrentWindow->lParamToClient(lParamToScreen(lParam)); - sCurrentWindow->DispatchMouseEvent( - eMouseEnterIntoWidget, wParam, pos, false, - WidgetMouseEvent::eLeftButton, aInputSource, aPointerInfo); + sCurrentWindow->DispatchMouseEvent(eMouseEnterIntoWidget, wParam, + pos, false, MouseButton::eLeft, + aInputSource, aPointerInfo); } } } } else if (aEventMessage == eMouseExitFromWidget) { if (sCurrentWindow == this) { sCurrentWindow = nullptr; } } @@ -5331,20 +5331,20 @@ bool nsWindow::ProcessMessage(UINT msg, POINT mp; mp.x = GET_X_LPARAM(lParamScreen); mp.y = GET_Y_LPARAM(lParamScreen); bool userMovedMouse = false; if ((sLastMouseMovePoint.x != mp.x) || (sLastMouseMovePoint.y != mp.y)) { userMovedMouse = true; } - result = DispatchMouseEvent( - eMouseMove, wParam, lParam, false, WidgetMouseEvent::eLeftButton, - MOUSE_INPUT_SOURCE(), - mPointerEvents.GetCachedPointerInfo(msg, wParam)); + result = + DispatchMouseEvent(eMouseMove, wParam, lParam, false, + MouseButton::eLeft, MOUSE_INPUT_SOURCE(), + mPointerEvents.GetCachedPointerInfo(msg, wParam)); if (userMovedMouse) { DispatchPendingEvents(); } } break; case WM_NCMOUSEMOVE: { LPARAM lParamClient = lParamToClient(lParam); if (WithinDraggableRegion(GET_X_LPARAM(lParamClient), @@ -5355,28 +5355,28 @@ bool nsWindow::ProcessMessage(UINT msg, } else if (mMousePresent && !sIsInMouseCapture) { // If we receive a mouse move event on non-client chrome, make sure and // send an eMouseExitFromWidget event as well. SendMessage(mWnd, WM_MOUSELEAVE, 0, 0); } } break; case WM_LBUTTONDOWN: { - result = DispatchMouseEvent( - eMouseDown, wParam, lParam, false, WidgetMouseEvent::eLeftButton, - MOUSE_INPUT_SOURCE(), - mPointerEvents.GetCachedPointerInfo(msg, wParam)); + result = + DispatchMouseEvent(eMouseDown, wParam, lParam, false, + MouseButton::eLeft, MOUSE_INPUT_SOURCE(), + mPointerEvents.GetCachedPointerInfo(msg, wParam)); DispatchPendingEvents(); } break; case WM_LBUTTONUP: { - result = DispatchMouseEvent( - eMouseUp, wParam, lParam, false, WidgetMouseEvent::eLeftButton, - MOUSE_INPUT_SOURCE(), - mPointerEvents.GetCachedPointerInfo(msg, wParam)); + result = + DispatchMouseEvent(eMouseUp, wParam, lParam, false, + MouseButton::eLeft, MOUSE_INPUT_SOURCE(), + mPointerEvents.GetCachedPointerInfo(msg, wParam)); DispatchPendingEvents(); } break; case WM_MOUSELEAVE: { if (!mMousePresent) break; if (mMouseInDraggableArea) break; mMousePresent = false; @@ -5392,28 +5392,28 @@ bool nsWindow::ProcessMessage(UINT msg, // wParam. WPARAM mouseState = (GetKeyState(VK_LBUTTON) ? MK_LBUTTON : 0) | (GetKeyState(VK_MBUTTON) ? MK_MBUTTON : 0) | (GetKeyState(VK_RBUTTON) ? MK_RBUTTON : 0); // Synthesize an event position because we don't get one from // WM_MOUSELEAVE. LPARAM pos = lParamToClient(::GetMessagePos()); DispatchMouseEvent(eMouseExitFromWidget, mouseState, pos, false, - WidgetMouseEvent::eLeftButton, MOUSE_INPUT_SOURCE()); + MouseButton::eLeft, MOUSE_INPUT_SOURCE()); } break; case MOZ_WM_PEN_LEAVES_HOVER_OF_DIGITIZER: { LPARAM pos = lParamToClient(::GetMessagePos()); MOZ_ASSERT(InkCollector::sInkCollector); uint16_t pointerId = InkCollector::sInkCollector->GetPointerId(); if (pointerId != 0) { WinPointerInfo pointerInfo; pointerInfo.pointerId = pointerId; DispatchMouseEvent(eMouseExitFromWidget, wParam, pos, false, - WidgetMouseEvent::eLeftButton, + MouseButton::eLeft, MouseEvent_Binding::MOZ_SOURCE_PEN, &pointerInfo); InkCollector::sInkCollector->ClearTarget(); InkCollector::sInkCollector->ClearPointerId(); } } break; case WM_CONTEXTMENU: { // If the context menu is brought up by a touch long-press, then @@ -5432,21 +5432,20 @@ bool nsWindow::ProcessMessage(UINT msg, bool contextMenukey = false; if (lParam == -1) { contextMenukey = true; pos = lParamToClient(GetMessagePos()); } else { pos = lParamToClient(lParam); } - result = - DispatchMouseEvent(eContextMenu, wParam, pos, contextMenukey, - contextMenukey ? WidgetMouseEvent::eLeftButton - : WidgetMouseEvent::eRightButton, - MOUSE_INPUT_SOURCE()); + result = DispatchMouseEvent( + eContextMenu, wParam, pos, contextMenukey, + contextMenukey ? MouseButton::eLeft : MouseButton::eRight, + MOUSE_INPUT_SOURCE()); if (lParam != -1 && !result && mCustomNonClient && mDraggableRegion.Contains(GET_X_LPARAM(pos), GET_Y_LPARAM(pos))) { // Blank area hit, throw up the system menu. DisplaySystemMenu(mWnd, mSizeMode, mIsRTL, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); result = true; } } break; @@ -5458,104 +5457,95 @@ bool nsWindow::ProcessMessage(UINT msg, result = OnPointerEvents(msg, wParam, lParam); if (result) { DispatchPendingEvents(); } break; case WM_LBUTTONDBLCLK: result = DispatchMouseEvent(eMouseDoubleClick, wParam, lParam, false, - WidgetMouseEvent::eLeftButton, - MOUSE_INPUT_SOURCE()); + MouseButton::eLeft, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_MBUTTONDOWN: result = DispatchMouseEvent(eMouseDown, wParam, lParam, false, - WidgetMouseEvent::eMiddleButton, - MOUSE_INPUT_SOURCE()); + MouseButton::eMiddle, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_MBUTTONUP: result = DispatchMouseEvent(eMouseUp, wParam, lParam, false, - WidgetMouseEvent::eMiddleButton, - MOUSE_INPUT_SOURCE()); + MouseButton::eMiddle, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_MBUTTONDBLCLK: result = DispatchMouseEvent(eMouseDoubleClick, wParam, lParam, false, - WidgetMouseEvent::eMiddleButton, - MOUSE_INPUT_SOURCE()); + MouseButton::eMiddle, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_NCMBUTTONDOWN: result = DispatchMouseEvent(eMouseDown, 0, lParamToClient(lParam), false, - WidgetMouseEvent::eMiddleButton, - MOUSE_INPUT_SOURCE()); + MouseButton::eMiddle, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_NCMBUTTONUP: result = DispatchMouseEvent(eMouseUp, 0, lParamToClient(lParam), false, - WidgetMouseEvent::eMiddleButton, - MOUSE_INPUT_SOURCE()); + MouseButton::eMiddle, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_NCMBUTTONDBLCLK: - result = DispatchMouseEvent(eMouseDoubleClick, 0, lParamToClient(lParam), - false, WidgetMouseEvent::eMiddleButton, - MOUSE_INPUT_SOURCE()); + result = + DispatchMouseEvent(eMouseDoubleClick, 0, lParamToClient(lParam), + false, MouseButton::eMiddle, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_RBUTTONDOWN: - result = DispatchMouseEvent( - eMouseDown, wParam, lParam, false, WidgetMouseEvent::eRightButton, - MOUSE_INPUT_SOURCE(), - mPointerEvents.GetCachedPointerInfo(msg, wParam)); + result = + DispatchMouseEvent(eMouseDown, wParam, lParam, false, + MouseButton::eRight, MOUSE_INPUT_SOURCE(), + mPointerEvents.GetCachedPointerInfo(msg, wParam)); DispatchPendingEvents(); break; case WM_RBUTTONUP: - result = DispatchMouseEvent( - eMouseUp, wParam, lParam, false, WidgetMouseEvent::eRightButton, - MOUSE_INPUT_SOURCE(), - mPointerEvents.GetCachedPointerInfo(msg, wParam)); + result = + DispatchMouseEvent(eMouseUp, wParam, lParam, false, + MouseButton::eRight, MOUSE_INPUT_SOURCE(), + mPointerEvents.GetCachedPointerInfo(msg, wParam)); DispatchPendingEvents(); break; case WM_RBUTTONDBLCLK: result = DispatchMouseEvent(eMouseDoubleClick, wParam, lParam, false, - WidgetMouseEvent::eRightButton, - MOUSE_INPUT_SOURCE()); + MouseButton::eRight, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_NCRBUTTONDOWN: result = DispatchMouseEvent(eMouseDown, 0, lParamToClient(lParam), false, - WidgetMouseEvent::eRightButton, - MOUSE_INPUT_SOURCE()); + MouseButton::eRight, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_NCRBUTTONUP: result = DispatchMouseEvent(eMouseUp, 0, lParamToClient(lParam), false, - WidgetMouseEvent::eRightButton, - MOUSE_INPUT_SOURCE()); + MouseButton::eRight, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_NCRBUTTONDBLCLK: - result = DispatchMouseEvent(eMouseDoubleClick, 0, lParamToClient(lParam), - false, WidgetMouseEvent::eRightButton, - MOUSE_INPUT_SOURCE()); + result = + DispatchMouseEvent(eMouseDoubleClick, 0, lParamToClient(lParam), + false, MouseButton::eRight, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; // Windows doesn't provide to customize the behavior of 4th nor 5th button // of mouse. If 5-button mouse works with standard mouse deriver of // Windows, users cannot disable 4th button (browser back) nor 5th button // (browser forward). We should allow to do it with our prefs since we can // prevent Windows to generate WM_APPCOMMAND message if WM_XBUTTONUP @@ -5676,20 +5666,19 @@ bool nsWindow::ProcessMessage(UINT msg, if (mWidgetListener) { mWidgetListener->UIResolutionChanged(); } break; } case WM_NCLBUTTONDBLCLK: DispatchMouseEvent(eMouseDoubleClick, 0, lParamToClient(lParam), false, - WidgetMouseEvent::eLeftButton, MOUSE_INPUT_SOURCE()); + MouseButton::eLeft, MOUSE_INPUT_SOURCE()); result = DispatchMouseEvent(eMouseUp, 0, lParamToClient(lParam), false, - WidgetMouseEvent::eLeftButton, - MOUSE_INPUT_SOURCE()); + MouseButton::eLeft, MOUSE_INPUT_SOURCE()); DispatchPendingEvents(); break; case WM_APPCOMMAND: { MSG nativeMsg = WinUtils::InitMSG(msg, wParam, lParam, mWnd); result = HandleAppCommandMsg(nativeMsg, aRetValue); break; } @@ -8101,40 +8090,37 @@ bool nsWindow::OnPointerEvents(UINT msg, // sLastClickCount. To prevent that, we keep the last pen down position // and compare it with the subsequent WM_POINTERUPDATE. If the movement is // smaller than GetSystemMetrics(SM_CXDRAG), then we suppress firing // eMouseMove for WM_POINTERUPDATE. static POINT sLastPointerDownPoint = {0}; // We don't support chorded buttons for pen. Keep the button at // WM_POINTERDOWN. - static WidgetMouseEvent::buttonType sLastPenDownButton = - WidgetMouseEvent::eLeftButton; + static mozilla::MouseButton sLastPenDownButton = MouseButton::eLeft; static bool sPointerDown = false; EventMessage message; - WidgetMouseEvent::buttonType button = WidgetMouseEvent::eLeftButton; + mozilla::MouseButton button = MouseButton::eLeft; switch (msg) { case WM_POINTERDOWN: { LayoutDeviceIntPoint eventPoint(GET_X_LPARAM(aLParam), GET_Y_LPARAM(aLParam)); sLastPointerDownPoint.x = eventPoint.x; sLastPointerDownPoint.y = eventPoint.y; message = eMouseDown; - button = IS_POINTER_SECONDBUTTON_WPARAM(aWParam) - ? WidgetMouseEvent::eRightButton - : WidgetMouseEvent::eLeftButton; + button = IS_POINTER_SECONDBUTTON_WPARAM(aWParam) ? MouseButton::eRight + : MouseButton::eLeft; sLastPenDownButton = button; sPointerDown = true; } break; case WM_POINTERUP: message = eMouseUp; MOZ_ASSERT(sPointerDown, "receive WM_POINTERUP w/o WM_POINTERDOWN"); - button = - sPointerDown ? sLastPenDownButton : WidgetMouseEvent::eLeftButton; + button = sPointerDown ? sLastPenDownButton : MouseButton::eLeft; sPointerDown = false; break; case WM_POINTERUPDATE: message = eMouseMove; if (sPointerDown) { LayoutDeviceIntPoint eventPoint(GET_X_LPARAM(aLParam), GET_Y_LPARAM(aLParam)); int32_t movementX = sLastPointerDownPoint.x > eventPoint.x @@ -8163,20 +8149,20 @@ bool nsWindow::OnPointerEvents(UINT msg, } uint32_t pointerId = mPointerEvents.GetPointerId(aWParam); POINTER_PEN_INFO penInfo; mPointerEvents.GetPointerPenInfo(pointerId, &penInfo); // Windows defines the pen pressure is normalized to a range between 0 and // 1024. Convert it to float. float pressure = penInfo.pressure ? (float)penInfo.pressure / 1024 : 0; - int16_t buttons = sPointerDown ? button == WidgetMouseEvent::eLeftButton - ? WidgetMouseEvent::eLeftButtonFlag - : WidgetMouseEvent::eRightButtonFlag - : WidgetMouseEvent::eNoButtonFlag; + int16_t buttons = sPointerDown ? button == MouseButton::eLeft + ? MouseButtonsFlag::eLeftFlag + : MouseButtonsFlag::eRightFlag + : MouseButtonsFlag::eNoButtons; WinPointerInfo pointerInfo(pointerId, penInfo.tiltX, penInfo.tiltY, pressure, buttons); // The aLParam of WM_POINTER* is the screen location. Convert it to client // location LPARAM newLParam = lParamToClient(aLParam); DispatchMouseEvent(message, aWParam, newLParam, false, button, MouseEvent_Binding::MOZ_SOURCE_PEN, &pointerInfo);
--- a/widget/windows/nsWindow.h +++ b/widget/windows/nsWindow.h @@ -233,17 +233,17 @@ class nsWindow final : public nsWindowBa virtual void SetWindowClass(const nsAString& xulWinType) override; /** * Event helpers */ virtual bool DispatchMouseEvent( mozilla::EventMessage aEventMessage, WPARAM wParam, LPARAM lParam, bool aIsContextMenuKey = false, - int16_t aButton = mozilla::WidgetMouseEvent::eLeftButton, + int16_t aButton = mozilla::MouseButton::eLeft, uint16_t aInputSource = mozilla::dom::MouseEvent_Binding::MOZ_SOURCE_MOUSE, WinPointerInfo* aPointerInfo = nullptr); virtual bool DispatchWindowEvent(mozilla::WidgetGUIEvent* aEvent, nsEventStatus& aStatus); void DispatchPendingEvents(); bool DispatchPluginEvent(UINT aMessage, WPARAM aWParam, LPARAM aLParam, bool aDispatchPendingEvents);