Changeset 60959 in webkit


Ignore:
Timestamp:
Jun 10, 2010 8:45:48 AM (14 years ago)
Author:
eric@webkit.org
Message:

2010-06-10 Diego Gonzalez <diegohcg@webkit.org>

Reviewed by Kenneth Rohde Christiansen.

[Qt] DRT EventSender support to graphics mouse events activation
https://bugs.webkit.org/show_bug.cgi?id=40017

  • DumpRenderTree/qt/EventSenderQt.cpp: (EventSender::mouseDown): (EventSender::mouseUp): (EventSender::mouseMoveTo): (EventSender::keyDown): (EventSender::contextClick): (EventSender::sendTouchEvent): (EventSender::sendOrQueueEvent): (EventSender::eventFilter): (EventSender::createGraphicsSceneMouseEvent): (EventSender::sendEvent):
  • DumpRenderTree/qt/EventSenderQt.h: (EventSender::isGraphicsBased):
Location:
trunk/WebKitTools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKitTools/ChangeLog

    r60938 r60959  
     12010-06-10  Diego Gonzalez  <diegohcg@webkit.org>
     2
     3        Reviewed by Kenneth Rohde Christiansen.
     4
     5        [Qt] DRT EventSender support to graphics mouse events activation
     6        https://bugs.webkit.org/show_bug.cgi?id=40017
     7
     8        * DumpRenderTree/qt/EventSenderQt.cpp:
     9        (EventSender::mouseDown):
     10        (EventSender::mouseUp):
     11        (EventSender::mouseMoveTo):
     12        (EventSender::keyDown):
     13        (EventSender::contextClick):
     14        (EventSender::sendTouchEvent):
     15        (EventSender::sendOrQueueEvent):
     16        (EventSender::eventFilter):
     17        (EventSender::createGraphicsSceneMouseEvent):
     18        (EventSender::sendEvent):
     19        * DumpRenderTree/qt/EventSenderQt.h:
     20        (EventSender::isGraphicsBased):
     21
    1222010-06-09  Adam Barth  <abarth@webkit.org>
    223
  • trunk/WebKitTools/DumpRenderTree/qt/EventSenderQt.cpp

    r60415 r60959  
    3030#include "EventSenderQt.h"
    3131
    32 //#include <QtDebug>
    33 
     32#include <QGraphicsSceneMouseEvent>
    3433#include <QtTest/QtTest>
    3534
     
    112111
    113112//     qDebug() << "EventSender::mouseDown" << frame;
    114     QMouseEvent* event;
    115     event = new QMouseEvent((m_clickCount == 2) ? QEvent::MouseButtonDblClick :
     113    QEvent* event;
     114    if (isGraphicsBased()) {
     115        event = createGraphicsSceneMouseEvent((m_clickCount == 2) ?
     116                    QEvent::GraphicsSceneMouseDoubleClick : QEvent::GraphicsSceneMousePress,
     117                    m_mousePos, m_mousePos, mouseButton, m_mouseButtons, Qt::NoModifier);
     118    } else {
     119        event = new QMouseEvent((m_clickCount == 2) ? QEvent::MouseButtonDblClick :
    116120                    QEvent::MouseButtonPress, m_mousePos, m_mousePos,
    117121                    mouseButton, m_mouseButtons, Qt::NoModifier);
     122    }
    118123
    119124    sendOrQueueEvent(event);
     
    147152
    148153//     qDebug() << "EventSender::mouseUp" << frame;
    149     QMouseEvent* event = new QMouseEvent(QEvent::MouseButtonRelease, m_mousePos, m_mousePos, mouseButton, m_mouseButtons, Qt::NoModifier);
     154    QEvent* event;
     155    if (isGraphicsBased()) {
     156        event = createGraphicsSceneMouseEvent(QEvent::GraphicsSceneMouseRelease,
     157                    m_mousePos, m_mousePos, mouseButton, m_mouseButtons, Qt::NoModifier);
     158    } else {
     159        event = new QMouseEvent(QEvent::MouseButtonRelease,
     160                    m_mousePos, m_mousePos, mouseButton, m_mouseButtons, Qt::NoModifier);
     161    }
     162
    150163    sendOrQueueEvent(event);
    151164}
     
    155168//     qDebug() << "EventSender::mouseMoveTo" << x << y;
    156169    m_mousePos = QPoint(x, y);
    157     QMouseEvent* event = new QMouseEvent(QEvent::MouseMove, m_mousePos, m_mousePos, Qt::NoButton, m_mouseButtons, Qt::NoModifier);
     170
     171    QEvent* event;
     172    if (isGraphicsBased()) {
     173        event = createGraphicsSceneMouseEvent(QEvent::GraphicsSceneMouseMove,
     174                    m_mousePos, m_mousePos, Qt::NoButton, m_mouseButtons, Qt::NoModifier);
     175    } else {
     176        event = new QMouseEvent(QEvent::MouseMove,
     177                    m_mousePos, m_mousePos, Qt::NoButton, m_mouseButtons, Qt::NoModifier);
     178    }
     179
    158180    sendOrQueueEvent(event);
    159181}
     
    307329    }
    308330    QKeyEvent event(QEvent::KeyPress, code, modifs, s);
    309     QApplication::sendEvent(m_page, &event);
     331    sendEvent(m_page, &event);
    310332    QKeyEvent event2(QEvent::KeyRelease, code, modifs, s);
    311     QApplication::sendEvent(m_page, &event2);
     333    sendEvent(m_page, &event2);
    312334}
    313335
     
    315337{
    316338    QMouseEvent event(QEvent::MouseButtonPress, m_mousePos, Qt::RightButton, Qt::RightButton, Qt::NoModifier);
    317     QApplication::sendEvent(m_page, &event);
     339    sendEvent(m_page, &event);
    318340    QMouseEvent event2(QEvent::MouseButtonRelease, m_mousePos, Qt::RightButton, Qt::RightButton, Qt::NoModifier);
    319     QApplication::sendEvent(m_page, &event2);
     341    sendEvent(m_page, &event2);
    320342    QContextMenuEvent event3(QContextMenuEvent::Mouse, m_mousePos);
    321     QApplication::sendEvent(m_page->view(), &event3);
     343    sendEvent(m_page->view(), &event3);
    322344}
    323345
     
    432454    QTouchEvent event(type, QTouchEvent::TouchScreen, m_touchModifiers);
    433455    event.setTouchPoints(m_touchPoints);
    434     QApplication::sendEvent(m_page, &event);
     456    sendEvent(m_page, &event);
    435457    QList<QTouchEvent::TouchPoint>::Iterator it = m_touchPoints.begin();
    436458    while (it != m_touchPoints.end()) {
     
    494516    // To be safe and avoid a deadlock, this event is queued.
    495517    if (endOfQueue == startOfQueue && !eventQueue[endOfQueue].m_delay && (!(m_mouseButtonPressed && (m_eventLoop && event->type() == QEvent::MouseButtonRelease)))) {
    496         QApplication::sendEvent(m_page->view(), event);
     518        sendEvent(m_page->view(), event);
    497519        delete event;
    498520        return;
     
    542564        return true;
    543565    case QEvent::MouseButtonPress:
     566    case QEvent::GraphicsSceneMousePress:
    544567        m_mouseButtonPressed = true;
    545568        break;
    546569    case QEvent::MouseMove:
     570    case QEvent::GraphicsSceneMouseMove:
    547571        if (m_mouseButtonPressed)
    548572            m_drag = true;
    549573        break;
    550574    case QEvent::MouseButtonRelease:
     575    case QEvent::GraphicsSceneMouseRelease:
    551576        m_mouseButtonPressed = false;
    552577        m_drag = false;
     
    563588    m_clickTimer.stop();
    564589}
     590
     591QGraphicsSceneMouseEvent* EventSender::createGraphicsSceneMouseEvent(QEvent::Type type, const QPoint& pos, const QPoint& screenPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers)
     592{
     593    QGraphicsSceneMouseEvent* event;
     594    event = new QGraphicsSceneMouseEvent(type);
     595    event->setPos(pos);
     596    event->setScreenPos(screenPos);
     597    event->setButton(button);
     598    event->setButtons(buttons);
     599    event->setModifiers(modifiers);
     600
     601    return event;
     602}
     603
     604void EventSender::sendEvent(QObject* receiver, QEvent* event)
     605{
     606    if (WebCore::WebViewGraphicsBased* view = qobject_cast<WebCore::WebViewGraphicsBased*>(receiver))
     607        view->scene()->sendEvent(view->graphicsView(), event);
     608    else
     609        QApplication::sendEvent(receiver, event);
     610}
  • trunk/WebKitTools/DumpRenderTree/qt/EventSenderQt.h

    r60415 r60959  
    2929#ifndef EventSenderQt_h
    3030#define EventSenderQt_h
     31
     32
     33#include "DumpRenderTreeQt.h"
    3134
    3235#include <QApplication>
     
    8487
    8588private:
     89    bool isGraphicsBased() const { return qobject_cast<WebCore::WebViewGraphicsBased*>(m_page->view()); }
     90    QGraphicsSceneMouseEvent* createGraphicsSceneMouseEvent(QEvent::Type, const QPoint& pos, const QPoint& screenPos, Qt::MouseButton, Qt::MouseButtons, Qt::KeyboardModifiers);
     91    void sendEvent(QObject* receiver, QEvent* event);
     92
     93private:
    8694    void sendTouchEvent(QEvent::Type);
    8795    void sendOrQueueEvent(QEvent*);
Note: See TracChangeset for help on using the changeset viewer.