Skip to content

Commit bbf7a48

Browse files
committed
added possibility to handle 'windowposition' for widget, qml and quick2
1 parent 06247cf commit bbf7a48

File tree

4 files changed

+32
-7
lines changed

4 files changed

+32
-7
lines changed

src/webdriver/extension_qt/qml_view_creator.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,13 @@ bool QQmlViewCreator::CreateViewByClassName(const Logger& logger, const std::str
6767

6868
if (NULL != size)
6969
logger.Log(kWarningLogLevel, "Can't apply desired size for qml.");
70-
if (NULL != position)
71-
logger.Log(kWarningLogLevel, "Can't apply desired position for qml.");
70+
71+
if (NULL != position) {
72+
int x_offset = widget->geometry().x() - widget->frameGeometry().x();
73+
int y_offset = widget->geometry().y() - widget->frameGeometry().y();
74+
widget->move(position->x() - x_offset, position->y() - y_offset);
75+
logger.Log(kInfoLogLevel, "Applying desired position for qml.");
76+
}
7277

7378
*view = handle;
7479

src/webdriver/extension_qt/quick2_view_creator.cc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,12 @@ bool Quick2ViewCreator::CreateViewByClassName(const Logger& logger, const std::s
6666

6767
if (NULL != size)
6868
logger.Log(kWarningLogLevel, "Can't apply desired size for quick2.");
69-
if (NULL != position)
70-
logger.Log(kWarningLogLevel, "Can't apply desired position for quick2.");
69+
70+
if (NULL != position) {
71+
pWindow->setX(position->x());
72+
pWindow->setY(position->y());
73+
logger.Log(kInfoLogLevel, "Applying desired position for quick2.");
74+
}
7175

7276
*view = handle;
7377

src/webdriver/extension_qt/widget_view_creator.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,13 @@ bool QWidgetViewCreator::CreateViewByClassName(const Logger& logger, const std::
6868

6969
if (NULL != size)
7070
logger.Log(kWarningLogLevel, "Can't apply desired size for widget.");
71-
if (NULL != position)
72-
logger.Log(kWarningLogLevel, "Can't apply desired position for widget.");
71+
72+
if (NULL != position) {
73+
int x_offset = widget->geometry().x() - widget->frameGeometry().x();
74+
int y_offset = widget->geometry().y() - widget->frameGeometry().y();
75+
widget->move(position->x() - x_offset, position->y() - y_offset);
76+
logger.Log(kInfoLogLevel, "Applying desired position for widget.");
77+
}
7378

7479
*view = handle;
7580

src/webdriver/extension_qt/widget_view_executor.cc

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "widget_view_visualizer.h"
1515
#include "extension_qt/event_dispatcher.h"
1616
#include "extension_qt/wd_event_dispatcher.h"
17+
#include "webdriver_util.h"
1718

1819
#include <QtCore/QBuffer>
1920
#include <QtCore/QDebug>
@@ -889,8 +890,18 @@ void QWidgetViewCmdExecutor::NavigateToURL(const std::string& url, bool sync, Er
889890

890891
session_->logger().Log(kFineLogLevel, "Navigate to widget - "+url);
891892

893+
std::string window_position;
894+
int x, y;
895+
scoped_ptr<Point> position(NULL);
896+
if (session_->get_desired_caps()->GetString(Capabilities::kWindowPosition, &window_position)) {
897+
898+
if (GetTwoIntsFromString(window_position, x, y)) {
899+
position.reset(new Point(x, y));
900+
}
901+
}
902+
892903
// create view
893-
ViewFactory::GetInstance()->CreateViewForUrl(session_->logger(), url, &viewHandle);
904+
ViewFactory::GetInstance()->CreateViewForUrl(session_->logger(), url, position.get(), NULL, &viewHandle);
894905
if (NULL == viewHandle) {
895906
*error = new Error(kUnknownError, "cant load widget - " + url);
896907
return;

0 commit comments

Comments
 (0)