From 9b59a2ef973a067fb0c4a43396d1aca329b24f9c Mon Sep 17 00:00:00 2001 From: Paul Wicking Date: Fri, 3 Aug 2018 14:51:37 +0200 Subject: [PATCH 1/5] Doc: Update out-of-date screenshots in example docs Task-number: QTBUG-63248 Change-Id: I4cd47977ae020b43ca92b1781ac8b038e6ef851c Reviewed-by: Martin Smith --- doc/src/images/standarddialogs-example.png | Bin 18852 -> 25619 bytes .../doc/images/basiclayouts-example.png | Bin 28771 -> 20791 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/src/images/standarddialogs-example.png b/doc/src/images/standarddialogs-example.png index b6b8a076db49f92d7a2aad04b4e2bb6871d8ec8e..f584ebb27dbcf1dfec7e5a22e46ef5d697b828b3 100644 GIT binary patch literal 25619 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 diff --git a/examples/widgets/doc/images/basiclayouts-example.png b/examples/widgets/doc/images/basiclayouts-example.png index 4a1c45dd800f82652bc1303ea08462c6bd08754f..d19afdb06936d2cd2a8dafb90ac4cf8b6647fb34 100644 GIT binary patch literal 20791 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 br{~nqjo3cvWfzTrcn5kar6gG>4)gy%Q5g1W From 242ea38375534f529f155efa46593e2a42577455 Mon Sep 17 00:00:00 2001 From: Alexander Volkov Date: Thu, 8 Dec 2016 00:23:14 +0300 Subject: [PATCH 2/5] doc: Add missing override and remove redundant virtual for snippets Change-Id: I2395fd01b93c4ea364225e0cf1a5f59908b691d0 Reviewed-by: Martin Smith --- .../src_corelib_concurrent_qthreadpool.cpp | 2 +- .../src_corelib_io_qabstractfileengine.cpp | 8 +++--- .../snippets/code/src_corelib_io_qprocess.cpp | 2 +- .../src_corelib_kernel_qabstractitemmodel.cpp | 2 +- .../code/src_corelib_kernel_qobject.cpp | 8 +++--- .../code/src_corelib_thread_qexception.cpp | 4 +-- .../src_gui_itemviews_qidentityproxymodel.cpp | 2 +- .../doc/snippets/eventfilters/filterobject.h | 2 +- src/corelib/doc/snippets/events/events.cpp | 4 +-- .../doc/snippets/settings/settings.cpp | 2 +- .../doc/snippets/statemachine/eventtest.cpp | 4 +-- .../doc/snippets/statemachine/main4.cpp | 4 +-- src/gui/doc/snippets/draganddrop/dragwidget.h | 8 +++--- src/gui/doc/snippets/dragging/mainwindow.h | 2 +- src/gui/doc/snippets/dropevents/window.h | 4 +-- src/gui/doc/snippets/droprectangle/window.h | 4 +-- src/gui/doc/snippets/matrix/matrix.cpp | 6 ++--- src/gui/doc/snippets/plaintextlayout/window.h | 2 +- src/gui/doc/snippets/qfileopenevent/main.cpp | 2 +- .../doc/snippets/separations/finalwidget.h | 4 +-- .../textdocument-imagedrop/textedit.h | 4 +-- src/gui/doc/snippets/transform/main.cpp | 6 ++--- .../doc/snippets/code/src_opengl_qgl.cpp | 6 ++--- .../doc/snippets/sqldatabase/sqldatabase.cpp | 26 +++++++++---------- .../code/doc_gui_widgets_qopenglwidget.cpp | 10 +++---- .../doc/snippets/code/doc_src_layout.cpp | 14 +++++----- .../src_gui_graphicsview_qgraphicsitem.cpp | 8 +++--- .../doc/snippets/code/src_gui_qproxystyle.cpp | 4 +-- .../snippets/code/src_gui_util_qundostack.cpp | 4 +-- .../doc/snippets/customstyle/customstyle.h | 2 +- .../snippets/graphicssceneadditemsnippet.cpp | 2 +- src/widgets/doc/snippets/myscrollarea.cpp | 4 +-- .../doc/snippets/qlistview-dnd/model.h | 12 ++++----- .../doc/snippets/qstyleoption/main.cpp | 4 +-- .../doc/snippets/qstyleplugin/main.cpp | 2 +- .../doc/snippets/splitterhandle/splitter.h | 4 +-- src/widgets/doc/snippets/styles/styles.cpp | 2 +- 37 files changed, 95 insertions(+), 95 deletions(-) diff --git a/src/corelib/doc/snippets/code/src_corelib_concurrent_qthreadpool.cpp b/src/corelib/doc/snippets/code/src_corelib_concurrent_qthreadpool.cpp index ba31972aa1..8490942048 100644 --- a/src/corelib/doc/snippets/code/src_corelib_concurrent_qthreadpool.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_concurrent_qthreadpool.cpp @@ -51,7 +51,7 @@ //! [0] class HelloWorldTask : public QRunnable { - void run() + void run() override { qDebug() << "Hello world from thread" << QThread::currentThread(); } diff --git a/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp b/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp index 055812ea60..ae2f305313 100644 --- a/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp @@ -52,7 +52,7 @@ class ZipEngineHandler : public QAbstractFileEngineHandler { public: - QAbstractFileEngine *create(const QString &fileName) const; + QAbstractFileEngine *create(const QString &fileName) const override; }; QAbstractFileEngine *ZipEngineHandler::create(const QString &fileName) const @@ -105,12 +105,12 @@ public: entries << "entry1" << "entry2" << "entry3"; } - bool hasNext() const + bool hasNext() const override { return index < entries.size() - 1; } - QString next() + QString next() override { if (!hasNext()) return QString(); @@ -118,7 +118,7 @@ public: return currentFilePath(); } - QString currentFileName() + QString currentFileName() override { return entries.at(index); } diff --git a/src/corelib/doc/snippets/code/src_corelib_io_qprocess.cpp b/src/corelib/doc/snippets/code/src_corelib_io_qprocess.cpp index 2e94666970..8a2825cd10 100644 --- a/src/corelib/doc/snippets/code/src_corelib_io_qprocess.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_io_qprocess.cpp @@ -94,7 +94,7 @@ class SandboxProcess : public QProcess { ... protected: - void setupChildProcess(); + void setupChildProcess() override; ... }; diff --git a/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp b/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp index 3379d0bc1a..2e055ec439 100644 --- a/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp @@ -120,7 +120,7 @@ public: ... - QVariant data(const QModelIndex &index, int role) + QVariant data(const QModelIndex &index, int role) override { if (role != Qt::BackgroundRole) return QSortFilterProxyModel::data(index, role); diff --git a/src/corelib/doc/snippets/code/src_corelib_kernel_qobject.cpp b/src/corelib/doc/snippets/code/src_corelib_kernel_qobject.cpp index c12ed147db..6451f46b36 100644 --- a/src/corelib/doc/snippets/code/src_corelib_kernel_qobject.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_kernel_qobject.cpp @@ -101,7 +101,7 @@ public: MainWindow(); protected: - bool eventFilter(QObject *obj, QEvent *ev); + bool eventFilter(QObject *obj, QEvent *ev) override; private: QTextEdit *textEdit; @@ -147,7 +147,7 @@ public: MyObject(QObject *parent = 0); protected: - void timerEvent(QTimerEvent *event); + void timerEvent(QTimerEvent *event) override; }; MyObject::MyObject(QObject *parent) @@ -215,7 +215,7 @@ class KeyPressEater : public QObject ... protected: - bool eventFilter(QObject *obj, QEvent *event); + bool eventFilter(QObject *obj, QEvent *event) override; }; bool KeyPressEater::eventFilter(QObject *obj, QEvent *event) @@ -508,7 +508,7 @@ public: MyClass(QWidget *parent = 0); ~MyClass(); - bool event(QEvent* ev) + bool event(QEvent* ev) override { if (ev->type() == QEvent::PolishRequest) { // overwrite handling of PolishRequest if any diff --git a/src/corelib/doc/snippets/code/src_corelib_thread_qexception.cpp b/src/corelib/doc/snippets/code/src_corelib_thread_qexception.cpp index eaf3a156cf..723c1630f6 100644 --- a/src/corelib/doc/snippets/code/src_corelib_thread_qexception.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_thread_qexception.cpp @@ -53,8 +53,8 @@ class MyException : public QException { public: - void raise() const { throw *this; } - MyException *clone() const { return new MyException(*this); } + void raise() const override { throw *this; } + MyException *clone() const override { return new MyException(*this); } }; //! [0] diff --git a/src/corelib/doc/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp b/src/corelib/doc/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp index 65ee9260b2..d89e28836f 100644 --- a/src/corelib/doc/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp +++ b/src/corelib/doc/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp @@ -58,7 +58,7 @@ class DateFormatProxyModel : public QIdentityProxyModel m_formatString = formatString; } - QVariant data(const QModelIndex &index, int role) const + QVariant data(const QModelIndex &index, int role) const override { if (role != Qt::DisplayRole) return QIdentityProxyModel::data(index, role); diff --git a/src/corelib/doc/snippets/eventfilters/filterobject.h b/src/corelib/doc/snippets/eventfilters/filterobject.h index 08b7c67192..354aa4ff5c 100644 --- a/src/corelib/doc/snippets/eventfilters/filterobject.h +++ b/src/corelib/doc/snippets/eventfilters/filterobject.h @@ -59,7 +59,7 @@ class FilterObject : public QObject public: FilterObject(QObject *parent = 0); - bool eventFilter(QObject *object, QEvent *event); + bool eventFilter(QObject *object, QEvent *event) override; void setFilteredObject(QObject *object); private: diff --git a/src/corelib/doc/snippets/events/events.cpp b/src/corelib/doc/snippets/events/events.cpp index 9606b0c2ee..969b0047f0 100644 --- a/src/corelib/doc/snippets/events/events.cpp +++ b/src/corelib/doc/snippets/events/events.cpp @@ -54,7 +54,7 @@ class MyCheckBox : public QCheckBox { public: - void mousePressEvent(QMouseEvent *event); + void mousePressEvent(QMouseEvent *event) override; }; //! [0] @@ -72,7 +72,7 @@ void MyCheckBox::mousePressEvent(QMouseEvent *event) class MyWidget : public QWidget { public: - bool event(QEvent *event); + bool event(QEvent *event) override; }; static const int MyCustomEventType = 1099; diff --git a/src/corelib/doc/snippets/settings/settings.cpp b/src/corelib/doc/snippets/settings/settings.cpp index 28b72acd6a..49312b9cfc 100644 --- a/src/corelib/doc/snippets/settings/settings.cpp +++ b/src/corelib/doc/snippets/settings/settings.cpp @@ -143,7 +143,7 @@ public: void readSettings(); protected: - void closeEvent(QCloseEvent *event); + void closeEvent(QCloseEvent *event) override; }; //! [16] diff --git a/src/corelib/doc/snippets/statemachine/eventtest.cpp b/src/corelib/doc/snippets/statemachine/eventtest.cpp index cecf26f2e7..d7d4ce0d21 100644 --- a/src/corelib/doc/snippets/statemachine/eventtest.cpp +++ b/src/corelib/doc/snippets/statemachine/eventtest.cpp @@ -58,7 +58,7 @@ public: protected: //![0] - bool eventTest(QEvent *event) + bool eventTest(QEvent *event) override { if (event->type() == QEvent::Wrapped) { QEvent *wrappedEvent = static_cast(event)->event(); @@ -71,7 +71,7 @@ protected: } //![0] - void onTransition(QEvent *event) + void onTransition(QEvent *event) override { } diff --git a/src/corelib/doc/snippets/statemachine/main4.cpp b/src/corelib/doc/snippets/statemachine/main4.cpp index 5786fa3c17..e21656b91c 100644 --- a/src/corelib/doc/snippets/statemachine/main4.cpp +++ b/src/corelib/doc/snippets/statemachine/main4.cpp @@ -72,7 +72,7 @@ public: : m_value(value) {} protected: - virtual bool eventTest(QEvent *e) + bool eventTest(QEvent *e) override { if (e->type() != QEvent::Type(QEvent::User+1)) // StringEvent return false; @@ -80,7 +80,7 @@ protected: return (m_value == se->value); } - virtual void onTransition(QEvent *) {} + void onTransition(QEvent *) override {} private: QString m_value; diff --git a/src/gui/doc/snippets/draganddrop/dragwidget.h b/src/gui/doc/snippets/draganddrop/dragwidget.h index 424c0b334b..709f9338bf 100644 --- a/src/gui/doc/snippets/draganddrop/dragwidget.h +++ b/src/gui/doc/snippets/draganddrop/dragwidget.h @@ -74,10 +74,10 @@ signals: void mimeTypes(const QStringList &types); protected: - void dragEnterEvent(QDragEnterEvent *event); - void dropEvent(QDropEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void mousePressEvent(QMouseEvent *event); + void dragEnterEvent(QDragEnterEvent *event) override; + void dropEvent(QDropEvent *event) override; + void mouseMoveEvent(QMouseEvent *event) override; + void mousePressEvent(QMouseEvent *event) override; private: QByteArray data; diff --git a/src/gui/doc/snippets/dragging/mainwindow.h b/src/gui/doc/snippets/dragging/mainwindow.h index 5e796d530f..8a8e43b223 100644 --- a/src/gui/doc/snippets/dragging/mainwindow.h +++ b/src/gui/doc/snippets/dragging/mainwindow.h @@ -68,7 +68,7 @@ public: MainWindow(QWidget *parent = 0); protected: - void mousePressEvent(QMouseEvent *event); + void mousePressEvent(QMouseEvent *event) override; private: QLabel *iconLabel; diff --git a/src/gui/doc/snippets/dropevents/window.h b/src/gui/doc/snippets/dropevents/window.h index 17c323b952..6ac35181ed 100644 --- a/src/gui/doc/snippets/dropevents/window.h +++ b/src/gui/doc/snippets/dropevents/window.h @@ -67,8 +67,8 @@ public: Window(QWidget *parent = 0); protected: - void dragEnterEvent(QDragEnterEvent *event); - void dropEvent(QDropEvent *event); + void dragEnterEvent(QDragEnterEvent *event) override; + void dropEvent(QDropEvent *event) override; private: QComboBox *mimeTypeCombo; diff --git a/src/gui/doc/snippets/droprectangle/window.h b/src/gui/doc/snippets/droprectangle/window.h index 683e5cb813..5a9ef75d3b 100644 --- a/src/gui/doc/snippets/droprectangle/window.h +++ b/src/gui/doc/snippets/droprectangle/window.h @@ -67,8 +67,8 @@ public: Window(QWidget *parent = 0); protected: - void dragMoveEvent(QDragMoveEvent *event); - void dropEvent(QDropEvent *event); + void dragMoveEvent(QDragMoveEvent *event) override; + void dropEvent(QDropEvent *event) override; private: QComboBox *mimeTypeCombo; diff --git a/src/gui/doc/snippets/matrix/matrix.cpp b/src/gui/doc/snippets/matrix/matrix.cpp index ec9e130a29..115dc3d508 100644 --- a/src/gui/doc/snippets/matrix/matrix.cpp +++ b/src/gui/doc/snippets/matrix/matrix.cpp @@ -53,7 +53,7 @@ class SimpleTransformation : public QWidget { - void paintEvent(QPaintEvent *); + void paintEvent(QPaintEvent *) override; }; //! [0] @@ -73,7 +73,7 @@ void SimpleTransformation::paintEvent(QPaintEvent *) class CombinedTransformation : public QWidget { - void paintEvent(QPaintEvent *); + void paintEvent(QPaintEvent *) override; }; //! [1] @@ -97,7 +97,7 @@ void CombinedTransformation::paintEvent(QPaintEvent *) class BasicOperations : public QWidget { - void paintEvent(QPaintEvent *); + void paintEvent(QPaintEvent *) override; }; //! [2] diff --git a/src/gui/doc/snippets/plaintextlayout/window.h b/src/gui/doc/snippets/plaintextlayout/window.h index 0068a37482..8552ecd4ba 100644 --- a/src/gui/doc/snippets/plaintextlayout/window.h +++ b/src/gui/doc/snippets/plaintextlayout/window.h @@ -61,7 +61,7 @@ public: Window(QWidget *parent = 0); protected: - void paintEvent(QPaintEvent *event); + void paintEvent(QPaintEvent *event) override; private: QFont font; diff --git a/src/gui/doc/snippets/qfileopenevent/main.cpp b/src/gui/doc/snippets/qfileopenevent/main.cpp index 3e707f2ddf..f18e763bbc 100644 --- a/src/gui/doc/snippets/qfileopenevent/main.cpp +++ b/src/gui/doc/snippets/qfileopenevent/main.cpp @@ -61,7 +61,7 @@ public: { } - bool event(QEvent *event) + bool event(QEvent *event) override { if (event->type() == QEvent::FileOpen) { QFileOpenEvent *openEvent = static_cast(event); diff --git a/src/gui/doc/snippets/separations/finalwidget.h b/src/gui/doc/snippets/separations/finalwidget.h index 0301f68fe9..886a5dfaf3 100644 --- a/src/gui/doc/snippets/separations/finalwidget.h +++ b/src/gui/doc/snippets/separations/finalwidget.h @@ -71,8 +71,8 @@ public: const QPixmap *pixmap() const; protected: - void mouseMoveEvent(QMouseEvent *event); - void mousePressEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event) override; + void mousePressEvent(QMouseEvent *event) override; private: void createImage(); diff --git a/src/gui/doc/snippets/textdocument-imagedrop/textedit.h b/src/gui/doc/snippets/textdocument-imagedrop/textedit.h index 9f73bceeaf..3f570884ba 100644 --- a/src/gui/doc/snippets/textdocument-imagedrop/textedit.h +++ b/src/gui/doc/snippets/textdocument-imagedrop/textedit.h @@ -59,8 +59,8 @@ class TextEdit : public QTextEdit public: TextEdit(QWidget *parent=0); - bool canInsertFromMimeData( const QMimeData *source ) const; - void insertFromMimeData( const QMimeData *source ); + bool canInsertFromMimeData( const QMimeData *source ) const override; + void insertFromMimeData( const QMimeData *source ) override; }; #endif diff --git a/src/gui/doc/snippets/transform/main.cpp b/src/gui/doc/snippets/transform/main.cpp index e096eee7fc..e30a3b63bf 100644 --- a/src/gui/doc/snippets/transform/main.cpp +++ b/src/gui/doc/snippets/transform/main.cpp @@ -53,7 +53,7 @@ class SimpleTransformation : public QWidget { - void paintEvent(QPaintEvent *); + void paintEvent(QPaintEvent *) override; }; //! [0] @@ -73,7 +73,7 @@ void SimpleTransformation::paintEvent(QPaintEvent *) class CombinedTransformation : public QWidget { - void paintEvent(QPaintEvent *); + void paintEvent(QPaintEvent *) override; }; //! [1] @@ -97,7 +97,7 @@ void CombinedTransformation::paintEvent(QPaintEvent *) class BasicOperations : public QWidget { - void paintEvent(QPaintEvent *); + void paintEvent(QPaintEvent *) override; }; //! [2] diff --git a/src/opengl/doc/snippets/code/src_opengl_qgl.cpp b/src/opengl/doc/snippets/code/src_opengl_qgl.cpp index 839d941a1c..a73ee2cdc5 100644 --- a/src/opengl/doc/snippets/code/src_opengl_qgl.cpp +++ b/src/opengl/doc/snippets/code/src_opengl_qgl.cpp @@ -146,7 +146,7 @@ public: protected: - void initializeGL() + void initializeGL() override { // Set up the rendering context, define display lists etc.: ... @@ -155,7 +155,7 @@ protected: ... } - void resizeGL(int w, int h) + void resizeGL(int w, int h) override { // setup viewport, projection etc.: glViewport(0, 0, (GLint)w, (GLint)h); @@ -164,7 +164,7 @@ protected: ... } - void paintGL() + void paintGL() override { // draw the scene: ... diff --git a/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp b/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp index d0f9a367c5..a27feb1505 100644 --- a/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp +++ b/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp @@ -273,7 +273,7 @@ void QSqlQueryModel_snippets() class MyModel : public QSqlQueryModel { public: - QVariant data(const QModelIndex &item, int role) const; + QVariant data(const QModelIndex &item, int role) const override; int m_specialColumnNo; }; @@ -526,15 +526,15 @@ public: ~XyzResult() {} protected: - QVariant data(int /* index */) { return QVariant(); } - bool isNull(int /* index */) { return false; } - bool reset(const QString & /* query */) { return false; } - bool fetch(int /* index */) { return false; } - bool fetchFirst() { return false; } - bool fetchLast() { return false; } - int size() { return 0; } - int numRowsAffected() { return 0; } - QSqlRecord record() const { return QSqlRecord(); } + QVariant data(int /* index */) override { return QVariant(); } + bool isNull(int /* index */) override { return false; } + bool reset(const QString & /* query */) override { return false; } + bool fetch(int /* index */) override { return false; } + bool fetchFirst() override { return false; } + bool fetchLast() override { return false; } + int size() override { return 0; } + int numRowsAffected() override { return 0; } + QSqlRecord record() const override { return QSqlRecord(); } }; //! [47] @@ -545,13 +545,13 @@ public: XyzDriver() {} ~XyzDriver() {} - bool hasFeature(DriverFeature /* feature */) const { return false; } + bool hasFeature(DriverFeature /* feature */) const override { return false; } bool open(const QString & /* db */, const QString & /* user */, const QString & /* password */, const QString & /* host */, - int /* port */, const QString & /* options */) + int /* port */, const QString & /* options */) override { return false; } void close() {} - QSqlResult *createResult() const { return new XyzResult(this); } + QSqlResult *createResult() const override { return new XyzResult(this); } }; //! [48] diff --git a/src/widgets/doc/snippets/code/doc_gui_widgets_qopenglwidget.cpp b/src/widgets/doc/snippets/code/doc_gui_widgets_qopenglwidget.cpp index 4a3816ae72..633a413b4f 100644 --- a/src/widgets/doc/snippets/code/doc_gui_widgets_qopenglwidget.cpp +++ b/src/widgets/doc/snippets/code/doc_gui_widgets_qopenglwidget.cpp @@ -55,7 +55,7 @@ public: MyGLWidget(QWidget *parent) : QOpenGLWidget(parent) { } protected: - void initializeGL() + void initializeGL() override { // Set up the rendering context, load shaders and other resources, etc.: QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions(); @@ -63,7 +63,7 @@ protected: ... } - void resizeGL(int w, int h) + void resizeGL(int w, int h) override { // Update projection matrix and other size related settings: m_projection.setToIdentity(); @@ -71,7 +71,7 @@ protected: ... } - void paintGL() + void paintGL() override { // Draw the scene: QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions(); @@ -86,7 +86,7 @@ protected: class MyGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { ... - void initializeGL() + void initializeGL() override { initializeOpenGLFunctions(); glClearColor(...); @@ -108,7 +108,7 @@ widget->setFormat(format); // must be called before the widget or its parent win //! [3] ... - void paintGL() + void paintGL() override { QOpenGLFunctions_3_2_Core *f = QOpenGLContext::currentContext()->versionFunctions(); ... diff --git a/src/widgets/doc/snippets/code/doc_src_layout.cpp b/src/widgets/doc/snippets/code/doc_src_layout.cpp index 42f5611bde..5e9a740244 100644 --- a/src/widgets/doc/snippets/code/doc_src_layout.cpp +++ b/src/widgets/doc/snippets/code/doc_src_layout.cpp @@ -63,13 +63,13 @@ public: CardLayout(int dist): QLayout(dist) {} ~CardLayout(); - void addItem(QLayoutItem *item); - QSize sizeHint() const; - QSize minimumSize() const; - int count() const; - QLayoutItem *itemAt(int) const; - QLayoutItem *takeAt(int); - void setGeometry(const QRect &rect); + void addItem(QLayoutItem *item) override; + QSize sizeHint() const override; + QSize minimumSize() const override; + int count() const override; + QLayoutItem *itemAt(int) const override; + QLayoutItem *takeAt(int) override; + void setGeometry(const QRect &rect) override; private: QList list; diff --git a/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp index 7511c83b3c..8d8c63db9e 100644 --- a/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp +++ b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp @@ -52,7 +52,7 @@ class SimpleItem : public QGraphicsItem { public: - QRectF boundingRect() const + QRectF boundingRect() const override { qreal penWidth = 1; return QRectF(-10 - penWidth / 2, -10 - penWidth / 2, @@ -60,7 +60,7 @@ public: } void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, - QWidget *widget) + QWidget *widget) override { painter->drawRoundedRect(-10, -10, 20, 20, 5, 5); } @@ -74,7 +74,7 @@ class CustomItem : public QGraphicsItem public: enum { Type = UserType + 1 }; - int type() const + int type() const override { // Enable the use of qgraphicsitem_cast with this item. return Type; @@ -260,7 +260,7 @@ class QGraphicsPathItem : public QAbstractGraphicsShapeItem { public: enum { Type = 2 }; - int type() const { return Type; } + int type() const override { return Type; } ... }; //! [18] diff --git a/src/widgets/doc/snippets/code/src_gui_qproxystyle.cpp b/src/widgets/doc/snippets/code/src_gui_qproxystyle.cpp index 33d5fab321..3169d1c193 100644 --- a/src/widgets/doc/snippets/code/src_gui_qproxystyle.cpp +++ b/src/widgets/doc/snippets/code/src_gui_qproxystyle.cpp @@ -54,7 +54,7 @@ class MyProxyStyle : public QProxyStyle public: int styleHint(StyleHint hint, const QStyleOption *option = 0, - const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const + const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const override { if (hint == QStyle::SH_UnderlineShortcut) return 1; @@ -73,7 +73,7 @@ class MyProxyStyle : public QProxyStyle { public: int styleHint(StyleHint hint, const QStyleOption *option = 0, - const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const + const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const override { if (hint == QStyle::SH_UnderlineShortcut) return 0; diff --git a/src/widgets/doc/snippets/code/src_gui_util_qundostack.cpp b/src/widgets/doc/snippets/code/src_gui_util_qundostack.cpp index e191c74287..8f59fe9cb3 100644 --- a/src/widgets/doc/snippets/code/src_gui_util_qundostack.cpp +++ b/src/widgets/doc/snippets/code/src_gui_util_qundostack.cpp @@ -54,9 +54,9 @@ class AppendText : public QUndoCommand public: AppendText(QString *doc, const QString &text) : m_document(doc), m_text(text) { setText("append text"); } - virtual void undo() + void undo() override { m_document->chop(m_text.length()); } - virtual void redo() + void redo() override { m_document->append(m_text); } private: QString *m_document; diff --git a/src/widgets/doc/snippets/customstyle/customstyle.h b/src/widgets/doc/snippets/customstyle/customstyle.h index addb1dfb6e..be9edf0bf4 100644 --- a/src/widgets/doc/snippets/customstyle/customstyle.h +++ b/src/widgets/doc/snippets/customstyle/customstyle.h @@ -63,7 +63,7 @@ public: ~CustomStyle() {} void drawPrimitive(PrimitiveElement element, const QStyleOption *option, - QPainter *painter, const QWidget *widget) const; + QPainter *painter, const QWidget *widget) const override; }; //! [0] diff --git a/src/widgets/doc/snippets/graphicssceneadditemsnippet.cpp b/src/widgets/doc/snippets/graphicssceneadditemsnippet.cpp index b3ace9ce46..96e6bd650c 100644 --- a/src/widgets/doc/snippets/graphicssceneadditemsnippet.cpp +++ b/src/widgets/doc/snippets/graphicssceneadditemsnippet.cpp @@ -58,7 +58,7 @@ public: void drawItems(QPainter *painter, int numItems, QGraphicsItem *items[], const QStyleOptionGraphicsItem options[], - QWidget *widget = 0); + QWidget *widget = 0) override; }; //! [0] diff --git a/src/widgets/doc/snippets/myscrollarea.cpp b/src/widgets/doc/snippets/myscrollarea.cpp index 477b041fe1..dbf8da1603 100644 --- a/src/widgets/doc/snippets/myscrollarea.cpp +++ b/src/widgets/doc/snippets/myscrollarea.cpp @@ -57,8 +57,8 @@ public: void setWidget(QWidget *w); protected: - void scrollContentsBy(int dx, int dy); - void resizeEvent(QResizeEvent *event); + void scrollContentsBy(int dx, int dy) override; + void resizeEvent(QResizeEvent *event) override; private: void updateWidgetPosition(); diff --git a/src/widgets/doc/snippets/qlistview-dnd/model.h b/src/widgets/doc/snippets/qlistview-dnd/model.h index 7635d2f21a..3d418dca14 100644 --- a/src/widgets/doc/snippets/qlistview-dnd/model.h +++ b/src/widgets/doc/snippets/qlistview-dnd/model.h @@ -61,15 +61,15 @@ class DragDropListModel : public QStringListModel public: DragDropListModel(const QStringList &strings, QObject *parent = 0); - Qt::ItemFlags flags(const QModelIndex &index) const; + Qt::ItemFlags flags(const QModelIndex &index) const override; bool canDropMimeData(const QMimeData *data, Qt::DropAction action, - int row, int column, const QModelIndex &parent); + int row, int column, const QModelIndex &parent) override; bool dropMimeData(const QMimeData *data, Qt::DropAction action, - int row, int column, const QModelIndex &parent); - QMimeData *mimeData(const QModelIndexList &indexes) const; - QStringList mimeTypes() const; - Qt::DropActions supportedDropActions() const; + int row, int column, const QModelIndex &parent) override; + QMimeData *mimeData(const QModelIndexList &indexes) const override; + QStringList mimeTypes() const override; + Qt::DropActions supportedDropActions() const override; }; #endif diff --git a/src/widgets/doc/snippets/qstyleoption/main.cpp b/src/widgets/doc/snippets/qstyleoption/main.cpp index 659a5f945b..529f88f1d9 100644 --- a/src/widgets/doc/snippets/qstyleoption/main.cpp +++ b/src/widgets/doc/snippets/qstyleoption/main.cpp @@ -56,7 +56,7 @@ class MyPushButton : public QPushButton public: MyPushButton(QWidget *parent = 0); - void paintEvent(QPaintEvent *); + void paintEvent(QPaintEvent *) override; }; MyPushButton::MyPushButton(QWidget *parent) @@ -87,7 +87,7 @@ class MyStyle : public QStyle public: void drawPrimitive(PrimitiveElement element, const QStyleOption *option, - QPainter *painter, const QWidget *widget); + QPainter *painter, const QWidget *widget) override; }; //! [4] diff --git a/src/widgets/doc/snippets/qstyleplugin/main.cpp b/src/widgets/doc/snippets/qstyleplugin/main.cpp index 2cc7040e93..1c61581572 100644 --- a/src/widgets/doc/snippets/qstyleplugin/main.cpp +++ b/src/widgets/doc/snippets/qstyleplugin/main.cpp @@ -59,7 +59,7 @@ class MyStylePlugin : public QStylePlugin public: MyStylePlugin(QObject *parent = 0); - QStyle *create(const QString &key); + QStyle *create(const QString &key) override; }; //! [0] diff --git a/src/widgets/doc/snippets/splitterhandle/splitter.h b/src/widgets/doc/snippets/splitterhandle/splitter.h index 49ef20a620..8df7bc14a2 100644 --- a/src/widgets/doc/snippets/splitterhandle/splitter.h +++ b/src/widgets/doc/snippets/splitterhandle/splitter.h @@ -64,7 +64,7 @@ public: Splitter(Qt::Orientation orientation, QWidget *parent = 0); protected: - QSplitterHandle *createHandle(); + QSplitterHandle *createHandle() override; }; //! [0] @@ -74,7 +74,7 @@ public: SplitterHandle(Qt::Orientation orientation, QSplitter *parent); protected: - void paintEvent(QPaintEvent *event); + void paintEvent(QPaintEvent *event) override; private: QLinearGradient gradient; diff --git a/src/widgets/doc/snippets/styles/styles.cpp b/src/widgets/doc/snippets/styles/styles.cpp index 116c807f39..77fde0693d 100644 --- a/src/widgets/doc/snippets/styles/styles.cpp +++ b/src/widgets/doc/snippets/styles/styles.cpp @@ -55,7 +55,7 @@ class MyWidget : public QWidget { protected: - void paintEvent(QPaintEvent *event); + void paintEvent(QPaintEvent *event) override; void paintEvent2(QPaintEvent *event); }; From 04bbf534f98387073ce327eac2718e0170f8d8c0 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 15 Aug 2018 13:43:18 -0700 Subject: [PATCH 3/5] MSVC: add support for 64-bit POPCNT on 32-bit machines It's just adding the count of each half. Change-Id: I9868946ceaf74002bde1fffd154b29908319007f Reviewed-by: Samuel Gaist Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/corelib/tools/qalgorithms.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/corelib/tools/qalgorithms.h b/src/corelib/tools/qalgorithms.h index b658d8afcf..0146e22fa3 100644 --- a/src/corelib/tools/qalgorithms.h +++ b/src/corelib/tools/qalgorithms.h @@ -651,6 +651,7 @@ Q_ALWAYS_INLINE uint qt_builtin_clzs(quint16 v) Q_DECL_NOTHROW // So it's an acceptable compromise. #if defined(__AVX__) || defined(__SSE4_2__) || defined(__POPCNT__) #define QALGORITHMS_USE_BUILTIN_POPCOUNT +#define QALGORITHMS_USE_BUILTIN_POPCOUNTLL Q_ALWAYS_INLINE uint qt_builtin_popcount(quint32 v) Q_DECL_NOTHROW { return __popcnt(v); @@ -663,13 +664,15 @@ Q_ALWAYS_INLINE uint qt_builtin_popcount(quint16 v) Q_DECL_NOTHROW { return __popcnt16(v); } -#if Q_PROCESSOR_WORDSIZE == 8 -#define QALGORITHMS_USE_BUILTIN_POPCOUNTLL Q_ALWAYS_INLINE uint qt_builtin_popcountll(quint64 v) Q_DECL_NOTHROW { +#if Q_PROCESSOR_WORDSIZE == 8 return __popcnt64(v); -} +#else + return __popcnt(quint32(v)) + __popcnt(quint32(v >> 32)); #endif // MSVC 64bit +} + #endif // __AVX__ || __SSE4_2__ || __POPCNT__ #endif // MSVC From b0479aab297f041aa9842c3e1996d62c16d7dbcf Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 28 Jul 2018 19:50:27 -0700 Subject: [PATCH 4/5] QUrl: Make sure we do reject URLs for which IDNA nameprep failed qt_nameprep() already reset the string to its original length to indicate failure, but we didn't handle that in qt_ACE_do(). So make it have a return value whcih makes it easier to handle that case and do handle it. [ChangeLog][QtCore][QUrl] Fixed a bug that caused URLs whose hostnames contained unassigned or prohibited Unicode codepoints to report isValid() = true, despite clearing the hostname. Change-Id: I41e7b3bced5944239f41fffd1545b7274c4b419d Reviewed-by: David Faure --- src/corelib/io/qurl_p.h | 2 +- src/corelib/io/qurlidna.cpp | 17 +++++++++++------ tests/auto/corelib/io/qurl/tst_qurl.cpp | 19 ++++++++++++++++++- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/corelib/io/qurl_p.h b/src/corelib/io/qurl_p.h index cb88cac35e..1b9237e58a 100644 --- a/src/corelib/io/qurl_p.h +++ b/src/corelib/io/qurl_p.h @@ -65,7 +65,7 @@ extern Q_AUTOTEST_EXPORT int qt_urlRecode(QString &appendTo, const QChar *begin, enum AceLeadingDot { AllowLeadingDot, ForbidLeadingDot }; enum AceOperation { ToAceOnly, NormalizeAce }; extern QString qt_ACE_do(const QString &domain, AceOperation op, AceLeadingDot dot); -extern Q_AUTOTEST_EXPORT void qt_nameprep(QString *source, int from); +extern Q_AUTOTEST_EXPORT bool qt_nameprep(QString *source, int from); extern Q_AUTOTEST_EXPORT bool qt_check_std3rules(const QChar *uc, int len); extern Q_AUTOTEST_EXPORT void qt_punycodeEncoder(const QChar *s, int ucLength, QString *output); extern Q_AUTOTEST_EXPORT QString qt_punycodeDecoder(const QString &pc); diff --git a/src/corelib/io/qurlidna.cpp b/src/corelib/io/qurlidna.cpp index 2f8bd91f6e..2305e66407 100644 --- a/src/corelib/io/qurlidna.cpp +++ b/src/corelib/io/qurlidna.cpp @@ -2021,7 +2021,7 @@ static bool isBidirectionalL(uint uc) return false; } -Q_AUTOTEST_EXPORT void qt_nameprep(QString *source, int from) +Q_AUTOTEST_EXPORT bool qt_nameprep(QString *source, int from) { QChar *src = source->data(); // causes a detach, so we're sure the only one using it QChar *out = src + from; @@ -2036,7 +2036,7 @@ Q_AUTOTEST_EXPORT void qt_nameprep(QString *source, int from) } } if (out == e) - return; // everything was mapped easily (lowercased, actually) + return true; // everything was mapped easily (lowercased, actually) int firstNonAscii = out - src; // Characters unassigned in Unicode 3.2 are not allowed in "stored string" scheme @@ -2059,7 +2059,7 @@ Q_AUTOTEST_EXPORT void qt_nameprep(QString *source, int from) QChar::UnicodeVersion version = QChar::unicodeVersion(uc); if (version == QChar::Unicode_Unassigned || version > QChar::Unicode_3_2) { source->resize(from); // not allowed, clear the label - return; + return false; } } if (!isMappedToNothing(uc)) { @@ -2086,7 +2086,7 @@ Q_AUTOTEST_EXPORT void qt_nameprep(QString *source, int from) // Strip prohibited output if (containsProhibitedOuptut(source, firstNonAscii)) { source->resize(from); - return; + return false; } // Check for valid bidirectional characters @@ -2110,9 +2110,13 @@ Q_AUTOTEST_EXPORT void qt_nameprep(QString *source, int from) } if (containsRandALCat) { if (containsLCat || (!isBidirectionalRorAL(src[from].unicode()) - || !isBidirectionalRorAL(e[-1].unicode()))) + || !isBidirectionalRorAL(e[-1].unicode()))) { source->resize(from); // not allowed, clear the label + return false; + } } + + return true; } static const QChar *qt_find_nonstd3(const QChar *uc, int len, Qt::CaseSensitivity cs) @@ -2553,7 +2557,8 @@ QString qt_ACE_do(const QString &domain, AceOperation op, AceLeadingDot dot) } else { // Punycode encoding and decoding cannot be done in-place // That means we need one or two temporaries - qt_nameprep(&result, prevLen); + if (!qt_nameprep(&result, prevLen)) + return QString(); // failed labelLength = result.length() - prevLen; int toReserve = labelLength + 4 + 6; // "xn--" plus some extra bytes aceForm.resize(0); diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp index 20282068cb..09aefcee91 100644 --- a/tests/auto/corelib/io/qurl/tst_qurl.cpp +++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp @@ -2047,6 +2047,21 @@ void tst_QUrl::isValid() qPrintable(url.errorString())); } + { + QUrl url = QUrl::fromEncoded("foo://%f0%9f%93%99.example.la/g"); + QVERIFY(!url.isValid()); + QVERIFY(url.toString().isEmpty()); + QCOMPARE(url.path(), QString("/g")); + url.setHost("%f0%9f%93%99.example.la/"); + QVERIFY(!url.isValid()); + QVERIFY(url.toString().isEmpty()); + url.setHost("\xf0\x9f\x93\x99.example.la/"); + QVERIFY(!url.isValid()); + QVERIFY(url.toString().isEmpty()); + QVERIFY2(url.errorString().contains("Invalid hostname"), + qPrintable(url.errorString())); + } + { QUrl url("http://example.com"); QVERIFY(url.isValid()); @@ -2778,7 +2793,9 @@ void tst_QUrl::hosts() { QFETCH(QString, url); - QTEST(QUrl(url).host(), "host"); + QUrl u(url); + QTEST(u.host(), "host"); + QVERIFY(u.isEmpty() || u.isValid()); } void tst_QUrl::hostFlags_data() From 29778037f8a7b2c86bc4044409b37d5a51a15432 Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Thu, 5 Apr 2018 12:54:01 +0100 Subject: [PATCH 5/5] Don't block on lost context When glGetError returns GL_CONTEXT_LOST, on XCB + Nvidia at least, the error does not get cleared until the next successful glGetGraphicsResetStatus. We can't handle this properly until the start of the next frame where we will hopefully have a valid context, but in the meantime we should avoid locking up completely. Change-Id: Id438d44d83b926e1f3e4281ca3704231bf1a23cf Reviewed-by: Allan Sandfeld Jensen --- src/gui/opengl/qopenglframebufferobject.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/gui/opengl/qopenglframebufferobject.cpp b/src/gui/opengl/qopenglframebufferobject.cpp index 91c25184b6..83bc568ba7 100644 --- a/src/gui/opengl/qopenglframebufferobject.cpp +++ b/src/gui/opengl/qopenglframebufferobject.cpp @@ -55,12 +55,16 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_DEBUG #define QT_RESET_GLERROR() \ { \ - while (QOpenGLContext::currentContext()->functions()->glGetError() != GL_NO_ERROR) {} \ + while (true) {\ + GLenum error = QOpenGLContext::currentContext()->functions()->glGetError(); \ + if (error == GL_NO_ERROR || error == GL_CONTEXT_LOST) \ + break; \ + } \ } #define QT_CHECK_GLERROR() \ { \ GLenum err = QOpenGLContext::currentContext()->functions()->glGetError(); \ - if (err != GL_NO_ERROR) { \ + if (err != GL_NO_ERROR && err != GL_CONTEXT_LOST) { \ qDebug("[%s line %d] OpenGL Error: %d", \ __FILE__, __LINE__, (int)err); \ } \ @@ -126,6 +130,10 @@ QT_BEGIN_NAMESPACE #define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 #endif +#ifndef GL_CONTEXT_LOST +#define GL_CONTEXT_LOST 0x0507 +#endif + /*! \class QOpenGLFramebufferObjectFormat @@ -1303,8 +1311,11 @@ static QImage qt_gl_read_framebuffer(const QSize &size, GLenum internal_format, { QOpenGLContext *ctx = QOpenGLContext::currentContext(); QOpenGLFunctions *funcs = ctx->functions(); - while (funcs->glGetError()); - + while (true) { + GLenum error = funcs->glGetError(); + if (error == GL_NO_ERROR || error == GL_CONTEXT_LOST) + break; + } switch (internal_format) { case GL_RGB: case GL_RGB8: