@@ -195,19 +195,73 @@ void QmlWebViewCmdExecutor::SendKeys(const ElementId& element, const string16& k
195195}
196196
197197void QmlWebViewCmdExecutor::MouseDoubleClick (Error** error) {
198- // TODO:
198+ CHECK_VIEW_EXISTANCE
199+
200+ QPoint point = QCommonUtil::ConvertPointToQPoint (session_->get_mouse_position ());
201+ QPointF scenePoint = view_->mapToScene (point.x (), point.y ());
202+
203+ QGraphicsSceneMouseEvent *dbClckEvent = new QGraphicsSceneMouseEvent (QEvent::GraphicsSceneMouseDoubleClick);
204+ dbClckEvent->setScenePos (scenePoint);
205+ dbClckEvent->setButton (Qt::LeftButton);
206+ dbClckEvent->setButtons (Qt::LeftButton);
207+
208+ QGraphicsSceneMouseEvent *releaseEvent = new QGraphicsSceneMouseEvent (QEvent::GraphicsSceneMouseRelease);
209+ releaseEvent->setScenePos (scenePoint);
210+ releaseEvent->setButton (Qt::LeftButton);
211+ releaseEvent->setButtons (Qt::NoButton);
212+
213+ QApplication::postEvent (container_->scene (), dbClckEvent);
214+ QApplication::postEvent (container_->scene (), releaseEvent);
199215}
200216
201217void QmlWebViewCmdExecutor::MouseButtonUp (Error** error) {
202- // TODO:
218+ CHECK_VIEW_EXISTANCE
219+
220+ QPoint point = QCommonUtil::ConvertPointToQPoint (session_->get_mouse_position ());
221+ QPointF scenePoint = view_->mapToScene (point.x (), point.y ());
222+
223+ QGraphicsSceneMouseEvent *releaseEvent = new QGraphicsSceneMouseEvent (QEvent::GraphicsSceneMouseRelease);
224+ releaseEvent->setScenePos (scenePoint);
225+ releaseEvent->setButton (Qt::LeftButton);
226+ releaseEvent->setButtons (Qt::NoButton);
227+
228+ QApplication::postEvent (container_->scene (), releaseEvent);
203229}
204230
205231void QmlWebViewCmdExecutor::MouseButtonDown (Error** error) {
206- // TODO:
232+ CHECK_VIEW_EXISTANCE
233+
234+ QPoint point = QCommonUtil::ConvertPointToQPoint (session_->get_mouse_position ());
235+ QPointF scenePoint = view_->mapToScene (point.x (), point.y ());
236+
237+ QGraphicsSceneMouseEvent *pressEvent = new QGraphicsSceneMouseEvent (QEvent::GraphicsSceneMousePress);
238+ pressEvent->setScenePos (scenePoint);
239+ pressEvent->setButton (Qt::LeftButton);
240+ pressEvent->setButtons (Qt::LeftButton);
241+
242+ QApplication::postEvent (container_->scene (), pressEvent);
207243}
208244
209245void QmlWebViewCmdExecutor::MouseClick (MouseButton button, Error** error) {
210- // TODO:
246+ CHECK_VIEW_EXISTANCE
247+
248+ QPoint point = QCommonUtil::ConvertPointToQPoint (session_->get_mouse_position ());
249+ QPointF scenePoint = view_->mapToScene (point.x (), point.y ());
250+
251+ Qt::MouseButton mouseButton = QCommonUtil::ConvertMouseButtonToQtMouseButton (button);
252+
253+ QGraphicsSceneMouseEvent *pressEvent = new QGraphicsSceneMouseEvent (QEvent::GraphicsSceneMousePress);
254+ pressEvent->setScenePos (scenePoint);
255+ pressEvent->setButton (mouseButton);
256+ pressEvent->setButtons (mouseButton);
257+
258+ QGraphicsSceneMouseEvent *releaseEvent = new QGraphicsSceneMouseEvent (QEvent::GraphicsSceneMouseRelease);
259+ releaseEvent->setScenePos (scenePoint);
260+ releaseEvent->setButton (mouseButton);
261+ releaseEvent->setButtons (Qt::NoButton);
262+
263+ QApplication::postEvent (container_->scene (), pressEvent);
264+ QApplication::postEvent (container_->scene (), releaseEvent);
211265}
212266
213267void QmlWebViewCmdExecutor::MouseMove (const int x_offset, const int y_offset, Error** error) {
0 commit comments