From 38a5b6212db33700804b83802ef9f0b1423b29cd Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Sun, 27 Sep 2020 11:30:43 +0200 Subject: qtabletevent/regular_widget manual test: Add a toggle for WinTab Task-number: QTBUG-83218 Change-Id: I179f53c051c92dbb86fbac710d4a514c4e5d3c49 Reviewed-by: Shawn Rutledge --- .../qtabletevent/regular_widgets/CMakeLists.txt | 4 +- tests/manual/qtabletevent/regular_widgets/main.cpp | 62 ++++++++++++++++++---- .../regular_widgets/regular_widgets.pro | 2 +- 3 files changed, 56 insertions(+), 12 deletions(-) (limited to 'tests/manual') diff --git a/tests/manual/qtabletevent/regular_widgets/CMakeLists.txt b/tests/manual/qtabletevent/regular_widgets/CMakeLists.txt index 340510fc6b..b606fcabc2 100644 --- a/tests/manual/qtabletevent/regular_widgets/CMakeLists.txt +++ b/tests/manual/qtabletevent/regular_widgets/CMakeLists.txt @@ -4,12 +4,14 @@ ## regular_widgets Binary: ##################################################################### -qt_internal_add_manual_test(regular_widgets +qt_internal_add_executable(regular_widgets GUI SOURCES main.cpp PUBLIC_LIBRARIES + Qt::CorePrivate Qt::Gui + Qt::GuiPrivate Qt::Widgets ) diff --git a/tests/manual/qtabletevent/regular_widgets/main.cpp b/tests/manual/qtabletevent/regular_widgets/main.cpp index decfc3af74..9f20f5412f 100644 --- a/tests/manual/qtabletevent/regular_widgets/main.cpp +++ b/tests/manual/qtabletevent/regular_widgets/main.cpp @@ -40,12 +40,33 @@ #include #include +#ifdef Q_OS_WIN +# include +# include +#endif + enum TabletPointType { TabletButtonPress, TabletButtonRelease, TabletMove }; +#ifdef Q_OS_WIN +using QWindowsApplication = QPlatformInterface::Private::QWindowsApplication; + +static void setWinTabEnabled(bool e) +{ + if (auto nativeWindowsApp = dynamic_cast(QGuiApplicationPrivate::platformIntegration())) + nativeWindowsApp->setWinTabEnabled(e); +} + +static bool isWinTabEnabled() +{ + auto nativeWindowsApp = dynamic_cast(QGuiApplicationPrivate::platformIntegration()); + return nativeWindowsApp && nativeWindowsApp->isWinTabEnabled(); +} +#endif // Q_OS_WIN + struct TabletPoint { TabletPoint(const QPointF &p = QPointF(), TabletPointType t = TabletMove, Qt::MouseButton b = Qt::LeftButton, @@ -275,25 +296,46 @@ void EventReportWidget::timerEvent(QTimerEvent *) m_paintEventCount = 0; } -int main(int argc, char *argv[]) +class MainWindow : public QMainWindow { - QApplication app(argc, argv); +public: + explicit MainWindow(ProximityEventFilter *proximityEventFilter); +}; - ProximityEventFilter *proximityEventFilter = new ProximityEventFilter(&app); - app.installEventFilter(proximityEventFilter); - QMainWindow mainWindow; - mainWindow.setWindowTitle(QString::fromLatin1("Tablet Test %1").arg(QT_VERSION_STR)); - EventReportWidget *widget = new EventReportWidget; +MainWindow::MainWindow(ProximityEventFilter *proximityEventFilter) +{ + setWindowTitle(QString::fromLatin1("Tablet Test %1").arg(QT_VERSION_STR)); + auto widget = new EventReportWidget; QObject::connect(proximityEventFilter, &ProximityEventFilter::proximityChanged, widget, QOverload<>::of(&QWidget::update)); widget->setMinimumSize(640, 480); - QMenu *fileMenu = mainWindow.menuBar()->addMenu("File"); + auto fileMenu = menuBar()->addMenu("File"); fileMenu->addAction("Clear", widget, &EventReportWidget::clearPoints); QObject::connect(widget, &EventReportWidget::stats, - mainWindow.statusBar(), &QStatusBar::showMessage); + statusBar(), &QStatusBar::showMessage); QAction *quitAction = fileMenu->addAction("Quit", qApp, &QCoreApplication::quit); quitAction->setShortcut(Qt::CTRL | Qt::Key_Q); - mainWindow.setCentralWidget(widget); + + auto settingsMenu = menuBar()->addMenu("Settings"); + auto winTabAction = settingsMenu->addAction("WinTab"); + winTabAction->setCheckable(true); +#ifdef Q_OS_WIN + winTabAction->setChecked(isWinTabEnabled()); + connect(winTabAction, &QAction::toggled, this, setWinTabEnabled); +#else + winTabAction->setEnabled(false); +#endif + + setCentralWidget(widget); +} + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + ProximityEventFilter *proximityEventFilter = new ProximityEventFilter(&app); + app.installEventFilter(proximityEventFilter); + MainWindow mainWindow(proximityEventFilter); mainWindow.show(); return app.exec(); } diff --git a/tests/manual/qtabletevent/regular_widgets/regular_widgets.pro b/tests/manual/qtabletevent/regular_widgets/regular_widgets.pro index 8f1f4342ee..1428d10a04 100644 --- a/tests/manual/qtabletevent/regular_widgets/regular_widgets.pro +++ b/tests/manual/qtabletevent/regular_widgets/regular_widgets.pro @@ -1,4 +1,4 @@ TEMPLATE = app -QT += widgets +QT += widgets gui-private core-private SOURCES += main.cpp -- cgit v1.2.3