diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-09-27 11:30:43 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-09-27 12:25:54 +0200 |
commit | 38a5b6212db33700804b83802ef9f0b1423b29cd (patch) | |
tree | 1f7dcf87a0c585bb889ebfd5802f5b4c749cc553 /tests/manual | |
parent | 03c12974bbaf6f5f394d846099c7a67b058d65e2 (diff) |
qtabletevent/regular_widget manual test: Add a toggle for WinTab
Task-number: QTBUG-83218
Change-Id: I179f53c051c92dbb86fbac710d4a514c4e5d3c49
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'tests/manual')
3 files changed, 56 insertions, 12 deletions
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 <QStatusBar> #include <QTabletEvent> +#ifdef Q_OS_WIN +# include <QtGui/private/qguiapplication_p.h> +# include <QtGui/qpa/qplatformintegration.h> +#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<QWindowsApplication *>(QGuiApplicationPrivate::platformIntegration())) + nativeWindowsApp->setWinTabEnabled(e); +} + +static bool isWinTabEnabled() +{ + auto nativeWindowsApp = dynamic_cast<QWindowsApplication *>(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 |