diff options
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | 0001-Revert-Directly-link-to-functions-available-from-Win.patch | 298 | ||||
-rw-r--r-- | PKGBUILD | 21 | ||||
-rw-r--r-- | PKGBUILD.sh.ep | 13 | ||||
-rw-r--r-- | qtwinextras-sha256.txt | 1 |
5 files changed, 29 insertions, 312 deletions
@@ -1,6 +1,6 @@ pkgbase = mingw-w64-qt5-winextras pkgdesc = Classes and functions that enable you to use Windows-specific functions (mingw-w64) - pkgver = 5.14.0 + pkgver = 5.14.1 pkgrel = 1 url = https://www.qt.io/ arch = any @@ -19,10 +19,8 @@ pkgbase = mingw-w64-qt5-winextras options = !strip options = !buildflags options = staticlibs - source = https://download.qt.io/official_releases/qt/5.14/5.14.0/submodules/qtwinextras-everywhere-src-5.14.0.tar.xz - source = 0001-Revert-Directly-link-to-functions-available-from-Win.patch - sha256sums = cbe7d73f1972e99ea27c0e5f4fed2b713109167388814dcfe2932c19ae218a18 - sha256sums = 738ef04bc5d6932283b0525449d2090dcd63228459186815c0d907df25ed259e + source = https://download.qt.io/official_releases/qt/5.14/5.14.1/submodules/qtwinextras-everywhere-src-5.14.1.tar.xz + sha256sums = 222b888b89a8fb02948faf985e8614ac543603a000c1cf2e7489f8bf15ccc3cc pkgname = mingw-w64-qt5-winextras diff --git a/0001-Revert-Directly-link-to-functions-available-from-Win.patch b/0001-Revert-Directly-link-to-functions-available-from-Win.patch deleted file mode 100644 index fe4472ca4e03..000000000000 --- a/0001-Revert-Directly-link-to-functions-available-from-Win.patch +++ /dev/null @@ -1,298 +0,0 @@ -From bc075232c06699402e18c257deb21b27645d39f3 Mon Sep 17 00:00:00 2001 -From: Martchus <martchus@gmx.net> -Date: Sun, 27 May 2018 14:23:11 +0200 -Subject: [PATCH] Revert "Directly link to functions available from Windows 7 - onwards" - -This reverts commit 07f6d25a00af112d46e939992fb9cf42879fc7c1. - -Otherwise the x86_64 version doesn't compile with mingw-w64-crt 5.0.3. - -Apparently those functions are absent in the libdwmapi.a library provided -by the CRT: -``` -grep DwmSetIconicThumbnail /usr/x86_64-w64-mingw32/lib/libdwmapi.a -[no further output] -``` - -This leads to the following linker error: -``` -x86_64-w64-mingw32-g++ -g -shared -Wl,-subsystem,windows -Wl,--out-implib,/build/mingw-w64-qt5-winextras/src/qtwinextras-everywhere-src-5.11.0/build-x86_64-w64-mingw32-shared/lib/libQt5WinExtras.dll.a -o ../../lib/Qt5WinExtras.dll object_script.Qt5WinExtras.Release -lglu32 -lopengl32 -lgdi32 -luser32 -lQt5Gui -lQt5Core -lole32 -lshlwapi -lshell32 -ldwmapi -./.obj/release/qwinthumbnailtoolbar.o: In function `QWinThumbnailToolBarPrivate::updateIconicPixmapsEnabled(bool)': -/build/mingw-w64-qt5-winextras/src/qtwinextras-everywhere-src-5.11.0/src/winextras/qwinthumbnailtoolbar.cpp:246: undefined reference to `DwmInvalidateIconicBitmaps' -./.obj/release/qwinthumbnailtoolbar.o: In function `QWinThumbnailToolBarPrivate::updateIconicLivePreview(tagMSG const*)': -/build/mingw-w64-qt5-winextras/src/qtwinextras-everywhere-src-5.11.0/src/winextras/qwinthumbnailtoolbar.cpp:411: undefined reference to `DwmSetIconicLivePreviewBitmap' -./.obj/release/qwinthumbnailtoolbar.o: In function `QWinThumbnailToolBarPrivate::updateIconicThumbnail(tagMSG const*)': -/build/mingw-w64-qt5-winextras/src/qtwinextras-everywhere-src-5.11.0/src/winextras/qwinthumbnailtoolbar.cpp:396: undefined reference to `DwmSetIconicThumbnail' -collect2: error: ld returned 1 exit status -``` - -Note that the i686 version has the required functions and links fine: -``` -grep DwmSetIconicThumbnail /usr/i686-w64-mingw32/lib/libdwmapi.a -Binary file /usr/i686-w64-mingw32/lib/libdwmapi.a matches -``` ---- - src/winextras/qwinfunctions.cpp | 14 ++--- - src/winextras/qwinfunctions_p.cpp | 74 ++++++++++++++++++++++++++ - src/winextras/qwinfunctions_p.h | 36 ++++++++++++- - src/winextras/qwinthumbnailtoolbar.cpp | 22 ++++---- - src/winextras/winextras.pro | 1 + - 5 files changed, 125 insertions(+), 22 deletions(-) - create mode 100644 src/winextras/qwinfunctions_p.cpp - -diff --git a/src/winextras/qwinfunctions.cpp b/src/winextras/qwinfunctions.cpp -index b237a50..7866140 100644 ---- a/src/winextras/qwinfunctions.cpp -+++ b/src/winextras/qwinfunctions.cpp -@@ -38,13 +38,6 @@ - ** - ****************************************************************************/ - --#if defined(NTDDI_VERSION) && NTDDI_VERSION < 0x06010000 // NTDDI_WIN7 --# undef NTDDI_VERSION --#endif --#if !defined(NTDDI_VERSION) --# define NTDDI_VERSION 0x06010000 // Enable functions for MinGW --#endif -- - #include "qwinfunctions.h" - #include "qwinfunctions_p.h" - #include "qwineventfilter_p.h" -@@ -1850,8 +1843,11 @@ bool QtWin::isCompositionOpaque() - */ - void QtWin::setCurrentProcessExplicitAppUserModelID(const QString &id) - { -- QScopedArrayPointer<wchar_t> wid(qt_qstringToNullTerminated(id)); -- SetCurrentProcessExplicitAppUserModelID(wid.data()); -+ qtShell32Dll.init(); -+ if (qtShell32Dll.setCurrentProcessExplicitAppUserModelID) { -+ QScopedArrayPointer<wchar_t> wid(qt_qstringToNullTerminated(id)); -+ qtShell32Dll.setCurrentProcessExplicitAppUserModelID(wid.data()); -+ } - } - - /*! -diff --git a/src/winextras/qwinfunctions_p.cpp b/src/winextras/qwinfunctions_p.cpp -new file mode 100644 -index 0000000..ea9dcf9 ---- /dev/null -+++ b/src/winextras/qwinfunctions_p.cpp -@@ -0,0 +1,74 @@ -+/**************************************************************************** -+ ** -+ ** Copyright (C) 2016 Ivan Vizir <define-true-false@yandex.com> -+ ** Contact: https://www.qt.io/licensing/ -+ ** -+ ** This file is part of the QtWinExtras module of the Qt Toolkit. -+ ** -+ ** $QT_BEGIN_LICENSE:LGPL$ -+ ** 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 The Qt Company. For licensing terms -+ ** and conditions see https://www.qt.io/terms-conditions. For further -+ ** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -+ ** Foundation and appearing in the file LICENSE.LGPL3 included in the -+ ** packaging of this file. Please review the following information to -+ ** ensure the GNU Lesser General Public License version 3 requirements -+ ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -+ ** -+ ** GNU General Public License Usage -+ ** Alternatively, this file may be used under the terms of the GNU -+ ** General Public License version 2.0 or (at your option) the GNU General -+ ** Public license version 3 or any later version approved by the KDE Free -+ ** Qt Foundation. The licenses are as published by the Free Software -+ ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -+ ** included in the packaging of this file. Please review the following -+ ** information to ensure the GNU General Public License requirements will -+ ** be met: https://www.gnu.org/licenses/gpl-2.0.html and -+ ** https://www.gnu.org/licenses/gpl-3.0.html. -+ ** -+ ** $QT_END_LICENSE$ -+ ** -+ ****************************************************************************/ -+ -+#include "qwinfunctions_p.h" -+ -+#include <qt_windows.h> -+ -+QT_BEGIN_NAMESPACE -+ -+// in order to allow binary to load on WinXP... -+QtDwmApiDll qtDwmApiDll; -+QtShell32Dll qtShell32Dll; -+ -+void QtDwmApiDll::resolve() -+{ -+ if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS7) { -+ if (const HMODULE dwmapi = LoadLibraryW(L"dwmapi.dll")) { -+ dwmSetIconicThumbnail = -+ (DwmSetIconicThumbnail) GetProcAddress(dwmapi, "DwmSetIconicThumbnail"); -+ dwmSetIconicLivePreviewBitmap = -+ (DwmSetIconicLivePreviewBitmap) GetProcAddress(dwmapi, "DwmSetIconicLivePreviewBitmap"); -+ dwmInvalidateIconicBitmaps = -+ (DwmInvalidateIconicBitmaps) GetProcAddress(dwmapi, "DwmInvalidateIconicBitmaps"); -+ } -+ } -+} -+ -+void QtShell32Dll::resolve() -+{ -+ if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS7) { -+ if (const HMODULE shell32 = LoadLibraryW(L"shell32.dll")) { -+ setCurrentProcessExplicitAppUserModelID = -+ (SetCurrentProcessExplicitAppUserModelID) GetProcAddress(shell32, "SetCurrentProcessExplicitAppUserModelID"); -+ } -+ } -+} -+ -+QT_END_NAMESPACE -diff --git a/src/winextras/qwinfunctions_p.h b/src/winextras/qwinfunctions_p.h -index 0ee73cb..a5816fe 100644 ---- a/src/winextras/qwinfunctions_p.h -+++ b/src/winextras/qwinfunctions_p.h -@@ -64,8 +64,20 @@ enum qt_DWMWINDOWATTRIBUTE // Not present in MinGW 4.9 - qt_DWMWA_EXCLUDED_FROM_PEEK = 12, - }; - --namespace QtDwmApiDll -+struct QtDwmApiDll - { -+ typedef HRESULT (STDAPICALLTYPE *DwmSetIconicThumbnail)(HWND, HBITMAP, DWORD); // Windows 7 -+ typedef HRESULT (STDAPICALLTYPE *DwmSetIconicLivePreviewBitmap)(HWND, HBITMAP, POINT *, DWORD); -+ typedef HRESULT (STDAPICALLTYPE *DwmInvalidateIconicBitmaps)(HWND); -+ -+ void init() -+ { -+ if (!dwmSetIconicThumbnail) -+ resolve(); -+ } -+ -+ void resolve(); -+ - template <class T> static T windowAttribute(HWND hwnd, DWORD attribute, T defaultValue); - template <class T> static void setWindowAttribute(HWND hwnd, DWORD attribute, T value); - -@@ -74,8 +86,30 @@ namespace QtDwmApiDll - - inline void setBooleanWindowAttribute(HWND hwnd, DWORD attribute, bool value) - { setWindowAttribute<BOOL>(hwnd, attribute, BOOL(value ? TRUE : FALSE)); } -+ -+ DwmSetIconicThumbnail dwmSetIconicThumbnail = nullptr; -+ DwmSetIconicLivePreviewBitmap dwmSetIconicLivePreviewBitmap = nullptr; -+ DwmInvalidateIconicBitmaps dwmInvalidateIconicBitmaps = nullptr; - }; - -+struct QtShell32Dll -+{ -+ typedef HRESULT (STDAPICALLTYPE *SetCurrentProcessExplicitAppUserModelID)(PCWSTR); -+ -+ void init() -+ { -+ if (!setCurrentProcessExplicitAppUserModelID) -+ resolve(); -+ } -+ -+ void resolve(); -+ -+ SetCurrentProcessExplicitAppUserModelID setCurrentProcessExplicitAppUserModelID = nullptr; // Windows 7 -+}; -+ -+extern QtDwmApiDll qtDwmApiDll; -+extern QtShell32Dll qtShell32Dll; -+ - inline void qt_qstringToNullTerminated(const QString &src, wchar_t *dst) - { - dst[src.toWCharArray(dst)] = 0; -diff --git a/src/winextras/qwinthumbnailtoolbar.cpp b/src/winextras/qwinthumbnailtoolbar.cpp -index fc8d76e..59880c7 100644 ---- a/src/winextras/qwinthumbnailtoolbar.cpp -+++ b/src/winextras/qwinthumbnailtoolbar.cpp -@@ -38,13 +38,6 @@ - ** - ****************************************************************************/ - --#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0601 --# undef _WIN32_WINNT --#endif --#if !defined(_WIN32_WINNT) --# define _WIN32_WINNT 0x0601 // Enable functions for MinGW --#endif -- - #include "qwinthumbnailtoolbar.h" - #include "qwinthumbnailtoolbar_p.h" - #include "qwinthumbnailtoolbutton.h" -@@ -232,15 +225,18 @@ int QWinThumbnailToolBar::count() const - void QWinThumbnailToolBarPrivate::updateIconicPixmapsEnabled(bool invalidate) - { - Q_Q(QWinThumbnailToolBar); -+ qtDwmApiDll.init(); - const HWND hwnd = handle(); - if (!hwnd) { - qWarning() << Q_FUNC_INFO << "invoked with hwnd=0"; - return; - } -+ if (!qtDwmApiDll.dwmInvalidateIconicBitmaps) -+ return; - const bool enabled = iconicThumbnail || iconicLivePreview; - q->setIconicPixmapNotificationsEnabled(enabled); - if (enabled && invalidate) { -- const HRESULT hr = DwmInvalidateIconicBitmaps(hwnd); -+ const HRESULT hr = qtDwmApiDll.dwmInvalidateIconicBitmaps(hwnd); - if (FAILED(hr)) - qWarning() << QWinThumbnailToolBarPrivate::msgComFailed("DwmInvalidateIconicBitmaps", hr); - } -@@ -386,11 +382,12 @@ QPixmap QWinThumbnailToolBar::iconicLivePreviewPixmap() const - - inline void QWinThumbnailToolBarPrivate::updateIconicThumbnail(const MSG *message) - { -- if (!iconicThumbnail) -+ qtDwmApiDll.init(); -+ if (!qtDwmApiDll.dwmSetIconicThumbnail || !iconicThumbnail) - return; - const QSize maxSize(HIWORD(message->lParam), LOWORD(message->lParam)); - if (const HBITMAP bitmap = iconicThumbnail.bitmap(maxSize)) { -- const HRESULT hr = DwmSetIconicThumbnail(message->hwnd, bitmap, dWM_SIT_DISPLAYFRAME); -+ const HRESULT hr = qtDwmApiDll.dwmSetIconicThumbnail(message->hwnd, bitmap, dWM_SIT_DISPLAYFRAME); - if (FAILED(hr)) - qWarning() << QWinThumbnailToolBarPrivate::msgComFailed("DwmSetIconicThumbnail", hr); - } -@@ -398,14 +395,15 @@ inline void QWinThumbnailToolBarPrivate::updateIconicThumbnail(const MSG *messag - - inline void QWinThumbnailToolBarPrivate::updateIconicLivePreview(const MSG *message) - { -- if (!iconicLivePreview) -+ qtDwmApiDll.init(); -+ if (!qtDwmApiDll.dwmSetIconicLivePreviewBitmap || !iconicLivePreview) - return; - RECT rect; - GetClientRect(message->hwnd, &rect); - const QSize maxSize(rect.right, rect.bottom); - POINT offset = {0, 0}; - if (const HBITMAP bitmap = iconicLivePreview.bitmap(maxSize)) { -- const HRESULT hr = DwmSetIconicLivePreviewBitmap(message->hwnd, bitmap, &offset, dWM_SIT_DISPLAYFRAME); -+ const HRESULT hr = qtDwmApiDll.dwmSetIconicLivePreviewBitmap(message->hwnd, bitmap, &offset, dWM_SIT_DISPLAYFRAME); - if (FAILED(hr)) - qWarning() << QWinThumbnailToolBarPrivate::msgComFailed("DwmSetIconicLivePreviewBitmap", hr); - } -diff --git a/src/winextras/winextras.pro b/src/winextras/winextras.pro -index 8f582a5..a899f6c 100644 ---- a/src/winextras/winextras.pro -+++ b/src/winextras/winextras.pro -@@ -4,6 +4,7 @@ QT += gui-private core-private - - SOURCES += \ - qwinfunctions.cpp \ -+ qwinfunctions_p.cpp \ - qwintaskbarbutton.cpp \ - qwintaskbarprogress.cpp \ - windowsguidsdefs.cpp \ --- -2.24.1 - @@ -4,32 +4,35 @@ # All my PKGBUILDs are managed at https://github.com/Martchus/PKGBUILDs where # you also find the URL of a binary repository. +# This file is created from PKGBUILD.sh.in contained by the mentioned repository. +# Do not edit it manually! See README.md in the repository's root directory +# for more information. + # Includes dynamic and static versions; if only one version is requried, just # set $NO_STATIC_LIBS or $NO_SHARED_LIBS. _qt_module=qtwinextras -pkgname="mingw-w64-qt5-winextras" -pkgver=5.14.0 +pkgname=mingw-w64-qt5-winextras +pkgver=5.14.1 pkgrel=1 arch=('any') pkgdesc="Classes and functions that enable you to use Windows-specific functions (mingw-w64)" depends=('mingw-w64-qt5-base' 'mingw-w64-qt5-declarative') makedepends=('mingw-w64-gcc' 'mingw-w64-pkg-config') +license=('GPL3' 'LGPL3' 'LGPL2.1' 'FDL' 'custom') options=('!strip' '!buildflags' 'staticlibs') groups=('mingw-w64-qt5') -license=('GPL3' 'LGPL3' 'LGPL2.1' 'FDL' 'custom') url='https://www.qt.io/' _pkgfqn="${_qt_module}-everywhere-src-${pkgver}" -source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${pkgver}/submodules/${_pkgfqn}.tar.xz" - '0001-Revert-Directly-link-to-functions-available-from-Win.patch') -sha256sums=('cbe7d73f1972e99ea27c0e5f4fed2b713109167388814dcfe2932c19ae218a18' - '738ef04bc5d6932283b0525449d2090dcd63228459186815c0d907df25ed259e') +source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${pkgver}/submodules/${_pkgfqn}.tar.xz") +sha256sums=('222b888b89a8fb02948faf985e8614ac543603a000c1cf2e7489f8bf15ccc3cc') _architectures='i686-w64-mingw32 x86_64-w64-mingw32' + [[ $NO_STATIC_LIBS ]] || \ makedepends+=('mingw-w64-qt5-base-static') \ optdepends+=('mingw-w64-qt5-base-static: use of static libraries') \ - _configurations+=('CONFIG+=static') + _configurations+=('CONFIG+=no_smart_library_merge CONFIG+=static') [[ $NO_SHARED_LIBS ]] || \ _configurations+=('CONFIG+=actually_a_shared_build CONFIG+=shared') @@ -40,7 +43,7 @@ build() { for _config in "${_configurations[@]}"; do msg2 "Building ${_config##*=} version for ${_arch}" mkdir -p build-${_arch}-${_config##*=} && pushd build-${_arch}-${_config##*=} - ${_arch}-qmake-qt5 ../${_qt_module}.pro ${_config} + ${_arch}-qmake-qt5 ../${_qt_module}.pro ${_config} ${_additional_qmake_args} make popd done diff --git a/PKGBUILD.sh.ep b/PKGBUILD.sh.ep new file mode 100644 index 000000000000..82120ebd94e3 --- /dev/null +++ b/PKGBUILD.sh.ep @@ -0,0 +1,13 @@ +% layout 'mingw-w64-qt5-module'; +\ +% content_for additional_contributors => begin +# Contributor: ant32 <antreimer@gmail.com> +% end +\ +pkgver=5.14.1 +pkgrel=1 +arch=('any') +pkgdesc="Classes and functions that enable you to use Windows-specific functions (mingw-w64)" +depends=('mingw-w64-qt5-base' 'mingw-w64-qt5-declarative') +makedepends=('mingw-w64-gcc' 'mingw-w64-pkg-config') +license=('GPL3' 'LGPL3' 'LGPL2.1' 'FDL' 'custom') diff --git a/qtwinextras-sha256.txt b/qtwinextras-sha256.txt new file mode 100644 index 000000000000..34c6ecebbd8f --- /dev/null +++ b/qtwinextras-sha256.txt @@ -0,0 +1 @@ +222b888b89a8fb02948faf985e8614ac543603a000c1cf2e7489f8bf15ccc3cc |