diff options
Diffstat (limited to 'src/ui/configurationwidget.cpp')
-rw-r--r-- | src/ui/configurationwidget.cpp | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/ui/configurationwidget.cpp b/src/ui/configurationwidget.cpp index ea16db2..15de9f6 100644 --- a/src/ui/configurationwidget.cpp +++ b/src/ui/configurationwidget.cpp @@ -194,17 +194,11 @@ void ConfigurationWidget::updateOrientationButtons(const DeviceData &data) { const bool rotateScreen = ui_inspector->rotateScreen->isChecked(); - if (!rotateScreen) { - ui_inspector->topUp->setEnabled(true); - ui_inspector->leftUp->setEnabled(true); - ui_inspector->rightUp->setEnabled(true); - ui_inspector->topDown->setEnabled(true); - } else { - ui_inspector->topUp->setEnabled(data.supportedOrientations & topUp); - ui_inspector->leftUp->setEnabled(data.supportedOrientations & leftUp); - ui_inspector->rightUp->setEnabled(data.supportedOrientations & rightUp); - ui_inspector->topDown->setEnabled(data.supportedOrientations & topDown); - } + // workaround for calling this from another thread (scripts): + // always perform the setEnabled calls in the gui thread - + // setEnabled calls sendEvent! + QMetaObject::invokeMethod(this, "enableRotationButtons", Qt::QueuedConnection, + Q_ARG(bool, rotateScreen), Q_ARG(int, data.supportedOrientations)); if (!mOrientationButtons->checkedButton()->isEnabled() && !data.menus.isEmpty()) { Orientation fallback = data.menus.begin().key(); @@ -540,3 +534,18 @@ QStringList SimulatorScriptInterface::supportedScreenOrientations() const return ret; } + +void ConfigurationWidget::enableRotationButtons(bool rotateScreen, int supportedOrientations) +{ + if (!rotateScreen) { + ui_inspector->topUp->setEnabled(true); + ui_inspector->leftUp->setEnabled(true); + ui_inspector->rightUp->setEnabled(true); + ui_inspector->topDown->setEnabled(true); + } else { + ui_inspector->topUp->setEnabled(supportedOrientations & topUp); + ui_inspector->leftUp->setEnabled(supportedOrientations & leftUp); + ui_inspector->rightUp->setEnabled(supportedOrientations & rightUp); + ui_inspector->topDown->setEnabled(supportedOrientations & topDown); + } +} |