+2007-11-07 Simon Hausmann <hausmann@kde.org>
+
+ Reviewed by Lars.
+
+ Changed to PlatformMouseEvent constructor to allow construction from a QContextMenuEvent.
+ Call sendContextMenuEvent on the event handler from a QWidget::contextMenuEvent re-implementation instead of in mousePressEvent.
+
+ WARNING: NO TEST CASES ADDED OR CHANGED
+
+ * platform/PlatformMouseEvent.h:
+ * platform/qt/PlatformMouseEventQt.cpp:
+ (WebCore::PlatformMouseEvent::PlatformMouseEvent):
+
2007-11-07 Lars Knoll <lars@trolltech.com>
Reviewed by Simon.
#endif
#if PLATFORM(QT)
-class QMouseEvent;
+class QInputEvent;
#endif
#if PLATFORM(WX)
PlatformMouseEvent(GdkEventMotion*);
#endif
#if PLATFORM(QT)
- PlatformMouseEvent(QMouseEvent*, int clickCount);
+ PlatformMouseEvent(QInputEvent*, int clickCount);
#endif
#if PLATFORM(WX)
namespace WebCore {
-PlatformMouseEvent::PlatformMouseEvent(QMouseEvent* event, int clickCount)
+PlatformMouseEvent::PlatformMouseEvent(QInputEvent* event, int clickCount)
{
- m_position = IntPoint(event->pos());
- m_globalPosition = IntPoint(event->globalPos());
-
m_timestamp = WebCore::currentTime();
+
+ QMouseEvent *me = 0;
+
switch(event->type()) {
case QEvent::MouseMove:
m_eventType = MouseEventMoved;
+ me = static_cast<QMouseEvent *>(event);
break;
case QEvent::MouseButtonPress:
m_eventType = MouseEventPressed;
+ me = static_cast<QMouseEvent *>(event);
break;
case QEvent::MouseButtonRelease:
m_eventType = MouseEventReleased;
+ me = static_cast<QMouseEvent *>(event);
+ break;
+ case QEvent::ContextMenu: {
+ m_eventType = MouseEventPressed;
+ QContextMenuEvent *ce = static_cast<QContextMenuEvent *>(event);
+ m_position = IntPoint(ce->pos());
+ m_globalPosition = IntPoint(ce->globalPos());
+ m_button = RightButton;
break;
+ }
default:
m_eventType = MouseEventMoved;
}
- if (event->button() == Qt::LeftButton || (event->buttons() & Qt::LeftButton))
- m_button = LeftButton;
- else if (event->button() == Qt::RightButton || (event->buttons() & Qt::RightButton))
- m_button = RightButton;
- else if (event->button() == Qt::MidButton || (event->buttons() & Qt::MidButton))
- m_button = MiddleButton;
- else
- m_button = NoButton;
+ if (me) {
+ m_position = IntPoint(me->pos());
+ m_globalPosition = IntPoint(me->globalPos());
+
+ if (me->button() == Qt::LeftButton || (me->buttons() & Qt::LeftButton))
+ m_button = LeftButton;
+ else if (me->button() == Qt::RightButton || (me->buttons() & Qt::RightButton))
+ m_button = RightButton;
+ else if (me->button() == Qt::MidButton || (me->buttons() & Qt::MidButton))
+ m_button = MiddleButton;
+ else
+ m_button = NoButton;
+ }
m_clickCount = clickCount;
m_shiftKey = (event->modifiers() & Qt::ShiftModifier) != 0;
if (!frame->eventHandler)
return;
- if (ev->button() == Qt::RightButton)
- frame->eventHandler->sendContextMenuEvent(PlatformMouseEvent(ev, 1));
- else
- frame->eventHandler->handleMousePressEvent(PlatformMouseEvent(ev, 1));
+ frame->eventHandler->handleMousePressEvent(PlatformMouseEvent(ev, 1));
//FIXME need to keep track of subframe focus for key events!
frame->page->setFocus();
d->frameUnderMouse = 0;
}
+void QWebPage::contextMenuEvent(QContextMenuEvent *ev)
+{
+ QWebFramePrivate *frame = d->currentFrame(ev->pos())->d;
+ if (frame->eventHandler)
+ frame->eventHandler->sendContextMenuEvent(PlatformMouseEvent(ev, 1));
+}
+
void QWebPage::wheelEvent(QWheelEvent *ev)
{
QWebFramePrivate *frame = d->currentFrame(ev->pos())->d;
virtual void mousePressEvent(QMouseEvent*);
virtual void mouseDoubleClickEvent(QMouseEvent*);
virtual void mouseReleaseEvent(QMouseEvent*);
+ virtual void contextMenuEvent(QContextMenuEvent*);
virtual void wheelEvent(QWheelEvent*);
virtual void keyPressEvent(QKeyEvent*);
virtual void keyReleaseEvent(QKeyEvent*);
+2007-11-07 Simon Hausmann <hausmann@kde.org>
+
+ Reviewed by Lars.
+
+ Changed to PlatformMouseEvent constructor to allow construction from a QContextMenuEvent.
+ Call sendContextMenuEvent on the event handler from a QWidget::contextMenuEvent re-implementation instead of in mousePressEvent.
+
+ * Api/qwebpage.cpp:
+ (QWebPage::mousePressEvent):
+ (QWebPage::contextMenuEvent):
+ * Api/qwebpage.h:
+
2007-11-07 Simon Hausmann <hausmann@kde.org>
Reviewed by Lars.