author | Masayuki Nakano <masayuki@d-toybox.com> |
Tue, 22 Oct 2013 22:27:35 +0900 | |
changeset 165554 | b8263a460d24ca0750c552a2445e0eb81ad6e2cd |
parent 165553 | 574ba6718462c3f417e8b243f3d4f69761b5f808 |
child 165555 | 8f497027e20294fd74cb5f3e862a07ed848eb76b |
push id | 3066 |
push user | akeybl@mozilla.com |
push date | Mon, 09 Dec 2013 19:58:46 +0000 |
treeherder | mozilla-beta@a31a0dce83aa [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | romaxa |
bugs | 602787 |
milestone | 27.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
|
widget/qt/nsWindow.cpp | file | annotate | diff | comparison | revisions | |
widget/qt/nsWindow.h | file | annotate | diff | comparison | revisions |
--- a/widget/qt/nsWindow.cpp +++ b/widget/qt/nsWindow.cpp @@ -2803,16 +2803,24 @@ nsWindow::GetDPI() if (heightInches < 0.25) { // Something's broken, but we'd better not crash. return 96.0f; } return float(rootWindow->height()/heightInches); } +nsEventStatus +nsWindow::DispatchEvent(WidgetGUIEvent* aEvent) +{ + nsEventStatus status; + DispatchEvent(aEvent, status); + return status; +} + void nsWindow::DispatchActivateEvent(void) { if (mWidgetListener) mWidgetListener->WindowActivated(); } void @@ -3165,8 +3173,42 @@ nsWindow::GetGLFrameBufferFormat() { if (mLayerManager && mLayerManager->GetBackendType() == mozilla::layers::LAYERS_OPENGL) { return MozQGLWidgetWrapper::isRGBAContext() ? LOCAL_GL_RGBA : LOCAL_GL_RGB; } return LOCAL_GL_NONE; } +void +nsWindow::ProcessMotionEvent() +{ + if (mPinchEvent.needDispatch) { + double distance = DistanceBetweenPoints(mPinchEvent.centerPoint, + mPinchEvent.touchPoint); + distance *= 2; + mPinchEvent.delta = distance - mPinchEvent.prevDistance; + nsIntPoint centerPoint(mPinchEvent.centerPoint.x(), + mPinchEvent.centerPoint.y()); + DispatchGestureEvent(NS_SIMPLE_GESTURE_MAGNIFY_UPDATE, + 0, mPinchEvent.delta, centerPoint); + mPinchEvent.prevDistance = distance; + } + if (mMoveEvent.needDispatch) { + WidgetMouseEvent event(true, NS_MOUSE_MOVE, this, + WidgetMouseEvent::eReal); + + event.refPoint.x = nscoord(mMoveEvent.pos.x()); + event.refPoint.y = nscoord(mMoveEvent.pos.y()); + + event.InitBasicModifiers(mMoveEvent.modifiers & Qt::ControlModifier, + mMoveEvent.modifiers & Qt::AltModifier, + mMoveEvent.modifiers & Qt::ShiftModifier, + mMoveEvent.modifiers & Qt::MetaModifier); + event.clickCount = 0; + + DispatchEvent(&event); + mMoveEvent.needDispatch = false; + } + + mTimerStarted = false; +} +
--- a/widget/qt/nsWindow.h +++ b/widget/qt/nsWindow.h @@ -11,17 +11,17 @@ #include <QKeyEvent> #include <QGestureEvent> #include <qgraphicswidget.h> #include <QTime> #include "nsAutoPtr.h" #include "nsBaseWidget.h" -#include "mozilla/MouseEvents.h" +#include "mozilla/EventForwards.h" #include "nsWeakReference.h" #include "nsGkAtoms.h" #include "nsIIdleServiceInternal.h" #include "nsIRunnable.h" #include "nsThreadUtils.h" @@ -178,22 +178,17 @@ public: // event handling code void DispatchActivateEvent(void); void DispatchDeactivateEvent(void); void DispatchActivateEventOnTopLevelWindow(void); void DispatchDeactivateEventOnTopLevelWindow(void); void DispatchResizeEvent(nsIntRect &aRect, nsEventStatus &aStatus); - nsEventStatus DispatchEvent(mozilla::WidgetGUIEvent* aEvent) - { - nsEventStatus status; - DispatchEvent(aEvent, status); - return status; - } + nsEventStatus DispatchEvent(mozilla::WidgetGUIEvent* aEvent); // Some of the nsIWidget methods virtual bool IsEnabled() const; // called when we are destroyed void OnDestroy(void); // called to check and see if a widget's dimensions are sane @@ -373,45 +368,17 @@ private: *flag &= ~mask; } int32_t mQCursor; // Call this function when the users activity is the direct cause of an // event (like a keypress or mouse click). void UserActivity(); - inline void ProcessMotionEvent() { - if (mPinchEvent.needDispatch) { - double distance = DistanceBetweenPoints(mPinchEvent.centerPoint, mPinchEvent.touchPoint); - distance *= 2; - mPinchEvent.delta = distance - mPinchEvent.prevDistance; - nsIntPoint centerPoint(mPinchEvent.centerPoint.x(), mPinchEvent.centerPoint.y()); - DispatchGestureEvent(NS_SIMPLE_GESTURE_MAGNIFY_UPDATE, - 0, mPinchEvent.delta, centerPoint); - mPinchEvent.prevDistance = distance; - } - if (mMoveEvent.needDispatch) { - WidgetMouseEvent event(true, NS_MOUSE_MOVE, this, - WidgetMouseEvent::eReal); - - event.refPoint.x = nscoord(mMoveEvent.pos.x()); - event.refPoint.y = nscoord(mMoveEvent.pos.y()); - - event.InitBasicModifiers(mMoveEvent.modifiers & Qt::ControlModifier, - mMoveEvent.modifiers & Qt::AltModifier, - mMoveEvent.modifiers & Qt::ShiftModifier, - mMoveEvent.modifiers & Qt::MetaModifier); - event.clickCount = 0; - - DispatchEvent(&event); - mMoveEvent.needDispatch = false; - } - - mTimerStarted = false; - } + inline void ProcessMotionEvent(); void DispatchMotionToMainThread() { if (!mTimerStarted) { nsCOMPtr<nsIRunnable> event = NS_NewRunnableMethod(this, &nsWindow::ProcessMotionEvent); NS_DispatchToMainThread(event); mTimerStarted = true; }