summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp4
-rw-r--r--src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp3
-rw-r--r--src/plugins/platforms/windows/qplatformfunctions_wince.h325
-rw-r--r--src/plugins/platforms/windows/qtwindowsglobal.h3
-rw-r--r--src/plugins/platforms/windows/qwindowsclipboard.cpp73
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp49
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.h5
-rw-r--r--src/plugins/platforms/windows/qwindowsdialoghelpers.cpp6
-rw-r--r--src/plugins/platforms/windows/qwindowsdrag.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase.cpp32
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.cpp113
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.cpp34
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.h6
-rw-r--r--src/plugins/platforms/windows/qwindowsinternalmimedata.cpp116
-rw-r--r--src/plugins/platforms/windows/qwindowskeymapper.cpp34
-rw-r--r--src/plugins/platforms/windows/qwindowsmousehandler.cpp6
-rw-r--r--src/plugins/platforms/windows/qwindowsnativeimage.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.cpp9
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.h3
-rw-r--r--src/plugins/platforms/windows/qwindowsservices.cpp13
-rw-r--r--src/plugins/platforms/windows/qwindowstheme.cpp17
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp14
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.h15
-rw-r--r--src/plugins/platforms/windows/windows.pro26
24 files changed, 802 insertions, 110 deletions
diff --git a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp
index 6f2a601c50..21d0b839d7 100644
--- a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp
+++ b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp
@@ -84,10 +84,6 @@
#include <comdef.h>
#endif
-#ifdef Q_OS_WINCE
-#include "../qguifunctions_wince.h"
-#endif
-
#include "../qtwindows_additional.h"
diff --git a/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp b/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp
index fafe624e4b..b8d46fe9cb 100644
--- a/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp
+++ b/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp
@@ -72,9 +72,6 @@
#include <comdef.h>
#endif
-#ifdef Q_OS_WINCE
-#include "../qguifunctions_wince.h"
-#endif
#include "../qtwindows_additional.h"
diff --git a/src/plugins/platforms/windows/qplatformfunctions_wince.h b/src/plugins/platforms/windows/qplatformfunctions_wince.h
new file mode 100644
index 0000000000..0e6a859b49
--- /dev/null
+++ b/src/plugins/platforms/windows/qplatformfunctions_wince.h
@@ -0,0 +1,325 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMFUNCTIONS_WCE_H
+#define QPLATFORMFUNCTIONS_WCE_H
+
+#ifdef Q_OS_WINCE
+#include <QtCore/qfunctions_wince.h>
+#define UNDER_NT
+#include <wingdi.h>
+#include <objidl.h>
+
+#ifndef WM_MOUSELEAVE
+# define WM_MOUSELEAVE 0x02A3
+#endif
+
+#ifndef WM_TOUCH
+# define WM_TOUCH 0x0240
+#endif
+
+#ifndef WM_GETOBJECT
+#define WM_GETOBJECT 0x003D
+#endif
+
+#define GetWindowLongPtr GetWindowLong
+#define SetWindowLongPtr SetWindowLong
+#define GWLP_USERDATA GWL_USERDATA
+
+#ifndef CWP_SKIPINVISIBLE
+#define CWP_SKIPINVISIBLE 0x0001
+#define findPlatformWindowAt(a, b, c) findPlatformWindowAt(a, b)
+#endif
+
+#ifndef CS_OWNDC
+#define CS_OWNDC 0x0020
+#endif
+
+#ifndef HWND_MESSAGE
+#define HWND_MESSAGE 0
+#endif
+
+#ifndef CAPTUREBLT
+#define CAPTUREBLT (DWORD)0x40000000
+#endif
+
+#define SW_SHOWMINIMIZED SW_MINIMIZE
+#define SW_SHOWMINNOACTIVE SW_MINIMIZE
+
+#ifndef ChildWindowFromPointEx
+#define ChildWindowFromPointEx(a, b, c) ChildWindowFromPoint(a, b)
+#endif
+
+#ifndef CF_DIBV5
+#define CF_DIBV5 17
+#endif
+
+#ifndef WM_MOUSEACTIVATE
+#define WM_MOUSEACTIVATE 0x0021
+#endif
+
+#ifndef WM_CHILDACTIVATE
+#define WM_CHILDACTIVATE 0x0022
+#endif
+
+#ifndef WM_PARENTNOTIFY
+#define WM_PARENTNOTIFY 0x0210
+#endif
+
+#ifndef WM_ENTERIDLE
+#define WM_ENTERIDLE 0x0121
+#endif
+
+#ifndef WM_GETMINMAXINFO
+#define WM_GETMINMAXINFO 0x0024
+#endif
+
+#ifndef WM_WINDOWPOSCHANGING
+#define WM_WINDOWPOSCHANGING 0x0046
+#endif
+
+#ifndef WM_NCMOUSEMOVE
+#define WM_NCMOUSEMOVE 0x00A0
+#endif
+
+#ifndef WM_NCMBUTTONDBLCLK
+#define WM_NCMBUTTONDBLCLK 0x00A
+#endif
+
+#ifndef WM_NCCREATE
+#define WM_NCCREATE 0x0081
+#endif
+
+#ifndef WM_NCCALCSIZE
+#define WM_NCCALCSIZE 0x0083
+#endif
+
+#ifndef WM_NCACTIVATE
+#define WM_NCACTIVATE 0x0086
+#endif
+
+#ifndef WM_NCMOUSELEAVE
+#define WM_NCMOUSELEAVE 0x02A2
+#endif
+
+#ifndef WM_NCLBUTTONDOWN
+#define WM_NCLBUTTONDOWN 0x00A1
+#endif
+
+#ifndef WM_NCLBUTTONUP
+#define WM_NCLBUTTONUP 0x00A2
+#endif
+
+#ifndef WM_NCPAINT
+#define WM_NCPAINT 0x0085
+#endif
+
+#ifndef WM_NCHITTEST
+#define WM_NCHITTEST 0x0084
+#endif
+
+#ifndef WM_THEMECHANGED
+#define WM_THEMECHANGED 0x031A
+#endif
+
+#ifndef WM_DISPLAYCHANGE
+#define WM_DISPLAYCHANGE 0x007E
+#endif
+
+#ifndef VREFRESH
+#define VREFRESH 116
+#endif
+
+// application defines
+#define SPI_SETNONCLIENTMETRICS 72
+#define SPI_SETICONTITLELOGFONT 0x0022
+#define WM_ACTIVATEAPP 0x001c
+#define SW_PARENTCLOSING 1
+#define SW_OTHERMAXIMIZED 2
+#define SW_PARENTOPENING 3
+#define SW_OTHERRESTORED 4
+#define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam))
+
+// drag n drop
+#ifndef CFSTR_PERFORMEDDROPEFFECT
+#define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect")
+#endif
+
+// QWidget
+#define SW_SHOWMINIMIZED SW_MINIMIZE
+
+// QRegion
+#define ALTERNATE 0
+#define WINDING 1
+
+// QFontEngine
+typedef struct _FIXED {
+ WORD fract;
+ short value;
+} FIXED;
+
+typedef struct tagPOINTFX {
+ FIXED x;
+ FIXED y;
+} POINTFX;
+
+typedef struct _MAT2 {
+ FIXED eM11;
+ FIXED eM12;
+ FIXED eM21;
+ FIXED eM22;
+} MAT2;
+
+typedef struct _GLYPHMETRICS {
+ UINT gmBlackBoxX;
+ UINT gmBlackBoxY;
+ POINT gmptGlyphOrigin;
+ short gmCellIncX;
+ short gmCellIncY;
+} GLYPHMETRICS;
+
+typedef struct tagTTPOLYGONHEADER
+{
+ DWORD cb;
+ DWORD dwType;
+ POINTFX pfxStart;
+} TTPOLYGONHEADER;
+
+typedef struct tagTTPOLYCURVE
+{
+ WORD wType;
+ WORD cpfx;
+ POINTFX apfx[1];
+} TTPOLYCURVE;
+
+#define GGO_NATIVE 2
+#define GGO_GLYPH_INDEX 0x0080
+#define TT_PRIM_LINE 1
+#define TT_PRIM_QSPLINE 2
+#define TT_PRIM_CSPLINE 3
+#define ANSI_VAR_FONT 12
+
+#ifndef OleInitialize
+#define OleInitialize(a) 0
+#endif
+
+#ifndef SPI_GETSNAPTODEFBUTTON
+#define SPI_GETSNAPTODEFBUTTON 95
+#endif
+
+#ifndef WS_EX_LAYERED
+#define WS_EX_LAYERED 0x00080000
+#endif
+
+// Clipboard --------------------------------------------------------
+#ifndef WM_CHANGECBCHAIN
+#define WM_CHANGECBCHAIN 0x030D
+#endif
+
+#ifndef WM_DRAWCLIPBOARD
+#define WM_DRAWCLIPBOARD 0x0308
+#endif
+
+inline bool IsIconic( HWND /*hWnd*/ )
+{
+ return false;
+}
+
+inline bool IsZoomed( HWND /*hWnd*/ )
+{
+ return true;
+}
+
+inline int AddFontResourceExW( LPCWSTR /*name*/, DWORD /*fl*/, PVOID /*res*/)
+{
+ return 0;
+}
+
+inline bool RemoveFontResourceExW( LPCWSTR /*name*/, DWORD /*fl*/, PVOID /*pdv*/)
+{
+ return 0;
+}
+
+inline void OleUninitialize()
+{
+}
+
+inline DWORD GetGlyphOutline( HDC /*hdc*/, UINT /*uChar*/, INT /*fuFormat*/, GLYPHMETRICS * /*lpgm*/,
+ DWORD /*cjBuffer*/, LPVOID /*pvBuffer*/, CONST MAT2 * /*lpmat2*/ )
+{
+ return GDI_ERROR;
+}
+
+#ifndef SPI_SETFONTSMOOTHINGTYPE
+# define SPI_SETFONTSMOOTHINGTYPE 0x200B
+#endif
+#ifndef SPI_GETFONTSMOOTHINGTYPE
+# define SPI_GETFONTSMOOTHINGTYPE 0x200A
+#endif
+#ifndef FE_FONTSMOOTHINGCLEARTYPE
+# define FE_FONTSMOOTHINGCLEARTYPE 0x0002
+#endif
+
+#ifndef DEVICE_FONTTYPE
+#define DEVICE_FONTTYPE 0x0002
+#endif
+
+#ifndef RASTER_FONTTYPE
+#define RASTER_FONTTYPE 0x0001
+#endif
+
+#ifndef WM_DISPLAYCHANGE
+#define WM_DISPLAYCHANGE 0x007E
+#endif
+
+BOOL qt_wince_ChangeClipboardChain(
+ HWND hWndRemove, // handle to window to remove
+ HWND hWndNewNext // handle to next window
+);
+#define ChangeClipboardChain(a,b) qt_wince_ChangeClipboardChain(a,b);
+
+HWND qt_wince_SetClipboardViewer(
+ HWND hWndNewViewer // handle to clipboard viewer window
+);
+#define SetClipboardViewer(a) qt_wince_SetClipboardViewer(a)
+
+#endif // Q_OS_WINCE
+#endif // QPLATFORMFUNCTIONS_WCE_H
diff --git a/src/plugins/platforms/windows/qtwindowsglobal.h b/src/plugins/platforms/windows/qtwindowsglobal.h
index 27cfbdc662..ab23b06302 100644
--- a/src/plugins/platforms/windows/qtwindowsglobal.h
+++ b/src/plugins/platforms/windows/qtwindowsglobal.h
@@ -44,6 +44,9 @@
#include "qtwindows_additional.h"
#include <QtCore/qnamespace.h>
+#ifdef Q_OS_WINCE
+# include "qplatformfunctions_wince.h"
+#endif
QT_BEGIN_NAMESPACE
diff --git a/src/plugins/platforms/windows/qwindowsclipboard.cpp b/src/plugins/platforms/windows/qwindowsclipboard.cpp
index 4166e567c4..41f22d5ae1 100644
--- a/src/plugins/platforms/windows/qwindowsclipboard.cpp
+++ b/src/plugins/platforms/windows/qwindowsclipboard.cpp
@@ -98,79 +98,6 @@ QDebug operator<<(QDebug d, const QMimeData &m)
}
/*!
- \class QWindowsInternalMimeDataBase
- \brief Base for implementations of QInternalMimeData using a IDataObject COM object.
-
- In clipboard handling and Drag and drop, static instances
- of QInternalMimeData implementations are kept and passed to the client.
-
- QInternalMimeData provides virtuals that query the formats and retrieve
- mime data on demand when the client invokes functions like QMimeData::hasHtml(),
- QMimeData::html() on the instance returned. Otherwise, expensive
- construction of a new QMimeData object containing all possible
- formats would have to be done in each call to mimeData().
-
- The base class introduces new virtuals to obtain and release
- the instances IDataObject from the clipboard or Drag and Drop and
- does conversion using QWindowsMime classes.
-
- \sa QInternalMimeData, QWindowsMime, QWindowsMimeConverter
- \ingroup qt-lighthouse-win
-*/
-
-bool QWindowsInternalMimeData::hasFormat_sys(const QString &mime) const
-{
- IDataObject *pDataObj = retrieveDataObject();
- if (!pDataObj)
- return false;
-
- const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
- const bool has = mc.converterToMime(mime, pDataObj) != 0;
- releaseDataObject(pDataObj);
- if (QWindowsContext::verboseOLE)
- qDebug() << __FUNCTION__ << mime << has;
- return has;
-}
-
-QStringList QWindowsInternalMimeData::formats_sys() const
-{
- IDataObject *pDataObj = retrieveDataObject();
- if (!pDataObj)
- return QStringList();
-
- const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
- const QStringList fmts = mc.allMimesForFormats(pDataObj);
- releaseDataObject(pDataObj);
- if (QWindowsContext::verboseOLE)
- qDebug() << __FUNCTION__ << fmts;
- return fmts;
-}
-
-QVariant QWindowsInternalMimeData::retrieveData_sys(const QString &mimeType,
- QVariant::Type type) const
-{
- IDataObject *pDataObj = retrieveDataObject();
- if (!pDataObj)
- return QVariant();
-
- QVariant result;
- const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
- if (const QWindowsMime *converter = mc.converterToMime(mimeType, pDataObj))
- result = converter->convertToMime(mimeType, pDataObj, type);
- releaseDataObject(pDataObj);
-#ifndef QT_NO_DEBUG_OUTPUT
- if (QWindowsContext::verboseOLE) {
- QDebug nospace = qDebug().nospace();
- nospace << __FUNCTION__ << ' ' << mimeType << ' ' << type
- << " returns " << result.type();
- if (result.type() != QVariant::ByteArray)
- nospace << ' ' << result;
- }
-#endif
- return result;
-}
-
-/*!
\class QWindowsClipboardRetrievalMimeData
\brief Special mime data class managing delayed retrieval of clipboard data.
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index 3a2113520d..f44ce38c73 100644
--- a/src/plugins/platforms/windows/qwindowscontext.cpp
+++ b/src/plugins/platforms/windows/qwindowscontext.cpp
@@ -113,6 +113,9 @@ static inline bool hasTouchSupport(QSysInfo::WinVersion wv)
static inline bool useRTL_Extensions(QSysInfo::WinVersion ver)
{
+ // This is SDK dependent on CE so out of scope for now
+ if (QSysInfo::windowsVersion() & QSysInfo::WV_CE_based)
+ return false;
if ((ver & QSysInfo::WV_NT_based) && (ver >= QSysInfo::WV_VISTA)) {
// Since the IsValidLanguageGroup/IsValidLocale functions always return true on
// Vista, check the Keyboard Layouts for enabling RTL.
@@ -133,6 +136,7 @@ static inline bool useRTL_Extensions(QSysInfo::WinVersion ver)
}
return false;
} // NT/Vista
+#ifndef Q_OS_WINCE
// Pre-NT: figure out whether a RTL language is installed
return IsValidLanguageGroup(LGRPID_ARABIC, LGRPID_INSTALLED)
|| IsValidLanguageGroup(LGRPID_HEBREW, LGRPID_INSTALLED)
@@ -140,6 +144,9 @@ static inline bool useRTL_Extensions(QSysInfo::WinVersion ver)
|| IsValidLocale(MAKELCID(MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT), SORT_DEFAULT), LCID_INSTALLED)
|| IsValidLocale(MAKELCID(MAKELANGID(LANG_SYRIAC, SUBLANG_DEFAULT), SORT_DEFAULT), LCID_INSTALLED)
|| IsValidLocale(MAKELCID(MAKELANGID(LANG_FARSI, SUBLANG_DEFAULT), SORT_DEFAULT), LCID_INSTALLED);
+#else
+ return false;
+#endif
}
/*!
@@ -157,6 +164,8 @@ static inline bool useRTL_Extensions(QSysInfo::WinVersion ver)
\ingroup qt-lighthouse-win
*/
+#ifndef Q_OS_WINCE
+
QWindowsUser32DLL::QWindowsUser32DLL() :
setLayeredWindowAttributes(0), updateLayeredWindow(0),
updateLayeredWindowIndirect(0),
@@ -212,6 +221,8 @@ void QWindowsShell32DLL::init()
QWindowsUser32DLL QWindowsContext::user32dll;
QWindowsShell32DLL QWindowsContext::shell32dll;
+#endif // !Q_OS_WINCE
+
QWindowsContext *QWindowsContext::m_instance = 0;
/*!
@@ -257,13 +268,16 @@ QWindowsContextPrivate::QWindowsContextPrivate() :
m_oleInitializeResult(OleInitialize(NULL)),
m_eventType(QByteArrayLiteral("windows_generic_MSG"))
{
+#ifndef Q_OS_WINCE
QWindowsContext::user32dll.init();
QWindowsContext::shell32dll.init();
+#endif
const QSysInfo::WinVersion ver = QSysInfo::windowsVersion();
-
+#ifndef Q_OS_WINCE
if (hasTouchSupport(ver) && QWindowsContext::user32dll.initTouch())
m_systemInfo |= QWindowsContext::SI_SupportsTouch;
+#endif
if (useRTL_Extensions(ver)) {
m_systemInfo |= QWindowsContext::SI_RTL_Extensions;
@@ -279,7 +293,9 @@ QWindowsContext::QWindowsContext() :
# pragma warning( disable : 4996 )
#endif
m_instance = this;
- if (const char *v = getenv("QT_QPA_VERBOSE")) {
+ const QByteArray bv = qgetenv("QT_QPA_VERBOSE");
+ if (bv.isEmpty()) {
+ const char *v = bv.data();
QWindowsContext::verboseIntegration = componentVerbose(v, "integration");
QWindowsContext::verboseWindows = componentVerbose(v, "windows");
QWindowsContext::verboseEvents = componentVerbose(v, "events");
@@ -419,13 +435,20 @@ QString QWindowsContext::registerWindowClass(QString cname,
if (d->m_registeredWindowClassNames.contains(cname)) // already registered in our list
return cname;
+#ifndef Q_OS_WINCE
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
+#else
+ WNDCLASS wc;
+#endif
wc.style = style;
wc.lpfnWndProc = proc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = appInstance;
+ wc.hCursor = 0;
+#ifndef Q_OS_WINCE
+ wc.hbrBackground = brush;
if (icon) {
wc.hIcon = (HICON)LoadImage(appInstance, L"IDI_ICON1", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);
if (wc.hIcon) {
@@ -440,11 +463,21 @@ QString QWindowsContext::registerWindowClass(QString cname,
wc.hIcon = 0;
wc.hIconSm = 0;
}
- wc.hCursor = 0;
- wc.hbrBackground = brush;
+#else
+ if (icon) {
+ wc.hIcon = (HICON)LoadImage(appInstance, L"IDI_ICON1", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);
+ } else {
+ wc.hIcon = 0;
+ }
+#endif
+
wc.lpszMenuName = 0;
wc.lpszClassName = (wchar_t*)cname.utf16();
+#ifndef Q_OS_WINCE
ATOM atom = RegisterClassEx(&wc);
+#else
+ ATOM atom = RegisterClass(&wc);
+#endif
if (!atom)
qErrnoWarning("QApplication::regClass: Registering window class '%s' failed.",
@@ -719,9 +752,11 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
// Pass on to current creation context
if (!platformWindow && !d->m_creationContext.isNull()) {
switch (et) {
+#ifndef Q_OS_WINCE // maybe available on some SDKs revisit WM_GETMINMAXINFO
case QtWindows::QuerySizeHints:
d->m_creationContext->applyToMinMaxInfo(reinterpret_cast<MINMAXINFO *>(lParam));
return true;
+#endif
case QtWindows::ResizeEvent:
d->m_creationContext->obtainedGeometry.setSize(QSize(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)));
return true;
@@ -762,9 +797,10 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
case QtWindows::ResizeEvent:
platformWindow->handleResized((int)wParam);
return true;
+#ifndef Q_OS_WINCE // maybe available on some SDKs revisit WM_GETMINMAXINFO
case QtWindows::QuerySizeHints:
platformWindow->getSizeHints(reinterpret_cast<MINMAXINFO *>(lParam));
- return true;
+ return true;// maybe available on some SDKs revisit WM_NCCALCSIZE
case QtWindows::CalculateSize:
// NCCALCSIZE_PARAMS structure if wParam==TRUE
if (wParam && QWindowsContext::verboseWindows) {
@@ -772,6 +808,7 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
qDebug() << platformWindow->window() << *ncp;
}
break;
+#endif
case QtWindows::ExposeEvent:
return platformWindow->handleWmPaint(hwnd, message, wParam, lParam);
case QtWindows::MouseWheelEvent:
@@ -800,11 +837,13 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
if (QWindowsTheme *theme = QWindowsTheme::instance())
theme->windowsThemeChanged(platformWindow->window());
return true;
+#ifndef Q_OS_WINCE
case QtWindows::ActivateWindowEvent:
if (platformWindow->testFlag(QWindowsWindow::BlockedByModal))
if (const QWindow *modalWindow = QGuiApplication::modalWindow())
QWindowsWindow::baseWindowOf(modalWindow)->alertWindow();
break;
+#endif
default:
break;
}
diff --git a/src/plugins/platforms/windows/qwindowscontext.h b/src/plugins/platforms/windows/qwindowscontext.h
index 9f16ed232b..983f9409c9 100644
--- a/src/plugins/platforms/windows/qwindowscontext.h
+++ b/src/plugins/platforms/windows/qwindowscontext.h
@@ -59,6 +59,7 @@ struct QWindowCreationContext;
struct QWindowsContextPrivate;
class QPoint;
+#ifndef Q_OS_WINCE
struct QWindowsUser32DLL
{
QWindowsUser32DLL();
@@ -98,6 +99,7 @@ struct QWindowsShell32DLL
SHCreateItemFromParsingName sHCreateItemFromParsingName;
};
+#endif // Q_OS_WINCE
class QWindowsContext
{
@@ -169,9 +171,10 @@ public:
QWindowsMimeConverter &mimeConverter() const;
QWindowsScreenManager &screenManager();
-
+#ifndef Q_OS_WINCE
static QWindowsUser32DLL user32dll;
static QWindowsShell32DLL shell32dll;
+#endif
static QByteArray comErrorString(HRESULT hr);
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index e283848236..b4a6834dbb 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -725,6 +725,7 @@ void QWindowsNativeFileDialogBase::setWindowTitle(const QString &title)
IShellItem *QWindowsNativeFileDialogBase::shellItem(const QString &path)
{
+#ifndef Q_OS_WINCE
if (QWindowsContext::shell32dll.sHCreateItemFromParsingName) {
IShellItem *result = 0;
const QString native = QDir::toNativeSeparators(path);
@@ -735,6 +736,7 @@ IShellItem *QWindowsNativeFileDialogBase::shellItem(const QString &path)
if (SUCCEEDED(hr))
return result;
}
+#endif
qErrnoWarning("%s: SHCreateItemFromParsingName()) failed", __FUNCTION__);
return 0;
}
@@ -749,9 +751,11 @@ void QWindowsNativeFileDialogBase::setDirectory(const QString &directory)
QString QWindowsNativeFileDialogBase::directory() const
{
+#ifndef Q_OS_WINCE
IShellItem *item = 0;
if (m_fileDialog && SUCCEEDED(m_fileDialog->GetFolder(&item)) && item)
return QWindowsNativeFileDialogBase::itemPath(item);
+#endif
return QString();
}
@@ -1230,6 +1234,7 @@ QString QWindowsFileDialogHelper::selectedNameFilter() const
typedef QSharedPointer<QColor> SharedPointerColor;
+#ifdef USE_NATIVE_COLOR_DIALOG
class QWindowsNativeColorDialog : public QWindowsNativeDialogBase
{
Q_OBJECT
@@ -1336,6 +1341,7 @@ QWindowsNativeDialogBase *QWindowsColorDialogHelper::createNativeDialog()
nativeDialog->setWindowTitle(options()->windowTitle());
return nativeDialog;
}
+#endif // USE_NATIVE_COLOR_DIALOG
namespace QWindowsDialogs {
diff --git a/src/plugins/platforms/windows/qwindowsdrag.cpp b/src/plugins/platforms/windows/qwindowsdrag.cpp
index d75752bc04..d377e51b2d 100644
--- a/src/plugins/platforms/windows/qwindowsdrag.cpp
+++ b/src/plugins/platforms/windows/qwindowsdrag.cpp
@@ -41,7 +41,9 @@
#include "qwindowsdrag.h"
#include "qwindowscontext.h"
-#include "qwindowsclipboard.h"
+#ifndef QT_NO_CLIPBOARD
+# include "qwindowsclipboard.h"
+#endif
#include "qwindowsintegration.h"
#include "qwindowsole.h"
#include "qtwindows_additional.h"
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
index caa1913bb5..7e8c70ee44 100644
--- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
@@ -55,9 +55,13 @@
#include <wchar.h>
+#ifdef Q_OS_WINCE
+# include "qplatformfunctions_wince.h"
+#endif
+
#if !defined(QT_NO_DIRECTWRITE)
-# include <dwrite.h>
-# include <d2d1.h>
+# include <dwrite.h>
+# include <d2d1.h>
#endif
QT_BEGIN_NAMESPACE
@@ -1002,6 +1006,17 @@ static bool addFontToDatabase(QString familyName, const QString &scriptName,
quint32 codePageRange[2] = {
signature->fsCsb[0], signature->fsCsb[1]
};
+#ifdef Q_OS_WINCE
+ if (signature->fsUsb[0] == 0) {
+ // If the unicode ranges bit mask is zero then
+ // EnumFontFamiliesEx failed to determine it properly.
+ // In this case we just pretend that the font supports all languages.
+ unicodeRange[0] = 0xbfffffff; // second most significant bit must be zero
+ unicodeRange[1] = 0xffffffff;
+ unicodeRange[2] = 0xffffffff;
+ unicodeRange[3] = 0xffffffff;
+ }
+#endif
writingSystemsFromTrueTypeBits(unicodeRange, codePageRange, &writingSystems);
// ### Hack to work around problem with Thai text on Windows 7. Segoe UI contains
// the symbol for Baht, and Windows thus reports that it supports the Thai script.
@@ -1603,6 +1618,7 @@ QFontEngine *QWindowsFontDatabase::createEngine(int script, const QFontDef &requ
const QString fam = request.family.toLower();
if (fam == QStringLiteral("default") || fam == QStringLiteral("system"))
f = SYSTEM_FONT;
+#ifndef Q_OS_WINCE
else if (fam == QStringLiteral("system_fixed"))
f = SYSTEM_FIXED_FONT;
else if (fam == QStringLiteral("ansi_fixed"))
@@ -1613,6 +1629,7 @@ QFontEngine *QWindowsFontDatabase::createEngine(int script, const QFontDef &requ
f = DEVICE_DEFAULT_FONT;
else if (fam == QStringLiteral("oem_fixed"))
f = OEM_FIXED_FONT;
+#endif
else if (fam.at(0) == QLatin1Char('#'))
f = fam.right(fam.length()-1).toInt();
hfont = (HFONT)GetStockObject(f);
@@ -1657,12 +1674,14 @@ QFontEngine *QWindowsFontDatabase::createEngine(int script, const QFontDef &requ
int strat = OUT_DEFAULT_PRECIS;
if (request.styleStrategy & QFont::PreferBitmap) {
strat = OUT_RASTER_PRECIS;
+#ifndef Q_OS_WINCE
} else if (request.styleStrategy & QFont::PreferDevice) {
strat = OUT_DEVICE_PRECIS;
} else if (request.styleStrategy & QFont::PreferOutline) {
strat = OUT_OUTLINE_PRECIS;
} else if (request.styleStrategy & QFont::ForceOutline) {
strat = OUT_TT_ONLY_PRECIS;
+#endif
}
lf.lfOutPrecision = strat;
@@ -1671,8 +1690,10 @@ QFontEngine *QWindowsFontDatabase::createEngine(int script, const QFontDef &requ
if (request.styleStrategy & QFont::PreferMatch)
qual = DRAFT_QUALITY;
+#ifndef Q_OS_WINCE
else if (request.styleStrategy & QFont::PreferQuality)
qual = PROOF_QUALITY;
+#endif
if (request.styleStrategy & QFont::PreferAntialias) {
if (QSysInfo::WindowsVersion >= QSysInfo::WV_XP) {
@@ -1733,10 +1754,17 @@ QFontEngine *QWindowsFontDatabase::createEngine(int script, const QFontDef &requ
qErrnoWarning("%s: CreateFontIndirect with stretch failed", __FUNCTION__);
}
+#ifndef Q_OS_WINCE
if (hfont == 0) {
hfont = (HFONT)GetStockObject(ANSI_VAR_FONT);
stockFont = true;
}
+#else
+ if (hfont == 0) {
+ hfont = (HFONT)GetStockObject(SYSTEM_FONT);
+ stockFont = true;
+ }
+#endif
}
#if !defined(QT_NO_DIRECTWRITE)
diff --git a/src/plugins/platforms/windows/qwindowsfontengine.cpp b/src/plugins/platforms/windows/qwindowsfontengine.cpp
index e367707ea3..801dba2e79 100644
--- a/src/plugins/platforms/windows/qwindowsfontengine.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontengine.cpp
@@ -70,6 +70,10 @@
#include <limits.h>
+#ifdef Q_OS_WINCE
+# include "qplatformfunctions_wince.h"
+#endif
+
QT_BEGIN_NAMESPACE
//### mingw needed define
@@ -199,6 +203,9 @@ int QWindowsFontEngine::getGlyphIndexes(const QChar *str, int numChars, QGlyphLa
int i = 0;
int glyph_pos = 0;
if (mirrored) {
+#if defined(Q_OS_WINCE)
+ {
+#else
if (symbol) {
for (; i < numChars; ++i, ++glyph_pos) {
unsigned int uc = getChar(str, i, numChars);
@@ -212,18 +219,26 @@ int QWindowsFontEngine::getGlyphIndexes(const QChar *str, int numChars, QGlyphLa
glyphs->glyphs[glyph_pos] = getTrueTypeGlyphIndex(cmap, QChar::mirroredChar(uc));
}
} else {
+#endif
wchar_t first = tm.tmFirstChar;
wchar_t last = tm.tmLastChar;
for (; i < numChars; ++i, ++glyph_pos) {
uint ucs = QChar::mirroredChar(getChar(str, i, numChars));
- if (ucs >= first && ucs <= last)
+ if (
+#ifdef Q_WS_WINCE
+ tm.tmFirstChar > 60000 ||
+#endif
+ ucs >= first && ucs <= last)
glyphs->glyphs[glyph_pos] = ucs;
else
glyphs->glyphs[glyph_pos] = 0;
}
}
} else {
+#if defined(Q_OS_WINCE)
+ {
+#else
if (symbol) {
for (; i < numChars; ++i, ++glyph_pos) {
unsigned int uc = getChar(str, i, numChars);
@@ -237,12 +252,17 @@ int QWindowsFontEngine::getGlyphIndexes(const QChar *str, int numChars, QGlyphLa
glyphs->glyphs[glyph_pos] = getTrueTypeGlyphIndex(cmap, uc);
}
} else {
+#endif
wchar_t first = tm.tmFirstChar;
wchar_t last = tm.tmLastChar;
for (; i < numChars; ++i, ++glyph_pos) {
uint uc = getChar(str, i, numChars);
- if (uc >= first && uc <= last)
+ if (
+#ifdef Q_WS_WINCE
+ tm.tmFirstChar > 60000 ||
+#endif
+ uc >= first && uc <= last)
glyphs->glyphs[glyph_pos] = uc;
else
glyphs->glyphs[glyph_pos] = 0;
@@ -353,8 +373,12 @@ bool QWindowsFontEngine::stringToCMap(const QChar *str, int len, QGlyphLayout *g
inline void calculateTTFGlyphWidth(HDC hdc, UINT glyph, int &width)
{
+#if defined(Q_OS_WINCE)
+ GetCharWidth32(hdc, glyph, glyph, &width);
+#else
if (ptrGetCharWidthI)
ptrGetCharWidthI(hdc, glyph, 1, 0, &width);
+#endif
}
void QWindowsFontEngine::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const
@@ -442,7 +466,7 @@ glyph_metrics_t QWindowsFontEngine::boundingBox(const QGlyphLayout &glyphs)
return glyph_metrics_t(0, -tm.tmAscent, w - lastRightBearing(glyphs), tm.tmHeight, w, 0);
}
-
+#ifndef Q_OS_WINCE
bool QWindowsFontEngine::getOutlineMetrics(glyph_t glyph, const QTransform &t, glyph_metrics_t *metrics) const
{
Q_ASSERT(metrics != 0);
@@ -494,9 +518,11 @@ bool QWindowsFontEngine::getOutlineMetrics(glyph_t glyph, const QTransform &t, g
return false;
}
}
+#endif
glyph_metrics_t QWindowsFontEngine::boundingBox(glyph_t glyph, const QTransform &t)
{
+#ifndef Q_OS_WINCE
HDC hdc = m_fontEngineData->hdc;
SelectObject(hdc, hfont);
@@ -514,6 +540,34 @@ glyph_metrics_t QWindowsFontEngine::boundingBox(glyph_t glyph, const QTransform
}
return glyphMetrics;
+#else
+ HDC hdc = m_fontEngineData->hdc;
+ HGDIOBJ oldFont = SelectObject(hdc, hfont);
+
+ ABC abc;
+ int width;
+ int advance;
+#ifdef GWES_MGTT // true type fonts
+ if (GetCharABCWidths(hdc, glyph, glyph, &abc)) {
+ width = qAbs(abc.abcA) + abc.abcB + qAbs(abc.abcC);
+ advance = abc.abcA + abc.abcB + abc.abcC;
+ }
+ else
+#endif
+#if defined(GWES_MGRAST) || defined(GWES_MGRAST2) // raster fonts
+ if (GetCharWidth32(hdc, glyph, glyph, &width)) {
+ advance = width;
+ }
+ else
+#endif
+ { // fallback
+ width = tm.tmMaxCharWidth;
+ advance = width;
+ }
+
+ SelectObject(hdc, oldFont);
+ return glyph_metrics_t(0, -tm.tmAscent, width, tm.tmHeight, advance, 0).transformed(t);
+#endif
}
QFixed QWindowsFontEngine::ascent() const
@@ -580,7 +634,9 @@ void QWindowsFontEngine::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qre
HDC hdc = m_fontEngineData->hdc;
SelectObject(hdc, hfont);
+#ifndef Q_OS_WINCE
if (ttf)
+#endif
{
ABC abcWidths;
GetCharABCWidthsI(hdc, glyph, 1, 0, &abcWidths);
@@ -588,9 +644,12 @@ void QWindowsFontEngine::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qre
*leftBearing = abcWidths.abcA;
if (rightBearing)
*rightBearing = abcWidths.abcC;
- } else {
+ }
+#ifndef Q_OS_WINCE
+ else {
QFontEngine::getGlyphBearings(glyph, leftBearing, rightBearing);
}
+#endif
}
#endif // Q_CC_MINGW
@@ -604,6 +663,7 @@ qreal QWindowsFontEngine::minLeftBearing() const
qreal QWindowsFontEngine::minRightBearing() const
{
+#ifndef Q_OS_WINCE
if (rbearing == SHRT_MIN) {
int ml = 0;
int mr = 0;
@@ -659,6 +719,40 @@ qreal QWindowsFontEngine::minRightBearing() const
}
return rbearing;
+#else // !Q_OS_WINCE
+ if (rbearing == SHRT_MIN) {
+ int ml = 0;
+ int mr = 0;
+ HDC hdc = m_fontEngineData->hdc;
+ SelectObject(hdc, hfont);
+ if (ttf) {
+ ABC *abc = 0;
+ int n = tm.tmLastChar - tm.tmFirstChar;
+ if (n <= max_font_count) {
+ abc = new ABC[n+1];
+ GetCharABCWidths(hdc, tm.tmFirstChar, tm.tmLastChar, abc);
+ } else {
+ abc = new ABC[char_table_entries+1];
+ for (int i = 0; i < char_table_entries; i++)
+ GetCharABCWidths(hdc, char_table[i], char_table[i], abc+i);
+ n = char_table_entries;
+ }
+ ml = abc[0].abcA;
+ mr = abc[0].abcC;
+ for (int i = 1; i < n; i++) {
+ if (abc[i].abcA + abc[i].abcB + abc[i].abcC != 0) {
+ ml = qMin(ml,abc[i].abcA);
+ mr = qMin(mr,abc[i].abcC);
+ }
+ }
+ delete [] abc;
+ }
+ lbearing = ml;
+ rbearing = mr;
+ }
+
+ return rbearing;
+#endif // Q_OS_WINCE
}
@@ -973,6 +1067,7 @@ QWindowsNativeImage *QWindowsFontEngine::drawGDIGlyph(HFONT font, glyph_t glyph,
bool has_transformation = t.type() > QTransform::TxTranslate;
+#ifndef Q_OS_WINCE
unsigned int options = ttf ? ETO_GLYPH_INDEX : 0;
XFORM xform;
@@ -1011,6 +1106,14 @@ QWindowsNativeImage *QWindowsFontEngine::drawGDIGlyph(HFONT font, glyph_t glyph,
SelectObject(hdc, old_font);
ReleaseDC(0, hdc);
}
+#else // else wince
+ unsigned int options = 0;
+#ifdef DEBUG
+ Q_ASSERT(!has_transformation);
+#else
+ Q_UNUSED(has_transformation);
+#endif
+#endif // wince
QWindowsNativeImage *ni = new QWindowsNativeImage(iw + 2 * margin + 4,
ih + 2 * margin + 4,
QWindowsNativeImage::systemFormat());
@@ -1030,11 +1133,13 @@ QWindowsNativeImage *QWindowsFontEngine::drawGDIGlyph(HFONT font, glyph_t glyph,
HGDIOBJ old_font = SelectObject(hdc, font);
+#ifndef Q_OS_WINCE
if (has_transformation) {
SetGraphicsMode(hdc, GM_ADVANCED);
SetWorldTransform(hdc, &xform);
ExtTextOut(hdc, 0, 0, options, 0, (LPCWSTR) &glyph, 1, 0);
} else
+#endif // !Q_OS_WINCE
{
ExtTextOut(hdc, -gx + margin, -gy + margin, options, 0, (LPCWSTR) &glyph, 1, 0);
}
diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp
index 255cf1454c..d46c138c96 100644
--- a/src/plugins/platforms/windows/qwindowsintegration.cpp
+++ b/src/plugins/platforms/windows/qwindowsintegration.cpp
@@ -43,20 +43,24 @@
#include "qwindowsbackingstore.h"
#include "qwindowswindow.h"
#include "qwindowscontext.h"
-#include "qwindowsglcontext.h"
+#ifndef QT_NO_OPENGL
+# include "qwindowsglcontext.h"
+#endif
#include "qwindowsscreen.h"
#include "qwindowstheme.h"
#include "qwindowsservices.h"
#ifndef QT_NO_FREETYPE
-#include "qwindowsfontdatabase_ft.h"
+# include "qwindowsfontdatabase_ft.h"
#endif
#include "qwindowsfontdatabase.h"
#include "qwindowsguieventdispatcher.h"
-#include "qwindowsclipboard.h"
+#ifndef QT_NO_CLIPBOARD
+# include "qwindowsclipboard.h"
+#endif
#include "qwindowsdrag.h"
#include "qwindowsinputcontext.h"
#include "qwindowskeymapper.h"
-#ifndef QT_NO_ACCESSIBILITY
+# ifndef QT_NO_ACCESSIBILITY
#include "accessible/qwindowsaccessibility.h"
#endif
@@ -89,7 +93,9 @@ class QWindowsNativeInterface : public QPlatformNativeInterface
{
Q_OBJECT
public:
+#ifndef QT_NO_OPENGL
virtual void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context);
+#endif
virtual void *nativeResourceForWindow(const QByteArray &resource, QWindow *window);
virtual void *nativeResourceForBackingStore(const QByteArray &resource, QBackingStore *bs);
virtual EventFilter setEventFilter(const QByteArray &eventType, EventFilter filter)
@@ -134,6 +140,7 @@ void *QWindowsNativeInterface::nativeResourceForBackingStore(const QByteArray &r
return 0;
}
+#ifndef QT_NO_OPENGL
void *QWindowsNativeInterface::nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context)
{
if (!context || !context->handle()) {
@@ -147,6 +154,7 @@ void *QWindowsNativeInterface::nativeResourceForContext(const QByteArray &resour
qWarning("%s: Invalid key '%s' requested.", __FUNCTION__, resource.constData());
return 0;
}
+#endif // !QT_NO_OPENGL
/*!
\brief Creates a non-visible window handle for filtering messages.
@@ -171,7 +179,9 @@ void *QWindowsNativeInterface::createMessageWindow(const QString &classNameTempl
struct QWindowsIntegrationPrivate
{
+#ifndef QT_NO_OPENGL
typedef QSharedPointer<QOpenGLStaticContext> QOpenGLStaticContextPtr;
+#endif
QWindowsIntegrationPrivate();
~QWindowsIntegrationPrivate();
@@ -179,10 +189,14 @@ struct QWindowsIntegrationPrivate
QWindowsContext m_context;
QPlatformFontDatabase *m_fontDatabase;
QWindowsNativeInterface m_nativeInterface;
+#ifndef QT_NO_CLIPBOARD
QWindowsClipboard m_clipboard;
+#endif
QWindowsDrag m_drag;
QWindowsGuiEventDispatcher *m_eventDispatcher;
+#ifndef QT_NO_OPENGL
QOpenGLStaticContextPtr m_staticOpenGLContext;
+#endif
QWindowsInputContext m_inputContext;
#ifndef QT_NO_ACCESSIBILITY
QWindowsAccessibility m_accessibility;
@@ -205,7 +219,9 @@ QWindowsIntegration::QWindowsIntegration() :
d(new QWindowsIntegrationPrivate)
{
QGuiApplicationPrivate::instance()->setEventDispatcher(d->m_eventDispatcher);
+#ifndef QT_NO_CLIPBOARD
d->m_clipboard.registerViewer();
+#endif
d->m_context.screenManager().handleScreenChanges();
}
@@ -220,10 +236,12 @@ bool QWindowsIntegration::hasCapability(QPlatformIntegration::Capability cap) co
switch (cap) {
case ThreadedPixmaps:
return true;
+#ifndef QT_NO_OPENGL
case OpenGL:
return true;
case ThreadedOpenGL:
return true;
+#endif
default:
return QPlatformIntegration::hasCapability(cap);
}
@@ -267,6 +285,7 @@ QPlatformBackingStore *QWindowsIntegration::createPlatformBackingStore(QWindow *
return new QWindowsBackingStore(window);
}
+#ifndef QT_NO_OPENGL
QPlatformOpenGLContext
*QWindowsIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const
{
@@ -280,6 +299,7 @@ QPlatformOpenGLContext
return result.take();
return 0;
}
+#endif // !QT_NO_OPENGL
/* Workaround for QTBUG-24205: In 'Auto', pick the FreeType engine for
* QML2 applications. */
@@ -319,6 +339,7 @@ QPlatformFontDatabase *QWindowsIntegration::fontDatabase() const
return d->m_fontDatabase;
}
+#ifdef SPI_GETKEYBOARDSPEED
static inline int keyBoardAutoRepeatRateMS()
{
DWORD time = 0;
@@ -326,6 +347,7 @@ static inline int keyBoardAutoRepeatRateMS()
return time ? 1000 / static_cast<int>(time) : 500;
return 30;
}
+#endif
QVariant QWindowsIntegration::styleHint(QPlatformIntegration::StyleHint hint) const
{
@@ -334,8 +356,10 @@ QVariant QWindowsIntegration::styleHint(QPlatformIntegration::StyleHint hint) co
if (const unsigned timeMS = GetCaretBlinkTime())
return QVariant(int(timeMS));
break;
+#ifdef SPI_GETKEYBOARDSPEED
case KeyboardAutoRepeatRate:
return QVariant(keyBoardAutoRepeatRateMS());
+#endif
case QPlatformIntegration::StartDragTime:
case QPlatformIntegration::StartDragDistance:
case QPlatformIntegration::MouseDoubleClickInterval:
@@ -358,10 +382,12 @@ QPlatformNativeInterface *QWindowsIntegration::nativeInterface() const
return &d->m_nativeInterface;
}
+#ifndef QT_NO_CLIPBOARD
QPlatformClipboard * QWindowsIntegration::clipboard() const
{
return &d->m_clipboard;
}
+#endif // !QT_NO_CLIPBOARD
QPlatformDrag *QWindowsIntegration::drag() const
{
diff --git a/src/plugins/platforms/windows/qwindowsintegration.h b/src/plugins/platforms/windows/qwindowsintegration.h
index 76393be402..ecae46321e 100644
--- a/src/plugins/platforms/windows/qwindowsintegration.h
+++ b/src/plugins/platforms/windows/qwindowsintegration.h
@@ -42,6 +42,7 @@
#ifndef QWINDOWSINTEGRATION_H
#define QWINDOWSINTEGRATION_H
+#include <QtCore/qconfig.h>
#include <qpa/qplatformintegration.h>
#include <QtCore/QScopedPointer>
@@ -60,10 +61,13 @@ public:
virtual QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const;
QPlatformWindow *createPlatformWindow(QWindow *window) const;
QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const;
+#ifndef QT_NO_OPENGL
virtual QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const;
+#endif
virtual QAbstractEventDispatcher *guiThreadEventDispatcher() const;
-
+#ifndef QT_NO_CLIPBOARD
virtual QPlatformClipboard *clipboard() const;
+#endif
virtual QPlatformDrag *drag() const;
virtual QPlatformInputContext *inputContext() const;
#ifndef QT_NO_ACCESSIBILITY
diff --git a/src/plugins/platforms/windows/qwindowsinternalmimedata.cpp b/src/plugins/platforms/windows/qwindowsinternalmimedata.cpp
new file mode 100644
index 0000000000..9bed609fb8
--- /dev/null
+++ b/src/plugins/platforms/windows/qwindowsinternalmimedata.cpp
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qwindowsinternalmimedata.h"
+#include "qwindowscontext.h"
+#include "qplatformfunctions_wince.h"
+#include "qwindowsmime.h"
+#include <QDebug>
+/*!
+ \class QWindowsInternalMimeDataBase
+ \brief Base for implementations of QInternalMimeData using a IDataObject COM object.
+
+ In clipboard handling and Drag and drop, static instances
+ of QInternalMimeData implementations are kept and passed to the client.
+
+ QInternalMimeData provides virtuals that query the formats and retrieve
+ mime data on demand when the client invokes functions like QMimeData::hasHtml(),
+ QMimeData::html() on the instance returned. Otherwise, expensive
+ construction of a new QMimeData object containing all possible
+ formats would have to be done in each call to mimeData().
+
+ The base class introduces new virtuals to obtain and release
+ the instances IDataObject from the clipboard or Drag and Drop and
+ does conversion using QWindowsMime classes.
+
+ \sa QInternalMimeData, QWindowsMime, QWindowsMimeConverter
+ \ingroup qt-lighthouse-win
+*/
+
+bool QWindowsInternalMimeData::hasFormat_sys(const QString &mime) const
+{
+ IDataObject *pDataObj = retrieveDataObject();
+ if (!pDataObj)
+ return false;
+
+ const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
+ const bool has = mc.converterToMime(mime, pDataObj) != 0;
+ releaseDataObject(pDataObj);
+ if (QWindowsContext::verboseOLE)
+ qDebug() << __FUNCTION__ << mime << has;
+ return has;
+}
+
+QStringList QWindowsInternalMimeData::formats_sys() const
+{
+ IDataObject *pDataObj = retrieveDataObject();
+ if (!pDataObj)
+ return QStringList();
+
+ const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
+ const QStringList fmts = mc.allMimesForFormats(pDataObj);
+ releaseDataObject(pDataObj);
+ if (QWindowsContext::verboseOLE)
+ qDebug() << __FUNCTION__ << fmts;
+ return fmts;
+}
+
+QVariant QWindowsInternalMimeData::retrieveData_sys(const QString &mimeType,
+ QVariant::Type type) const
+{
+ IDataObject *pDataObj = retrieveDataObject();
+ if (!pDataObj)
+ return QVariant();
+
+ QVariant result;
+ const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
+ if (const QWindowsMime *converter = mc.converterToMime(mimeType, pDataObj))
+ result = converter->convertToMime(mimeType, pDataObj, type);
+ releaseDataObject(pDataObj);
+ if (QWindowsContext::verboseOLE) {
+ QDebug nospace = qDebug().nospace();
+ nospace << __FUNCTION__ << ' ' << mimeType << ' ' << type
+ << " returns " << result.type();
+ if (result.type() != QVariant::ByteArray)
+ nospace << ' ' << result;
+ }
+ return result;
+}
diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp
index 4b5e95824a..25d3d43bfb 100644
--- a/src/plugins/platforms/windows/qwindowskeymapper.cpp
+++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp
@@ -444,6 +444,34 @@ inline int winceKeyBend(int keyCode)
return KeyTbl[keyCode];
}
+#ifdef Q_OS_WINCE
+QT_BEGIN_INCLUDE_NAMESPACE
+int ToUnicode(UINT vk, int /*scancode*/, unsigned char* /*kbdBuffer*/, LPWSTR unicodeBuffer, int, int)
+{
+ QT_USE_NAMESPACE
+ QChar* buf = reinterpret_cast< QChar*>(unicodeBuffer);
+ if (KeyTbl[vk] == 0) {
+ buf[0] = vk;
+ return 1;
+ }
+ return 0;
+}
+
+int ToAscii(UINT vk, int scancode, unsigned char *kbdBuffer, LPWORD unicodeBuffer, int flag)
+{
+ return ToUnicode(vk, scancode, kbdBuffer, (LPWSTR) unicodeBuffer, 0, flag);
+
+}
+
+bool GetKeyboardState(unsigned char* kbuffer)
+{
+ for (int i=0; i< 256; ++i)
+ kbuffer[i] = GetAsyncKeyState(i);
+ return true;
+}
+QT_END_INCLUDE_NAMESPACE
+#endif // Q_OS_WINCE
+
// Translate a VK into a Qt key code, or unicode character
static inline int toKeyOrUnicode(int vk, int scancode, unsigned char *kbdBuffer, bool *isDeadkey = 0)
{
@@ -672,6 +700,7 @@ static void showSystemMenu(QWindow* w)
if (!menu)
return; // no menu for this window
+#ifndef Q_OS_WINCE
#define enabled (MF_BYCOMMAND | MF_ENABLED)
#define disabled (MF_BYCOMMAND | MF_GRAYED)
@@ -696,6 +725,7 @@ static void showSystemMenu(QWindow* w)
#undef enabled
#undef disabled
+#endif // !Q_OS_WINCE
const int ret = TrackPopupMenuEx(menu,
TPM_LEFTALIGN | TPM_TOPALIGN | TPM_NONOTIFY | TPM_RETURNCMD,
topLevel->geometry().x(), topLevel->geometry().y(),
@@ -1014,6 +1044,7 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms
Qt::KeyboardModifier(state), scancode, msg.wParam, nModifiers, text, false, 0);
result =true;
bool store = true;
+#ifndef Q_OS_WINCE
// Alt+<alphanumerical> go to the Win32 menu system if unhandled by Qt
if (msgType == WM_SYSKEYDOWN && !result && a) {
HWND parent = GetParent(QWindowsWindow::handleOf(receiver));
@@ -1027,6 +1058,7 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms
parent = GetParent(parent);
}
}
+#endif // !Q_OS_WINCE
if (!store)
key_recorder.findKey(msg.wParam, true);
}
@@ -1055,6 +1087,7 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms
Qt::KeyboardModifier(state), scancode, msg.wParam, nModifiers,
(rec ? rec->text : QString()), false, 0);
result = true;
+#ifndef Q_OS_WINCE
// don't pass Alt to Windows unless we are embedded in a non-Qt window
if (code == Qt::Key_Alt) {
const QWindowsContext *context = QWindowsContext::instance();
@@ -1067,6 +1100,7 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms
parent = GetParent(parent);
}
}
+#endif
}
}
return result;
diff --git a/src/plugins/platforms/windows/qwindowsmousehandler.cpp b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
index 63c2444957..f866f689b3 100644
--- a/src/plugins/platforms/windows/qwindowsmousehandler.cpp
+++ b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
@@ -164,6 +164,7 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
if (QWindowsContext::verboseEvents)
qDebug() << "Entering " << window;
QWindowsWindow::baseWindowOf(window)->applyCursor();
+#ifndef Q_OS_WINCE
QWindowSystemInterface::handleEnterEvent(window);
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(TRACKMOUSEEVENT);
@@ -172,6 +173,7 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
tme.dwHoverTime = HOVER_DEFAULT; //
if (!TrackMouseEvent(&tme))
qWarning("TrackMouseEvent failed.");
+#endif // !Q_OS_WINCE
}
QWindowSystemInterface::handleMouseEvent(window, client,
QWindowsGeometryHint::mapToGlobal(hwnd, client),
@@ -220,6 +222,7 @@ bool QWindowsMouseHandler::translateTouchEvent(QWindow *window, HWND,
QtWindows::WindowsEventType,
MSG msg, LRESULT *)
{
+#ifndef Q_OS_WINCE
typedef QWindowSystemInterface::TouchPoint QTouchPoint;
typedef QList<QWindowSystemInterface::TouchPoint> QTouchPointList;
@@ -289,6 +292,9 @@ bool QWindowsMouseHandler::translateTouchEvent(QWindow *window, HWND,
m_touchDevice,
touchPoints);
return true;
+#else
+ return false;
+#endif
}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/windows/qwindowsnativeimage.cpp b/src/plugins/platforms/windows/qwindowsnativeimage.cpp
index 8f727c6168..9cd30dff15 100644
--- a/src/plugins/platforms/windows/qwindowsnativeimage.cpp
+++ b/src/plugins/platforms/windows/qwindowsnativeimage.cpp
@@ -127,7 +127,9 @@ QWindowsNativeImage::QWindowsNativeImage(int width, int height,
m_image = QImage(width, height, format);
}
+#ifndef Q_OS_WINCE
GdiFlush();
+#endif
}
QWindowsNativeImage::~QWindowsNativeImage()
diff --git a/src/plugins/platforms/windows/qwindowsscreen.cpp b/src/plugins/platforms/windows/qwindowsscreen.cpp
index cc694fe0ea..0c24ff7aa6 100644
--- a/src/plugins/platforms/windows/qwindowsscreen.cpp
+++ b/src/plugins/platforms/windows/qwindowsscreen.cpp
@@ -99,7 +99,14 @@ BOOL QT_WIN_CALLBACK monitorEnumCallback(HMONITOR hMonitor, HDC, LPRECT, LPARAM
WindowsScreenDataList *result = reinterpret_cast<WindowsScreenDataList *>(p);
QWindowsScreenData data;
data.geometry = QRect(QPoint(info.rcMonitor.left, info.rcMonitor.top), QPoint(info.rcMonitor.right - 1, info.rcMonitor.bottom - 1));
- if (HDC hdc = CreateDC(info.szDevice, NULL, NULL, NULL)) {
+#ifdef Q_OS_WINCE
+ //Windows CE, just supports one Display and expects to get only DISPLAY,
+ //instead of DISPLAY0 and so on, which are passed by info.szDevice
+ HDC hdc = CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);
+#else
+ HDC hdc = CreateDC(info.szDevice, NULL, NULL, NULL);
+#endif
+ if (hdc) {
data.dpi = deviceDPI(hdc);
data.depth = GetDeviceCaps(hdc, BITSPIXEL);
data.format = data.depth == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32;
diff --git a/src/plugins/platforms/windows/qwindowsscreen.h b/src/plugins/platforms/windows/qwindowsscreen.h
index 615d4faf15..b34d592de0 100644
--- a/src/plugins/platforms/windows/qwindowsscreen.h
+++ b/src/plugins/platforms/windows/qwindowsscreen.h
@@ -43,6 +43,9 @@
#define QWINDOWSSCREEN_H
#include "qwindowscursor.h"
+#ifdef Q_OS_WINCE
+# include "qplatformfunctions_wince.h"
+#endif
#include <QtCore/QList>
#include <QtCore/QPair>
diff --git a/src/plugins/platforms/windows/qwindowsservices.cpp b/src/plugins/platforms/windows/qwindowsservices.cpp
index 905a1bd12c..a2688a1d61 100644
--- a/src/plugins/platforms/windows/qwindowsservices.cpp
+++ b/src/plugins/platforms/windows/qwindowsservices.cpp
@@ -46,7 +46,9 @@
#include <QtCore/QDebug>
#include <shlobj.h>
-#include <intshcut.h>
+#ifndef Q_OS_WINCE
+# include <intshcut.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -54,6 +56,7 @@ enum { debug = 0 };
static inline bool shellExecute(const QString &file)
{
+#ifndef Q_OS_WINCE
const quintptr result = (quintptr)ShellExecute(0, 0, (wchar_t*)file.utf16(), 0, 0, SW_SHOWNORMAL);
// ShellExecute returns a value greater than 32 if successful
if (result <= 32) {
@@ -61,6 +64,10 @@ static inline bool shellExecute(const QString &file)
return false;
}
return true;
+#else
+ Q_UNUSED(file)
+ return false;
+#endif
}
// Retrieve the commandline for the default mail client. It contains a
@@ -95,9 +102,13 @@ static inline QString mailCommand()
}
if (!command[0])
return QString();
+#ifndef Q_OS_WINCE
wchar_t expandedCommand[MAX_PATH] = {0};
return ExpandEnvironmentStrings(command, expandedCommand, MAX_PATH) ?
QString::fromWCharArray(expandedCommand) : QString::fromWCharArray(command);
+#else
+ return QString();
+#endif
}
static inline bool launchMail(const QUrl &url)
diff --git a/src/plugins/platforms/windows/qwindowstheme.cpp b/src/plugins/platforms/windows/qwindowstheme.cpp
index 63ed20eeef..0feb62dcea 100644
--- a/src/plugins/platforms/windows/qwindowstheme.cpp
+++ b/src/plugins/platforms/windows/qwindowstheme.cpp
@@ -45,6 +45,10 @@
#include "qwindowsintegration.h"
#include "qt_windows.h"
#include "qwindowsfontdatabase.h"
+#ifdef Q_OS_WINCE
+# include "qplatformfunctions_wince.h"
+# include "winuser.h"
+#endif
#include <QtCore/QVariant>
#include <QtCore/QCoreApplication>
@@ -226,8 +230,13 @@ static inline QPalette menuPalette(const QPalette &systemPalette)
result.setColor(QPalette::Active, QPalette::ButtonText, menuTextColor);
result.setColor(QPalette::Disabled, QPalette::WindowText, disabled);
result.setColor(QPalette::Disabled, QPalette::Text, disabled);
+#ifndef Q_OS_WINCE
result.setColor(QPalette::Disabled, QPalette::Highlight,
getSysColor(isFlat ? COLOR_MENUHILIGHT : COLOR_HIGHLIGHT));
+#else
+ result.setColor(QPalette::Disabled, QPalette::Highlight,
+ getSysColor(COLOR_HIGHLIGHT));
+#endif
result.setColor(QPalette::Disabled, QPalette::HighlightedText, disabled);
result.setColor(QPalette::Disabled, QPalette::Button,
result.color(QPalette::Active, QPalette::Button));
@@ -253,7 +262,11 @@ static inline QPalette *menuBarPalette(const QPalette &menuPalette)
QPalette *result = 0;
if (booleanSystemParametersInfo(SPI_GETFLATMENU, false)) {
result = new QPalette(menuPalette);
+#ifndef Q_OS_WINCE
const QColor menubar(getSysColor(COLOR_MENUBAR));
+#else
+ const QColor menubar(getSysColor(COLOR_MENU));
+#endif
result->setColor(QPalette::Active, QPalette::Button, menubar);
result->setColor(QPalette::Disabled, QPalette::Button, menubar);
result->setColor(QPalette::Inactive, QPalette::Button, menubar);
@@ -323,10 +336,12 @@ QVariant QWindowsTheme::themeHint(ThemeHint hint) const
return QVariant(iconThemeSearchPaths());
case StyleNames:
return QVariant(styleNames());
+#ifndef Q_OS_WINCE
case TextCursorWidth:
return QVariant(int(dWordSystemParametersInfo(SPI_GETCARETWIDTH, 1u)));
case DropShadow:
return QVariant(booleanSystemParametersInfo(SPI_GETDROPSHADOW, false));
+#endif // !Q_OS_WINCE
case MaximumScrollBarDragDistance:
return QVariant(qRound(qreal(QWindowsContext::instance()->defaultDPI()) * 1.375));
case KeyboardScheme:
@@ -368,6 +383,7 @@ void QWindowsTheme::clearFonts()
void QWindowsTheme::refreshFonts()
{
+#ifndef Q_OS_WINCE // ALL THIS FUNCTIONALITY IS MISSING ON WINCE
clearFonts();
if (!QGuiApplication::desktopSettingsAware())
return;
@@ -398,6 +414,7 @@ void QWindowsTheme::refreshFonts()
qDebug() << __FUNCTION__ << '\n'
<< " menuFont=" << menuFont
<< " messageBox=" << MessageBoxFont;
+#endif // !Q_OS_WINCE
}
bool QWindowsTheme::usePlatformNativeDialog(DialogType type) const
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index c300f0f5a9..ca23623dc1 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -112,6 +112,7 @@ static QByteArray debugWindowStates(Qt::WindowStates s)
return rc;
}
+#ifndef Q_OS_WINCE // maybe available on some SDKs revisit WM_GETMINMAXINFO
QDebug operator<<(QDebug d, const MINMAXINFO &i)
{
d.nospace() << "MINMAXINFO maxSize=" << i.ptMaxSize.x << ','
@@ -122,6 +123,7 @@ QDebug operator<<(QDebug d, const MINMAXINFO &i)
<< i.ptMaxTrackSize.y;
return d;
}
+#endif // !Q_OS_WINCE
static inline QSize qSizeOfRect(const RECT &rect)
{
@@ -148,6 +150,7 @@ QDebug operator<<(QDebug d, const RECT &r)
return d;
}
+#ifndef Q_OS_WINCE // maybe available on some SDKs revisit WM_NCCALCSIZE
QDebug operator<<(QDebug d, const NCCALCSIZE_PARAMS &p)
{
qDebug().nospace() << "NCCALCSIZE_PARAMS "
@@ -156,6 +159,7 @@ QDebug operator<<(QDebug d, const NCCALCSIZE_PARAMS &p)
<< qrectFromRECT(p.rgrc[2]);
return d;
}
+#endif // !Q_OS_WINCE
// Return the frame geometry relative to the parent
// if there is one.
@@ -507,6 +511,7 @@ QMargins QWindowsGeometryHint::frame(DWORD style, DWORD exStyle)
return result;
}
+#ifndef Q_OS_WINCE
void QWindowsGeometryHint::applyToMinMaxInfo(HWND hwnd, MINMAXINFO *mmi) const
{
return applyToMinMaxInfo(GetWindowLong(hwnd, GWL_STYLE),
@@ -541,6 +546,7 @@ void QWindowsGeometryHint::applyToMinMaxInfo(DWORD style, DWORD exStyle, MINMAXI
<< " frame=" << margins << ' ' << frameWidth << ',' << frameHeight
<< " out " << *mmi;
}
+#endif // !Q_OS_WINCE
bool QWindowsGeometryHint::positionIncludesFrame(const QWindow *w)
{
@@ -1264,6 +1270,9 @@ void QWindowsWindow::setOpacity(qreal level)
void QWindowsWindow::setOpacity_sys(qreal level) const
{
+#ifdef Q_OS_WINCE // maybe needs revisit WS_EX_LAYERED
+ Q_UNUSED(level);
+#else
const long wl = GetWindowLong(m_data.hwnd, GWL_EXSTYLE);
const bool isOpaque = level == 1.0;
@@ -1280,6 +1289,7 @@ void QWindowsWindow::setOpacity_sys(qreal level) const
QWindowsContext::user32dll.setLayeredWindowAttributes(m_data.hwnd, 0, (int)(level * 255), LWA_ALPHA);
}
}
+#endif // !Q_OS_WINCE
}
void QWindowsWindow::requestActivateWindow()
@@ -1340,6 +1350,7 @@ void QWindowsWindow::setMouseGrabEnabled_sys(bool grab)
}
}
+#ifndef Q_OS_WINCE // maybe available on some SDKs revisit WM_GETMINMAXINFO
void QWindowsWindow::getSizeHints(MINMAXINFO *mmi) const
{
const QWindowsGeometryHint hint(window());
@@ -1347,6 +1358,7 @@ void QWindowsWindow::getSizeHints(MINMAXINFO *mmi) const
if (QWindowsContext::verboseWindows)
qDebug() << __FUNCTION__ << window() << *mmi;
}
+#endif // !Q_OS_WINCE
/*!
\brief Applies to cursor property set on the window to the global cursor.
@@ -1392,6 +1404,7 @@ QWindowsWindow *QWindowsWindow::childAt(const QPoint &clientPoint, unsigned cwex
return 0;
}
+#ifndef Q_OS_WINCE
void QWindowsWindow::alertWindow(int durationMs)
{
DWORD timeOutMs = GetCaretBlinkTime();
@@ -1417,6 +1430,7 @@ void QWindowsWindow::stopAlertWindow()
info.uCount = 0;
FlashWindowEx(&info);
}
+#endif // !Q_OS_WINCE
bool QWindowsWindow::isEnabled() const
{
diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h
index 64fd78d1ce..b558252968 100644
--- a/src/plugins/platforms/windows/qwindowswindow.h
+++ b/src/plugins/platforms/windows/qwindowswindow.h
@@ -43,6 +43,9 @@
#define QWINDOWSWINDOW_H
#include "qtwindows_additional.h"
+#ifdef Q_OS_WINCE
+# include "qplatformfunctions_wince.h"
+#endif
#include "qwindowscursor.h"
#include <qpa/qplatformwindow.h>
@@ -57,8 +60,10 @@ struct QWindowsGeometryHint
QWindowsGeometryHint() {}
explicit QWindowsGeometryHint(const QWindow *w);
static QMargins frame(DWORD style, DWORD exStyle);
+#ifndef Q_OS_WINCE //MinMax maybe define struct if not available
void applyToMinMaxInfo(DWORD style, DWORD exStyle, MINMAXINFO *mmi) const;
void applyToMinMaxInfo(HWND hwnd, MINMAXINFO *mmi) const;
+#endif
bool validSize(const QSize &s) const;
static inline QPoint mapToGlobal(HWND hwnd, const QPoint &);
@@ -76,9 +81,10 @@ struct QWindowCreationContext
{
QWindowCreationContext(const QWindow *w, const QRect &r,
DWORD style, DWORD exStyle);
-
+#ifndef Q_OS_WINCE //MinMax maybe define struct if not available
void applyToMinMaxInfo(MINMAXINFO *mmi) const
{ geometryHint.applyToMinMaxInfo(style, exStyle, mmi); }
+#endif
QWindowsGeometryHint geometryHint;
DWORD style;
@@ -176,8 +182,9 @@ public:
HDC getDC();
void releaseDC();
-
+#ifndef Q_OS_WINCE // maybe available on some SDKs revisit WM_GETMINMAXINFO
void getSizeHints(MINMAXINFO *mmi) const;
+#endif
QWindowsWindowCursor cursor() const { return m_cursor; }
void setCursor(const QWindowsWindowCursor &c);
@@ -197,8 +204,10 @@ public:
void setEnabled(bool enabled);
bool isEnabled() const;
+#ifndef Q_OS_WINCE
void alertWindow(int durationMs = 0);
void stopAlertWindow();
+#endif
private:
inline void show_sys() const;
@@ -242,8 +251,10 @@ inline QRect operator-(const QRect &r, const QMargins &m)
// Debug
QDebug operator<<(QDebug d, const RECT &r);
+#ifndef Q_OS_WINCE // maybe available on some SDKs revisit WM_GETMINMAXINFO/WM_NCCALCSIZE
QDebug operator<<(QDebug d, const MINMAXINFO &i);
QDebug operator<<(QDebug d, const NCCALCSIZE_PARAMS &p);
+#endif
// ---------- QWindowsGeometryHint inline functions.
QPoint QWindowsGeometryHint::mapToGlobal(HWND hwnd, const QPoint &qp)
diff --git a/src/plugins/platforms/windows/windows.pro b/src/plugins/platforms/windows/windows.pro
index 63275d3402..5fcf9bfcc9 100644
--- a/src/plugins/platforms/windows/windows.pro
+++ b/src/plugins/platforms/windows/windows.pro
@@ -9,11 +9,13 @@ INCLUDEPATH += ../../../3rdparty/harfbuzz/src
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
# Note: OpenGL32 must precede Gdi32 as it overwrites some functions.
-LIBS *= -lOpenGL32 -lGdi32 -lUser32 -lOle32 -lWinspool -lImm32 -lWinmm -lOleaut32
+LIBS *= -lole32
+!wince*:LIBS *= -lgdi32 -luser32 -lwinspool -limm32 -lwinmm -loleaut32
+contains(QT_CONFIG, opengl):LIBS *= -lOpenGL32
win32-g++: LIBS *= -luuid
# For the dialog helpers:
-LIBS *= -lshlwapi -lShell32
-LIBS *= -lAdvapi32
+!wince*:LIBS *= -lshlwapi -lshell32
+!wince*:LIBS *= -ladvapi32
DEFINES *= QT_NO_CAST_FROM_ASCII
@@ -38,11 +40,10 @@ SOURCES += \
qwindowsfontdatabase.cpp \
qwindowsmousehandler.cpp \
qwindowsguieventdispatcher.cpp \
- qwindowsglcontext.cpp \
- qwindowsclipboard.cpp \
qwindowsole.cpp \
qwindowsmime.cpp \
qwindowsdrag.cpp \
+ qwindowsinternalmimedata.cpp \
qwindowscursor.cpp \
qwindowsinputcontext.cpp \
qwindowstheme.cpp \
@@ -63,8 +64,6 @@ HEADERS += \
qwindowsguieventdispatcher.h \
qtwindowsglobal.h \
qtwindows_additional.h \
- qwindowsglcontext.h \
- qwindowsclipboard.h \
qwindowsole.h \
qwindowsmime.h \
qwindowsdrag.h \
@@ -74,7 +73,18 @@ HEADERS += \
qwindowsinputcontext.h \
qwindowstheme.h \
qwindowsdialoghelpers.h \
- qwindowsservices.h
+ qwindowsservices.h \
+ qplatformfunctions_wince.h
+
+contains(QT_CONFIG, opengl) {
+ SOURCES += qwindowsglcontext.cpp
+ HEADERS += qwindowsglcontext.h
+}
+
+!contains( DEFINES, QT_NO_CLIPBOARD ) {
+ SOURCES += qwindowsclipboard.cpp
+ HEADERS += qwindowsclipboard.h
+}
# Enable access to HB_Face in harfbuzz includes included by qfontengine_p.h.
DEFINES *= QT_COMPILES_IN_HARFBUZZ