From 92359d2d571f3b553ab915901c62549df5b2512c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 4 Sep 2015 15:01:24 +0200 Subject: Add changelog for Qt 5.5.1 release Change-Id: I5abef0c378efd0266a9251f0af1cb57352fdd43d Reviewed-by: Joerg Bornemann --- dist/changes-5.5.1 | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 dist/changes-5.5.1 diff --git a/dist/changes-5.5.1 b/dist/changes-5.5.1 new file mode 100644 index 0000000..8e40d03 --- /dev/null +++ b/dist/changes-5.5.1 @@ -0,0 +1,24 @@ +Qt 5.5.1 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.5.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + + http://doc.qt.io/qt-5/index.html + +The Qt version 5.5 series is binary compatible with the 5.4.x series. +Applications compiled for 5.4 will continue to run with 5.5. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + + https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Library * +**************************************************************************** + + - This release contains only minor code improvements. -- cgit v1.2.3 From ccbed88825cef76545e1e3a47c92fb237e4beeb9 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 14 Oct 2015 09:09:54 +0200 Subject: QWinJumpList: Skip failing tests on Windows 10. Task-number: QTBUG-48751 Change-Id: If1a16a251d165447b3d9dba3a15d0c58d7ca0969 Reviewed-by: Simon Hausmann --- tests/auto/qwinjumplist/tst_qwinjumplist.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/auto/qwinjumplist/tst_qwinjumplist.cpp b/tests/auto/qwinjumplist/tst_qwinjumplist.cpp index 1944646..df7a366 100644 --- a/tests/auto/qwinjumplist/tst_qwinjumplist.cpp +++ b/tests/auto/qwinjumplist/tst_qwinjumplist.cpp @@ -60,6 +60,8 @@ static inline QByteArray msgFileNameMismatch(const QString &f1, const QString &f void tst_QWinJumpList::testRecent() { + if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS10) + QSKIP("QTBUG-48751: Recent items do not work on Windows 10", Continue); QScopedPointer jumplist(new QWinJumpList); QWinJumpListCategory *recent1 = jumplist->recent(); QVERIFY(recent1); @@ -107,6 +109,8 @@ void tst_QWinJumpList::testRecent() void tst_QWinJumpList::testFrequent() { + if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS10) + QSKIP("QTBUG-48751: Frequent items do not work on Windows 10", Continue); QScopedPointer jumplist(new QWinJumpList); QWinJumpListCategory *frequent1 = jumplist->frequent(); QVERIFY(frequent1); -- cgit v1.2.3 From 70422a94d9b9c387db47ddcc9204fa37a8e24807 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 14 Oct 2015 17:28:33 +0200 Subject: Improve the manual test for QWinJumpList. - Use a QMainWindow to be able to use shortcuts and status bar. - Add menu entries for launching the jumplistsview tool and explorer. - Reformat/streamline code. - Add support for more mime types. - Use QCommandLineParser Task-number: QTBUG-48751 Change-Id: I7242c528069f1838bd6af1f9bc426193f0fc7dec Reviewed-by: Oliver Wolff --- tests/manual/jumplist/main.cpp | 79 +++++-- tests/manual/jumplist/testwidget.cpp | 90 +++++--- tests/manual/jumplist/testwidget.h | 26 ++- tests/manual/jumplist/testwidget.ui | 385 +++++++++++++++++++---------------- 4 files changed, 356 insertions(+), 224 deletions(-) diff --git a/tests/manual/jumplist/main.cpp b/tests/manual/jumplist/main.cpp index f2bb7f8..78d101c 100644 --- a/tests/manual/jumplist/main.cpp +++ b/tests/manual/jumplist/main.cpp @@ -34,42 +34,93 @@ #include "testwidget.h" #include -#include +#include +#include #include +#include +#include +#include +#include -void associateFileType() -{ - QString exeFileName = QCoreApplication::applicationFilePath(); - exeFileName = exeFileName.right(exeFileName.length() - exeFileName.lastIndexOf("/") - 1); - QString appName = "QtWinExtras JumpList Test"; +#include +#include +static bool associateFileType() +{ + const QString applicationBinary = QCoreApplication::applicationFilePath(); + QString exeFileName = applicationBinary; + const int lastSlashPos = exeFileName.lastIndexOf(QLatin1Char('/')); + exeFileName.remove(0, lastSlashPos + 1); QSettings regApplications("HKEY_CURRENT_USER\\Software\\Classes\\Applications\\" + exeFileName, QSettings::NativeFormat); - regApplications.setValue("FriendlyAppName", appName); + regApplications.setValue("FriendlyAppName", QGuiApplication::applicationDisplayName()); regApplications.beginGroup("SupportedTypes"); - regApplications.setValue(".txt", QString()); + QMimeDatabase mimeDatabase; + foreach (const QString &t, TestWidget::supportedMimeTypes()) { + foreach (const QString &s, mimeDatabase.mimeTypeForName(t).suffixes()) + regApplications.setValue('.' + s, QString()); + } regApplications.endGroup(); regApplications.beginGroup("shell"); regApplications.beginGroup("open"); - regApplications.setValue("FriendlyAppName", appName); + regApplications.setValue("FriendlyAppName", QGuiApplication::applicationDisplayName()); regApplications.beginGroup("command"); - regApplications.setValue(".", '"' + QDir::toNativeSeparators(QCoreApplication::applicationFilePath()) + "\" \"%1\""); + regApplications.setValue(".", '"' + QDir::toNativeSeparators(applicationBinary) + "\" \"%1\""); regApplications.endGroup(); regApplications.endGroup(); regApplications.endGroup(); + return regApplications.status() == QSettings::NoError; } int main(int argc, char *argv[]) { - QApplication a(argc, argv); - associateFileType(); + QStringList allArgs; // Show all arguments including style. + std::copy(argv + 1, argv + argc, std::back_inserter(allArgs)); + + QApplication app(argc, argv); + QGuiApplication::setApplicationDisplayName(QStringLiteral("QtWinExtras JumpList Test")); + if (!associateFileType()) { + qWarning() << "Unable to create registry entries."; + return -1; + } + + QCoreApplication::setOrganizationName("QtProject"); + QCoreApplication::setApplicationVersion(QT_VERSION_STR); + QCommandLineParser parser; + parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions); + parser.setApplicationDescription(QGuiApplication::applicationDisplayName()); + parser.addHelpOption(); + parser.addVersionOption(); + QCommandLineOption textOption("text", "Show some text"); + parser.addOption(textOption); + QCommandLineOption fullScreenOption("fullscreen", "Show fullscreen"); + parser.addOption(fullScreenOption); + QCommandLineOption idOption("id", "Jump list identifier", "id"); + parser.addOption(idOption); + parser.addPositionalArgument("file", "The file to open."); + parser.process(app); TestWidget w; - if (QCoreApplication::arguments().contains("-fullscreen")) + + if (parser.isSet(idOption)) + w.setId(parser.value(idOption)); + + if (parser.isSet(fullScreenOption)) w.showFullScreen(); else w.show(); - return a.exec(); + if (parser.isSet(textOption)) + w.setText("Hello, world!"); + + if (!parser.positionalArguments().isEmpty()) + w.showFile(parser.positionalArguments().first()); + + if (allArgs.isEmpty()) + w.statusBar()->showMessage("Remember to run windeployqt"); + else + w.statusBar()->showMessage("Arguments: " + allArgs.join(' ')); + + return app.exec(); } diff --git a/tests/manual/jumplist/testwidget.cpp b/tests/manual/jumplist/testwidget.cpp index e6660e4..15982a6 100644 --- a/tests/manual/jumplist/testwidget.cpp +++ b/tests/manual/jumplist/testwidget.cpp @@ -38,34 +38,27 @@ #include #include #include +#include #include +#include +#include +#include #include #include #include #include TestWidget::TestWidget(QWidget *parent) : - QWidget(parent), + QMainWindow(parent), ui(new Ui::TestWidget) { ui->setupUi(this); - if (QCoreApplication::arguments().contains("-text")) - ui->text->setPlainText("Hello, world!"); - if (!QCoreApplication::arguments().contains("-fullscreen")) - ui->btnClose->hide(); - - for (int i = 1; i < QCoreApplication::arguments().size(); i++) { - const QString arg = QCoreApplication::arguments().at(i); - if (!arg.isEmpty() && arg.at(0) != '-' && QFile(arg).exists()) { - showFile(arg); - break; - } - } - - connect(ui->btnUpdate, &QAbstractButton::clicked, this, &TestWidget::updateJumpList); - connect(ui->btnOpenFile, &QAbstractButton::clicked, this, &TestWidget::openFile); - connect(ui->btnClose, &QAbstractButton::clicked, QCoreApplication::quit); + connect(ui->actionUpdate, &QAction::triggered, this, &TestWidget::updateJumpList); + connect(ui->actionOpen, &QAction::triggered, this, &TestWidget::openFile); + connect(ui->actionExit, &QAction::triggered, QCoreApplication::quit); + connect(ui->actionShow_in_Explorer, &QAction::triggered, this, &TestWidget::showInExplorer); + connect(ui->actionRun_JumpListView, &QAction::triggered, this, &TestWidget::runJumpListView); } TestWidget::~TestWidget() @@ -73,6 +66,12 @@ TestWidget::~TestWidget() delete ui; } +QStringList TestWidget::supportedMimeTypes() +{ + return QStringList() << "text/x-c++src" << "text/x-csrc" << "text/x-chdr" + << "text/x-c++hdr" << "text/x-qml" << "text/plain"; +} + void TestWidget::changeEvent(QEvent *e) { QWidget::changeEvent(e); @@ -88,40 +87,73 @@ void TestWidget::changeEvent(QEvent *e) void TestWidget::showFile(const QString &path) { QFile file(path); - if (file.open(QIODevice::ReadOnly|QIODevice::Text)) - ui->text->setPlainText(QString::fromUtf8(file.readAll())); - else - QMessageBox::warning(this, "Error", "Failed to open file"); + if (!file.open(QIODevice::ReadOnly|QIODevice::Text)) { + const QString error = "Failed to open file " + QDir::toNativeSeparators(path) + + ": " + file.errorString(); + QMessageBox::warning(this, "Error", error); + return; + } + setText(QString::fromUtf8(file.readAll())); +} + +void TestWidget::setText(const QString &text) +{ + ui->text->setPlainText(text); } void TestWidget::updateJumpList() { QWinJumpList jumplist; + if (!m_id.isEmpty()) + jumplist.setIdentifier(m_id); + const QString applicationBinary = QDir::toNativeSeparators(QCoreApplication::applicationFilePath()); jumplist.recent()->setVisible(ui->cbShowRecent->isChecked()); jumplist.frequent()->setVisible(ui->cbShowFrequent->isChecked()); if (ui->cbRunFullscreen->isChecked()) { QWinJumpListItem *item = new QWinJumpListItem(QWinJumpListItem::Link); item->setTitle(ui->cbRunFullscreen->text()); - item->setFilePath(QDir::toNativeSeparators(QCoreApplication::applicationFilePath())); + item->setFilePath(applicationBinary); item->setArguments(QStringList("-fullscreen")); item->setIcon(style()->standardIcon(QStyle::SP_TitleBarMaxButton)); jumplist.tasks()->addItem(item); } if (ui->cbRunFusion->isChecked()) { - jumplist.tasks()->addLink(style()->standardIcon(QStyle::SP_DesktopIcon), ui->cbRunFusion->text(), QDir::toNativeSeparators(QCoreApplication::applicationFilePath()), (QStringList() << "-style" << "fusion")); + jumplist.tasks()->addLink(style()->standardIcon(QStyle::SP_DesktopIcon), + ui->cbRunFusion->text(), + applicationBinary, + (QStringList() << "-style" << "fusion")); } if (ui->cbRunText->isChecked()) { jumplist.tasks()->addSeparator(); - jumplist.tasks()->addLink(ui->cbRunText->text(), QDir::toNativeSeparators(QCoreApplication::applicationFilePath()), QStringList("-text")); + jumplist.tasks()->addLink(ui->cbRunText->text(), + applicationBinary, + QStringList("-text")); } jumplist.tasks()->setVisible(!jumplist.tasks()->isEmpty()); } void TestWidget::openFile() { - QString filePath = QFileDialog::getOpenFileName(this, "Open a text file", QString(), "Text files (*.txt)"); - if (filePath.isEmpty()) - return; - else - showFile(filePath); + QFileDialog fileDialog(this, "Open a Text File"); + fileDialog.setAcceptMode(QFileDialog::AcceptOpen); + fileDialog.setMimeTypeFilters(TestWidget::supportedMimeTypes()); + // Note: The native file dialog creates the frequent/recent entries. + if (!ui->actionUse_Native_File_Dialog->isChecked()) + fileDialog.setOption(QFileDialog::DontUseNativeDialog); + if (fileDialog.exec() == QDialog::Accepted) + showFile(fileDialog.selectedFiles().first()); +} + +void TestWidget::showInExplorer() +{ + const QString path = QFile::decodeName(qgetenv("APPDATA")) + + "/Microsoft/Windows/Recent/Automaticdestinations"; + QDesktopServices::openUrl(QUrl::fromLocalFile(path)); +} + +void TestWidget::runJumpListView() +{ + const char binary[] = "JumpListsView"; + if (!QProcess::startDetached(binary)) + statusBar()->showMessage(QLatin1String("Unable to run ") + binary); } diff --git a/tests/manual/jumplist/testwidget.h b/tests/manual/jumplist/testwidget.h index 71287c5..defb541 100644 --- a/tests/manual/jumplist/testwidget.h +++ b/tests/manual/jumplist/testwidget.h @@ -34,7 +34,7 @@ #ifndef TESTWIDGET_H #define TESTWIDGET_H -#include +#include QT_BEGIN_NAMESPACE namespace Ui { @@ -46,24 +46,34 @@ QT_END_NAMESPACE namespace Ui = QT_NAMESPACE::Ui; #endif -class TestWidget : public QWidget +class TestWidget : public QMainWindow { Q_OBJECT public: - explicit TestWidget(QWidget *parent = 0); + explicit TestWidget(QWidget *parent = Q_NULLPTR); ~TestWidget(); -protected: - void changeEvent(QEvent *e); - -private: - Ui::TestWidget *ui; void showFile(const QString &path); + void setText(const QString &text); + + static QStringList supportedMimeTypes(); + + QString id() const { return m_id; } + void setId(const QString &id) { m_id = id; } + +protected: + void changeEvent(QEvent *e) Q_DECL_OVERRIDE; private slots: void updateJumpList(); + void showInExplorer(); + void runJumpListView(); void openFile(); + +private: + Ui::TestWidget *ui; + QString m_id; }; #endif // TESTWIDGET_H diff --git a/tests/manual/jumplist/testwidget.ui b/tests/manual/jumplist/testwidget.ui index 82b9a0d..abcb078 100644 --- a/tests/manual/jumplist/testwidget.ui +++ b/tests/manual/jumplist/testwidget.ui @@ -1,196 +1,235 @@ TestWidget - + 0 0 - 695 - 394 + 800 + 600 - - QtWinExtras JumpList - - - - 3 - - - 3 + + + QtWinExtras JumpList - - - - - - Known categories - - - - 3 - - - 3 + + + + + + + Known categories - - - - Frequent - - - - - - - Recent - - - - - - - - - - Tasks - - - - 3 - - - 3 - - - - - Run in fullscreen - - - - - - - Run with Fusion style - - - - - - - Run with some text displayed - - - - - - - - - - - - Qt::Horizontal + + + 3 + + + 3 - - - 40 - 20 - + + 3 - - - - - - Update + + 3 - - - - - - Qt::Horizontal + + 3 - - - 40 - 20 - + + + + Frequent + + + true + + + + + + + Recent + + + true + + + + + + + + + + Tasks + + + + 3 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - 3 - - - - - - - Open a file + + 3 - - - - - - Qt::Horizontal + + 3 - - - 40 - 20 - + + 3 - - - - - - Close + + 3 - - - - - - - - - Consolas - 10 - - - - true - - - - - - + + + + Run in fullscreen + + + true + + + + + + + Run with Fusion style + + + true + + + + + + + Run with some text displayed + + + true + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Consolas + 10 + + + + true + + + + + + + + + 0 + 0 + 800 + 21 + + + + + File + + + + + + + Jumplist + + + + + + + + Settings + + + + + + + + + + Open + + + Ctrl+O + + + + + Exit + + + Ctrl+Q + + + + + Update + + + Ctrl+U + + + + + Show in Explorer + + + Ctrl+E + + + + + Run JumpListView + + + Run JumpListView utility + + + + + true + + + true + + + Use Native File Dialog + + -- cgit v1.2.3 From f9ce0ad23862f023d6bd4beee6a840e892d00279 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Tue, 13 Oct 2015 12:55:20 +0200 Subject: Doc: Update examplesinstallpath to include the repository name The examplesinstallpath variable in .qdocconf files defines the path under QT_INSTALL_EXAMPLES where examples are found. To match the way examples are packaged in Qt 5.6, prefix the install path with the repository name. Task-number: QTBUG-48736 Change-Id: I653b608734e680932cd11a3631dbe1a184162bb3 Reviewed-by: Venugopal Shivashankar --- src/winextras/doc/qtwinextras.qdocconf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/winextras/doc/qtwinextras.qdocconf b/src/winextras/doc/qtwinextras.qdocconf index 27b991a..46c3e95 100644 --- a/src/winextras/doc/qtwinextras.qdocconf +++ b/src/winextras/doc/qtwinextras.qdocconf @@ -7,7 +7,7 @@ version = $QT_VERSION exampledirs += ../../../examples/winextras \ snippets -examplesinstallpath = winextras +examplesinstallpath = qtwinextras/winextras headerdirs = .. ../../imports/winextras sourcedirs = .. ../../imports/winextras -- cgit v1.2.3 From 8f8ec5c0f659eb0cddba7ed94e64af3a04c95d1c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 20 Oct 2015 14:00:51 +0200 Subject: Add debug operators for QWinJumpList/QWinJumpListCategory/QWinJumpListItem. Task-number: QTBUG-48751 Change-Id: I300c8cf5207f0636d8b8fc5922514d67634a1a58 Reviewed-by: Oliver Wolff --- src/winextras/qwinjumplist.cpp | 22 ++++++++++++++++++++++ src/winextras/qwinjumplist.h | 4 ++++ src/winextras/qwinjumplistcategory.cpp | 26 ++++++++++++++++++++++++++ src/winextras/qwinjumplistcategory.h | 5 ++++- src/winextras/qwinjumplistitem.cpp | 30 ++++++++++++++++++++++++++++++ src/winextras/qwinjumplistitem.h | 4 ++++ 6 files changed, 90 insertions(+), 1 deletion(-) diff --git a/src/winextras/qwinjumplist.cpp b/src/winextras/qwinjumplist.cpp index 28b4fdc..9caebdc 100644 --- a/src/winextras/qwinjumplist.cpp +++ b/src/winextras/qwinjumplist.cpp @@ -41,6 +41,7 @@ #include "winpropkey_p.h" #include +#include #include #include #include @@ -563,6 +564,27 @@ void QWinJumpList::clear() d->destroy(); } +#ifndef QT_NO_DEBUG_STREAM + +QDebug operator<<(QDebug debug, const QWinJumpList *jumplist) +{ + QDebugStateSaver saver(debug); + debug.nospace(); + debug.noquote(); + debug << "QWinJumpList("; + if (jumplist) { + debug << "(identifier=\"" << jumplist->identifier() << "\", recent=" + << jumplist->recent() << ", frequent=" << jumplist->frequent() + << ", tasks=" << jumplist->tasks() + << ", categories=" << jumplist->categories(); + } else { + debug << '0'; + } + debug << ')'; + return debug; +} +#endif // !QT_NO_DEBUG_STREAM + QT_END_NAMESPACE #include "moc_qwinjumplist.cpp" diff --git a/src/winextras/qwinjumplist.h b/src/winextras/qwinjumplist.h index 5350588..732742c 100644 --- a/src/winextras/qwinjumplist.h +++ b/src/winextras/qwinjumplist.h @@ -77,6 +77,10 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_rebuild()) }; +#ifndef QT_NO_DEBUG_STREAM +Q_WINEXTRAS_EXPORT QDebug operator<<(QDebug, const QWinJumpList *); +#endif + QT_END_NAMESPACE #endif // QWINJUMPLIST_H diff --git a/src/winextras/qwinjumplistcategory.cpp b/src/winextras/qwinjumplistcategory.cpp index 77903dd..2f26e1a 100644 --- a/src/winextras/qwinjumplistcategory.cpp +++ b/src/winextras/qwinjumplistcategory.cpp @@ -40,6 +40,8 @@ #include "winshobjidl_p.h" #include "windowsguidsdefs_p.h" +#include + #include #if defined(_MSC_VER) && _MSC_VER < 1600 @@ -343,4 +345,28 @@ void QWinJumpListCategory::clear() } } +#ifndef QT_NO_DEBUG_STREAM + +QDebug operator<<(QDebug debug, const QWinJumpListCategory *category) +{ + QDebugStateSaver saver(debug); + debug.nospace(); + debug.noquote(); + debug << "QWinJumpListCategory("; + if (category) { + debug << "type=" << category->type() << ", isVisible=" + << category->isVisible() << ", title=\"" << category->title() + << "\", items=" << category->items(); + } else { + debug << '0'; + } + debug << ')'; + return debug; + + + return debug; +} + +#endif // !QT_NO_DEBUG_STREAM + QT_END_NAMESPACE diff --git a/src/winextras/qwinjumplistcategory.h b/src/winextras/qwinjumplistcategory.h index a5de402..9cc684b 100644 --- a/src/winextras/qwinjumplistcategory.h +++ b/src/winextras/qwinjumplistcategory.h @@ -55,7 +55,6 @@ public: Frequent, Tasks }; - explicit QWinJumpListCategory(const QString &title = QString()); ~QWinJumpListCategory(); @@ -85,6 +84,10 @@ private: QScopedPointer d_ptr; }; +#ifndef QT_NO_DEBUG_STREAM +Q_WINEXTRAS_EXPORT QDebug operator<<(QDebug d, const QWinJumpListCategory *); +#endif + QT_END_NAMESPACE #endif // QWINJUMPLISTCATEGORY_H diff --git a/src/winextras/qwinjumplistitem.cpp b/src/winextras/qwinjumplistitem.cpp index a5d0a39..daf5456 100644 --- a/src/winextras/qwinjumplistitem.cpp +++ b/src/winextras/qwinjumplistitem.cpp @@ -36,6 +36,9 @@ #include "qwinjumplistitem_p.h" #include "qwinjumplistcategory_p.h" +#include +#include + QT_BEGIN_NAMESPACE /*! @@ -256,4 +259,31 @@ QStringList QWinJumpListItem::arguments() const return d->arguments; } +#ifndef QT_NO_DEBUG_STREAM + +QDebug operator<<(QDebug debug, const QWinJumpListItem *item) +{ + QDebugStateSaver saver(debug); + debug.nospace(); + debug.noquote(); + debug << "QWinJumpListItem("; + if (item) { + debug << "type=" << item->type() << ", title=\"" << item->title() + << "\", description=\"" << item->description() + << "\", filePath=\"" << QDir::toNativeSeparators(item->filePath()) + << "\", arguments="; + debug.quote(); + debug << item->arguments(); + debug.noquote(); + debug << ", workingDirectory=\"" << QDir::toNativeSeparators(item->workingDirectory()) + << "\", icon=" << item->icon(); + } else { + debug << '0'; + } + debug << ')'; + return debug; +} + +#endif // !QT_NO_DEBUG_STREAM + QT_END_NAMESPACE diff --git a/src/winextras/qwinjumplistitem.h b/src/winextras/qwinjumplistitem.h index 9e57748..3fffa85 100644 --- a/src/winextras/qwinjumplistitem.h +++ b/src/winextras/qwinjumplistitem.h @@ -78,6 +78,10 @@ private: QScopedPointer d_ptr; }; +#ifndef QT_NO_DEBUG_STREAM +Q_WINEXTRAS_EXPORT QDebug operator<<(QDebug, const QWinJumpListItem *); +#endif + QT_END_NAMESPACE #endif // QWINJUMPLISTITEM_H -- cgit v1.2.3