From f444b25ac1dfe240b5ae592717907b15d30a5c21 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Thu, 18 Dec 2014 10:02:47 +0100 Subject: Add a platform function to enable setting the touch flags on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This makes it possible for the flags that RegisterTouchWindow takes to be specified after the window has been created. Task-number: QTBUG-41433 Change-Id: I166143875ef54ab6a249cffb31d017845a694a01 Reviewed-by: Jørgen Lind --- .../windowsfunctions/qwindowswindowfunctions.h | 69 +++++++++++++++++++++ .../windowsfunctions/qwindowswindowfunctions.qdoc | 71 ++++++++++++++++++++++ .../windowsfunctions/windowsfunctions.pri | 1 + 3 files changed, 141 insertions(+) create mode 100644 src/platformheaders/windowsfunctions/qwindowswindowfunctions.h create mode 100644 src/platformheaders/windowsfunctions/qwindowswindowfunctions.qdoc create mode 100644 src/platformheaders/windowsfunctions/windowsfunctions.pri (limited to 'src/platformheaders/windowsfunctions') diff --git a/src/platformheaders/windowsfunctions/qwindowswindowfunctions.h b/src/platformheaders/windowsfunctions/qwindowswindowfunctions.h new file mode 100644 index 0000000000..6e585b9dfe --- /dev/null +++ b/src/platformheaders/windowsfunctions/qwindowswindowfunctions.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSWINDOWFUNCTIONS_H +#define QWINDOWSWINDOWFUNCTIONS_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QWindow; + +class QWindowsWindowFunctions { +public: + enum TouchWindowTouchType { + NormalTouch = 0x00000000, + FineTouch = 0x00000001, + WantPalmTouch = 0x00000002 + }; + + Q_DECLARE_FLAGS(TouchWindowTouchTypes, TouchWindowTouchType) + + typedef void (*SetTouchWindowTouchType)(QWindow *window, QWindowsWindowFunctions::TouchWindowTouchTypes touchType); + static const QByteArray setTouchWindowTouchTypeIdentifier() { return QByteArrayLiteral("WindowsSetTouchWindowTouchType"); } + + static void setTouchWindowTouchType(QWindow *window, TouchWindowTouchTypes type) + { + SetTouchWindowTouchType func = reinterpret_cast(QGuiApplication::platformFunction(setTouchWindowTouchTypeIdentifier())); + if (func) + func(window, type); + } +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QWindowsWindowFunctions::TouchWindowTouchTypes) + +QT_END_NAMESPACE + +#endif // QWINDOWSWINDOWFUNCTIONS_H diff --git a/src/platformheaders/windowsfunctions/qwindowswindowfunctions.qdoc b/src/platformheaders/windowsfunctions/qwindowswindowfunctions.qdoc new file mode 100644 index 0000000000..494a106575 --- /dev/null +++ b/src/platformheaders/windowsfunctions/qwindowswindowfunctions.qdoc @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: http://www.gnu.org/copyleft/fdl.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QWindowsWindowFunctions + \inmodule QtPlatformHeaders + \since 5.5 + \brief The QWindowsWindowFunctions class is an inline class containing + miscellaneous functionality for Windows window specific functionality. + + A common usage pattern is as follows: + \snippet qwindowswindowfunctions/main.cpp 0 + + \note There is no binary compatibility guarantee for this class, + meaning that an application using it is only guaranteed to work with the Qt + version it was developed against. +*/ + +/*! + \enum QWindowsWindowFunctions::TouchWindowTouchType + + This enum represents the supported TouchWindow touch flags for RegisterTouchWindow(). + + \value NormalTouch + \value FineTouch + \value WantPalmTouch +*/ + +/*! + \typedef QWindowsWindowFunctions::SetTouchWindowTouchType + + This is the typedef for the function returned by QGuiApplication::platformFunction when passed setTouchWindowTouchTypeIdentifier. +*/ + +/*! + \fn QByteArray QWindowsWindowFunctions::setTouchWindowTouchTypeIdentifier() + + This function returns the bytearray that can be used to query + QGuiApplication::platformFunction to retrieve the SetTouchWindowTouchType function. +*/ + +/*! + \fn void QWindowsWindowFunctions::setTouchWindowTouchType(QWindow *window, TouchWindowTouchTypes type) + + This is a convenience function that can be used directly instead of resolving the function pointer. + \a window and \a type will be relayed to the function retrieved by QGuiApplication +*/ diff --git a/src/platformheaders/windowsfunctions/windowsfunctions.pri b/src/platformheaders/windowsfunctions/windowsfunctions.pri new file mode 100644 index 0000000000..479245db80 --- /dev/null +++ b/src/platformheaders/windowsfunctions/windowsfunctions.pri @@ -0,0 +1 @@ +HEADERS += $$PWD/qwindowswindowfunctions.h -- cgit v1.2.3