diff options
52 files changed, 650 insertions, 242 deletions
diff --git a/.qmake.conf b/.qmake.conf index 543d0a8..76e7ef0 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,3 +1,5 @@ load(qt_build_config) -MODULE_VERSION = 5.13.2 +DEFINES += QT_NO_FOREACH + +MODULE_VERSION = 5.14.0 diff --git a/examples/winextras/iconextractor/main.cpp b/examples/winextras/iconextractor/main.cpp index 0d7ebbd..b72a49a 100644 --- a/examples/winextras/iconextractor/main.cpp +++ b/examples/winextras/iconextractor/main.cpp @@ -77,7 +77,7 @@ struct PixmapEntry { QPixmap pixmap; }; -typedef QList<PixmapEntry> PixmapEntryList; +using PixmapEntryList = QList<PixmapEntry>; static std::wostream &operator<<(std::wostream &str, const QString &s) { @@ -98,8 +98,8 @@ static QString formatSize(const QSize &size) static PixmapEntryList extractIcons(const QString &sourceFile, bool large) { const QString nativeName = QDir::toNativeSeparators(sourceFile); - const wchar_t *sourceFileC = reinterpret_cast<const wchar_t *>(nativeName.utf16()); - const UINT iconCount = ExtractIconEx(sourceFileC, -1, 0, 0, 0); + const auto *sourceFileC = reinterpret_cast<const wchar_t *>(nativeName.utf16()); + const UINT iconCount = ExtractIconEx(sourceFileC, -1, nullptr, nullptr, 0); if (!iconCount) { std::wcerr << sourceFile << " does not appear to contain icons.\n"; return PixmapEntryList(); @@ -107,8 +107,8 @@ static PixmapEntryList extractIcons(const QString &sourceFile, bool large) QScopedArrayPointer<HICON> icons(new HICON[iconCount]); const UINT extractedIconCount = large ? - ExtractIconEx(sourceFileC, 0, icons.data(), 0, iconCount) : - ExtractIconEx(sourceFileC, 0, 0, icons.data(), iconCount); + ExtractIconEx(sourceFileC, 0, icons.data(), nullptr, iconCount) : + ExtractIconEx(sourceFileC, 0, nullptr, icons.data(), iconCount); if (!extractedIconCount) { qErrnoWarning("Failed to extract icons from %s", qPrintable(sourceFile)); return PixmapEntryList(); @@ -145,7 +145,7 @@ static QPixmap pixmapFromShellImageList(int iImageList, const SHFILEINFO &info) if (FAILED(SHGetImageList(iImageList, iID_IImageList, reinterpret_cast<void **>(&imageList)))) return result; - HICON hIcon = 0; + HICON hIcon = nullptr; if (SUCCEEDED(imageList->GetIcon(info.iIcon, ILD_TRANSPARENT, &hIcon))) { result = QtWin::fromHICON(hIcon); DestroyIcon(hIcon); @@ -180,7 +180,7 @@ static PixmapEntryList extractShellIcons(const QString &sourceFile, bool addOver }; const QString nativeName = QDir::toNativeSeparators(sourceFile); - const wchar_t *sourceFileC = reinterpret_cast<const wchar_t *>(nativeName.utf16()); + const auto *sourceFileC = reinterpret_cast<const wchar_t *>(nativeName.utf16()); SHFILEINFO info; unsigned int baseFlags = SHGFI_ICON | SHGFI_SYSICONINDEX | SHGFI_ICONLOCATION; diff --git a/examples/winextras/musicplayer/doc/src/qtwinextras-musicplayer.qdoc b/examples/winextras/musicplayer/doc/src/qtwinextras-musicplayer.qdoc index 8908699..8b8fd57 100644 --- a/examples/winextras/musicplayer/doc/src/qtwinextras-musicplayer.qdoc +++ b/examples/winextras/musicplayer/doc/src/qtwinextras-musicplayer.qdoc @@ -100,9 +100,19 @@ \image qtwinextras-musicplayer-taskbar.png Screenshot of the Music Player taskbar - The following snippet shows how the taskbar button is prepared. The playback - progress is wired directly to the taskbar progress indicator by using signals - and slots. + The following snippets show how the taskbar button is prepared. + + For the taskbar and the thumbnail toolbar to work, a native window handle + must be set by passing an instance of \c QWindow to + \c QWinTaskbarButton::setWindow() or \c QWinThumbnailToolBar::setWindow(), + respectively. This instance is created in the process of \c QWidget::show() + and can be retrieved by calling \c QWidget::windowHandle() afterwards. + We override \c QWidget::showEvent() for this purpose: + + \snippet musicplayer/musicplayer.cpp 7 + + The playback progress is wired directly to the taskbar progress indicator + by using signals and slots. \snippet musicplayer/musicplayer.cpp 5 diff --git a/examples/winextras/musicplayer/musicplayer.cpp b/examples/winextras/musicplayer/musicplayer.cpp index 12c6854..2ecff56 100644 --- a/examples/winextras/musicplayer/musicplayer.cpp +++ b/examples/winextras/musicplayer/musicplayer.cpp @@ -140,6 +140,18 @@ bool MusicPlayer::event(QEvent *event) } //! [0] +//! [7] +void MusicPlayer::showEvent(QShowEvent *event) +{ + QWidget::showEvent(event); + if (!taskbarButton->window()) { + auto window = windowHandle(); + taskbarButton->setWindow(window); + thumbnailToolBar->setWindow(window); + } +} +//! [7] + static bool canHandleDrop(const QDropEvent *event) { const QList<QUrl> urls = event->mimeData()->urls(); @@ -383,7 +395,6 @@ void MusicPlayer::createJumpList() void MusicPlayer::createTaskbar() { taskbarButton = new QWinTaskbarButton(this); - taskbarButton->setWindow(windowHandle()); taskbarProgress = taskbarButton->progress(); connect(positionSlider, &QAbstractSlider::valueChanged, taskbarProgress, &QWinTaskbarProgress::setValue); @@ -397,7 +408,6 @@ void MusicPlayer::createTaskbar() void MusicPlayer::createThumbnailToolBar() { thumbnailToolBar = new QWinThumbnailToolBar(this); - thumbnailToolBar->setWindow(windowHandle()); playToolButton = new QWinThumbnailToolButton(thumbnailToolBar); playToolButton->setEnabled(false); diff --git a/examples/winextras/musicplayer/musicplayer.h b/examples/winextras/musicplayer/musicplayer.h index 56f4c67..49dd25b 100644 --- a/examples/winextras/musicplayer/musicplayer.h +++ b/examples/winextras/musicplayer/musicplayer.h @@ -82,6 +82,7 @@ public slots: protected: bool event(QEvent *event) override; + void showEvent(QShowEvent *event) override; void dragEnterEvent(QDragEnterEvent *event) override; void dropEvent(QDropEvent *event) override; void mousePressEvent(QMouseEvent *event) override; diff --git a/examples/winextras/musicplayer/volumebutton.cpp b/examples/winextras/musicplayer/volumebutton.cpp index 9cecf08..908dba1 100644 --- a/examples/winextras/musicplayer/volumebutton.cpp +++ b/examples/winextras/musicplayer/volumebutton.cpp @@ -77,7 +77,7 @@ VolumeButton::VolumeButton(QWidget *parent) : popupLayout->addWidget(slider); popupLayout->addWidget(label); - QWidgetAction *action = new QWidgetAction(this); + auto *action = new QWidgetAction(this); action->setDefaultWidget(popup); menu = new QMenu(this); diff --git a/src/imports/winextras/plugin.cpp b/src/imports/winextras/plugin.cpp index f53cdf7..41b3fe8 100644 --- a/src/imports/winextras/plugin.cpp +++ b/src/imports/winextras/plugin.cpp @@ -57,7 +57,7 @@ class QWinExtrasQmlPlugin : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - QWinExtrasQmlPlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { } + QWinExtrasQmlPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { } void registerTypes(const char *uri) Q_DECL_OVERRIDE { Q_ASSERT(uri == QLatin1String("QtWinExtras")); diff --git a/src/imports/winextras/qquickdwmfeatures.cpp b/src/imports/winextras/qquickdwmfeatures.cpp index 5d1f565..a7ca158 100644 --- a/src/imports/winextras/qquickdwmfeatures.cpp +++ b/src/imports/winextras/qquickdwmfeatures.cpp @@ -71,9 +71,7 @@ QQuickDwmFeatures::QQuickDwmFeatures(QQuickItem *parent) : QWinEventFilter::setup(); } -QQuickDwmFeatures::~QQuickDwmFeatures() -{ -} +QQuickDwmFeatures::~QQuickDwmFeatures() = default; void QQuickDwmFeatures::setCompositionEnabled(bool enabled) { @@ -230,10 +228,7 @@ void QQuickDwmFeatures::setBlurBehindEnabled(bool enabled) bool QQuickDwmFeatures::isExcludedFromPeek() const { Q_D(const QQuickDwmFeatures); - if (window()) - return QtWin::isWindowExcludedFromPeek(window()); - else - return d->peekExcluded; + return window() ? QtWin::isWindowExcludedFromPeek(window()) : d->peekExcluded; } void QQuickDwmFeatures::setExcludedFromPeek(bool exclude) @@ -257,10 +252,7 @@ void QQuickDwmFeatures::setExcludedFromPeek(bool exclude) bool QQuickDwmFeatures::isPeekDisallowed() const { Q_D(const QQuickDwmFeatures); - if (window()) - return QtWin::isWindowPeekDisallowed(window()); - else - return d->peekDisallowed; + return window() ? QtWin::isWindowPeekDisallowed(window()) : d->peekDisallowed; } void QQuickDwmFeatures::setPeekDisallowed(bool disallow) @@ -321,8 +313,8 @@ bool QQuickDwmFeatures::eventFilter(QObject *object, QEvent *event) QQuickDwmFeatures *QQuickDwmFeatures::qmlAttachedProperties(QObject *parentObject) { - QQuickDwmFeatures *featuresObj = new QQuickDwmFeatures(); - QQuickItem *parentItem = qobject_cast<QQuickItem *>(parentObject); + auto *featuresObj = new QQuickDwmFeatures(); + auto *parentItem = qobject_cast<QQuickItem *>(parentObject); if (parentItem) featuresObj->setParentItem(parentItem); else @@ -344,9 +336,6 @@ void QQuickDwmFeatures::itemChange(QQuickItem::ItemChange change, const QQuickIt QQuickDwmFeaturesPrivate::QQuickDwmFeaturesPrivate(QQuickDwmFeatures *parent) : - topMargin(0), rightMargin(0), bottomMargin(0), leftMargin(0), - blurBehindEnabled(false), - peekDisallowed(false), peekExcluded(false), flipPolicy(QQuickWin::FlipDefault), q_ptr(parent) { } diff --git a/src/imports/winextras/qquickdwmfeatures_p.h b/src/imports/winextras/qquickdwmfeatures_p.h index a10a49b..d98aa00 100644 --- a/src/imports/winextras/qquickdwmfeatures_p.h +++ b/src/imports/winextras/qquickdwmfeatures_p.h @@ -79,7 +79,7 @@ class QQuickDwmFeatures : public QQuickItem Q_PROPERTY(QQuickWin::WindowFlip3DPolicy flip3DPolicy READ flip3DPolicy WRITE setFlip3DPolicy NOTIFY flip3DPolicyChanged) public: - explicit QQuickDwmFeatures(QQuickItem *parent = 0); + explicit QQuickDwmFeatures(QQuickItem *parent = nullptr); ~QQuickDwmFeatures(); void setCompositionEnabled(bool enabled); diff --git a/src/imports/winextras/qquickdwmfeatures_p_p.h b/src/imports/winextras/qquickdwmfeatures_p_p.h index fc8bbb7..4ec1244 100644 --- a/src/imports/winextras/qquickdwmfeatures_p_p.h +++ b/src/imports/winextras/qquickdwmfeatures_p_p.h @@ -61,15 +61,15 @@ class QQuickDwmFeaturesPrivate public: QQuickDwmFeaturesPrivate(QQuickDwmFeatures *parent); - int topMargin; - int rightMargin; - int bottomMargin; - int leftMargin; - bool blurBehindEnabled; + int topMargin = 0; + int rightMargin = 0; + int bottomMargin = 0; + int leftMargin = 0; + bool blurBehindEnabled = false; - bool peekDisallowed; - bool peekExcluded; - QQuickWin::WindowFlip3DPolicy flipPolicy; + bool peekDisallowed = false; + bool peekExcluded = false; + QQuickWin::WindowFlip3DPolicy flipPolicy = QQuickWin::FlipDefault; QColor originalSurfaceColor; void updateAll(); diff --git a/src/imports/winextras/qquickiconloader.cpp b/src/imports/winextras/qquickiconloader.cpp index df9a19d..b5b7e5b 100644 --- a/src/imports/winextras/qquickiconloader.cpp +++ b/src/imports/winextras/qquickiconloader.cpp @@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE QVariant QQuickIconLoader::loadFromFile(const QUrl &url, QVariant::Type type) { const QString path = QQmlFile::urlToLocalFileOrQrc(url); - if (QFileInfo(path).exists()) { + if (QFileInfo::exists(path)) { switch (type) { case QMetaType::QIcon: return QVariant(QIcon(path)); @@ -79,7 +79,7 @@ QVariant QQuickIconLoader::loadFromImageProvider(const QUrl &url, const QQmlEngi const QString providerId = url.host(); const QString imageId = url.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority).mid(1); QQuickImageProvider::ImageType imageType = QQuickImageProvider::Invalid; - QQuickImageProvider *provider = static_cast<QQuickImageProvider *>(engine->imageProvider(providerId)); + auto *provider = static_cast<QQuickImageProvider *>(engine->imageProvider(providerId)); QSize size; if (!requestedSize.isValid()) requestedSize = QSize(GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON)); @@ -122,7 +122,7 @@ QQuickIconLoaderNetworkReplyHandler::QQuickIconLoaderNetworkReplyHandler(QNetwor void QQuickIconLoaderNetworkReplyHandler::onRequestFinished() { - QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender()); + auto *reply = qobject_cast<QNetworkReply *>(sender()); Q_ASSERT(reply); if (reply->error() != QNetworkReply::NoError) { qWarning() << Q_FUNC_INFO << reply->url() << "failed:" << reply->errorString(); diff --git a/src/imports/winextras/qquickiconloader_p.h b/src/imports/winextras/qquickiconloader_p.h index ad359ee..bc23581 100644 --- a/src/imports/winextras/qquickiconloader_p.h +++ b/src/imports/winextras/qquickiconloader_p.h @@ -86,7 +86,7 @@ public: Object *receiver, void (Object::*function)(const QVariant &)); private: - QQuickIconLoader() {} + QQuickIconLoader() = default; static QVariant loadFromFile(const QUrl &url, QVariant::Type type); static QVariant loadFromImageProvider(const QUrl &url, const QQmlEngine *engine, QVariant::Type type, QSize requestedSize); @@ -120,7 +120,7 @@ QQuickIconLoader::LoadResult const QString scheme = url.scheme(); if (scheme.startsWith(QLatin1String("http"))) { if (QNetworkReply *reply = QQuickIconLoader::loadFromNetwork(url, engine)) { - QQuickIconLoaderNetworkReplyHandler *handler = new QQuickIconLoaderNetworkReplyHandler(reply, type); + auto *handler = new QQuickIconLoaderNetworkReplyHandler(reply, type); QObject::connect(handler, &QQuickIconLoaderNetworkReplyHandler::finished, receiver, function); return LoadNetworkRequestStarted; } diff --git a/src/imports/winextras/qquickjumplist.cpp b/src/imports/winextras/qquickjumplist.cpp index 0f210c7..615af08 100644 --- a/src/imports/winextras/qquickjumplist.cpp +++ b/src/imports/winextras/qquickjumplist.cpp @@ -65,13 +65,11 @@ QT_BEGIN_NAMESPACE */ QQuickJumpList::QQuickJumpList(QObject *parent) : - QObject(parent), m_recent(0), m_frequent(0), m_tasks(0) + QObject(parent) { } -QQuickJumpList::~QQuickJumpList() -{ -} +QQuickJumpList::~QQuickJumpList() = default; /*! \qmlproperty JumpListCategory JumpList::recent @@ -82,7 +80,7 @@ QQuickJumpList::~QQuickJumpList() QQuickJumpListCategory *QQuickJumpList::recent() const { if (!m_recent) { - QQuickJumpList *that = const_cast<QQuickJumpList *>(this); + auto *that = const_cast<QQuickJumpList *>(this); that->m_recent = new QQuickJumpListCategory(that); connect(m_recent, &QQuickJumpListCategory::visibilityChanged, that, &QQuickJumpList::rebuild); m_recent->setVisible(false); @@ -99,7 +97,7 @@ QQuickJumpListCategory *QQuickJumpList::recent() const QQuickJumpListCategory *QQuickJumpList::frequent() const { if (!m_frequent) { - QQuickJumpList *that = const_cast<QQuickJumpList *>(this); + auto *that = const_cast<QQuickJumpList *>(this); that->m_frequent = new QQuickJumpListCategory(that); connect(m_frequent, &QQuickJumpListCategory::visibilityChanged, that, &QQuickJumpList::rebuild); m_frequent->setVisible(false); @@ -115,7 +113,7 @@ QQuickJumpListCategory *QQuickJumpList::frequent() const QQuickJumpListCategory *QQuickJumpList::tasks() const { if (!m_tasks) { - QQuickJumpList *that = const_cast<QQuickJumpList *>(this); + auto *that = const_cast<QQuickJumpList *>(this); that->m_tasks = new QQuickJumpListCategory(that); connect(m_tasks, &QQuickJumpListCategory::visibilityChanged, that, &QQuickJumpList::rebuild); } @@ -141,7 +139,7 @@ void QQuickJumpList::setTasks(QQuickJumpListCategory *tasks) */ QQmlListProperty<QObject> QQuickJumpList::data() { - return QQmlListProperty<QObject>(this, this, &QQuickJumpList::data_append, 0, 0, 0); + return QQmlListProperty<QObject>(this, this, &QQuickJumpList::data_append, nullptr, nullptr, nullptr); } /*! @@ -182,8 +180,8 @@ void QQuickJumpList::rebuild() void QQuickJumpList::data_append(QQmlListProperty<QObject> *property, QObject *object) { - if (QQuickJumpListCategory *category = qobject_cast<QQuickJumpListCategory *>(object)) { - QQuickJumpList *jumpList = static_cast<QQuickJumpList *>(property->object); + if (auto *category = qobject_cast<QQuickJumpListCategory *>(object)) { + auto *jumpList = static_cast<QQuickJumpList *>(property->object); connect(category, &QQuickJumpListCategory::visibilityChanged, jumpList, &QQuickJumpList::rebuild); jumpList->m_categories.append(category); emit jumpList->categoriesChanged(); diff --git a/src/imports/winextras/qquickjumplist_p.h b/src/imports/winextras/qquickjumplist_p.h index 8efb2bc..c686294 100644 --- a/src/imports/winextras/qquickjumplist_p.h +++ b/src/imports/winextras/qquickjumplist_p.h @@ -72,7 +72,7 @@ class QQuickJumpList : public QObject, public QQmlParserStatus Q_INTERFACES(QQmlParserStatus) public: - explicit QQuickJumpList(QObject *parent = 0); + explicit QQuickJumpList(QObject *parent = nullptr); ~QQuickJumpList(); QQuickJumpListCategory *recent() const; @@ -84,8 +84,8 @@ public: QQmlListProperty<QObject> data(); QQmlListProperty<QQuickJumpListCategory> categories(); - void classBegin(); - void componentComplete(); + void classBegin() override; + void componentComplete() override; Q_SIGNALS: void tasksChanged(); @@ -99,9 +99,9 @@ private: static int categories_count(QQmlListProperty<QQuickJumpListCategory> *property); static QQuickJumpListCategory *categories_at(QQmlListProperty<QQuickJumpListCategory> *property, int index); - QQuickJumpListCategory *m_recent; - QQuickJumpListCategory *m_frequent; - QQuickJumpListCategory *m_tasks; + QQuickJumpListCategory *m_recent = nullptr; + QQuickJumpListCategory *m_frequent = nullptr; + QQuickJumpListCategory *m_tasks = nullptr; QList<QQuickJumpListCategory *> m_categories; }; diff --git a/src/imports/winextras/qquickjumplistcategory.cpp b/src/imports/winextras/qquickjumplistcategory.cpp index 052a4e6..30183f4 100644 --- a/src/imports/winextras/qquickjumplistcategory.cpp +++ b/src/imports/winextras/qquickjumplistcategory.cpp @@ -61,13 +61,11 @@ QT_BEGIN_NAMESPACE */ QQuickJumpListCategory::QQuickJumpListCategory(QObject *parent) : - QObject(parent), m_visible(true) + QObject(parent) { } -QQuickJumpListCategory::~QQuickJumpListCategory() -{ -} +QQuickJumpListCategory::~QQuickJumpListCategory() = default; /*! \qmlproperty list<QtObject> JumpListCategory::data @@ -75,7 +73,7 @@ QQuickJumpListCategory::~QQuickJumpListCategory() */ QQmlListProperty<QObject> QQuickJumpListCategory::data() { - return QQmlListProperty<QObject>(this, this, &QQuickJumpListCategory::data_append, 0, 0, 0); + return QQmlListProperty<QObject>(this, this, &QQuickJumpListCategory::data_append, nullptr, nullptr, nullptr); } /*! @@ -134,8 +132,8 @@ QList<QWinJumpListItem *> QQuickJumpListCategory::toItemList() const void QQuickJumpListCategory::data_append(QQmlListProperty<QObject> *property, QObject *object) { - if (QQuickJumpListItem *item = qobject_cast<QQuickJumpListItem *>(object)) { - QQuickJumpListCategory *category = static_cast<QQuickJumpListCategory *>(property->object); + if (auto *item = qobject_cast<QQuickJumpListItem *>(object)) { + auto *category = static_cast<QQuickJumpListCategory *>(property->object); category->m_items.append(item); emit category->itemsChanged(); } diff --git a/src/imports/winextras/qquickjumplistcategory_p.h b/src/imports/winextras/qquickjumplistcategory_p.h index 9ae4922..69663f8 100644 --- a/src/imports/winextras/qquickjumplistcategory_p.h +++ b/src/imports/winextras/qquickjumplistcategory_p.h @@ -71,7 +71,7 @@ class QQuickJumpListCategory : public QObject Q_CLASSINFO("DefaultProperty", "data") public: - explicit QQuickJumpListCategory(QObject *parent = 0); + explicit QQuickJumpListCategory(QObject *parent = nullptr); ~QQuickJumpListCategory(); QString title() const; @@ -95,7 +95,7 @@ private: static int items_count(QQmlListProperty<QQuickJumpListItem> *property); static QQuickJumpListItem *items_at(QQmlListProperty<QQuickJumpListItem> *property, int index); - bool m_visible; + bool m_visible = true; QString m_title; QList<QQuickJumpListItem *> m_items; }; diff --git a/src/imports/winextras/qquickjumplistitem.cpp b/src/imports/winextras/qquickjumplistitem.cpp index 86b917a..bfc9543 100644 --- a/src/imports/winextras/qquickjumplistitem.cpp +++ b/src/imports/winextras/qquickjumplistitem.cpp @@ -48,9 +48,7 @@ QQuickJumpListItem::QQuickJumpListItem(QObject *parent) : { } -QQuickJumpListItem::~QQuickJumpListItem() -{ -} +QQuickJumpListItem::~QQuickJumpListItem() = default; int QQuickJumpListItem::type() const { @@ -64,7 +62,7 @@ void QQuickJumpListItem::setType(int type) QWinJumpListItem *QQuickJumpListItem::toJumpListItem() const { - QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Separator); + auto *item = new QWinJumpListItem(QWinJumpListItem::Separator); switch (m_type) { case ItemTypeDestination: item->setType(QWinJumpListItem::Destination); diff --git a/src/imports/winextras/qquickjumplistitem_p.h b/src/imports/winextras/qquickjumplistitem_p.h index a202c41..47d92d7 100644 --- a/src/imports/winextras/qquickjumplistitem_p.h +++ b/src/imports/winextras/qquickjumplistitem_p.h @@ -61,16 +61,15 @@ class QQuickJumpListItem : public QObject { Q_OBJECT Q_PROPERTY(int __jumpListItemType READ type WRITE setType) - Q_ENUMS(JumpListItemType) - public: enum JumpListItemType { ItemTypeLink = 1, ItemTypeDestination = 2, ItemTypeSeparator = 3 }; + Q_ENUM(JumpListItemType) - explicit QQuickJumpListItem(QObject *p = 0); + explicit QQuickJumpListItem(QObject *p = nullptr); ~QQuickJumpListItem(); int type() const; diff --git a/src/imports/winextras/qquicktaskbarbutton.cpp b/src/imports/winextras/qquicktaskbarbutton.cpp index 7e8fd88..688ef35 100644 --- a/src/imports/winextras/qquicktaskbarbutton.cpp +++ b/src/imports/winextras/qquicktaskbarbutton.cpp @@ -123,9 +123,7 @@ QQuickTaskbarButton::QQuickTaskbarButton(QQuickItem *parent) : QQuickItem(parent { } -QQuickTaskbarButton::~QQuickTaskbarButton() -{ -} +QQuickTaskbarButton::~QQuickTaskbarButton() = default; /*! \qmlpropertygroup ::TaskbarButton::progress diff --git a/src/imports/winextras/qquicktaskbarbutton_p.h b/src/imports/winextras/qquicktaskbarbutton_p.h index 3c34c53..a26fa67 100644 --- a/src/imports/winextras/qquicktaskbarbutton_p.h +++ b/src/imports/winextras/qquicktaskbarbutton_p.h @@ -68,7 +68,7 @@ class QQuickTaskbarOverlay : public QObject Q_PROPERTY(QString accessibleDescription READ accessibleDescription WRITE setAccessibleDescription NOTIFY accessibleDescriptionChanged) public: - explicit QQuickTaskbarOverlay(QWinTaskbarButton *button, QObject *parent = 0); + explicit QQuickTaskbarOverlay(QWinTaskbarButton *button, QObject *parent = nullptr); QUrl iconSource() const; void setIconSource(const QUrl &iconSource); @@ -95,7 +95,7 @@ class QQuickTaskbarButton : public QQuickItem Q_PROPERTY(QWinTaskbarProgress *progress READ progress CONSTANT) public: - explicit QQuickTaskbarButton(QQuickItem *parent = 0); + explicit QQuickTaskbarButton(QQuickItem *parent = nullptr); ~QQuickTaskbarButton(); QQuickTaskbarOverlay *overlay() const; diff --git a/src/imports/winextras/qquickthumbnailtoolbar.cpp b/src/imports/winextras/qquickthumbnailtoolbar.cpp index 00eb1b5..7bdf112 100644 --- a/src/imports/winextras/qquickthumbnailtoolbar.cpp +++ b/src/imports/winextras/qquickthumbnailtoolbar.cpp @@ -74,9 +74,7 @@ QQuickThumbnailToolBar::QQuickThumbnailToolBar(QQuickItem *parent) : this, &QQuickThumbnailToolBar::iconicLivePreviewRequested); } -QQuickThumbnailToolBar::~QQuickThumbnailToolBar() -{ -} +QQuickThumbnailToolBar::~QQuickThumbnailToolBar() = default; int QQuickThumbnailToolBar::count() const { @@ -85,12 +83,12 @@ int QQuickThumbnailToolBar::count() const QQmlListProperty<QObject> QQuickThumbnailToolBar::data() { - return QQmlListProperty<QObject>(this, 0, &QQuickThumbnailToolBar::addData, 0, 0, 0); + return QQmlListProperty<QObject>(this, nullptr, &QQuickThumbnailToolBar::addData, nullptr, nullptr, nullptr); } QQmlListProperty<QQuickThumbnailToolButton> QQuickThumbnailToolBar::buttons() { - return QQmlListProperty<QQuickThumbnailToolButton>(this, 0, &QQuickThumbnailToolBar::buttonCount, &QQuickThumbnailToolBar::buttonAt); + return QQmlListProperty<QQuickThumbnailToolButton>(this, nullptr, &QQuickThumbnailToolBar::buttonCount, &QQuickThumbnailToolBar::buttonAt); } void QQuickThumbnailToolBar::addButton(QQuickThumbnailToolButton *button) @@ -226,8 +224,8 @@ void QQuickThumbnailToolBar::itemChange(QQuickItem::ItemChange change, const QQu void QQuickThumbnailToolBar::addData(QQmlListProperty<QObject> *property, QObject *object) { - if (QQuickThumbnailToolButton *button = qobject_cast<QQuickThumbnailToolButton *>(object)) { - QQuickThumbnailToolBar *quickThumbbar = static_cast<QQuickThumbnailToolBar *>(property->object); + if (auto *button = qobject_cast<QQuickThumbnailToolButton *>(object)) { + auto *quickThumbbar = static_cast<QQuickThumbnailToolBar *>(property->object); quickThumbbar->m_toolbar.addButton(button->m_button); quickThumbbar->m_buttons.append(button); emit quickThumbbar->countChanged(); diff --git a/src/imports/winextras/qquickthumbnailtoolbar_p.h b/src/imports/winextras/qquickthumbnailtoolbar_p.h index 2b01849..12a9d27 100644 --- a/src/imports/winextras/qquickthumbnailtoolbar_p.h +++ b/src/imports/winextras/qquickthumbnailtoolbar_p.h @@ -74,7 +74,7 @@ class QQuickThumbnailToolBar : public QQuickItem Q_CLASSINFO("DefaultProperty", "data") public: - explicit QQuickThumbnailToolBar(QQuickItem *parent = 0); + explicit QQuickThumbnailToolBar(QQuickItem *parent = nullptr); ~QQuickThumbnailToolBar(); int count() const; @@ -109,7 +109,7 @@ private Q_SLOTS: void iconicLivePreviewLoaded(const QVariant &); protected: - void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data); + void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) override; private: static void addData(QQmlListProperty<QObject> *property, QObject *button); diff --git a/src/imports/winextras/qquickthumbnailtoolbutton.cpp b/src/imports/winextras/qquickthumbnailtoolbutton.cpp index 268b303..e4a1f81 100644 --- a/src/imports/winextras/qquickthumbnailtoolbutton.cpp +++ b/src/imports/winextras/qquickthumbnailtoolbutton.cpp @@ -67,9 +67,7 @@ QQuickThumbnailToolButton::QQuickThumbnailToolButton(QObject *parent) : connect(m_button, &QWinThumbnailToolButton::clicked, this, &QQuickThumbnailToolButton::clicked); } -QQuickThumbnailToolButton::~QQuickThumbnailToolButton() -{ -} +QQuickThumbnailToolButton::~QQuickThumbnailToolButton() = default; /*! \qmlproperty url ThumbnailToolButton::iconSource diff --git a/src/imports/winextras/qquickthumbnailtoolbutton_p.h b/src/imports/winextras/qquickthumbnailtoolbutton_p.h index 4fff55a..aca0e74 100644 --- a/src/imports/winextras/qquickthumbnailtoolbutton_p.h +++ b/src/imports/winextras/qquickthumbnailtoolbutton_p.h @@ -70,7 +70,7 @@ class QQuickThumbnailToolButton : public QObject Q_PROPERTY(bool flat READ isFlat WRITE setFlat NOTIFY flatChanged) public: - explicit QQuickThumbnailToolButton(QObject *parent = 0); + explicit QQuickThumbnailToolButton(QObject *parent = nullptr); ~QQuickThumbnailToolButton(); void setIconSource(const QUrl &iconSource); diff --git a/src/imports/winextras/winextras.pro b/src/imports/winextras/winextras.pro index 35427ba..dc778e6 100644 --- a/src/imports/winextras/winextras.pro +++ b/src/imports/winextras/winextras.pro @@ -5,8 +5,6 @@ IMPORT_VERSION = 1.$$QT_MINOR_VERSION QT += qml quick winextras winextras-private -DEFINES += QT_NO_FOREACH - QML_FILES += \ JumpListLink.qml \ JumpListDestination.qml \ diff --git a/src/winextras/qwineventfilter.cpp b/src/winextras/qwineventfilter.cpp index be9add4..4b88f54 100644 --- a/src/winextras/qwineventfilter.cpp +++ b/src/winextras/qwineventfilter.cpp @@ -51,7 +51,7 @@ # define WM_DWMCOMPOSITIONCHANGED 0x031E #endif -QWinEventFilter *QWinEventFilter::instance = 0; +QWinEventFilter *QWinEventFilter::instance = nullptr; QWinEventFilter::QWinEventFilter() : tbButtonCreatedMsgId(RegisterWindowMessageW(L"TaskbarButtonCreated")) @@ -60,16 +60,20 @@ QWinEventFilter::QWinEventFilter() : QWinEventFilter::~QWinEventFilter() { - instance = 0; + instance = nullptr; } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +bool QWinEventFilter::nativeEventFilter(const QByteArray &, void *message, qintptr *result) +#else bool QWinEventFilter::nativeEventFilter(const QByteArray &, void *message, long *result) +#endif { MSG *msg = static_cast<MSG *>(message); bool filterOut = false; - QEvent *event = 0; - QWindow *window = 0; + QEvent *event = nullptr; + QWindow *window = nullptr; switch (msg->message) { case WM_DWMCOLORIZATIONCOLORCHANGED : event = new QWinColorizationChangeEvent(QRgb(msg->wParam), msg->lParam); diff --git a/src/winextras/qwineventfilter_p.h b/src/winextras/qwineventfilter_p.h index 12b9d58..ad37177 100644 --- a/src/winextras/qwineventfilter_p.h +++ b/src/winextras/qwineventfilter_p.h @@ -64,7 +64,11 @@ class Q_WINEXTRAS_EXPORT QWinEventFilter : public QAbstractNativeEventFilter public: QWinEventFilter(); ~QWinEventFilter(); - virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override; +#else + bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override; +#endif static void setup(); diff --git a/src/winextras/qwinfunctions.cpp b/src/winextras/qwinfunctions.cpp index 82fd25b..b237a50 100644 --- a/src/winextras/qwinfunctions.cpp +++ b/src/winextras/qwinfunctions.cpp @@ -209,9 +209,9 @@ HRGN QtWin::toHRGN(const QRegion ®ion) { const int size = region.rectCount(); if (size == 0) - return 0; + return nullptr; - HRGN resultRgn = 0; + HRGN resultRgn = nullptr; const auto rects = region.begin(); resultRgn = qt_RectToHRGN(rects[0]); for (int i = 1; i < size; i++) { @@ -231,17 +231,17 @@ HRGN QtWin::toHRGN(const QRegion ®ion) */ QRegion QtWin::fromHRGN(HRGN hrgn) { - DWORD regionDataSize = GetRegionData(hrgn, 0, NULL); + DWORD regionDataSize = GetRegionData(hrgn, 0, nullptr); if (regionDataSize == 0) return QRegion(); - LPRGNDATA regionData = reinterpret_cast<LPRGNDATA>(malloc(regionDataSize)); + auto regionData = reinterpret_cast<LPRGNDATA>(malloc(regionDataSize)); if (!regionData) return QRegion(); QRegion region; if (GetRegionData(hrgn, regionDataSize, regionData) == regionDataSize) { - LPRECT pRect = reinterpret_cast<LPRECT>(regionData->Buffer); + auto pRect = reinterpret_cast<LPRECT>(regionData->Buffer); for (DWORD i = 0; i < regionData->rdh.nCount; ++i) region += QRect(pRect[i].left, pRect[i].top, pRect[i].right - pRect[i].left, @@ -1623,7 +1623,7 @@ QtWin::WindowFlip3DPolicy QtWin::windowFlip3DPolicy(QWindow *window) { Q_ASSERT_X(window, Q_FUNC_INFO, "window is null"); - const DWORD value = + const auto value = QtDwmApiDll::windowAttribute<DWORD>(reinterpret_cast<HWND>(window->winId()), DWMWA_FLIP3D_POLICY, DWORD(DWMFLIP3D_DEFAULT)); QtWin::WindowFlip3DPolicy policy = QtWin::FlipDefault; @@ -1738,10 +1738,10 @@ void QtWin::enableBlurBehindWindow(QWindow *window, const QRegion ®ion) { Q_ASSERT_X(window, Q_FUNC_INFO, "window is null"); - DWM_BLURBEHIND dwmbb = {0, 0, 0, 0}; + DWM_BLURBEHIND dwmbb = {0, 0, nullptr, 0}; dwmbb.dwFlags = DWM_BB_ENABLE; dwmbb.fEnable = TRUE; - HRGN rgn = 0; + HRGN rgn = nullptr; if (!region.isNull()) { rgn = toHRGN(region); if (rgn) { @@ -1788,7 +1788,7 @@ void QtWin::enableBlurBehindWindow(QWindow *window) void QtWin::disableBlurBehindWindow(QWindow *window) { Q_ASSERT_X(window, Q_FUNC_INFO, "window is null"); - DWM_BLURBEHIND dwmbb = {0, 0, 0, 0}; + DWM_BLURBEHIND dwmbb = {0, 0, nullptr, 0}; dwmbb.dwFlags = DWM_BB_ENABLE; DwmEnableBlurBehindWindow(reinterpret_cast<HWND>(window->winId()), &dwmbb); } @@ -1859,12 +1859,12 @@ void QtWin::setCurrentProcessExplicitAppUserModelID(const QString &id) */ ITaskbarList3 *qt_createITaskbarList3() { - ITaskbarList3 *pTbList = 0; - HRESULT result = CoCreateInstance(CLSID_TaskbarList, 0, CLSCTX_INPROC_SERVER, qIID_ITaskbarList3, reinterpret_cast<void **>(&pTbList)); + ITaskbarList3 *pTbList = nullptr; + HRESULT result = CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_INPROC_SERVER, qIID_ITaskbarList3, reinterpret_cast<void **>(&pTbList)); if (SUCCEEDED(result)) { if (FAILED(pTbList->HrInit())) { pTbList->Release(); - pTbList = 0; + pTbList = nullptr; } } return pTbList; @@ -1875,12 +1875,12 @@ ITaskbarList3 *qt_createITaskbarList3() */ ITaskbarList2 *qt_createITaskbarList2() { - ITaskbarList3 *pTbList = 0; - HRESULT result = CoCreateInstance(CLSID_TaskbarList, 0, CLSCTX_INPROC_SERVER, qIID_ITaskbarList2, reinterpret_cast<void **>(&pTbList)); + ITaskbarList3 *pTbList = nullptr; + HRESULT result = CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_INPROC_SERVER, qIID_ITaskbarList2, reinterpret_cast<void **>(&pTbList)); if (SUCCEEDED(result)) { if (FAILED(pTbList->HrInit())) { pTbList->Release(); - pTbList = 0; + pTbList = nullptr; } } return pTbList; diff --git a/src/winextras/qwinfunctions.h b/src/winextras/qwinfunctions.h index fe461d1..ef2aece 100644 --- a/src/winextras/qwinfunctions.h +++ b/src/winextras/qwinfunctions.h @@ -131,10 +131,8 @@ namespace QtWin inline bool isWindowExcludedFromPeek(QWidget *window) { - if (!window->windowHandle()) - return false; - else - return isWindowExcludedFromPeek(window->windowHandle()); + auto handle = window->windowHandle(); + return handle && isWindowExcludedFromPeek(handle); } inline void setWindowDisallowPeek(QWidget *window, bool disallow) @@ -145,10 +143,8 @@ namespace QtWin inline bool isWindowPeekDisallowed(QWidget *window) { - if (!window->windowHandle()) - return false; - else - return isWindowPeekDisallowed(window->windowHandle()); + auto handle = window->windowHandle(); + return handle && isWindowPeekDisallowed(handle); } inline void setWindowFlip3DPolicy(QWidget *window, WindowFlip3DPolicy policy) diff --git a/src/winextras/qwinfunctions_p.h b/src/winextras/qwinfunctions_p.h index 03dff5e..0ee73cb 100644 --- a/src/winextras/qwinfunctions_p.h +++ b/src/winextras/qwinfunctions_p.h @@ -83,7 +83,7 @@ inline void qt_qstringToNullTerminated(const QString &src, wchar_t *dst) inline wchar_t *qt_qstringToNullTerminated(const QString &src) { - wchar_t *buffer = new wchar_t[src.length() + 1]; + auto *buffer = new wchar_t[src.length() + 1]; qt_qstringToNullTerminated(src, buffer); return buffer; } diff --git a/src/winextras/qwinjumplist.cpp b/src/winextras/qwinjumplist.cpp index ca1b20a..55c99f4 100644 --- a/src/winextras/qwinjumplist.cpp +++ b/src/winextras/qwinjumplist.cpp @@ -159,11 +159,11 @@ void QWinJumpListPrivate::_q_rebuild() void QWinJumpListPrivate::destroy() { delete recent; - recent = 0; + recent = nullptr; delete frequent; - frequent = 0; + frequent = nullptr; delete tasks; - tasks = 0; + tasks = nullptr; qDeleteAll(categories); categories.clear(); invalidate(); @@ -179,7 +179,7 @@ bool QWinJumpListPrivate::beginList() } if (SUCCEEDED(hresult)) { UINT maxSlots = 0; - IUnknown *array = 0; + IUnknown *array = nullptr; hresult = pDestList->BeginList(&maxSlots, qIID_IUnknown, reinterpret_cast<void **>(&array)); if (array) array->Release(); @@ -234,15 +234,15 @@ QList<QWinJumpListItem *> QWinJumpListPrivate::fromComCollection(IObjectArray *a UINT count = 0; array->GetCount(&count); for (UINT i = 0; i < count; ++i) { - IUnknown *collectionItem = 0; + IUnknown *collectionItem = nullptr; HRESULT hresult = array->GetAt(i, qIID_IUnknown, reinterpret_cast<void **>(&collectionItem)); if (FAILED(hresult)) { QWinJumpListPrivate::warning("GetAt", hresult); continue; } - IShellItem2 *shellItem = 0; - IShellLinkW *shellLink = 0; - QWinJumpListItem *jumplistItem = 0; + IShellItem2 *shellItem = nullptr; + IShellLinkW *shellLink = nullptr; + QWinJumpListItem *jumplistItem = nullptr; if (SUCCEEDED(collectionItem->QueryInterface(qIID_IShellItem2, reinterpret_cast<void **>(&shellItem)))) { jumplistItem = fromIShellItem(shellItem); shellItem->Release(); @@ -262,12 +262,12 @@ QList<QWinJumpListItem *> QWinJumpListPrivate::fromComCollection(IObjectArray *a IObjectCollection *QWinJumpListPrivate::toComCollection(const QList<QWinJumpListItem *> &list) { if (list.isEmpty()) - return 0; - IObjectCollection *collection = 0; - HRESULT hresult = CoCreateInstance(qCLSID_EnumerableObjectCollection, 0, CLSCTX_INPROC_SERVER, qIID_IObjectCollection, reinterpret_cast<void **>(&collection)); + return nullptr; + IObjectCollection *collection = nullptr; + HRESULT hresult = CoCreateInstance(qCLSID_EnumerableObjectCollection, nullptr, CLSCTX_INPROC_SERVER, qIID_IObjectCollection, reinterpret_cast<void **>(&collection)); if (FAILED(hresult)) { QWinJumpListPrivate::warning("QWinJumpList: failed to instantiate IObjectCollection", hresult); - return 0; + return nullptr; } for (QWinJumpListItem *item : list) { IUnknown *iitem = toICustomDestinationListItem(item); @@ -281,7 +281,7 @@ IObjectCollection *QWinJumpListPrivate::toComCollection(const QList<QWinJumpList QWinJumpListItem *QWinJumpListPrivate::fromIShellLink(IShellLinkW *link) { - QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Link); + auto *item = new QWinJumpListItem(QWinJumpListItem::Link); IPropertyStore *linkProps; link->QueryInterface(qIID_IPropertyStore, reinterpret_cast<void **>(&linkProps)); @@ -309,7 +309,7 @@ QWinJumpListItem *QWinJumpListPrivate::fromIShellLink(IShellLinkW *link) QWinJumpListItem *QWinJumpListPrivate::fromIShellItem(IShellItem2 *shellitem) { - QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Destination); + auto *item = new QWinJumpListItem(QWinJumpListItem::Destination); wchar_t *strPtr; shellitem->GetDisplayName(SIGDN_FILESYSPATH, &strPtr); item->setFilePath(QDir::fromNativeSeparators(QString::fromWCharArray(strPtr))); @@ -327,17 +327,17 @@ IUnknown *QWinJumpListPrivate::toICustomDestinationListItem(const QWinJumpListIt case QWinJumpListItem::Separator : return makeSeparatorShellItem(); default: - return 0; + return nullptr; } } IShellLinkW *QWinJumpListPrivate::toIShellLink(const QWinJumpListItem *item) { - IShellLinkW *link = 0; - HRESULT hresult = CoCreateInstance(CLSID_ShellLink, 0, CLSCTX_INPROC_SERVER, qIID_IShellLinkW, reinterpret_cast<void **>(&link)); + IShellLinkW *link = nullptr; + HRESULT hresult = CoCreateInstance(CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER, qIID_IShellLinkW, reinterpret_cast<void **>(&link)); if (FAILED(hresult)) { QWinJumpListPrivate::warning("QWinJumpList: failed to instantiate IShellLinkW", hresult); - return 0; + return nullptr; } const QString args = createArguments(item->arguments()); @@ -348,7 +348,7 @@ IShellLinkW *QWinJumpListPrivate::toIShellLink(const QWinJumpListItem *item) qMax(item->description().size(), qMax(item->title().size(), qMax(item->filePath().size(), iconPathSize))))) + 1; - wchar_t *buffer = new wchar_t[bufferSize]; + auto *buffer = new wchar_t[bufferSize]; if (!item->description().isEmpty()) { qt_qstringToNullTerminated(item->description(), buffer); @@ -380,7 +380,7 @@ IShellLinkW *QWinJumpListPrivate::toIShellLink(const QWinJumpListItem *item) hresult = link->QueryInterface(qIID_IPropertyStore, reinterpret_cast<void **>(&properties)); if (FAILED(hresult)) { link->Release(); - return 0; + return nullptr; } qt_qstringToNullTerminated(item->title(), buffer); @@ -396,24 +396,24 @@ IShellLinkW *QWinJumpListPrivate::toIShellLink(const QWinJumpListItem *item) IShellItem2 *QWinJumpListPrivate::toIShellItem(const QWinJumpListItem *item) { - IShellItem2 *shellitem = 0; + IShellItem2 *shellitem = nullptr; QScopedArrayPointer<wchar_t> buffer(qt_qstringToNullTerminated(item->filePath())); - SHCreateItemFromParsingName(buffer.data(), 0, qIID_IShellItem2, reinterpret_cast<void **>(&shellitem)); + SHCreateItemFromParsingName(buffer.data(), nullptr, qIID_IShellItem2, reinterpret_cast<void **>(&shellitem)); return shellitem; } IShellLinkW *QWinJumpListPrivate::makeSeparatorShellItem() { IShellLinkW *separator; - HRESULT res = CoCreateInstance(CLSID_ShellLink, 0, CLSCTX_INPROC_SERVER, qIID_IShellLinkW, reinterpret_cast<void **>(&separator)); + HRESULT res = CoCreateInstance(CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER, qIID_IShellLinkW, reinterpret_cast<void **>(&separator)); if (FAILED(res)) - return 0; + return nullptr; IPropertyStore *properties; res = separator->QueryInterface(qIID_IPropertyStore, reinterpret_cast<void **>(&properties)); if (FAILED(res)) { separator->Release(); - return 0; + return nullptr; } PROPVARIANT isSeparator; @@ -434,7 +434,7 @@ QWinJumpList::QWinJumpList(QObject *parent) : { Q_D(QWinJumpList); d->q_ptr = this; - HRESULT hresult = CoCreateInstance(qCLSID_DestinationList, 0, CLSCTX_INPROC_SERVER, qIID_ICustomDestinationList, reinterpret_cast<void **>(&d_ptr->pDestList)); + HRESULT hresult = CoCreateInstance(qCLSID_DestinationList, nullptr, CLSCTX_INPROC_SERVER, qIID_ICustomDestinationList, reinterpret_cast<void **>(&d_ptr->pDestList)); if (FAILED(hresult)) QWinJumpListPrivate::warning("CoCreateInstance", hresult); d->invalidate(); @@ -450,7 +450,7 @@ QWinJumpList::~QWinJumpList() d->_q_rebuild(); if (d->pDestList) { d->pDestList->Release(); - d->pDestList = 0; + d->pDestList = nullptr; } d->destroy(); } @@ -496,7 +496,7 @@ QWinJumpListCategory *QWinJumpList::recent() const { Q_D(const QWinJumpList); if (!d->recent) { - QWinJumpList *that = const_cast<QWinJumpList *>(this); + auto *that = const_cast<QWinJumpList *>(this); that->d_func()->recent = QWinJumpListCategoryPrivate::create(QWinJumpListCategory::Recent, that); } return d->recent; @@ -509,7 +509,7 @@ QWinJumpListCategory *QWinJumpList::frequent() const { Q_D(const QWinJumpList); if (!d->frequent) { - QWinJumpList *that = const_cast<QWinJumpList *>(this); + auto *that = const_cast<QWinJumpList *>(this); that->d_func()->frequent = QWinJumpListCategoryPrivate::create(QWinJumpListCategory::Frequent, that); } return d->frequent; @@ -522,7 +522,7 @@ QWinJumpListCategory *QWinJumpList::tasks() const { Q_D(const QWinJumpList); if (!d->tasks) { - QWinJumpList *that = const_cast<QWinJumpList *>(this); + auto *that = const_cast<QWinJumpList *>(this); that->d_func()->tasks = QWinJumpListCategoryPrivate::create(QWinJumpListCategory::Tasks, that); } return d->tasks; @@ -558,7 +558,7 @@ void QWinJumpList::addCategory(QWinJumpListCategory *category) */ QWinJumpListCategory *QWinJumpList::addCategory(const QString &title, const QList<QWinJumpListItem *> items) { - QWinJumpListCategory *category = new QWinJumpListCategory(title); + auto *category = new QWinJumpListCategory(title); for (QWinJumpListItem *item : items) category->addItem(item); addCategory(category); diff --git a/src/winextras/qwinjumplistcategory.cpp b/src/winextras/qwinjumplistcategory.cpp index 721a78c..a29c37e 100644 --- a/src/winextras/qwinjumplistcategory.cpp +++ b/src/winextras/qwinjumplistcategory.cpp @@ -104,8 +104,8 @@ void QWinJumpListCategoryPrivate::invalidate() void QWinJumpListCategoryPrivate::loadRecents() { Q_ASSERT(jumpList); - IApplicationDocumentLists *pDocList = 0; - HRESULT hresult = CoCreateInstance(qCLSID_ApplicationDocumentLists, 0, CLSCTX_INPROC_SERVER, qIID_IApplicationDocumentLists, reinterpret_cast<void **>(&pDocList)); + IApplicationDocumentLists *pDocList = nullptr; + HRESULT hresult = CoCreateInstance(qCLSID_ApplicationDocumentLists, nullptr, CLSCTX_INPROC_SERVER, qIID_IApplicationDocumentLists, reinterpret_cast<void **>(&pDocList)); if (SUCCEEDED(hresult)) { if (!jumpList->identifier().isEmpty()) { wchar_t *id = qt_qstringToNullTerminated(jumpList->identifier()); @@ -113,7 +113,7 @@ void QWinJumpListCategoryPrivate::loadRecents() delete[] id; } if (SUCCEEDED(hresult)) { - IObjectArray *array = 0; + IObjectArray *array = nullptr; hresult = pDocList->GetList(type == QWinJumpListCategory::Recent ? ADLT_RECENT : ADLT_FREQUENT, 0, qIID_IObjectArray, reinterpret_cast<void **>(&array)); if (SUCCEEDED(hresult)) { @@ -130,7 +130,7 @@ void QWinJumpListCategoryPrivate::loadRecents() void QWinJumpListCategoryPrivate::addRecent(QWinJumpListItem *item) { Q_ASSERT(item->type() == QWinJumpListItem::Link); - wchar_t *id = 0; + wchar_t *id = nullptr; if (jumpList && !jumpList->identifier().isEmpty()) id = qt_qstringToNullTerminated(jumpList->identifier()); @@ -146,8 +146,8 @@ void QWinJumpListCategoryPrivate::addRecent(QWinJumpListItem *item) void QWinJumpListCategoryPrivate::clearRecents() { - IApplicationDestinations *pDest = 0; - HRESULT hresult = CoCreateInstance(qCLSID_ApplicationDestinations, 0, CLSCTX_INPROC_SERVER, qIID_IApplicationDestinations, reinterpret_cast<void **>(&pDest)); + IApplicationDestinations *pDest = nullptr; + HRESULT hresult = CoCreateInstance(qCLSID_ApplicationDestinations, nullptr, CLSCTX_INPROC_SERVER, qIID_IApplicationDestinations, reinterpret_cast<void **>(&pDest)); if (SUCCEEDED(hresult)) { const QString identifier = jumpList ? jumpList->identifier() : QString(); if (!identifier.isEmpty()) { @@ -294,7 +294,7 @@ void QWinJumpListCategory::addItem(QWinJumpListItem *item) */ QWinJumpListItem *QWinJumpListCategory::addDestination(const QString &filePath) { - QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Destination); + auto *item = new QWinJumpListItem(QWinJumpListItem::Destination); item->setFilePath(filePath); addItem(item); return item; @@ -317,7 +317,7 @@ QWinJumpListItem *QWinJumpListCategory::addLink(const QString &title, const QStr */ QWinJumpListItem *QWinJumpListCategory::addLink(const QIcon &icon, const QString &title, const QString &executablePath, const QStringList &arguments) { - QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Link); + auto *item = new QWinJumpListItem(QWinJumpListItem::Link); item->setFilePath(executablePath); item->setTitle(title); item->setArguments(arguments); @@ -333,7 +333,7 @@ QWinJumpListItem *QWinJumpListCategory::addLink(const QIcon &icon, const QString */ QWinJumpListItem *QWinJumpListCategory::addSeparator() { - QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Separator); + auto *item = new QWinJumpListItem(QWinJumpListItem::Separator); addItem(item); return item; } diff --git a/src/winextras/qwinjumplistitem.cpp b/src/winextras/qwinjumplistitem.cpp index 6c183ec..ee117bc 100644 --- a/src/winextras/qwinjumplistitem.cpp +++ b/src/winextras/qwinjumplistitem.cpp @@ -80,7 +80,7 @@ QWinJumpListItem::QWinJumpListItem(QWinJumpListItem::Type type) : d_ptr(new QWinJumpListItemPrivate) { d_ptr->type = type; - d_ptr->category = 0; + d_ptr->category = nullptr; } /*! diff --git a/src/winextras/qwintaskbarbutton.cpp b/src/winextras/qwintaskbarbutton.cpp index a1475d3..9df4c30 100644 --- a/src/winextras/qwintaskbarbutton.cpp +++ b/src/winextras/qwintaskbarbutton.cpp @@ -100,16 +100,16 @@ static TBPFLAG nativeProgressState(QWinTaskbarProgress *progress) return TBPF_NORMAL; } -QWinTaskbarButtonPrivate::QWinTaskbarButtonPrivate() : progressBar(0), pTbList(0), window(0) +QWinTaskbarButtonPrivate::QWinTaskbarButtonPrivate() { - HRESULT hresult = CoCreateInstance(CLSID_TaskbarList, 0, CLSCTX_INPROC_SERVER, qIID_ITaskbarList4, reinterpret_cast<void **>(&pTbList)); + HRESULT hresult = CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_INPROC_SERVER, qIID_ITaskbarList4, reinterpret_cast<void **>(&pTbList)); if (FAILED(hresult)) { - pTbList = 0; + pTbList = nullptr; const QString err = QtWin::errorStringFromHresult(hresult); qWarning("QWinTaskbarButton: qIID_ITaskbarList4 was not created: %#010x, %s.", unsigned(hresult), qPrintable(err)); } else if (FAILED(pTbList->HrInit())) { pTbList->Release(); - pTbList = 0; + pTbList = nullptr; const QString err = QtWin::errorStringFromHresult(hresult); qWarning("QWinTaskbarButton: qIID_ITaskbarList4 was not initialized: %#010x, %s.", unsigned(hresult), qPrintable(err)); } @@ -136,8 +136,8 @@ void QWinTaskbarButtonPrivate::updateOverlayIcon() if (!pTbList || !window) return; - wchar_t *descrPtr = 0; - HICON hicon = 0; + wchar_t *descrPtr = nullptr; + HICON hicon = nullptr; if (!overlayAccessibleDescription.isEmpty()) descrPtr = qt_qstringToNullTerminated(overlayAccessibleDescription); if (!overlayIcon.isNull()) @@ -146,9 +146,9 @@ void QWinTaskbarButtonPrivate::updateOverlayIcon() if (hicon) pTbList->SetOverlayIcon(handle(), hicon, descrPtr); else if (!hicon && !overlayIcon.isNull()) - pTbList->SetOverlayIcon(handle(), static_cast<HICON>(LoadImage(0, IDI_APPLICATION, IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, LR_SHARED)), descrPtr); + pTbList->SetOverlayIcon(handle(), static_cast<HICON>(LoadImage(nullptr, IDI_APPLICATION, IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, LR_SHARED)), descrPtr); else - pTbList->SetOverlayIcon(handle(), NULL, descrPtr); + pTbList->SetOverlayIcon(handle(), nullptr, descrPtr); if (hicon) DestroyIcon(hicon); @@ -269,8 +269,8 @@ QWinTaskbarProgress *QWinTaskbarButton::progress() const { Q_D(const QWinTaskbarButton); if (!d->progressBar) { - QWinTaskbarButton *that = const_cast<QWinTaskbarButton *>(this); - QWinTaskbarProgress *pbar = new QWinTaskbarProgress(that); + auto *that = const_cast<QWinTaskbarButton *>(this); + auto *pbar = new QWinTaskbarProgress(that); connect(pbar, SIGNAL(destroyed()), this, SLOT(_q_updateProgress())); connect(pbar, SIGNAL(valueChanged(int)), this, SLOT(_q_updateProgress())); connect(pbar, SIGNAL(minimumChanged(int)), this, SLOT(_q_updateProgress())); diff --git a/src/winextras/qwintaskbarbutton.h b/src/winextras/qwintaskbarbutton.h index dc4d469..627beee 100644 --- a/src/winextras/qwintaskbarbutton.h +++ b/src/winextras/qwintaskbarbutton.h @@ -70,7 +70,7 @@ public: QWinTaskbarProgress *progress() const; - bool eventFilter(QObject *, QEvent *); + bool eventFilter(QObject *, QEvent *) override; public Q_SLOTS: void setOverlayIcon(const QIcon &icon); diff --git a/src/winextras/qwintaskbarbutton_p.h b/src/winextras/qwintaskbarbutton_p.h index ceafe47..e5445b2 100644 --- a/src/winextras/qwintaskbarbutton_p.h +++ b/src/winextras/qwintaskbarbutton_p.h @@ -80,8 +80,8 @@ public: void _q_updateProgress(); - ITaskbarList4 *pTbList; - QWindow *window; + ITaskbarList4 *pTbList = nullptr; + QWindow *window = nullptr; }; QT_END_NAMESPACE diff --git a/src/winextras/qwinthumbnailtoolbar.cpp b/src/winextras/qwinthumbnailtoolbar.cpp index 3aa39b6..fc8d76e 100644 --- a/src/winextras/qwinthumbnailtoolbar.cpp +++ b/src/winextras/qwinthumbnailtoolbar.cpp @@ -185,7 +185,7 @@ void QWinThumbnailToolBar::removeButton(QWinThumbnailToolButton *button) { Q_D(QWinThumbnailToolBar); if (button && d->buttonList.contains(button)) { - button->d_func()->toolbar = 0; + button->d_func()->toolbar = nullptr; disconnect(button, &QWinThumbnailToolButton::changed, d, &QWinThumbnailToolBarPrivate::_q_scheduleUpdate); @@ -259,7 +259,7 @@ void QWinThumbnailToolBarPrivate::IconicPixmapCache::deleteBitmap() if (m_bitmap) { DeleteObject(m_bitmap); m_size = QSize(); - m_bitmap = 0; + m_bitmap = nullptr; } } @@ -275,7 +275,7 @@ bool QWinThumbnailToolBarPrivate::IconicPixmapCache::setPixmap(const QPixmap &pi HBITMAP QWinThumbnailToolBarPrivate::IconicPixmapCache::bitmap(const QSize &maxSize) { if (m_pixmap.isNull()) - return 0; + return nullptr; if (m_bitmap && m_size.width() <= maxSize.width() && m_size.height() <= maxSize.height()) return m_bitmap; deleteBitmap(); @@ -421,13 +421,13 @@ void QWinThumbnailToolBar::clear() static inline ITaskbarList4 *createTaskbarList() { - ITaskbarList4 *result = 0; - HRESULT hresult = CoCreateInstance(CLSID_TaskbarList, 0, CLSCTX_INPROC_SERVER, qIID_ITaskbarList4, reinterpret_cast<void **>(&result)); + ITaskbarList4 *result = nullptr; + HRESULT hresult = CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_INPROC_SERVER, qIID_ITaskbarList4, reinterpret_cast<void **>(&result)); if (FAILED(hresult)) { const QString err = QtWin::errorStringFromHresult(hresult); qWarning("QWinThumbnailToolBar: qIID_ITaskbarList4 was not created: %#010x, %s.", unsigned(hresult), qPrintable(err)); - return 0; + return nullptr; } hresult = result->HrInit(); if (FAILED(hresult)) { @@ -435,14 +435,13 @@ static inline ITaskbarList4 *createTaskbarList() const QString err = QtWin::errorStringFromHresult(hresult); qWarning("QWinThumbnailToolBar: qIID_ITaskbarList4 was not initialized: %#010x, %s.", unsigned(hresult), qPrintable(err)); - return 0; + return nullptr; } return result; } QWinThumbnailToolBarPrivate::QWinThumbnailToolBarPrivate() : - QObject(0), updateScheduled(false), window(0), pTbList(createTaskbarList()), q_ptr(0), - withinIconicThumbnailRequest(false), withinIconicLivePreviewRequest(false) + QObject(nullptr), pTbList(createTaskbarList()) { buttonList.reserve(windowsLimitedThumbbarSize); QCoreApplication::instance()->installNativeEventFilter(this); @@ -462,7 +461,7 @@ inline bool QWinThumbnailToolBarPrivate::hasHandle() const inline HWND QWinThumbnailToolBarPrivate::handle() const { - return hasHandle() ? reinterpret_cast<HWND>(window->winId()) : HWND(0); + return hasHandle() ? reinterpret_cast<HWND>(window->winId()) : nullptr; } void QWinThumbnailToolBarPrivate::initToolbar() @@ -504,7 +503,7 @@ void QWinThumbnailToolBarPrivate::_q_updateToolbar() if (!button->icon().isNull()) {; buttons[i].hIcon = QtWin::toHICON(button->icon().pixmap(GetSystemMetrics(SM_CXSMICON))); if (!buttons[i].hIcon) - buttons[i].hIcon = static_cast<HICON>(LoadImage(0, IDI_APPLICATION, IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, LR_SHARED)); + buttons[i].hIcon = static_cast<HICON>(LoadImage(nullptr, IDI_APPLICATION, IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, LR_SHARED)); else createdIcons << buttons[i].hIcon; } @@ -543,7 +542,11 @@ bool QWinThumbnailToolBarPrivate::eventFilter(QObject *object, QEvent *event) return QObject::eventFilter(object, event); } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +bool QWinThumbnailToolBarPrivate::nativeEventFilter(const QByteArray &, void *message, qintptr *result) +#else bool QWinThumbnailToolBarPrivate::nativeEventFilter(const QByteArray &, void *message, long *result) +#endif { const MSG *msg = static_cast<const MSG *>(message); if (handle() != msg->hwnd) diff --git a/src/winextras/qwinthumbnailtoolbar_p.h b/src/winextras/qwinthumbnailtoolbar_p.h index 38d210b..c3180f3 100644 --- a/src/winextras/qwinthumbnailtoolbar_p.h +++ b/src/winextras/qwinthumbnailtoolbar_p.h @@ -69,7 +69,7 @@ public: class IconicPixmapCache { public: - IconicPixmapCache() : m_bitmap(0) {} + IconicPixmapCache() = default; ~IconicPixmapCache() { deleteBitmap(); } operator bool() const { return !m_pixmap.isNull(); } @@ -84,7 +84,7 @@ public: QPixmap m_pixmap; QSize m_size; - HBITMAP m_bitmap; + HBITMAP m_bitmap = nullptr; }; QWinThumbnailToolBarPrivate(); @@ -95,16 +95,20 @@ public: void _q_scheduleUpdate(); bool eventFilter(QObject *, QEvent *) Q_DECL_OVERRIDE; - virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override; +#else + bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override; +#endif static void initButtons(THUMBBUTTON *buttons); static int makeNativeButtonFlags(const QWinThumbnailToolButton *button); static int makeButtonMask(const QWinThumbnailToolButton *button); static QString msgComFailed(const char *function, HRESULT hresult); - bool updateScheduled; + bool updateScheduled = false; QList<QWinThumbnailToolButton *> buttonList; - QWindow *window; + QWindow *window = nullptr; ITaskbarList4 * const pTbList; IconicPixmapCache iconicThumbnail; @@ -117,10 +121,10 @@ private: void updateIconicThumbnail(const MSG *message); void updateIconicLivePreview(const MSG *message); - QWinThumbnailToolBar *q_ptr; + QWinThumbnailToolBar *q_ptr = nullptr; Q_DECLARE_PUBLIC(QWinThumbnailToolBar) - bool withinIconicThumbnailRequest; - bool withinIconicLivePreviewRequest; + bool withinIconicThumbnailRequest = false; + bool withinIconicLivePreviewRequest = false; }; QT_END_NAMESPACE diff --git a/src/winextras/winextras.pro b/src/winextras/winextras.pro index 705c48c..8f582a5 100644 --- a/src/winextras/winextras.pro +++ b/src/winextras/winextras.pro @@ -2,8 +2,6 @@ TARGET = QtWinExtras QT += gui-private core-private -DEFINES += QT_NO_FOREACH - SOURCES += \ qwinfunctions.cpp \ qwintaskbarbutton.cpp \ diff --git a/tests/auto/qpixmap/tst_qpixmap.cpp b/tests/auto/qpixmap/tst_qpixmap.cpp index 8383194..2791cd2 100644 --- a/tests/auto/qpixmap/tst_qpixmap.cpp +++ b/tests/auto/qpixmap/tst_qpixmap.cpp @@ -87,7 +87,7 @@ void tst_QPixmap::toHBITMAP() const HBITMAP bitmap = QtWin::toHBITMAP(pm); - QVERIFY(bitmap != 0); + QVERIFY(bitmap != nullptr); // Verify size BITMAP bitmapInfo; @@ -98,10 +98,10 @@ void tst_QPixmap::toHBITMAP() QCOMPARE(LONG(100), bitmapInfo.bmWidth); QCOMPARE(LONG(100), bitmapInfo.bmHeight); - const HDC displayDc = GetDC(0); + const HDC displayDc = GetDC(nullptr); const HDC bitmapDc = CreateCompatibleDC(displayDc); - const HBITMAP nullBitmap = static_cast<HBITMAP>(SelectObject(bitmapDc, bitmap)); + const auto nullBitmap = static_cast<HBITMAP>(SelectObject(bitmapDc, bitmap)); const COLORREF pixel = GetPixel(bitmapDc, 0, 0); QCOMPARE(int(GetRValue(pixel)), red); @@ -112,7 +112,7 @@ void tst_QPixmap::toHBITMAP() SelectObject(bitmapDc, nullBitmap); DeleteObject(bitmap); DeleteDC(bitmapDc); - ReleaseDC(0, displayDc); + ReleaseDC(nullptr, displayDc); } void tst_QPixmap::fromHBITMAP_data() @@ -126,7 +126,7 @@ void tst_QPixmap::fromHBITMAP() QFETCH(int, green); QFETCH(int, blue); - const HDC displayDc = GetDC(0); + const HDC displayDc = GetDC(nullptr); const HDC bitmapDc = CreateCompatibleDC(displayDc); const HBITMAP bitmap = CreateCompatibleBitmap(displayDc, 100, 100); SelectObject(bitmapDc, bitmap); @@ -148,7 +148,7 @@ void tst_QPixmap::fromHBITMAP() DeleteObject(SelectObject(bitmapDc, oldBrush)); DeleteObject(SelectObject(bitmapDc, bitmap)); DeleteDC(bitmapDc); - ReleaseDC(0, displayDc); + ReleaseDC(nullptr, displayDc); } static bool compareImages(const QImage &actual, const QImage &expected, @@ -221,20 +221,20 @@ void tst_QPixmap::toHICON() QPixmap empty(width, height); empty.fill(Qt::transparent); - const HDC displayDc = GetDC(0); + const HDC displayDc = GetDC(nullptr); const HDC bitmapDc = CreateCompatibleDC(displayDc); const HBITMAP bitmap = QtWin::toHBITMAP(empty, QtWin::HBitmapAlpha); SelectObject(bitmapDc, bitmap); const QString imageFileName = pngFileName(image, width, height); - QVERIFY2(QFileInfo(imageFileName).exists(), qPrintable(imageFileName)); + QVERIFY2(QFileInfo::exists(imageFileName), qPrintable(imageFileName)); const QImage imageFromFile = QImage(imageFileName).convertToFormat(QImage::Format_ARGB32_Premultiplied); QVERIFY(!imageFromFile.isNull()); const HICON icon = QtWin::toHICON(QPixmap::fromImage(imageFromFile)); - DrawIconEx(bitmapDc, 0, 0, icon, width, height, 0, 0, DI_NORMAL); + DrawIconEx(bitmapDc, 0, 0, icon, width, height, 0, nullptr, DI_NORMAL); DestroyIcon(icon); DeleteDC(bitmapDc); @@ -242,7 +242,7 @@ void tst_QPixmap::toHICON() const QImage imageFromHICON = QtWin::fromHBITMAP(bitmap, QtWin::HBitmapAlpha).toImage(); QVERIFY(!imageFromHICON.isNull()); - ReleaseDC(0, displayDc); + ReleaseDC(nullptr, displayDc); // fuzzy comparison must be used, as the pixel values change slightly during conversion // between QImage::Format_ARGB32 and QImage::Format_ARGB32_Premultiplied, or elsewhere @@ -262,16 +262,16 @@ void tst_QPixmap::fromHICON() QFETCH(QString, image); const QString iconFileName = image + QStringLiteral(".ico"); - QVERIFY2(QFileInfo(iconFileName).exists(), qPrintable(iconFileName)); + QVERIFY2(QFileInfo::exists(iconFileName), qPrintable(iconFileName)); - const HICON icon = - static_cast<HICON>(LoadImage(0, reinterpret_cast<const wchar_t *>(iconFileName.utf16()), + const auto icon = + static_cast<HICON>(LoadImage(nullptr, reinterpret_cast<const wchar_t *>(iconFileName.utf16()), IMAGE_ICON, width, height, LR_LOADFROMFILE)); const QImage imageFromHICON = QtWin::fromHICON(icon).toImage(); DestroyIcon(icon); const QString imageFileName = pngFileName(image, width, height); - QVERIFY2(QFileInfo(imageFileName).exists(), qPrintable(imageFileName)); + QVERIFY2(QFileInfo::exists(imageFileName), qPrintable(imageFileName)); const QImage imageFromFile = QImage(imageFileName).convertToFormat(QImage::Format_ARGB32_Premultiplied); QVERIFY(!imageFromFile.isNull()); diff --git a/tests/auto/qwinjumplist/tst_qwinjumplist.cpp b/tests/auto/qwinjumplist/tst_qwinjumplist.cpp index 40d6b04..52b1ee5 100644 --- a/tests/auto/qwinjumplist/tst_qwinjumplist.cpp +++ b/tests/auto/qwinjumplist/tst_qwinjumplist.cpp @@ -67,7 +67,7 @@ void tst_QWinJumpList::testRecent() recent1->clear(); QVERIFY(recent1->isEmpty()); - recent1->addItem(0); + recent1->addItem(nullptr); QVERIFY(recent1->isEmpty()); recent1->setVisible(true); @@ -116,7 +116,7 @@ void tst_QWinJumpList::testFrequent() frequent1->clear(); QVERIFY(frequent1->isEmpty()); - frequent1->addItem(0); + frequent1->addItem(nullptr); QVERIFY(frequent1->isEmpty()); frequent1->setVisible(true); @@ -164,7 +164,7 @@ void tst_QWinJumpList::testTasks() tasks->setVisible(true); QVERIFY(tasks->isVisible()); - tasks->addItem(0); + tasks->addItem(nullptr); QVERIFY(tasks->isEmpty()); QWinJumpListItem* link1 = tasks->addLink(QStringLiteral("tst_QWinJumpList"), QCoreApplication::applicationFilePath()); @@ -203,7 +203,7 @@ void tst_QWinJumpList::testCategories() QWinJumpList jumplist; QVERIFY(jumplist.categories().isEmpty()); - jumplist.addCategory(0); + jumplist.addCategory(nullptr); QWinJumpListCategory *cat1 = new QWinJumpListCategory(QStringLiteral("tmp")); QCOMPARE(cat1->title(), QStringLiteral("tmp")); diff --git a/tests/auto/qwinmime/tst_qwinmime.cpp b/tests/auto/qwinmime/tst_qwinmime.cpp index 666f292..0c57de4 100644 --- a/tests/auto/qwinmime/tst_qwinmime.cpp +++ b/tests/auto/qwinmime/tst_qwinmime.cpp @@ -36,7 +36,7 @@ class TestMime : public QWinMime { public: - TestMime(bool verbose = false) : formatsForMimeCalled(false), m_verbose(verbose) {} + TestMime(bool verbose = false) : m_verbose(verbose) {} bool canConvertFromMime(const FORMATETC &, const QMimeData *mimeData) const Q_DECL_OVERRIDE { @@ -81,7 +81,7 @@ public: return QString(); } - mutable bool formatsForMimeCalled; + mutable bool formatsForMimeCalled = false; private: const bool m_verbose; diff --git a/tests/auto/qwintaskbarbutton/tst_qwintaskbarbutton.cpp b/tests/auto/qwintaskbarbutton/tst_qwintaskbarbutton.cpp index 82c93f9..a9287a0 100644 --- a/tests/auto/qwintaskbarbutton/tst_qwintaskbarbutton.cpp +++ b/tests/auto/qwintaskbarbutton/tst_qwintaskbarbutton.cpp @@ -50,9 +50,9 @@ void tst_QWinTaskbarButton::testWindow() btn1.setWindow(&window); QCOMPARE(btn1.window(), &window); - QWinTaskbarButton *btn2 = new QWinTaskbarButton(&window); + auto *btn2 = new QWinTaskbarButton(&window); QCOMPARE(btn2->window(), &window); - btn2->setWindow(0); + btn2->setWindow(nullptr); QVERIFY(!btn2->window()); } diff --git a/tests/auto/qwinthumbnailtoolbar/tst_qwinthumbnailtoolbar.cpp b/tests/auto/qwinthumbnailtoolbar/tst_qwinthumbnailtoolbar.cpp index d5a722a..fc53a24 100644 --- a/tests/auto/qwinthumbnailtoolbar/tst_qwinthumbnailtoolbar.cpp +++ b/tests/auto/qwinthumbnailtoolbar/tst_qwinthumbnailtoolbar.cpp @@ -48,9 +48,9 @@ void tst_QWinThumbnailToolBar::testWindow() tbar1.setWindow(&window); QCOMPARE(tbar1.window(), &window); - QWinThumbnailToolBar *tbar2 = new QWinThumbnailToolBar(&window); + auto *tbar2 = new QWinThumbnailToolBar(&window); QCOMPARE(tbar2->window(), &window); - tbar2->setWindow(0); + tbar2->setWindow(nullptr); QVERIFY(!tbar2->window()); } @@ -60,12 +60,12 @@ void tst_QWinThumbnailToolBar::testButtons() QCOMPARE(tbar.count(), 0); QVERIFY(tbar.buttons().isEmpty()); - tbar.addButton(0); + tbar.addButton(nullptr); QCOMPARE(tbar.count(), 0); QVERIFY(tbar.buttons().isEmpty()); - QWinThumbnailToolButton *btn1 = new QWinThumbnailToolButton; - QWinThumbnailToolButton *btn2 = new QWinThumbnailToolButton; + auto *btn1 = new QWinThumbnailToolButton; + auto *btn2 = new QWinThumbnailToolButton; tbar.addButton(btn1); QCOMPARE(tbar.count(), 1); diff --git a/tests/manual/dwmfeatures/testwidget.cpp b/tests/manual/dwmfeatures/testwidget.cpp index 42f1f37..09b25ac 100644 --- a/tests/manual/dwmfeatures/testwidget.cpp +++ b/tests/manual/dwmfeatures/testwidget.cpp @@ -46,14 +46,13 @@ TestWidget::TestWidget(QWidget *parent) : connect(ui->radioFlipAbove, &QAbstractButton::clicked, this, &TestWidget::onFlip3DPolicyChanged); connect(ui->radioFlipBelow, &QAbstractButton::clicked, this, &TestWidget::onFlip3DPolicyChanged); connect(ui->btnFrameReset, &QAbstractButton::clicked, this, &TestWidget::onResetGlassFrameClicked); - typedef void(QSpinBox::*IntSignal)(int); - connect(ui->frameTop, static_cast<IntSignal>(&QSpinBox::valueChanged), + connect(ui->frameTop, QOverload<int>::of(&QSpinBox::valueChanged), this, &TestWidget::onGlassMarginsChanged); - connect(ui->frameRight, static_cast<IntSignal>(&QSpinBox::valueChanged), + connect(ui->frameRight, QOverload<int>::of(&QSpinBox::valueChanged), this, &TestWidget::onGlassMarginsChanged); - connect(ui->frameBottom, static_cast<IntSignal>(&QSpinBox::valueChanged), + connect(ui->frameBottom, QOverload<int>::of(&QSpinBox::valueChanged), this, &TestWidget::onGlassMarginsChanged); - connect(ui->frameLeft, static_cast<IntSignal>(&QSpinBox::valueChanged), + connect(ui->frameLeft, QOverload<int>::of(&QSpinBox::valueChanged), this, &TestWidget::onGlassMarginsChanged); } @@ -77,7 +76,7 @@ void TestWidget::changeEvent(QEvent *e) bool TestWidget::event(QEvent *e) { if (e->type() == QWinEvent::CompositionChange) { - QWinCompositionChangeEvent *event = static_cast<QWinCompositionChangeEvent *>(e); + auto *event = static_cast<QWinCompositionChangeEvent *>(e); qDebug() << "Composition state change: " << event->isCompositionEnabled(); } else if (e->type() == QWinEvent::ThemeChange) { qDebug() << "Theme change."; diff --git a/tests/manual/dwmfeatures/testwidget.h b/tests/manual/dwmfeatures/testwidget.h index 50dec4e..137e8ce 100644 --- a/tests/manual/dwmfeatures/testwidget.h +++ b/tests/manual/dwmfeatures/testwidget.h @@ -46,12 +46,12 @@ class TestWidget : public QWidget Q_OBJECT public: - explicit TestWidget(QWidget *parent = 0); + explicit TestWidget(QWidget *parent = nullptr); ~TestWidget(); protected: - void changeEvent(QEvent *e); - bool event(QEvent *); + void changeEvent(QEvent *e) override; + bool event(QEvent *) override; private: Ui::TestWidget *ui; diff --git a/tests/manual/imageconversion/imageconversion.pro b/tests/manual/imageconversion/imageconversion.pro new file mode 100644 index 0000000..3442e28 --- /dev/null +++ b/tests/manual/imageconversion/imageconversion.pro @@ -0,0 +1,5 @@ +CONFIG += console c++11 +QT += widgets winextras +TEMPLATE = app +SOURCES += main.cpp +LIBS += -luser32 -lgdi32 diff --git a/tests/manual/imageconversion/main.cpp b/tests/manual/imageconversion/main.cpp new file mode 100644 index 0000000..def9cdb --- /dev/null +++ b/tests/manual/imageconversion/main.cpp @@ -0,0 +1,395 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** 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 General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** 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-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWinExtras/QtWin> + +#include <QtWidgets/QAction> +#include <QtWidgets/QApplication> +#include <QtWidgets/QDialogButtonBox> +#include <QtWidgets/QFileDialog> +#include <QtWidgets/QLabel> +#include <QtWidgets/QMainWindow> +#include <QtWidgets/QMenu> +#include <QtWidgets/QMenuBar> +#include <QtWidgets/QPushButton> +#include <QtWidgets/QShortcut> +#include <QtWidgets/QVBoxLayout> + +#include <QtGui/QImage> +#include <QtGui/QPainter> +#include <QtGui/QPaintEvent> + +#include <QtCore/QCommandLineOption> +#include <QtCore/QCommandLineParser> +#include <QtCore/QDebug> +#include <QtCore/QTimer> +#include <QtCore/qt_windows.h> + +static void formatData(QDebug d, const void *data, int size) +{ + QDebugStateSaver saver(d); + d.noquote(); + d.nospace(); + d << "\nData: " << QByteArray(reinterpret_cast<const char *>(data), qMin(20, size)).toHex(); + if (size > 20) + d << "..."; + d << "\n 0000000011111111222222223333333344444444"; +} + +QDebug operator<<(QDebug d, const BITMAP &b) +{ + QDebugStateSaver saver(d); + d.nospace(); + d << "BITMAP(type=" << b.bmType << ", " << b.bmWidth << 'x' << b.bmHeight + << ", widthBytes=" << b.bmWidthBytes << ", planes=" << b.bmPlanes + << ", bitsPixel=" << b.bmBitsPixel << ", bits=" << b.bmBits << ')'; + return d; +} + +QDebug operator<<(QDebug d, const BITMAPINFOHEADER &bih) +{ + QDebugStateSaver saver(d); + d.nospace(); + d << "BITMAPINFOHEADER(" << bih.biWidth << 'x' << qAbs(bih.biHeight) + << (bih.biHeight < 0 ? ", top-down" : ", bottom-up") + << ", planes=" << bih.biPlanes << ", bitCount=" << bih.biBitCount + << ", compression=" << bih.biCompression << ", size=" + << bih.biSizeImage << ')'; + return d; +} + +static void formatImage(QDebug d, const QImage &image) +{ + QDebugStateSaver s(d); + d.noquote(); + d.nospace(); + d << image; + if (const int colorTableSize = image.colorCount()) { + QVector<QRgb> colorTable = image.colorTable(); + d << " Color table: " << colorTableSize << " (" << showbase << hex; // 256 by standard + int c = 0; + for ( ; c < qMin(8, colorTableSize); ++c) { + if (c) + d << ", "; + d << colorTable[c]; + } + if (c < colorTableSize) + d << "..."; + d << ')' << noshowbase << dec; + } + formatData(d, image.constBits(), image.byteCount()); +} + +enum ParseOptionResult { + OptionError, + OptionUnset, + OptionSet +}; + +static ParseOptionResult parseIntOption(const QCommandLineParser &parser, const QCommandLineOption &option, + int minValue, int maxValue, int *target) +{ + if (!parser.isSet(option)) + return OptionUnset; + + const QString spec = parser.value(option); + bool ok; + const int value = spec.toInt(&ok); + if (!ok || value < minValue || value > maxValue) { + qWarning() << "Invalid value" << spec << "for" << option.names(); + return OptionError; + } + *target = value; + return OptionSet; +} + +template <typename Enum> +static ParseOptionResult parseEnumOption(const QCommandLineParser &parser, const QCommandLineOption &option, + Enum minValue, Enum maxValue, Enum *target) +{ + int intValue; + const ParseOptionResult result = parseIntOption(parser, option, int(minValue), int(maxValue), &intValue); + if (result == OptionSet) + *target = static_cast<Enum>(intValue); + return result; +} + +// Display a QImage in a dialog. +class PreviewDialog : public QDialog +{ +public: + explicit PreviewDialog(const QImage &image, QWidget *parent = nullptr); +}; + +PreviewDialog::PreviewDialog(const QImage &image, QWidget *parent) : QDialog(parent) +{ + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + QString description; + QDebug(&description) << image.size() << ", format=" << image.format(); + QLabel *descriptionLabel = new QLabel(description, this); + descriptionLabel->setWordWrap(true); + auto *layout = new QVBoxLayout(this); + layout->addWidget(descriptionLabel); + auto *hLayout = new QHBoxLayout; + QLabel *label = new QLabel(this); + label->setFrameShape(QFrame::Box); + label->setPixmap(QPixmap::fromImage(image)); + hLayout->addStretch(); + hLayout->addWidget(label); + hLayout->addStretch(); + layout->addLayout(hLayout); + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close, this); + connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + layout->addWidget(buttonBox); +} + +// Widget that paints a HBITMAP using GDI API in WM_PAINT. +class PaintWidget : public QWidget +{ + Q_OBJECT +public: + explicit PaintWidget(HBITMAP hBitmap, QWidget *p = nullptr) : QWidget(p), m_hBitmap(hBitmap) { } + + bool nativeEvent(const QByteArray &eventType, void *message, long *result) override; + +public slots: + void saveBitmap(); + void convertBack(); + +protected: + void contextMenuEvent(QContextMenuEvent *) override; + +private: + const HBITMAP m_hBitmap; +}; + +bool PaintWidget::nativeEvent(const QByteArray &eventType, void *messageIn, long *result) +{ + MSG *message = reinterpret_cast<MSG *>(messageIn); + if (message->message != WM_PAINT) + return QWidget::nativeEvent(eventType, message, result); + + PAINTSTRUCT paintStruct; + BITMAP bitmap; + + const HDC hdc = BeginPaint(message->hwnd, &paintStruct); + SelectObject(hdc, GetStockObject(BLACK_PEN)); + Rectangle(hdc, 1, 1, width() - 1, height() - 1); + + const HDC hdcMem = CreateCompatibleDC(hdc); + const HGDIOBJ oldBitmap = SelectObject(hdcMem, m_hBitmap); + + GetObject(m_hBitmap, sizeof(bitmap), &bitmap); + { + QDebug d = qDebug(); + d << __FUNCTION__ << bitmap; + formatData(d, bitmap.bmBits, bitmap.bmHeight * bitmap.bmWidthBytes); + } + BitBlt(hdc, 5, 5, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY); + SelectObject(hdcMem, oldBitmap); + DeleteDC(hdcMem); + + EndPaint(message->hwnd, &paintStruct); + return true; +} + +void PaintWidget::convertBack() +{ + QImage image = QtWin::imageFromHBITMAP(m_hBitmap); + formatImage(qDebug(), image); + auto *dialog = new PreviewDialog(image, this); + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->setModal(false); + dialog->setWindowTitle(QLatin1String("QImage - Qt ") + QLatin1String(QT_VERSION_STR)); + dialog->show(); +} + +void PaintWidget::saveBitmap() +{ + QImage image = QtWin::imageFromHBITMAP(m_hBitmap); + formatImage(qDebug(), image); + QFileDialog fileDialog(this); + fileDialog.setAcceptMode(QFileDialog::AcceptSave); + fileDialog.setMimeTypeFilters(QStringList(QStringLiteral("image/png"))); + fileDialog.setDefaultSuffix(QStringLiteral("png")); + fileDialog.selectFile(QStringLiteral("test.png")); + while (fileDialog.exec() == QDialog::Accepted) { + const QString fileName = fileDialog.selectedFiles().first(); + if (image.save(fileName)) { + qDebug().noquote() << "saved" << QDir::toNativeSeparators(fileName); + break; + } + qWarning().noquote() << "Could not save" << QDir::toNativeSeparators(fileName); + } +} + +void PaintWidget::contextMenuEvent(QContextMenuEvent *e) +{ + QMenu contextMenu; + contextMenu.addAction(QStringLiteral("Convert into QImage"), this, &PaintWidget::convertBack); + QAction *saveAction = contextMenu.addAction(QStringLiteral("Save"), this, &PaintWidget::saveBitmap); + saveAction->setShortcut(Qt::CTRL + Qt::Key_S); + contextMenu.exec(e->globalPos()); +} + +static const char description[] = +"\nCreates a HBITMAP from a QImage either passed as file name or by drawing in a\n" +"format determined by a command line option and draws it onto a native window\n" +"for comparison. Provides a context menu for converting the HBITMAP back to a\n" +"QImage and saving that for checking the reverse conversion."; + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + QCoreApplication::setApplicationName("imageconversion"); + QCoreApplication::setOrganizationName("QtProject"); + QCoreApplication::setApplicationVersion(QT_VERSION_STR); + QCommandLineParser parser; + parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions); + parser.setApplicationDescription("Qt Windows Extras Image Conversion Tester"); + parser.addHelpOption(); + parser.addVersionOption(); + parser.setApplicationDescription(description); + + const QCommandLineOption formatOption(QStringList{"format", "f"}, + "QImage format", "format"); + parser.addOption(formatOption); + const QCommandLineOption colorOption(QStringList{"color", "c"}, + "Fill color", "color-spec"); + parser.addOption(colorOption); + const QCommandLineOption globalColorOption(QStringList{"globalColor", "g"}, + "Fill color (global color enum value)", "global-color"); + parser.addOption(globalColorOption); + const QCommandLineOption widthOption(QStringList{"width", "w"}, + "Width", "width"); + parser.addOption(widthOption); + const QCommandLineOption heightOption(QStringList{"height", "h"}, + "Height", "height"); + parser.addOption(heightOption); + const QCommandLineOption previewOption(QStringList{"preview", "p"}, + "Show a preview"); + parser.addOption(previewOption); + + parser.addPositionalArgument("file", "The image file to open."); + parser.process(app); + + QColor defaultColor(Qt::red); + if (parser.isSet(colorOption)) { + const QString spec = parser.value(colorOption); + defaultColor = QColor(spec); + if (!defaultColor.isValid()) { + qWarning() << "Invalid color specification" << spec; + return -1; + } + } else { + // Color 0: color0, 1: color1, 2: black, 3: white, 7:red, 9: blue, 8: green + Qt::GlobalColor globalColor = Qt::color0; + if (!parseEnumOption(parser, globalColorOption, Qt::black, Qt::transparent, &globalColor)) + return -1; + if (globalColor != Qt::color0) + defaultColor = QColor(defaultColor); + } + + // Format: 1: mono, 3: Indexed8, 7: RGB 16, 11: RGB555, 13: RGB888 + QImage::Format targetFormat = QImage::Format_ARGB32_Premultiplied; + if (!parseEnumOption(parser, formatOption, QImage::Format_Mono, QImage::Format_Grayscale8, &targetFormat)) + return -1; + // Can't paint on indexed nor mono, need transform? + const QImage::Format drawFormat = targetFormat == QImage::Format_Indexed8 + || targetFormat == QImage::Format_Mono || targetFormat == QImage::Format_MonoLSB + ? QImage::Format_ARGB32_Premultiplied : targetFormat; + + if (targetFormat == QImage::Format_Mono || targetFormat == QImage::Format_MonoLSB) + defaultColor = Qt::white; + + int width = 73; + int height = 57; + if (!parseIntOption(parser, widthOption, 1, 2000, &width) || !parseIntOption(parser, heightOption, 1, 2000, &height)) + return -1; + + const bool preview = parser.isSet(previewOption); + + QImage image; + if (!parser.positionalArguments().isEmpty()) { + QString fileName = parser.positionalArguments().constFirst(); + image = QImage(fileName); + if (image.isNull() || image.size().isEmpty()) { + qWarning().noquote() << "Image load fail" << QDir::toNativeSeparators(fileName); + return -1; + } + } + + if (image.isNull()) { + qDebug() << "Default image color=" << defaultColor + << showbase << hex << defaultColor.rgba() << noshowbase << dec + << ", format=" << drawFormat; + image = QImage(width, height, drawFormat); + image.fill(defaultColor); + QPainter painter(&image); + painter.drawLine(0, 0, image.width(), image.height()); + } + + if (image.format() != targetFormat) { + qDebug() << "Converting " << image.format() << targetFormat; + image = image.convertToFormat(targetFormat); + } + + formatImage(qDebug(), image); + + const HBITMAP bitmap = QtWin::imageToHBITMAP(image); + if (!bitmap) { + qWarning() << "Failed to create HBITMAP"; + return -1; + } + + int exitCode = 0; + { + PaintWidget paintWidget(bitmap); + auto *quitShortcut = new QShortcut(&paintWidget); + quitShortcut->setKey(Qt::CTRL + Qt::Key_Q); + quitShortcut->setContext(Qt::ApplicationShortcut); + QObject::connect(quitShortcut, &QShortcut::activated, qApp, &QCoreApplication::quit); + paintWidget.setWindowTitle(QLatin1String("HBITMAP - Qt ") + QLatin1String(QT_VERSION_STR)); + paintWidget.show(); + if (preview) { + auto *dialog = new PreviewDialog(image); + dialog->setModal(false); + dialog->setWindowTitle(QLatin1String("QImage - Qt ") + QLatin1String(QT_VERSION_STR)); + dialog->move(paintWidget.frameGeometry().topRight() + QPoint(50, 0)); + dialog->show(); + } + exitCode = app.exec(); + } + + DeleteObject(bitmap); + + return exitCode; +} + +#include "main.moc" diff --git a/tests/manual/jumplist/main.cpp b/tests/manual/jumplist/main.cpp index 0597fe5..5447187 100644 --- a/tests/manual/jumplist/main.cpp +++ b/tests/manual/jumplist/main.cpp @@ -51,8 +51,10 @@ static bool associateFileType() regApplications.beginGroup("SupportedTypes"); QMimeDatabase mimeDatabase; - foreach (const QString &t, TestWidget::supportedMimeTypes()) { - foreach (const QString &s, mimeDatabase.mimeTypeForName(t).suffixes()) + const auto types = TestWidget::supportedMimeTypes(); + for (const QString &t : types) { + const auto suffixes = mimeDatabase.mimeTypeForName(t).suffixes(); + for (const QString &s : suffixes) regApplications.setValue('.' + s, QString()); } regApplications.endGroup(); diff --git a/tests/manual/jumplist/testwidget.cpp b/tests/manual/jumplist/testwidget.cpp index cbe8a3d..0928c59 100644 --- a/tests/manual/jumplist/testwidget.cpp +++ b/tests/manual/jumplist/testwidget.cpp @@ -105,7 +105,7 @@ void TestWidget::updateJumpList() jumplist.recent()->setVisible(ui->cbShowRecent->isChecked()); jumplist.frequent()->setVisible(ui->cbShowFrequent->isChecked()); if (ui->cbRunFullscreen->isChecked()) { - QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Link); + auto *item = new QWinJumpListItem(QWinJumpListItem::Link); item->setTitle(ui->cbRunFullscreen->text()); item->setFilePath(applicationBinary); item->setArguments(QStringList("-fullscreen")); diff --git a/tests/manual/manual.pro b/tests/manual/manual.pro index 4ff3a0b..be1698c 100644 --- a/tests/manual/manual.pro +++ b/tests/manual/manual.pro @@ -3,5 +3,6 @@ qtHaveModule(widgets) { SUBDIRS += \ dwmfeatures \ jumplist \ - thumbnail + thumbnail \ + imageconversion } diff --git a/tests/manual/thumbnail/main.cpp b/tests/manual/thumbnail/main.cpp index 99096ec..009662f 100644 --- a/tests/manual/thumbnail/main.cpp +++ b/tests/manual/thumbnail/main.cpp @@ -104,7 +104,7 @@ MainWindow::MainWindow() void MainWindow::initThumbnailToolBar() { m_thumbnailToolBar->setWindow(windowHandle()); - QWinThumbnailToolButton *testButton = new QWinThumbnailToolButton(m_thumbnailToolBar); + auto *testButton = new QWinThumbnailToolButton(m_thumbnailToolBar); testButton->setToolTip("Test"); testButton->setIcon(style()->standardIcon(QStyle::SP_ComputerIcon)); connect(testButton, &QWinThumbnailToolButton::clicked, this, &MainWindow::testButtonClicked); |