From 3db4aa27685d61cd190815126700397fb9b28cda Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Thu, 12 Sep 2013 18:03:19 +0200 Subject: Make QtWin a Q_GADGET to expose the enums to the meta-system This allows us to use the QtWin enums in QML. Change-Id: I62cd21d850a9c2222ce901f166ab99859164a7fd Reviewed-by: Ivan Vizir Reviewed-by: Caroline Chao Reviewed-by: Laszlo Papp Reviewed-by: Joerg Bornemann --- src/winextras/qwinfunctions.h | 346 +++++++++++++++++++++--------------------- 1 file changed, 171 insertions(+), 175 deletions(-) diff --git a/src/winextras/qwinfunctions.h b/src/winextras/qwinfunctions.h index c32e84a..758fa2c 100644 --- a/src/winextras/qwinfunctions.h +++ b/src/winextras/qwinfunctions.h @@ -49,6 +49,9 @@ #include #include #include +#ifdef QT_WIDGETS_LIB +#include +#endif QT_BEGIN_NAMESPACE @@ -60,186 +63,179 @@ class QWindow; class QString; class QMargins; -namespace QtWin +class Q_WINEXTRAS_EXPORT QtWin { - -enum HBitmapFormat -{ - HBitmapNoAlpha, - HBitmapPremultipliedAlpha, - HBitmapAlpha -}; - -HBITMAP Q_WINEXTRAS_EXPORT createMask(const QBitmap &bitmap); -HBITMAP Q_WINEXTRAS_EXPORT toHBITMAP(const QPixmap &p, HBitmapFormat format = HBitmapNoAlpha); -QPixmap Q_WINEXTRAS_EXPORT fromHBITMAP(HBITMAP bitmap, HBitmapFormat format = HBitmapNoAlpha); -HICON Q_WINEXTRAS_EXPORT toHICON(const QPixmap &p); -QImage Q_WINEXTRAS_EXPORT imageFromHBITMAP(HDC hdc, HBITMAP bitmap, int width, int height); -QPixmap Q_WINEXTRAS_EXPORT fromHICON(HICON icon); -HRGN Q_WINEXTRAS_EXPORT toHRGN(const QRegion ®ion); -QRegion Q_WINEXTRAS_EXPORT fromHRGN(HRGN hrgn); - -QString Q_WINEXTRAS_EXPORT stringFromHresult(HRESULT hresult); -QString Q_WINEXTRAS_EXPORT errorStringFromHresult(HRESULT hresult); - -enum WindowFlip3DPolicy -{ - FlipDefault, - FlipExcludeBelow, - FlipExcludeAbove -}; - -QColor Q_WINEXTRAS_EXPORT colorizationColor(bool *opaqueBlend = 0); -QColor Q_WINEXTRAS_EXPORT realColorizationColor(); - -void Q_WINEXTRAS_EXPORT setWindowExcludedFromPeek(QWindow *window, bool exclude); -bool Q_WINEXTRAS_EXPORT isWindowExcludedFromPeek(QWindow *window); -void Q_WINEXTRAS_EXPORT setWindowDisallowPeek(QWindow *window, bool disallow); -bool Q_WINEXTRAS_EXPORT isWindowPeekDisallowed(QWindow *window); -void Q_WINEXTRAS_EXPORT setWindowFlip3DPolicy(QWindow *window, WindowFlip3DPolicy policy); -WindowFlip3DPolicy Q_WINEXTRAS_EXPORT windowFlip3DPolicy(QWindow *); - -void Q_WINEXTRAS_EXPORT extendFrameIntoClientArea(QWindow *window, int left, int top, int right, int bottom); -void Q_WINEXTRAS_EXPORT extendFrameIntoClientArea(QWindow *window, const QMargins &margins); -void Q_WINEXTRAS_EXPORT resetExtendedFrame(QWindow *window); - -void Q_WINEXTRAS_EXPORT enableBlurBehindWindow(QWindow *window, const QRegion ®ion); -void Q_WINEXTRAS_EXPORT enableBlurBehindWindow(QWindow *window); -void Q_WINEXTRAS_EXPORT disableBlurBehindWindow(QWindow *window); - -bool Q_WINEXTRAS_EXPORT isCompositionEnabled(); -void Q_WINEXTRAS_EXPORT setCompositionEnabled(bool enabled); -bool Q_WINEXTRAS_EXPORT isCompositionOpaque(); - -void Q_WINEXTRAS_EXPORT setCurrentProcessExplicitAppUserModelID(const QString &id); - -void Q_WINEXTRAS_EXPORT markFullscreenWindow(QWindow *, bool fullscreen = true); - -void Q_WINEXTRAS_EXPORT taskbarActivateTab(QWindow *); -void Q_WINEXTRAS_EXPORT taskbarActivateTabAlt(QWindow *); -void Q_WINEXTRAS_EXPORT taskbarAddTab(QWindow *); -void Q_WINEXTRAS_EXPORT taskbarDeleteTab(QWindow *); - -} + Q_GADGET + Q_ENUMS(HBitmapFormat WindowFlip3DPolicy) + +public: + enum HBitmapFormat + { + HBitmapNoAlpha, + HBitmapPremultipliedAlpha, + HBitmapAlpha + }; + + enum WindowFlip3DPolicy + { + FlipDefault, + FlipExcludeBelow, + FlipExcludeAbove + }; + + static HBITMAP createMask(const QBitmap &bitmap); + static HBITMAP toHBITMAP(const QPixmap &p, HBitmapFormat format = HBitmapNoAlpha); + static QPixmap fromHBITMAP(HBITMAP bitmap, HBitmapFormat format = HBitmapNoAlpha); + static HICON toHICON(const QPixmap &p); + static QImage imageFromHBITMAP(HDC hdc, HBITMAP bitmap, int width, int height); + static QPixmap fromHICON(HICON icon); + static HRGN toHRGN(const QRegion ®ion); + static QRegion fromHRGN(HRGN hrgn); + + static QString stringFromHresult(HRESULT hresult); + static QString errorStringFromHresult(HRESULT hresult); + + static QColor colorizationColor(bool *opaqueBlend = 0); + static QColor realColorizationColor(); + + static void setWindowExcludedFromPeek(QWindow *window, bool exclude); + static bool isWindowExcludedFromPeek(QWindow *window); + static void setWindowDisallowPeek(QWindow *window, bool disallow); + static bool isWindowPeekDisallowed(QWindow *window); + static void setWindowFlip3DPolicy(QWindow *window, WindowFlip3DPolicy policy); + static WindowFlip3DPolicy windowFlip3DPolicy(QWindow *); + + static void extendFrameIntoClientArea(QWindow *window, int left, int top, int right, int bottom); + static void extendFrameIntoClientArea(QWindow *window, const QMargins &margins); + static void resetExtendedFrame(QWindow *window); + + static void enableBlurBehindWindow(QWindow *window, const QRegion ®ion); + static void enableBlurBehindWindow(QWindow *window); + static void disableBlurBehindWindow(QWindow *window); + + static bool isCompositionEnabled(); + static void setCompositionEnabled(bool enabled); + static bool isCompositionOpaque(); + + static void setCurrentProcessExplicitAppUserModelID(const QString &id); + + static void markFullscreenWindow(QWindow *, bool fullscreen = true); + + static void taskbarActivateTab(QWindow *); + static void taskbarActivateTabAlt(QWindow *); + static void taskbarAddTab(QWindow *); + static void taskbarDeleteTab(QWindow *); #ifdef QT_WIDGETS_LIB - -#include - -namespace QtWin -{ - -inline void setWindowExcludedFromPeek(QWidget *window, bool exclude) -{ - window->createWinId(); - setWindowExcludedFromPeek(window->windowHandle(), exclude); -} - -inline bool isWindowExcludedFromPeek(QWidget *window) -{ - if (!window->windowHandle()) - return false; - else - return isWindowExcludedFromPeek(window->windowHandle()); -} - -inline void setWindowDisallowPeek(QWidget *window, bool disallow) -{ - window->createWinId(); - setWindowDisallowPeek(window->windowHandle(), disallow); -} - -inline bool isWindowPeekDisallowed(QWidget *window) -{ - if (!window->windowHandle()) - return false; - else - return isWindowPeekDisallowed(window->windowHandle()); -} - -inline void setWindowFlip3DPolicy(QWidget *window, WindowFlip3DPolicy policy) -{ - window->createWinId(); - setWindowFlip3DPolicy(window->windowHandle(), policy); -} - -inline WindowFlip3DPolicy windowFlip3DPolicy(QWidget *window) -{ - if (!window->windowHandle()) - return FlipDefault; - else - return windowFlip3DPolicy(window->windowHandle()); -} - -inline void extendFrameIntoClientArea(QWidget *window, const QMargins &margins) -{ - window->createWinId(); - extendFrameIntoClientArea(window->windowHandle(), margins); -} - -inline void extendFrameIntoClientArea(QWidget *window, int left, int top, int right, int bottom) -{ - window->createWinId(); - extendFrameIntoClientArea(window->windowHandle(), left, top, right, bottom); -} - -inline void resetExtendedFrame(QWidget *window) -{ - if (window->windowHandle()) - resetExtendedFrame(window->windowHandle()); -} - -inline void enableBlurBehindWindow(QWidget *window, const QRegion ®ion) -{ - window->createWinId(); - enableBlurBehindWindow(window->windowHandle(), region); -} - -inline void enableBlurBehindWindow(QWidget *window) -{ - window->createWinId(); - enableBlurBehindWindow(window->windowHandle()); -} - -inline void disableBlurBehindWindow(QWidget *window) -{ - if (window->windowHandle()) + static inline void setWindowExcludedFromPeek(QWidget *window, bool exclude) + { + window->createWinId(); + setWindowExcludedFromPeek(window->windowHandle(), exclude); + } + + static inline bool isWindowExcludedFromPeek(QWidget *window) + { + if (!window->windowHandle()) + return false; + else + return isWindowExcludedFromPeek(window->windowHandle()); + } + + static inline void setWindowDisallowPeek(QWidget *window, bool disallow) + { + window->createWinId(); + setWindowDisallowPeek(window->windowHandle(), disallow); + } + + static inline bool isWindowPeekDisallowed(QWidget *window) + { + if (!window->windowHandle()) + return false; + else + return isWindowPeekDisallowed(window->windowHandle()); + } + + static inline void setWindowFlip3DPolicy(QWidget *window, WindowFlip3DPolicy policy) + { + window->createWinId(); + setWindowFlip3DPolicy(window->windowHandle(), policy); + } + + static inline WindowFlip3DPolicy windowFlip3DPolicy(QWidget *window) + { + if (!window->windowHandle()) + return FlipDefault; + else + return windowFlip3DPolicy(window->windowHandle()); + } + + static inline void extendFrameIntoClientArea(QWidget *window, const QMargins &margins) + { + window->createWinId(); + extendFrameIntoClientArea(window->windowHandle(), margins); + } + + static inline void extendFrameIntoClientArea(QWidget *window, int left, int top, int right, int bottom) + { + window->createWinId(); + extendFrameIntoClientArea(window->windowHandle(), left, top, right, bottom); + } + + static inline void resetExtendedFrame(QWidget *window) + { + if (window->windowHandle()) + resetExtendedFrame(window->windowHandle()); + } + + static inline void enableBlurBehindWindow(QWidget *window, const QRegion ®ion) + { + window->createWinId(); + enableBlurBehindWindow(window->windowHandle(), region); + } + + static inline void enableBlurBehindWindow(QWidget *window) + { + window->createWinId(); enableBlurBehindWindow(window->windowHandle()); -} - -inline void markFullscreenWindow(QWidget *window, bool fullscreen = true) -{ - window->createWinId(); - markFullscreenWindow(window->windowHandle(), fullscreen); -} - -inline void taskbarActivateTab(QWidget *window) -{ - window->createWinId(); - taskbarActivateTab(window->windowHandle()); -} - -inline void taskbarActivateTabAlt(QWidget *window) -{ - window->createWinId(); - taskbarActivateTabAlt(window->windowHandle()); -} - -inline void taskbarAddTab(QWidget *window) -{ - window->createWinId(); - taskbarAddTab(window->windowHandle()); -} - -inline void taskbarDeleteTab(QWidget *window) -{ - window->createWinId(); - taskbarDeleteTab(window->windowHandle()); -} - -} - + } + + static inline void disableBlurBehindWindow(QWidget *window) + { + if (window->windowHandle()) + enableBlurBehindWindow(window->windowHandle()); + } + + static inline void markFullscreenWindow(QWidget *window, bool fullscreen = true) + { + window->createWinId(); + markFullscreenWindow(window->windowHandle(), fullscreen); + } + + static inline void taskbarActivateTab(QWidget *window) + { + window->createWinId(); + taskbarActivateTab(window->windowHandle()); + } + + static inline void taskbarActivateTabAlt(QWidget *window) + { + window->createWinId(); + taskbarActivateTabAlt(window->windowHandle()); + } + + static inline void taskbarAddTab(QWidget *window) + { + window->createWinId(); + taskbarAddTab(window->windowHandle()); + } + + static inline void taskbarDeleteTab(QWidget *window) + { + window->createWinId(); + taskbarDeleteTab(window->windowHandle()); + } #endif // QT_WIDGETS_LIB +}; #ifdef Q_QDOC -- cgit v1.2.3