From cb0bf5ad683b72d4ecb0d21dafde3a5acdaac800 Mon Sep 17 00:00:00 2001
From: Volker Hilsheimer <volker.hilsheimer@qt.io>
Date: Mon, 9 Jan 2023 13:55:09 +0100
Subject: [PATCH] Merge "undo" and "undoframework" examples
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The "undo" example didn't show anything that the "undoframework"
example doesn't, and the latter is more comprehensive and properly
documented. "undoframework" also uses QGraphicsView instead of
inventing its own diagram widget.

However, the "undo" example created a nicer UI with toolbuttons,
icons, and the undo view in a dock widget, so reuse those elements
in the "undoframework" example instead.

Update the documentation quoting tags accordingly, and clean up
a bit.

Pick-to: 6.5
Change-Id: I3c91feecbd5fe3e5900838b0b51f9fe7bd190280
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
---
 examples/widgets/doc/images/undodemo.png      | Bin 84941 -> 0 bytes
 examples/widgets/doc/src/undo.qdoc            |  20 -
 examples/widgets/doc/src/undoframework.qdoc   |  41 +-
 examples/widgets/tools/CMakeLists.txt         |   1 -
 examples/widgets/tools/tools.pro              |   1 -
 examples/widgets/tools/undo/CMakeLists.txt    |  68 ---
 examples/widgets/tools/undo/commands.cpp      | 130 ------
 examples/widgets/tools/undo/commands.h        |  76 ----
 examples/widgets/tools/undo/document.cpp      | 401 -----------------
 examples/widgets/tools/undo/document.h        |  86 ----
 .../widgets/tools/undo/icons/background.png   | Bin 93 -> 0 bytes
 examples/widgets/tools/undo/icons/blue.png    | Bin 1659 -> 0 bytes
 examples/widgets/tools/undo/icons/circle.png  | Bin 1359 -> 0 bytes
 examples/widgets/tools/undo/icons/exit.png    | Bin 1731 -> 0 bytes
 .../widgets/tools/undo/icons/fileclose.png    | Bin 1121 -> 0 bytes
 examples/widgets/tools/undo/icons/filenew.png | Bin 1266 -> 0 bytes
 .../widgets/tools/undo/icons/fileopen.png     | Bin 1771 -> 0 bytes
 .../widgets/tools/undo/icons/filesave.png     | Bin 1022 -> 0 bytes
 examples/widgets/tools/undo/icons/green.png   | Bin 1766 -> 0 bytes
 examples/widgets/tools/undo/icons/ok.png      | Bin 979 -> 0 bytes
 examples/widgets/tools/undo/icons/red.png     | Bin 1653 -> 0 bytes
 examples/widgets/tools/undo/main.cpp          |  18 -
 examples/widgets/tools/undo/mainwindow.cpp    | 410 ------------------
 examples/widgets/tools/undo/mainwindow.h      |  49 ---
 examples/widgets/tools/undo/mainwindow.ui     | 322 --------------
 examples/widgets/tools/undo/undo.pro          |  17 -
 examples/widgets/tools/undo/undo.qrc          |  20 -
 .../tools/undoframework/CMakeLists.txt        |   7 +-
 .../undoframework/{images => icons}/cross.png | Bin
 .../icons/rectangle.png                       | Bin
 .../{undo => undoframework}/icons/redo.png    | Bin
 .../{undo => undoframework}/icons/remove.png  | Bin
 .../icons/triangle.png                        | Bin
 .../{undo => undoframework}/icons/undo.png    | Bin
 .../tools/undoframework/mainwindow.cpp        |  97 +++--
 .../widgets/tools/undoframework/mainwindow.h  |   4 +-
 .../tools/undoframework/undoframework.qrc     |   8 +-
 37 files changed, 85 insertions(+), 1691 deletions(-)
 delete mode 100644 examples/widgets/doc/images/undodemo.png
 delete mode 100644 examples/widgets/doc/src/undo.qdoc
 delete mode 100644 examples/widgets/tools/undo/CMakeLists.txt
 delete mode 100644 examples/widgets/tools/undo/commands.cpp
 delete mode 100644 examples/widgets/tools/undo/commands.h
 delete mode 100644 examples/widgets/tools/undo/document.cpp
 delete mode 100644 examples/widgets/tools/undo/document.h
 delete mode 100644 examples/widgets/tools/undo/icons/background.png
 delete mode 100644 examples/widgets/tools/undo/icons/blue.png
 delete mode 100644 examples/widgets/tools/undo/icons/circle.png
 delete mode 100644 examples/widgets/tools/undo/icons/exit.png
 delete mode 100644 examples/widgets/tools/undo/icons/fileclose.png
 delete mode 100644 examples/widgets/tools/undo/icons/filenew.png
 delete mode 100644 examples/widgets/tools/undo/icons/fileopen.png
 delete mode 100644 examples/widgets/tools/undo/icons/filesave.png
 delete mode 100644 examples/widgets/tools/undo/icons/green.png
 delete mode 100644 examples/widgets/tools/undo/icons/ok.png
 delete mode 100644 examples/widgets/tools/undo/icons/red.png
 delete mode 100644 examples/widgets/tools/undo/main.cpp
 delete mode 100644 examples/widgets/tools/undo/mainwindow.cpp
 delete mode 100644 examples/widgets/tools/undo/mainwindow.h
 delete mode 100644 examples/widgets/tools/undo/mainwindow.ui
 delete mode 100644 examples/widgets/tools/undo/undo.pro
 delete mode 100644 examples/widgets/tools/undo/undo.qrc
 rename examples/widgets/tools/undoframework/{images => icons}/cross.png (100%)
 rename examples/widgets/tools/{undo => undoframework}/icons/rectangle.png (100%)
 rename examples/widgets/tools/{undo => undoframework}/icons/redo.png (100%)
 rename examples/widgets/tools/{undo => undoframework}/icons/remove.png (100%)
 rename examples/widgets/tools/{undo => undoframework}/icons/triangle.png (100%)
 rename examples/widgets/tools/{undo => undoframework}/icons/undo.png (100%)

diff --git a/examples/widgets/doc/images/undodemo.png b/examples/widgets/doc/images/undodemo.png
deleted file mode 100644
index 85c362273863ecca8b9a28087f5bcc7e9d8fec8b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 84941
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%0Dq>fp$28~&*EIY(_mZ$Os^```2~
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
LSC=c3F%A45*dTL>

diff --git a/examples/widgets/doc/src/undo.qdoc b/examples/widgets/doc/src/undo.qdoc
deleted file mode 100644
index 3ffe10ddf3..0000000000
--- a/examples/widgets/doc/src/undo.qdoc
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
-
-/*!
-    \example tools/undo
-    \title Undo Framework
-    \ingroup examples-widgets-tools
-
-    \brief This example shows Qt's undo framework in action.
-
-    \image undodemo.png
-
-    Qt's undo framework is an implementation of the Command
-    pattern, which provides advanced undo/redo functionality.
-
-    To show the abilities of the framework, we have implemented a
-    small diagram application in which the diagram items are geometric
-    primitives.  You can edit the diagram in the following ways: add,
-    move, change the color of, and delete the items.
-*/
diff --git a/examples/widgets/doc/src/undoframework.qdoc b/examples/widgets/doc/src/undoframework.qdoc
index 3d275788f6..6ca2b4b138 100644
--- a/examples/widgets/doc/src/undoframework.qdoc
+++ b/examples/widgets/doc/src/undoframework.qdoc
@@ -69,6 +69,9 @@
     \snippet tools/undoframework/mainwindow.cpp 0
 
     In the constructor, we set up the DiagramScene and QGraphicsView.
+    We only want \c deleteAction to be enabled when we have selected an
+    item, so we connect to the \c selectionChanged() signal of the scene
+    to \c updateActions() slot.
 
     Here is the \c createUndoView() function:
 
@@ -76,13 +79,11 @@
 
     The QUndoView is a widget that display the text, which is set with
     the \l{QUndoCommand::}{setText()} function, for each QUndoCommand
-    in the undo stack in a list.
+    in the undo stack in a list. We put it into a docking widget.
 
     Here is the \c createActions() function:
 
     \snippet tools/undoframework/mainwindow.cpp 2
-    \codeline
-    \snippet tools/undoframework/mainwindow.cpp 3
     \dots
     \snippet tools/undoframework/mainwindow.cpp 5
 
@@ -95,46 +96,38 @@
     \l{QUndoCommand::}{text()} of the undo commands. For the other
     actions we have implemented slots in the \c MainWindow class.
 
-    Here is the \c createMenus() function:
-
+    \dots
     \snippet tools/undoframework/mainwindow.cpp 6
 
-    \dots
+    Once all actions are created we update their state by calling the
+    same function that is connected to the \c selectionChanged signal of
+    the scene.
+
+    The \c createMenus() and \c createToolBars() functions add the
+    actions to menus and toolbars:
+
     \snippet tools/undoframework/mainwindow.cpp 7
     \dots
     \snippet tools/undoframework/mainwindow.cpp 8
-
-    We have to use the QMenu \c aboutToShow() and \c aboutToHide()
-    signals since we only want \c deleteAction to be enabled when we
-    have selected an item.
+    \dots
+    \snippet tools/undoframework/mainwindow.cpp 9
 
     Here is the \c itemMoved() slot:
 
-    \snippet tools/undoframework/mainwindow.cpp 9
+    \snippet tools/undoframework/mainwindow.cpp 11
 
     We simply push a MoveCommand on the stack, which calls \c redo()
     on it.
 
     Here is the \c deleteItem() slot:
 
-    \snippet tools/undoframework/mainwindow.cpp 10
+    \snippet tools/undoframework/mainwindow.cpp 12
 
-    An item must be selected to be deleted.  We need to check if it is
+    An item must be selected to be deleted. We need to check if it is
     selected as the \c deleteAction may be enabled even if an item is
     not selected. This can happen as we do not catch a signal or event
     when an item is selected.
 
-    Here is the \c itemMenuAboutToShow() and itemMenuAboutToHide() slots:
-
-    \snippet tools/undoframework/mainwindow.cpp 11
-    \codeline
-    \snippet tools/undoframework/mainwindow.cpp 12
-
-    We implement \c itemMenuAboutToShow() and \c itemMenuAboutToHide()
-    to get a dynamic item menu. These slots are connected to the
-    \l{QMenu::}{aboutToShow()} and \l{QMenu::}{aboutToHide()} signals.
-    We need this to disable or enable the \c deleteAction.
-
     Here is the \c addBox() slot:
 
     \snippet tools/undoframework/mainwindow.cpp 13
diff --git a/examples/widgets/tools/CMakeLists.txt b/examples/widgets/tools/CMakeLists.txt
index 2de15d5a44..edf951fe18 100644
--- a/examples/widgets/tools/CMakeLists.txt
+++ b/examples/widgets/tools/CMakeLists.txt
@@ -7,7 +7,6 @@ qt_internal_add_example(regularexpression)
 qt_internal_add_example(settingseditor)
 qt_internal_add_example(styleplugin)
 qt_internal_add_example(treemodelcompleter)
-qt_internal_add_example(undo)
 qt_internal_add_example(undoframework)
 
 if(QT_FEATURE_library)
diff --git a/examples/widgets/tools/tools.pro b/examples/widgets/tools/tools.pro
index cd8035336e..4a9dce3412 100644
--- a/examples/widgets/tools/tools.pro
+++ b/examples/widgets/tools/tools.pro
@@ -8,7 +8,6 @@ SUBDIRS       = \
                 settingseditor \
                 styleplugin \
                 treemodelcompleter \
-                undo \
                 undoframework
 
 !qtConfig(library) {
diff --git a/examples/widgets/tools/undo/CMakeLists.txt b/examples/widgets/tools/undo/CMakeLists.txt
deleted file mode 100644
index f8f5dea23a..0000000000
--- a/examples/widgets/tools/undo/CMakeLists.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: BSD-3-Clause
-
-cmake_minimum_required(VERSION 3.16)
-project(undo LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
-    set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/tools/undo")
-
-find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
-
-qt_standard_project_setup()
-
-qt_add_executable(undo
-    commands.cpp commands.h
-    document.cpp document.h
-    main.cpp
-    mainwindow.cpp mainwindow.h mainwindow.ui
-)
-
-set_target_properties(undo PROPERTIES
-    WIN32_EXECUTABLE TRUE
-    MACOSX_BUNDLE TRUE
-)
-
-target_link_libraries(undo PRIVATE
-    Qt6::Core
-    Qt6::Gui
-    Qt6::Widgets
-)
-
-# Resources:
-set(undo_resource_files
-    "icons/background.png"
-    "icons/blue.png"
-    "icons/circle.png"
-    "icons/exit.png"
-    "icons/fileclose.png"
-    "icons/filenew.png"
-    "icons/fileopen.png"
-    "icons/filesave.png"
-    "icons/green.png"
-    "icons/ok.png"
-    "icons/rectangle.png"
-    "icons/red.png"
-    "icons/redo.png"
-    "icons/remove.png"
-    "icons/triangle.png"
-    "icons/undo.png"
-)
-
-qt_add_resources(undo "undo"
-    PREFIX
-        "/"
-    FILES
-        ${undo_resource_files}
-)
-
-install(TARGETS undo
-    RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
-    BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
-    LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/widgets/tools/undo/commands.cpp b/examples/widgets/tools/undo/commands.cpp
deleted file mode 100644
index b06050fd99..0000000000
--- a/examples/widgets/tools/undo/commands.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-#include "commands.h"
-
-static constexpr int setShapeRectCommandId = 1;
-static constexpr int setShapeColorCommandId = 2;
-
-/******************************************************************************
-** AddShapeCommand
-*/
-
-AddShapeCommand::AddShapeCommand(Document *doc, const Shape &shape, QUndoCommand *parent)
-    : QUndoCommand(parent), m_doc(doc), m_shape(shape)
-{
-}
-
-void AddShapeCommand::undo()
-{
-    m_doc->deleteShape(m_shapeName);
-}
-
-void AddShapeCommand::redo()
-{
-    // A shape only gets a name when it is inserted into a document
-    m_shapeName = m_doc->addShape(m_shape);
-    setText(QObject::tr("Add %1").arg(m_shapeName));
-}
-
-/******************************************************************************
-** RemoveShapeCommand
-*/
-
-RemoveShapeCommand::RemoveShapeCommand(Document *doc, const QString &shapeName,
-                                       QUndoCommand *parent)
-    : QUndoCommand(parent), m_doc(doc), m_shape(doc->shape(shapeName))
-    , m_shapeName(shapeName)
-{
-    setText(QObject::tr("Remove %1").arg(shapeName));
-}
-
-void RemoveShapeCommand::undo()
-{
-    m_shapeName = m_doc->addShape(m_shape);
-}
-
-void RemoveShapeCommand::redo()
-{
-    m_doc->deleteShape(m_shapeName);
-}
-
-/******************************************************************************
-** SetShapeColorCommand
-*/
-
-SetShapeColorCommand::SetShapeColorCommand(Document *doc, const QString &shapeName,
-                                           const QColor &color, QUndoCommand *parent)
-    : QUndoCommand(parent), m_doc(doc), m_shapeName(shapeName)
-    , m_oldColor(doc->shape(shapeName).color()), m_newColor(color)
-{
-    setText(QObject::tr("Set %1's color").arg(shapeName));
-}
-
-void SetShapeColorCommand::undo()
-{
-    m_doc->setShapeColor(m_shapeName, m_oldColor);
-}
-
-void SetShapeColorCommand::redo()
-{
-    m_doc->setShapeColor(m_shapeName, m_newColor);
-}
-
-bool SetShapeColorCommand::mergeWith(const QUndoCommand *command)
-{
-    if (command->id() != setShapeColorCommandId)
-        return false;
-
-    const SetShapeColorCommand *other = static_cast<const SetShapeColorCommand*>(command);
-    if (m_shapeName != other->m_shapeName)
-        return false;
-
-    m_newColor = other->m_newColor;
-    return true;
-}
-
-int SetShapeColorCommand::id() const
-{
-    return setShapeColorCommandId;
-}
-
-/******************************************************************************
-** SetShapeRectCommand
-*/
-
-SetShapeRectCommand::SetShapeRectCommand(Document *doc, const QString &shapeName,
-                                         const QRect &rect, QUndoCommand *parent)
-    : QUndoCommand(parent), m_doc(doc), m_shapeName(shapeName)
-    , m_oldRect(doc->shape(shapeName).rect()), m_newRect(rect)
-{
-    setText(QObject::tr("Change %1's geometry").arg(shapeName));
-}
-
-void SetShapeRectCommand::undo()
-{
-    m_doc->setShapeRect(m_shapeName, m_oldRect);
-}
-
-void SetShapeRectCommand::redo()
-{
-    m_doc->setShapeRect(m_shapeName, m_newRect);
-}
-
-bool SetShapeRectCommand::mergeWith(const QUndoCommand *command)
-{
-    if (command->id() != setShapeRectCommandId)
-        return false;
-
-    const SetShapeRectCommand *other = static_cast<const SetShapeRectCommand*>(command);
-    if (m_shapeName != other->m_shapeName)
-        return false;
-
-    m_newRect = other->m_newRect;
-    return true;
-}
-
-int SetShapeRectCommand::id() const
-{
-    return setShapeRectCommandId;
-}
diff --git a/examples/widgets/tools/undo/commands.h b/examples/widgets/tools/undo/commands.h
deleted file mode 100644
index 5fc141da21..0000000000
--- a/examples/widgets/tools/undo/commands.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-#ifndef COMMANDS_H
-#define COMMANDS_H
-
-#include <QUndoCommand>
-#include "document.h"
-
-class AddShapeCommand : public QUndoCommand
-{
-public:
-    AddShapeCommand(Document *doc, const Shape &shape,
-                    QUndoCommand *parent = nullptr);
-    void undo() override;
-    void redo() override;
-
-private:
-    Document *m_doc;
-    Shape m_shape;
-    QString m_shapeName;
-};
-
-class RemoveShapeCommand : public QUndoCommand
-{
-public:
-    RemoveShapeCommand(Document *doc, const QString &shapeName,
-                       QUndoCommand *parent = nullptr);
-    void undo() override;
-    void redo() override;
-
-private:
-    Document *m_doc;
-    Shape m_shape;
-    QString m_shapeName;
-};
-
-class SetShapeColorCommand : public QUndoCommand
-{
-public:
-    SetShapeColorCommand(Document *doc, const QString &shapeName,
-                         const QColor &color, QUndoCommand *parent = nullptr);
-
-    void undo() override;
-    void redo() override;
-
-    bool mergeWith(const QUndoCommand *command) override;
-    int id() const override;
-
-private:
-    Document *m_doc;
-    QString m_shapeName;
-    QColor m_oldColor;
-    QColor m_newColor;
-};
-
-class SetShapeRectCommand : public QUndoCommand
-{
-public:
-    SetShapeRectCommand(Document *doc, const QString &shapeName,
-                        const QRect &rect, QUndoCommand *parent = nullptr);
-
-    void undo() override;
-    void redo() override;
-
-    bool mergeWith(const QUndoCommand *command) override;
-    int id() const override;
-
-private:
-    Document *m_doc;
-    QString m_shapeName;
-    QRect m_oldRect;
-    QRect m_newRect;
-};
-
-#endif // COMMANDS_H
diff --git a/examples/widgets/tools/undo/document.cpp b/examples/widgets/tools/undo/document.cpp
deleted file mode 100644
index 1a6d633846..0000000000
--- a/examples/widgets/tools/undo/document.cpp
+++ /dev/null
@@ -1,401 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-#include "document.h"
-#include "commands.h"
-
-#include <QPainter>
-#include <QPaintEvent>
-#include <QTextStream>
-#include <QUndoStack>
-
-static constexpr int resizeHandleWidth = 6;
-
-/******************************************************************************
-** Shape
-*/
-
-const QSize Shape::minSize(80, 50);
-
-Shape::Shape(Type type, const QColor &color, const QRect &rect)
-    : m_type(type), m_rect(rect), m_color(color)
-{
-}
-
-Shape::Type Shape::type() const
-{
-    return m_type;
-}
-
-QRect Shape::rect() const
-{
-    return m_rect;
-}
-
-QColor Shape::color() const
-{
-    return m_color;
-}
-
-QString Shape::name() const
-{
-    return m_name;
-}
-
-QRect Shape::resizeHandle() const
-{
-    QPoint br = m_rect.bottomRight();
-    return QRect(br - QPoint(resizeHandleWidth, resizeHandleWidth), br);
-}
-
-QString Shape::typeToString(Type type)
-{
-    switch (type) {
-        case Rectangle:
-            return QLatin1String("Rectangle");
-        case Circle:
-            return QLatin1String("Circle");
-        case Triangle:
-            return QLatin1String("Triangle");
-    }
-
-    return QString();
-}
-
-Shape::Type Shape::stringToType(const QString &s, bool *ok)
-{
-    if (ok != nullptr)
-        *ok = true;
-
-    if (s == QLatin1String("Rectangle"))
-        return Rectangle;
-    if (s == QLatin1String("Circle"))
-        return Circle;
-    if (s == QLatin1String("Triangle"))
-        return Triangle;
-
-    if (ok != nullptr)
-        *ok = false;
-    return Rectangle;
-}
-
-/******************************************************************************
-** Document
-*/
-
-Document::Document(QWidget *parent)
-    : QWidget(parent), m_undoStack(new QUndoStack(this))
-{
-    setAutoFillBackground(true);
-    setBackgroundRole(QPalette::Base);
-
-    QPalette pal = palette();
-    pal.setBrush(QPalette::Base, QPixmap(":/icons/background.png"));
-    pal.setColor(QPalette::HighlightedText, Qt::red);
-    setPalette(pal);
-}
-
-QString Document::addShape(const Shape &shape)
-{
-    QString name = Shape::typeToString(shape.type());
-    name = uniqueName(name);
-
-    m_shapeList.append(shape);
-    m_shapeList[m_shapeList.count() - 1].m_name = name;
-    setCurrentShape(m_shapeList.count() - 1);
-
-    return name;
-}
-
-void Document::deleteShape(const QString &shapeName)
-{
-    int index = indexOf(shapeName);
-    if (index == -1)
-        return;
-
-    update(m_shapeList.at(index).rect());
-
-    m_shapeList.removeAt(index);
-
-    if (index <= m_currentIndex) {
-        m_currentIndex = -1;
-        if (index == m_shapeList.count())
-            --index;
-        setCurrentShape(index);
-    }
-}
-
-Shape Document::shape(const QString &shapeName) const
-{
-    int index = indexOf(shapeName);
-    if (index == -1)
-        return Shape();
-    return m_shapeList.at(index);
-}
-
-void Document::setShapeRect(const QString &shapeName, const QRect &rect)
-{
-    int index = indexOf(shapeName);
-    if (index == -1)
-        return;
-
-    Shape &shape = m_shapeList[index];
-
-    update(shape.rect());
-    update(rect);
-
-    shape.m_rect = rect;
-}
-
-void Document::setShapeColor(const QString &shapeName, const QColor &color)
-{
-
-    int index = indexOf(shapeName);
-    if (index == -1)
-        return;
-
-    Shape &shape = m_shapeList[index];
-    shape.m_color = color;
-
-    update(shape.rect());
-}
-
-QUndoStack *Document::undoStack() const
-{
-    return m_undoStack;
-}
-
-bool Document::load(QTextStream &stream)
-{
-    m_shapeList.clear();
-
-    while (!stream.atEnd()) {
-        QString shapeType, shapeName, colorName;
-        int left, top, width, height;
-        stream >> shapeType >> shapeName >> colorName >> left >> top >> width >> height;
-        if (stream.status() != QTextStream::Ok)
-            return false;
-        bool ok;
-        Shape::Type type = Shape::stringToType(shapeType, &ok);
-        if (!ok)
-            return false;
-        QColor color(colorName);
-        if (!color.isValid())
-            return false;
-
-        Shape shape(type);
-        shape.m_name = shapeName;
-        shape.m_color = color;
-        shape.m_rect = QRect(left, top, width, height);
-
-        m_shapeList.append(shape);
-    }
-
-    m_currentIndex = m_shapeList.isEmpty() ? -1 : 0;
-
-    return true;
-}
-
-void Document::save(QTextStream &stream)
-{
-    for (int i = 0; i < m_shapeList.count(); ++i) {
-        const Shape &shape = m_shapeList.at(i);
-        QRect r = shape.rect();
-        stream << Shape::typeToString(shape.type()) << QLatin1Char(' ')
-                << shape.name() << QLatin1Char(' ')
-                << shape.color().name() << QLatin1Char(' ')
-                << r.left() << QLatin1Char(' ')
-                << r.top() << QLatin1Char(' ')
-                << r.width() << QLatin1Char(' ')
-                << r.height();
-        if (i != m_shapeList.count() - 1)
-            stream << QLatin1Char('\n');
-    }
-    m_undoStack->setClean();
-}
-
-QString Document::fileName() const
-{
-    return m_fileName;
-}
-
-void Document::setFileName(const QString &fileName)
-{
-    m_fileName = fileName;
-}
-
-int Document::indexAt(const QPoint &pos) const
-{
-    for (int i = m_shapeList.count() - 1; i >= 0; --i) {
-        if (m_shapeList.at(i).rect().contains(pos))
-            return i;
-    }
-    return -1;
-}
-
-void Document::mousePressEvent(QMouseEvent *event)
-{
-    event->accept();
-    int index = indexAt(event->position().toPoint());;
-    if (index != -1) {
-        setCurrentShape(index);
-
-        const Shape &shape = m_shapeList.at(index);
-        m_resizeHandlePressed = shape.resizeHandle().contains(event->position().toPoint());
-
-        if (m_resizeHandlePressed)
-            m_mousePressOffset = shape.rect().bottomRight() - event->position().toPoint();
-        else
-            m_mousePressOffset = event->position().toPoint() - shape.rect().topLeft();
-    }
-    m_mousePressIndex = index;
-}
-
-void Document::mouseReleaseEvent(QMouseEvent *event)
-{
-    event->accept();
-    m_mousePressIndex = -1;
-}
-
-void Document::mouseMoveEvent(QMouseEvent *event)
-{
-    event->accept();
-
-    if (m_mousePressIndex == -1)
-        return;
-
-    const Shape &shape = m_shapeList.at(m_mousePressIndex);
-
-    QRect rect;
-    if (m_resizeHandlePressed) {
-        rect = QRect(shape.rect().topLeft(), event->position().toPoint() + m_mousePressOffset);
-    } else {
-        rect = shape.rect();
-        rect.moveTopLeft(event->position().toPoint() - m_mousePressOffset);
-    }
-
-    QSize size = rect.size().expandedTo(Shape::minSize);
-    rect.setSize(size);
-
-    m_undoStack->push(new SetShapeRectCommand(this, shape.name(), rect));
-}
-
-static QGradient gradient(const QColor &color, const QRect &rect)
-{
-    QColor c = color;
-    c.setAlpha(160);
-    QLinearGradient result(rect.topLeft(), rect.bottomRight());
-    result.setColorAt(0, c.darker(150));
-    result.setColorAt(0.5, c.lighter(200));
-    result.setColorAt(1, c.darker(150));
-    return result;
-}
-
-static QPolygon triangle(const QRect &rect)
-{
-    QPolygon result(3);
-    result.setPoint(0, rect.center().x(), rect.top());
-    result.setPoint(1, rect.right(), rect.bottom());
-    result.setPoint(2, rect.left(), rect.bottom());
-    return result;
-}
-
-void Document::paintEvent(QPaintEvent *event)
-{
-    QRegion paintRegion = event->region();
-    QPainter painter(this);
-    QPalette pal = palette();
-
-    for (int i = 0; i < m_shapeList.count(); ++i) {
-        const Shape &shape = m_shapeList.at(i);
-
-        if (!paintRegion.contains(shape.rect()))
-            continue;
-
-        QPen pen = pal.text().color();
-        pen.setWidth(i == m_currentIndex ? 2 : 1);
-        painter.setPen(pen);
-        painter.setBrush(gradient(shape.color(), shape.rect()));
-
-        QRect rect = shape.rect();
-        rect.adjust(1, 1, -resizeHandleWidth/2, -resizeHandleWidth/2);
-
-        // paint the shape
-        switch (shape.type()) {
-            case Shape::Rectangle:
-                painter.drawRect(rect);
-                break;
-            case Shape::Circle:
-                painter.setRenderHint(QPainter::Antialiasing);
-                painter.drawEllipse(rect);
-                painter.setRenderHint(QPainter::Antialiasing, false);
-                break;
-            case Shape::Triangle:
-                painter.setRenderHint(QPainter::Antialiasing);
-                painter.drawPolygon(triangle(rect));
-                painter.setRenderHint(QPainter::Antialiasing, false);
-                break;
-        }
-
-        // paint the resize handle
-        painter.setPen(pal.text().color());
-        painter.setBrush(Qt::white);
-        painter.drawRect(shape.resizeHandle().adjusted(0, 0, -1, -1));
-
-        // paint the shape name
-        painter.setBrush(pal.text());
-        if (shape.type() == Shape::Triangle)
-            rect.adjust(0, rect.height()/2, 0, 0);
-        painter.drawText(rect, Qt::AlignCenter, shape.name());
-    }
-}
-
-void Document::setCurrentShape(int index)
-{
-    QString currentName;
-
-    if (m_currentIndex != -1)
-        update(m_shapeList.at(m_currentIndex).rect());
-
-    m_currentIndex = index;
-
-    if (m_currentIndex != -1) {
-        const Shape &current = m_shapeList.at(m_currentIndex);
-        update(current.rect());
-        currentName = current.name();
-    }
-
-    emit currentShapeChanged(currentName);
-}
-
-int Document::indexOf(const QString &shapeName) const
-{
-    for (int i = 0; i < m_shapeList.count(); ++i) {
-        if (m_shapeList.at(i).name() == shapeName)
-            return i;
-    }
-    return -1;
-}
-
-QString Document::uniqueName(const QString &name) const
-{
-    QString unique;
-
-    for (int i = 0; ; ++i) {
-        unique = name;
-        if (i > 0)
-            unique += QString::number(i);
-        if (indexOf(unique) == -1)
-            break;
-    }
-
-    return unique;
-}
-
-QString Document::currentShapeName() const
-{
-    if (m_currentIndex == -1)
-        return QString();
-    return m_shapeList.at(m_currentIndex).name();
-}
-
diff --git a/examples/widgets/tools/undo/document.h b/examples/widgets/tools/undo/document.h
deleted file mode 100644
index a3e5014bf0..0000000000
--- a/examples/widgets/tools/undo/document.h
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-#ifndef DOCUMENT_H
-#define DOCUMENT_H
-
-#include <QWidget>
-
-QT_FORWARD_DECLARE_CLASS(QUndoStack)
-QT_FORWARD_DECLARE_CLASS(QTextStream)
-
-class Shape
-{
-public:
-    enum Type { Rectangle, Circle, Triangle };
-
-    explicit Shape(Type type = Rectangle, const QColor &color = Qt::red, const QRect &rect = QRect());
-
-    Type type() const;
-    QString name() const;
-    QRect rect() const;
-    QRect resizeHandle() const;
-    QColor color() const;
-
-    static QString typeToString(Type type);
-    static Type stringToType(const QString &s, bool *ok = nullptr);
-
-    static const QSize minSize;
-
-private:
-    Type m_type;
-    QRect m_rect;
-    QColor m_color;
-    QString m_name;
-
-    friend class Document;
-};
-
-class Document : public QWidget
-{
-    Q_OBJECT
-
-public:
-    Document(QWidget *parent = nullptr);
-
-    QString addShape(const Shape &shape);
-    void deleteShape(const QString &shapeName);
-    Shape shape(const QString &shapeName) const;
-    QString currentShapeName() const;
-
-    void setShapeRect(const QString &shapeName, const QRect &rect);
-    void setShapeColor(const QString &shapeName, const QColor &color);
-
-    bool load(QTextStream &stream);
-    void save(QTextStream &stream);
-
-    QString fileName() const;
-    void setFileName(const QString &fileName);
-
-    QUndoStack *undoStack() const;
-
-signals:
-    void currentShapeChanged(const QString &shapeName);
-
-protected:
-    void paintEvent(QPaintEvent *event) override;
-    void mousePressEvent(QMouseEvent *event) override;
-    void mouseReleaseEvent(QMouseEvent *event) override;
-    void mouseMoveEvent(QMouseEvent *event) override;
-
-private:
-    void setCurrentShape(int index);
-    int indexOf(const QString &shapeName) const;
-    int indexAt(const QPoint &pos) const;
-    QString uniqueName(const QString &name) const;
-
-    QList<Shape> m_shapeList;
-    QPoint m_mousePressOffset;
-    QString m_fileName;
-    QUndoStack *m_undoStack = nullptr;
-    int m_currentIndex = -1;
-    int m_mousePressIndex = -1;
-    bool m_resizeHandlePressed = false;
-};
-
-#endif // DOCUMENT_H
diff --git a/examples/widgets/tools/undo/icons/background.png b/examples/widgets/tools/undo/icons/background.png
deleted file mode 100644
index 3bc5ed8cf018f9e3c6a66742a4a6b1447a36cb46..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 93
zcmeAS@N?(olHy`uVBq!ia0vp^A|TAj3?#R^_xk}Uwg8_H*Z=?jpMUs&X_&q;P(;Yn
p#W93KHaR6hAYqBvzw;ji87$10O<f-boCV4<c)I$ztaD0e0s#MO8EgOm

diff --git a/examples/widgets/tools/undo/icons/blue.png b/examples/widgets/tools/undo/icons/blue.png
deleted file mode 100644
index 4e181bb61a69f0323cc05d039ac7ae243ac03f6b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1659
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
FV1hfhESCTP

diff --git a/examples/widgets/tools/undo/icons/circle.png b/examples/widgets/tools/undo/icons/circle.png
deleted file mode 100644
index ed16c6e14468293eda6a35b81890739b121c5767..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1359
zcmV-V1+e;wP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800009a7bBm000XU
z000XU0RWnu7ytkO2XskIMF-Xl1`rtm7zy3600006VoOIv0RI4-0074>J!b#_1l&nP
zK~z}7)t7Hfm1P*lU+_$<)DLYeEI+`ol{)9fheY~NGN$E5sVgvCu-ppVs?|b^A>kTn
z9|FEqR*PB%wAB7^Ivm4b%Fa2qLTk$cO1EIZJf^EAj_Lqi-Ou}8@1OIY_x#cN(z{(7
zJDhWV_jNt@b3f0~wExjlCTbOhL{ZT!rTz|!+C>{h*`lof5?m)57U7v)8xRgQA^Ow1
z_~SwkW~Sc9*iaLC-r9zTw-iFXNA#oUDbd1zTTBt%qU()1%=|h8{51j0oB^goz;6NI
zVkdC^6=0$T_<1)bLJwkZtyRd7=x$LC3%RPNLKLgoR)pW90-L)``1io&a6EkSMPO_X
zaPBc+qyqSE6Haxm#JW{E;1WG9S}O8onuda-t)&8g&&LEl?E&wy;o=-;Z8*NU1NiDT
z#0K+FxnY5s#%@tAmnAD*>@fw`pJedps{-Hea=uaE>vT9mHvuOW0RtK;?$QgG6V-_F
z(iIU>vD?lkQ^S?>(Mmd3@Y{h%9&lXX{TlFvhFDNT(F&_Mi<yKkS+{e|uejj7z@=^v
z=K?>Y;KlLq0RxU>qCO3wmo;-KIz(&P6A6tuth!xy9-9*Q57O-s8-D&Z5BNQH?2%<g
z>~yY6;P_m0R72fny#O^c%0&g-9a+vHBU|k>ox9*s6aK8kUh9b6bgtmn8P5CZ{Fn_#
zuZH1+RtjyR648y$6k64giFY0({Gbg#Ckc&gr*naSy^^t~fJ+Y`Ao@&0*;>7TLD5#G
zu+VD0$kArPPdc2N@aGKps0m+BIGy)9;C=DVO}J9)BYFX2qMh7vOUweI7tVGP?sWc=
z?R?bbJbbe_zusPRH{9VIeo>D!;{m;ZY0;CSQtk--nf>#ZfD3+r@LEUg>uvan6!2b$
zd&2RlhUhzb0rR4I(fy+3Rsl0p0>1Qtz+b0xXYBVnVow6^bHN$A3D*mF+bW<zR4K~0
zmSFtUK1b{({2>>7*)_xQu`EH0UcePmqiBby&@3SA?|8rg-{k?P^K{)FaKM#5G2r+}
zny^MMVBD*K_UbJwfbj-8uX4awam{Z?I%JYMcffH(w&5DRfG@q4V3QgWlOb_ELg(L>
z7;xqMcnWyXwcY&jv77MWc54v5=hcJ@)M3$7cdNiR3;a%juNLRG7|sVW*ysM_&T&Xa
zahVRkC~EfFhS|JE;dJ*J10GTE#mV8p3}QcQDD;BmJ|NobHHfk}7Ke&gFOtiI#6Gw<
z;Z*Y+GS1lD&IKOplH)kvYQBApKVcM`DX2T#?DkS$`i4u^?MH0q_)sn+#n#?`lkOk&
zI*iN|a(IW+Z!+pK;Xc*kCY(R{n#Z~=xYA*+{nN>gV`mCWd54=*HyL%ANLX{PhBKWX
zGS-~2&pY6IL{+ISB<AB|ch>M4rC%o0d2Ye|i9<%;YHe1xn`^FOf1dE_bXPKWL+0@V
z9lXit=easkL;H<`Ma_0KUR$fJA!BZ}02{86u~+fC(q2m4MdUKFa^7SHd7e)*-g(Y;
z<@O|pOf#FUo()&d@5s#*?kvK`^(tWJZsi_+f`A6PY~<hd{NGN#w}hX)svjm^jhVx3
zQ@{bDrr3R)=R2rMzE;Zj6!0_G^wZ2Mjci7^gmEtCVNyut^R-;QC!-&y{{YjWkO4QX
REwBIp002ovPDHLkV1kifoumK&

diff --git a/examples/widgets/tools/undo/icons/exit.png b/examples/widgets/tools/undo/icons/exit.png
deleted file mode 100644
index 539cb2ead9326c23b17f51ace18dbcfbc11380cf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1731
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
Z{{yLxMIXOrxTgRB002ovPDHLkV1gSWH7Ec8

diff --git a/examples/widgets/tools/undo/icons/fileclose.png b/examples/widgets/tools/undo/icons/fileclose.png
deleted file mode 100644
index c5483d14ab7bff7da7a994b6f045139f3981220c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1121
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0VEhr_6XN>+|9_x}l~ts!uD7vq
zprvJmwRM!HrkjmTjHzj`g+;iwwg*rI$OV!nCP6?cGqVsN0xAXy>g)RgNuVx0Js%(g
zA_8OsHR|Yi0u^g%xdTlAl7@!<5H65yWE2223TPn25Fi^U0+a>X2xI_No<DzQ!Gi5O
zcAScit_GU9X3YVhE}*Qvef+<F|382J=H`|PbVEu?b9{V#NJxo?M~1n1Sa5K0PEL1Z
zWaYGJ>yI3{ykf=Ppr9h4EkMUOIwk;}3N#t$nDFrO#>Tm}wy_T$ya4+8_U)%>X{}*l
zWk6@=<@GFGx*Hf85fK%+x!tL$EuNm46%|u!YiC}(c=zDJi$LccKYq>GIqA-wr}O7;
zzjEb%d;21wFZS*|clhw-4I7S}K7Hfp(JR}wopf?a%+Bs=X_<fN(!D8D);@Xirm}L{
znKQRyV{5arI(vGS`}yUqUw?Sdp0nGxpPV;uYiMX`LPGt%edi}mT>bRvo4Iqh?AmqO
z+dI3obW%Y<Utiw}7nkHyr)~hl>h9fVK0Y~@FW)aKn|%HH!>X$385!*-PFzb*Z`-ov
zcw5`ThYw%QnX@@LxoPUub<du?{rK_g<HxTX8s^m1%_=IIP*XG0-963xeP1Uq;*Cmz
z{DK)6_U|{CpRitFeZqW&_4DuF-|z6=VE_I72@d-e<}2(s*uP)FK_J0F04VleVEuc6
z`|A}um#YC&&@)dL$B>G+wUdLVt2hd{mEX4AcGmP%#_eM_j@{apD_vi_dC`SX>-EL)
zN`7_UpLn~xxxrU<DrCm0vezYNk8SdM>Z!YBo9p5bn{$Q2hWWX7#SR8}29`bV{qW~c
zT1AfKu_*qm);6_Mb^l(LcRru)zv=4kD^7>+z43iCyDRx}UzM}x29wmw+^oFmX*X>T
zcLjL<<lwRXB{ezXRN{@@(cQmO7f#*uc;SUtT=5)?*K?i94^4hEy~XU6kmG_m&#!YF
z37vgo?!63=)~*${9+$UQHgcQDiWU9StJOcOddtzk^|Hky4vFK1C(fUZ?Qw}yiE>!6
z$ZxLb4mP$YmLkfNWEEaK3VwZn-QbAKhgYf#f4H@T6|Ft6bD4{gnZSn*osz~2XINtn
z=$vX?Kk2~>)`J!g<ph85?!0wkdUJr-?niDmO*ZY_ZTue<OgWsEC-0oH`;MbQ(+kbh
zUphCh=w<cz)Hk7CYm&;($QSP>KS|l=KFd|s`f-WX#ryWh0$TGpr>dWsV3YUS_|p6D
z{rhX4ic7{jq)sx_{=H%St>51s*6)#DE2*(|&cb`vf4vV+Khl`@^^z2yZeNO>)}Jqi
zrgv{`mA9Ky!tzXxx&D&pF`Erf3w}upFMiW={ImJgq^dTPcIC_WE-k!X{&gDvx2b;l
c(m&W64j<cm!hTCTFugE%y85}Sb4q9e0Bd>;ga7~l

diff --git a/examples/widgets/tools/undo/icons/filenew.png b/examples/widgets/tools/undo/icons/filenew.png
deleted file mode 100644
index 57e57e343ba5e5d710fe01b1720d06aacf97863d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1266
zcmV<O1P%L%P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F8000EJNkl<ZcwV)Z
zeP~r>9LGP;bIv_?=gzz9Hg=ornwyDknlIqOG7U@{NwlUSE{H~u{$pfNP+;XBL4Opa
zMSp1Z&nk^dH<J*YSu#;4hA;HSrf#!Mmu^dUue<KPobz<)oXgO8<@mBMeEGq1AMWqN
z_xU|MM<}JZS%*(w>;sB$B=92T7F%78$72U-7F9OjK{~fq-u%k2VfeHgdniaGA(?<g
z%BjgDB(gQ*wCpdjZR`2wmgB>~`V}>gs5=G_0;CjVJeJH4!rdbjjz%j==~g5>+3f5+
z_mX8>1sRZr41`4vN$yZmf?<Hqm$3oHO;t$j{D8r<$jm%V`c{Hy&OjKR0lb{MrZL*o
z=T_IchH3aA6!cU6z)Vw<{$(h!F9Q+q0N`Cd-D!Ap8bTob2AC!UC-{gIS7ji~1t`&)
zfe76<0J!y02nkYxX*$l&*9nIzO-%%6D<#@85G5XNfmb;IN`bP$R-j42;gg*VT#2C+
zj9M8=*_8-!q_MHFs-dAFeO~~i%tAPhgbSH7qY!{=*Py)vEX#q24i9mn{a{I{$tK{P
zyE%f~L+NwvW*WZ^on0UVXqsawL5LhPaIeyJFbt=Tj6ioc02tA;Xx6X`;o%nC>pa*t
z^z^vR|2{xP^c6~4o<L%u$#Di48SJNT*GE|YcA{$_dJd6avy|c|XON6tK+_=7f5cbT
z(KPG!01AscR5A&Djc-x$>;RK4ti$d-h7dQ-$;7setbQ&USXiA}(NrU<a{>q<0<jnj
z4?7P{It@yZL(abbey}2sqT(?^b#+X-vJvglDY7bPdzb08e)Jht#QO%5O<nZlzJ>z8
zX`FJKy8!MayZ7F8I_<0n7Okag@0(OS-9czY9n$_50Ac8quPjC@D`)V_@6_&#^LBiF
z=Gdj&0Jv92cbmJ$t+t(A8{KPPK11rCcFc;!^nU&Uk(UL*RrO$}@jpBlB@LoqZRh7d
zA52aO4&|Mx7t1I3Xw`EBpfufqaGKuUslWCUOnr=h{%o*;d5<H6bYjv?(1F+>6Ka;Q
z>M8u#)RTIn{?cbVdUGcrLDxWe0gw`VB<T(dV1ts{n90UUgYEvFwy;u3OXfZT?+(mf
zN;I;W^QRu8JL3!6j-pa26hJDDx_%X577#zw#`m9|Pwd*(wR7)=&2<}g4^-z$KsjGU
z03K2R3a8G(u9(Ge^Xn9?TYy$lPVAfQ6s%rF^7r4+LK6wruc3w}<CpVQL$&+V54B$3
z0taSn0=n)Ds_w2OTDMZPOreFRFtn?Qf!;E}iMxA$g7mp|iq@<YOTs5#+`3p4-qmX;
zgyXE_Xc8p4enreL;_A*Oq7S`Kz-l3@{N-<R_NOgO9X?H7X^BslOaqR4NWgnK#V>rw
z#iJ2Y)!QhWyKwZQRw<+=FrV2(<B#F^o`a%!Z7U~oCZIrZ7czo{Os;)3+Y_^D5wSh*
z5$zZv^jerybcCTv3)04v>3=A-+X9e`lZ1faoTaFRUr@0A0Qmv`EuUkZaaKXuG_sN&
zp5t+rcL2pWNg%u(fo0jGrQm+bvTScNpp;5~(%52K$`&3o@f4(?YnHNA+5-TkrFjEe
c0F!ane_O^9CT!(x-T(jq07*qoM6N<$f&(L63;+NC

diff --git a/examples/widgets/tools/undo/icons/fileopen.png b/examples/widgets/tools/undo/icons/fileopen.png
deleted file mode 100644
index 33e0d6394c7400f1f91524a420fba283358c6161..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1771
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
N002ovPDHLkV1iCjQ9A$t

diff --git a/examples/widgets/tools/undo/icons/filesave.png b/examples/widgets/tools/undo/icons/filesave.png
deleted file mode 100644
index 57fd5e2f34375a26da1f3b757d8eacc993640cab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1022
zcmV<a0|ESrP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F8000BUNkl<ZcwX&S
zJ#Q387=HK8ALxkfGbj<3Wm`f*h$K=hAQcq|QaVbJl&O*q(a=XqpN0kr_zy;+NRf)d
z9g6s9K*E-cjN<rW!`^v!Z+AX3`)Fpw?s~l(jSCp*)jJ>3JkLDuGqZPr)|!s8wU9n$
z0%PTg)%$Cjb3vR*3IZY_qzN<TK9~B!^nEVRVcgs8)7v-u^yKlKpu#|F?PGOyP51T&
z`k$RpZ*9NPu04CPRftjBpAVnu2Y>yoFJHN-EtZR73AhlHW}N!_35A2i&wu;<@3ivE
zE&A#DZTk7<JsP#Gzv|J(>s`8X?IO+1{iy3o0J)@8#09dSKi-+7^ItE~>~x2^Go6tM
z2)iF+jK;=V^&UXIrOE?+*CxitXzq(Hb*DRs5u4vP3<so?s=Wm;ja15H5b^V;KA$lJ
zTy#gphoXH0K1@<lO4k#BR3cYE78Lm5y9@NqxkdWw%sibveQH#EoIDytlrawD)q6k)
z3tm*<w;L<;0S$8ZdSMQZy*cBUtM>p*sEG>&)4bf=fn-W+(#RScm}KYkzP5d2Kjxg%
z?tdZ0aY~E{yc?`hft-MX0g<1tZx_bW8q{as2k|_^NBe`A;wUEnfN=o@7|#`GDuIx;
z3<{uiK(a^#^^K#1k~jegfHP_Lv}4|&fUpXn1ONd*O_r2p3}M`DGWWp9+=KgraVDBf
z2=n=e<K*mTsJT?yXJ&xX)PN3C8V|;4vK>%oyq$vp)PENosL7kJdng0rjUEsHb|tua
z=}WhS`6S73Vw4Ht$YSiGvi`^2`<7V4EwCr|X0#3RCP`WVbs=Fq<jOk2D*`h%-vZ(5
zj4NiZ5qH3~A!YqK2uPHru>^&UqG(8u9&M5ErUXzaJMe?omX=Ns7n~&g&}c#cASZE3
zY07DFai&yf<@(ieRSkb5<ohTfAeAx>&nOwDkSq+7cTVU54;#BaVrpvAj5+3-OJHS+
zqQw843d3PRRx5P@yf9ztA3N5zU)g2?0K}uh7-VBi(89uW<!V(8SZhjaY(Xj~+DL%q
zk4#1^6aF!I`g9urN&&cJvZ@kF73b#XXGnsOKoA{5AY&YiaqT!rm<^^XcO2uY;R^EG
zu{{WP4_xCl1TYBLFWJOI%k(t`fs4RI%bo;tCI<+!=KESBYzZVO;Y!f1C%}e`qP@2?
z*zUoM8yo9jUN&CUY`!E1nl$eHi_fsgGSa$JAP|%#Szi8C_xlkH*zI-zQ2hTuPR7#M
s^{aC`JG*udA|W0I6#_@uKK(iU9}+W3p=tZ~T>t<807*qoM6N<$g8B*I2><{9

diff --git a/examples/widgets/tools/undo/icons/green.png b/examples/widgets/tools/undo/icons/green.png
deleted file mode 100644
index e2e7cc9e5013448230d034c7c12ef70db40774c6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1766
zcmV<C1{wK@P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F8000K9Nkl<ZcwVhn
zZERF&89ndZJDr(MJ41(|wG_lO%V#QULfj%{+uhp20=raW0-LTz)VS$tg4rlWf2`{d
z{t*9|_{U@m64R)tSV_q4;+idKD%-eNAWM-T5Thv4Qo7U5{hYb?^?Ba=CcRnfE+0LU
zlc#rj({rBZJn!5omIyVbX|`pv*=<6IPXb8eJ|Xb%$ai*jesA~g-3QjMU;nY?%a?<3
z_wHTXxN!rQE?xTPxpU`!a`WcRA1%3oOeV8saB%Q^Utb@nYkUwhGcy<)8^gtm7jfaj
zh0>{0r`iDgizx8{B=CT!udi<(9v(j5-`~HexZ^l%5bf>lXl-ppTU%Rx&z?P30c2V4
zQ4ORIA3i+Z-QA53gX_Aesj0!HO`DKTr$G^ADWV_f-4G9LVDH|&zwGVpMKYPh|AUkg
z)oN9l5JDiA%b{2-V)N$BF9IkKlMibkwQJX|&u!ee5g!INSE*E#_~hgyYHMqe&*!mW
z!-jk+l{%oOka%DNB>X~GR~M$HrZ6-#1X@BIJ$e+!jvd4C<HyzYkt0ViF)_h=q84y&
zZjKEp777KdTet3c0Chy;fltA}z`!_dcl*f52z=j1B9Q={eU*2)T!scto;<1YzkT~Q
zsAG;pae8{1PXzydD}YI&MU)2a4<Zc1*Z63yS+hp5p`iiv9_OsCdwP0s=+Gf$%CaoA
zd|Dhq5GZ<{$0n{yDcOKWl;(Y@3(<Q0`gP8c1=TrUv0?=}Iy(56@p0p$r?S^jV%mUu
zpG4IzG&MCnMbkN<V+iic06ESPv2Wi#Y~Q{ev$L~c7={52H4QBs?>ufmMbp^WxQ-0e
z0$}aRM=s&PzrED@#i8e)ux%Ts|9ILP{P|#b<;oQn;AyDpIF1@S-NOc0kjc9euY5ln
zXaSHT))2*_5q$INi^a!MYhQb^p=(dQkxQ0#mhh{@Z?SSibE@Uj&G_@Bah!eUEVgag
z#<B1u;vI8UqFOk<2mHB^1<*wN`~Mgixcs%k)@7f0yQ`u5aVK=(NC(s56z1d{dcO2o
zoFDrO)^vXyt2<Z2-fCgw{M#5mF^=Bty__${5Q%GHP3TBC20ofTBCxhFpz-Z%2e<5R
z>c7%j`&dgUETJUd2fe7$&*A%M++3u<DyZ9-g)9cB<SH;*67bgA_|xfkP&A9`yffkv
zXmK{Dj_l~@=meQ~9l$-Jts?mDKVHssrk)-#&18x@w&~@<QPmMP=8bvG=jO4hZzXJL
zLFNN^rU!qy3%}&S8~}d*vtc}2eGdFsX0iApYH_?f@oweTty{wY0%Ay%0)+2h`_7Mh
z3Om1LCrFTJ3l`Q@y=;_yGU3j{4s7_f9=sYC<!TwWYr`s8DBrPQ|H8vF_OobiZdRWM
z3^u^0=FQ1B@b6W({uBHfU*|`&-hq<3tEFbu{;BF6*amej9Iz2L5mg%&k!qT1iVTHx
zW!mr(F6<f-Pmyqjn0DZQwSp7lL&%Rc;1f<O3Zj5ne-@MCGW-q~i8KlUFssM!stFu;
z?}Z&5xhKykag(}Dk^s>$sTx#46ppHvu(;}IbPXI-gDT*2KY*Mj&Jal^yaS*Lh=d-v
zL6^V7r@~R(<ot<&X#~dSr~PT_ivPIo+|ZqJHDZDy+6{}R650TyN>ccMl+kle6agfu
zX7yvoB32MV0Oo$w`lFFJ5vCPb>1lsTEtf;$PQc<sNgYcI9$YfA&^a5B0e2SZ!=vIN
zLZF{6^~4O2SQhmu9X1i&Czhd6iEEg1mC~#s3>Jv8H=MWu7F6OsD*+4Qd?~fKwO~Mq
z$QOkEtV`)yRwj54ZXgEpUN|#W^@Eq4gcW5Tkcm*4P@@h+HOfyYK`pMkLL@HB3kD!!
z-!w!-5k~h28~2=DxQrM~58l}+?~bIb1uvc(I4WO>AQG-<akWS>akT<ke4YqxPQ>ol
zMsx%7s7L>zU&~j%Rk-G+-L+1g15qb|EFh8qj2MN^n1yXEEF*C_4+kk6hlj@jG(ajg
zk+{%iE>Qil+l%)WHIRM_UqFc8h&%*uuE=mWT9~RZbthF8j&&_@4;B0rz^l&FsNw_2
zjG#_du-e^$zkcLDCh0TyAq>1K>iHrz0j_Zab1WWJk;QXPCr;xLAP__PO`L&&9U>DG
zPHHncQ+ZdL@bQM*huwHYBoKr940ZxINST&&r#j<>(Q7!!;wxAJ2rPp1>qsGqZy>;4
zNIV4{hk{R(I80_=S#kr5n)w4(0(c1_o`8gjB#HN61WSbf0?aAbwEn-afdBvi07*qo
IM6N<$f)uAt7ytkO

diff --git a/examples/widgets/tools/undo/icons/ok.png b/examples/widgets/tools/undo/icons/ok.png
deleted file mode 100644
index e355ea91bc58ac30d32e1837711cebbb282d103c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 979
zcmV;^11$WBP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#Wl2OqR9M69
z*I#Isbr{C+&-U&u^Ut)|`ZHT=8jdtYqcTj5w+@0*R4f~e($s^T2^l%fP?@GOwduqS
zD=l72b|5v0S_h+pAw?3Dh$a-Pln%6mkQyYN+#S5{=33J>x8*_I57)`V{o{K*&-1%4
zevgQ7E#-d$*WAFhsKUcix4y5n=!lS)mO?Ia1{<6_C^h6gtwS5d&_*%5PCaSiO@}Z7
zi9sPBkn*-xY0;_GUc)rra>jn4)(5z8Kuy#u^@g<lV%Wi9VZV%4+Kz`XjyetY3HyW^
zO#@=0PN{ln`$WN^f>?NBVU!#$2@QU;NOcxI7Q@-5++H#3*sQQu*xC;huPaq2ZLb)a
z9vQPw&yKYh*G5reQK-}IQI&WQcVbv}?@8JvW}ccE)4!P>b_tvMXre}`ozixRWJ5A0
zeK9E($Ksgx^SsDEkRNtxmr|Me=8ADc2OM&3)m+$A7^z6b_><$q4q-ztOw<^q#%?=A
zVoxH9KP!$I7iUB&QZeoPv`FqrhE3W`@eJ<A?HKa+iQ8yRqBap@v)AYoqr)~~-DON{
zG0GOzwz!Z}n-lp*^P}WqN$2|FbH$OUO@xiwj4>bg;x=60^SHmD%x01IV_qb)SMKrL
zuvw_;Vxrn8)v8syV7t&N@_xUxCK<^{9#3Z0y{b)-`Iw5Ek-SpYB&>JVN5UUn^rf&t
zcuAAhYOHs`2BAgxwOeo3{uNpjnTsi1;8(01FKe({Xz!-ag>_jq3P1JG)3xt;El6P^
zZt4v@Q!A9K5`GYV>88`d_dVS2(7QsFu&fh4;c7-XX;t?1p6i1S2&;rSYVk1czS<ng
zwOq40;Y=^|Z8kku3XiMB4BUnMt54FU)_76)?jLkAyV;ftk9ESwWuo;`!1TSIRA!m*
zp>XOl`bv03Sfbrzm6(1h*ZTwS7{^7<+AVzDgIa~v!n4}l(;2OIVCX==GvipUL8Wl4
zn?4qn3gyn5pb`&UK3e-z3zVx6nuViT9TAoYPia$NKJLSqfrodDV}-Cs_*8gDc<wLo
zskjB#8Kh%euBSCyE7S`W!U880nAewR?O!dlMnx7rM++XoWE2iQ9G+07LYV85F1cQS
zJpWQ9vQIk^Wd{1N+N*KQY_btDXSczF|L6Y={{#<B3@l1xI6?pb002ovPDHLkV1itz
B(c}OC

diff --git a/examples/widgets/tools/undo/icons/red.png b/examples/widgets/tools/undo/icons/red.png
deleted file mode 100644
index 58c3e7253bd89fef0926730c1d9351e57bb2ef67..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1653
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

diff --git a/examples/widgets/tools/undo/main.cpp b/examples/widgets/tools/undo/main.cpp
deleted file mode 100644
index ce28152f75..0000000000
--- a/examples/widgets/tools/undo/main.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-#include <QApplication>
-#include "mainwindow.h"
-
-int main(int argc, char **argv)
-{
-    Q_INIT_RESOURCE(undo);
-
-    QApplication app(argc, argv);
-
-    MainWindow win;
-    win.resize(800, 600);
-    win.show();
-
-    return app.exec();
-}
diff --git a/examples/widgets/tools/undo/mainwindow.cpp b/examples/widgets/tools/undo/mainwindow.cpp
deleted file mode 100644
index 20d382e217..0000000000
--- a/examples/widgets/tools/undo/mainwindow.cpp
+++ /dev/null
@@ -1,410 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-#include "mainwindow.h"
-#include "document.h"
-#include "commands.h"
-
-#include <QUndoGroup>
-#include <QUndoStack>
-#include <QFileDialog>
-#include <QMessageBox>
-#include <QRandomGenerator>
-#include <QTextStream>
-#include <QToolButton>
-
-MainWindow::MainWindow(QWidget *parent)
-    : QMainWindow(parent)
-{
-    setupUi(this);
-
-    QWidget *w = documentTabs->widget(0);
-    documentTabs->removeTab(0);
-    delete w;
-
-    connect(actionOpen, &QAction::triggered, this, &MainWindow::openDocument);
-    connect(actionClose, &QAction::triggered, this, &MainWindow::closeDocument);
-    connect(actionNew, &QAction::triggered, this, &MainWindow::newDocument);
-    connect(actionSave, &QAction::triggered, this, &MainWindow::saveDocument);
-    connect(actionExit, &QAction::triggered, this, &QWidget::close);
-    connect(actionRed, &QAction::triggered, this, &MainWindow::setShapeColor);
-    connect(actionGreen, &QAction::triggered, this, &MainWindow::setShapeColor);
-    connect(actionBlue, &QAction::triggered, this, &MainWindow::setShapeColor);
-    connect(actionAddCircle, &QAction::triggered, this, &MainWindow::addShape);
-    connect(actionAddRectangle, &QAction::triggered, this, &MainWindow::addShape);
-    connect(actionAddTriangle, &QAction::triggered, this, &MainWindow::addShape);
-    connect(actionRemoveShape, &QAction::triggered, this, &MainWindow::removeShape);
-    connect(actionAddRobot, &QAction::triggered, this, &MainWindow::addRobot);
-    connect(actionAddSnowman, &QAction::triggered, this, &MainWindow::addSnowman);
-    connect(actionAbout, &QAction::triggered, this, &MainWindow::about);
-    connect(actionAboutQt, &QAction::triggered, this, &MainWindow::aboutQt);
-
-    connect(undoLimit, &QSpinBox::valueChanged, this, &MainWindow::updateActions);
-    connect(documentTabs, &QTabWidget::currentChanged, this, &MainWindow::updateActions);
-
-    actionOpen->setShortcut(QString("Ctrl+O"));
-    actionClose->setShortcut(QString("Ctrl+W"));
-    actionNew->setShortcut(QString("Ctrl+N"));
-    actionSave->setShortcut(QString("Ctrl+S"));
-    actionExit->setShortcut(QString("Ctrl+Q"));
-    actionRemoveShape->setShortcut(QString("Del"));
-    actionRed->setShortcut(QString("Alt+R"));
-    actionGreen->setShortcut(QString("Alt+G"));
-    actionBlue->setShortcut(QString("Alt+B"));
-    actionAddCircle->setShortcut(QString("Alt+C"));
-    actionAddRectangle->setShortcut(QString("Alt+L"));
-    actionAddTriangle->setShortcut(QString("Alt+T"));
-
-    m_undoGroup = new QUndoGroup(this);
-    undoView->setGroup(m_undoGroup);
-    undoView->setCleanIcon(QIcon(":/icons/ok.png"));
-
-    QAction *undoAction = m_undoGroup->createUndoAction(this);
-    QAction *redoAction = m_undoGroup->createRedoAction(this);
-    undoAction->setIcon(QIcon(":/icons/undo.png"));
-    redoAction->setIcon(QIcon(":/icons/redo.png"));
-    menuShape->insertAction(menuShape->actions().at(0), undoAction);
-    menuShape->insertAction(undoAction, redoAction);
-
-    toolBar->addAction(undoAction);
-    toolBar->addAction(redoAction);
-
-    newDocument();
-    updateActions();
-};
-
-void MainWindow::updateActions()
-{
-    Document *doc = currentDocument();
-    m_undoGroup->setActiveStack(doc == nullptr ? nullptr : doc->undoStack());
-    QString shapeName = doc == nullptr ? QString() : doc->currentShapeName();
-
-    actionAddRobot->setEnabled(doc != nullptr);
-    actionAddSnowman->setEnabled(doc != nullptr);
-    actionAddCircle->setEnabled(doc != nullptr);
-    actionAddRectangle->setEnabled(doc != nullptr);
-    actionAddTriangle->setEnabled(doc != nullptr);
-    actionClose->setEnabled(doc != nullptr);
-    actionSave->setEnabled(doc != nullptr && !doc->undoStack()->isClean());
-    undoLimit->setEnabled(doc != nullptr && doc->undoStack()->count() == 0);
-
-    if (shapeName.isEmpty()) {
-        actionRed->setEnabled(false);
-        actionGreen->setEnabled(false);
-        actionBlue->setEnabled(false);
-        actionRemoveShape->setEnabled(false);
-    } else {
-        Shape shape = doc->shape(shapeName);
-        actionRed->setEnabled(shape.color() != Qt::red);
-        actionGreen->setEnabled(shape.color() != Qt::green);
-        actionBlue->setEnabled(shape.color() != Qt::blue);
-        actionRemoveShape->setEnabled(true);
-    }
-
-    if (doc != nullptr) {
-        int index = documentTabs->indexOf(doc);
-        Q_ASSERT(index != -1);
-        static const QIcon unsavedIcon(":/icons/filesave.png");
-        documentTabs->setTabIcon(index, doc->undoStack()->isClean() ? QIcon() : unsavedIcon);
-
-        if (doc->undoStack()->count() == 0)
-            doc->undoStack()->setUndoLimit(undoLimit->value());
-    }
-}
-
-void MainWindow::openDocument()
-{
-    QString fileName = QFileDialog::getOpenFileName(this);
-    if (fileName.isEmpty())
-        return;
-
-    QFile file(fileName);
-    if (!file.open(QIODevice::ReadOnly)) {
-        QMessageBox::warning(this,
-                            tr("File error"),
-                            tr("Failed to open\n%1").arg(fileName));
-        return;
-    }
-    QTextStream stream(&file);
-
-    Document *doc = new Document();
-    if (!doc->load(stream)) {
-        QMessageBox::warning(this,
-                            tr("Parse error"),
-                            tr("Failed to parse\n%1").arg(fileName));
-        delete doc;
-        return;
-    }
-
-    doc->setFileName(fileName);
-    addDocument(doc);
-}
-
-QString MainWindow::fixedWindowTitle(const Document *doc) const
-{
-    QString title = doc->fileName();
-
-    if (title.isEmpty())
-        title = tr("Unnamed");
-    else
-        title = QFileInfo(title).fileName();
-
-    QString result;
-
-    for (int i = 0; ; ++i) {
-        result = title;
-        if (i > 0)
-            result += QString::number(i);
-
-        bool unique = true;
-        for (int j = 0; j < documentTabs->count(); ++j) {
-            const QWidget *widget = documentTabs->widget(j);
-            if (widget == doc)
-                continue;
-            if (result == documentTabs->tabText(j)) {
-                unique = false;
-                break;
-            }
-        }
-
-        if (unique)
-            break;
-    }
-
-    return result;
-}
-
-void MainWindow::addDocument(Document *doc)
-{
-    if (documentTabs->indexOf(doc) != -1)
-        return;
-    m_undoGroup->addStack(doc->undoStack());
-    documentTabs->addTab(doc, fixedWindowTitle(doc));
-    connect(doc, &Document::currentShapeChanged, this, &MainWindow::updateActions);
-    connect(doc->undoStack(), &QUndoStack::indexChanged, this, &MainWindow::updateActions);
-    connect(doc->undoStack(), &QUndoStack::cleanChanged, this, &MainWindow::updateActions);
-
-    setCurrentDocument(doc);
-}
-
-void MainWindow::setCurrentDocument(Document *doc)
-{
-    documentTabs->setCurrentWidget(doc);
-}
-
-Document *MainWindow::currentDocument() const
-{
-    return qobject_cast<Document*>(documentTabs->currentWidget());
-}
-
-void MainWindow::removeDocument(Document *doc)
-{
-    int index = documentTabs->indexOf(doc);
-    if (index == -1)
-        return;
-
-    documentTabs->removeTab(index);
-    m_undoGroup->removeStack(doc->undoStack());
-    disconnect(doc, &Document::currentShapeChanged, this, &MainWindow::updateActions);
-    disconnect(doc->undoStack(), &QUndoStack::indexChanged, this, &MainWindow::updateActions);
-    disconnect(doc->undoStack(), &QUndoStack::cleanChanged, this, &MainWindow::updateActions);
-
-    if (documentTabs->count() == 0) {
-        newDocument();
-        updateActions();
-    }
-}
-
-void MainWindow::saveDocument()
-{
-    Document *doc = currentDocument();
-    if (doc == nullptr)
-        return;
-
-    for (;;) {
-        QString fileName = doc->fileName();
-
-        if (fileName.isEmpty())
-            fileName = QFileDialog::getSaveFileName(this);
-        if (fileName.isEmpty())
-            break;
-
-        QFile file(fileName);
-        if (!file.open(QIODevice::WriteOnly)) {
-            QMessageBox::warning(this,
-                                tr("File error"),
-                                tr("Failed to open\n%1").arg(fileName));
-            doc->setFileName(QString());
-        } else {
-            QTextStream stream(&file);
-            doc->save(stream);
-            doc->setFileName(fileName);
-
-            int index = documentTabs->indexOf(doc);
-            Q_ASSERT(index != -1);
-            documentTabs->setTabText(index, fixedWindowTitle(doc));
-
-            break;
-        }
-    }
-}
-
-void MainWindow::closeDocument()
-{
-    Document *doc = currentDocument();
-    if (doc == nullptr)
-        return;
-
-    if (!doc->undoStack()->isClean()) {
-        int button
-            = QMessageBox::warning(this,
-                            tr("Unsaved changes"),
-                            tr("Would you like to save this document?"),
-                            QMessageBox::Yes, QMessageBox::No);
-        if (button == QMessageBox::Yes)
-            saveDocument();
-    }
-
-    removeDocument(doc);
-    delete doc;
-}
-
-void MainWindow::newDocument()
-{
-    addDocument(new Document());
-}
-
-static QColor randomColor()
-{
-    int r = QRandomGenerator::global()->bounded(3);
-    switch (r) {
-        case 0:
-            return Qt::red;
-        case 1:
-            return Qt::green;
-        default:
-            break;
-    }
-    return Qt::blue;
-}
-
-static QRect randomRect(const QSize &s)
-{
-    QSize min = Shape::minSize;
-
-    int left = qRound((s.width() - min.width()) * (QRandomGenerator::global()->bounded(1.0)));
-    int top = qRound((s.height() - min.height()) * (QRandomGenerator::global()->bounded(1.0)));
-    int width = qRound((s.width() - left - min.width()) * (QRandomGenerator::global()->bounded(1.0))) + min.width();
-    int height = qRound((s.height() - top - min.height()) * (QRandomGenerator::global()->bounded(1.0))) + min.height();
-
-    return QRect(left, top, width, height);
-}
-
-void MainWindow::addShape()
-{
-    Document *doc = currentDocument();
-    if (doc == nullptr)
-        return;
-
-    Shape::Type type;
-
-    if (sender() == actionAddCircle)
-        type = Shape::Circle;
-    else if (sender() == actionAddRectangle)
-        type = Shape::Rectangle;
-    else if (sender() == actionAddTriangle)
-        type = Shape::Triangle;
-    else return;
-
-    Shape newShape(type, randomColor(), randomRect(doc->size()));
-    doc->undoStack()->push(new AddShapeCommand(doc, newShape));
-}
-
-void MainWindow::removeShape()
-{
-    Document *doc = currentDocument();
-    if (doc == nullptr)
-        return;
-
-    QString shapeName = doc->currentShapeName();
-    if (shapeName.isEmpty())
-        return;
-
-    doc->undoStack()->push(new RemoveShapeCommand(doc, shapeName));
-}
-
-void MainWindow::setShapeColor()
-{
-    Document *doc = currentDocument();
-    if (doc == nullptr)
-        return;
-
-    QString shapeName = doc->currentShapeName();
-    if (shapeName.isEmpty())
-        return;
-
-    QColor color;
-
-    if (sender() == actionRed)
-        color = Qt::red;
-    else if (sender() == actionGreen)
-        color = Qt::green;
-    else if (sender() == actionBlue)
-        color = Qt::blue;
-    else
-        return;
-
-    if (color == doc->shape(shapeName).color())
-        return;
-
-    doc->undoStack()->push(new SetShapeColorCommand(doc, shapeName, color));
-}
-
-void MainWindow::addSnowman()
-{
-    Document *doc = currentDocument();
-    if (doc == nullptr)
-        return;
-
-    // Create a macro command using beginMacro() and endMacro()
-
-    doc->undoStack()->beginMacro(tr("Add snowman"));
-    doc->undoStack()->push(new AddShapeCommand(doc,
-                            Shape(Shape::Circle, Qt::blue, QRect(51, 30, 97, 95))));
-    doc->undoStack()->push(new AddShapeCommand(doc,
-                            Shape(Shape::Circle, Qt::blue, QRect(27, 123, 150, 133))));
-    doc->undoStack()->push(new AddShapeCommand(doc,
-                            Shape(Shape::Circle, Qt::blue, QRect(11, 253, 188, 146))));
-    doc->undoStack()->endMacro();
-}
-
-void MainWindow::addRobot()
-{
-    Document *doc = currentDocument();
-    if (doc == nullptr)
-        return;
-
-    // Compose a macro command by explicitly adding children to a parent command
-
-    QUndoCommand *parent = new QUndoCommand(tr("Add robot"));
-
-    new AddShapeCommand(doc, Shape(Shape::Rectangle, Qt::green, QRect(115, 15, 81, 70)), parent);
-    new AddShapeCommand(doc, Shape(Shape::Rectangle, Qt::green, QRect(82, 89, 148, 188)), parent);
-    new AddShapeCommand(doc, Shape(Shape::Rectangle, Qt::green, QRect(76, 280, 80, 165)), parent);
-    new AddShapeCommand(doc, Shape(Shape::Rectangle, Qt::green, QRect(163, 280, 80, 164)), parent);
-    new AddShapeCommand(doc, Shape(Shape::Circle, Qt::blue, QRect(116, 25, 80, 50)), parent);
-    new AddShapeCommand(doc, Shape(Shape::Rectangle, Qt::green, QRect(232, 92, 80, 127)), parent);
-    new AddShapeCommand(doc, Shape(Shape::Rectangle, Qt::green, QRect(2, 92, 80, 125)), parent);
-
-    doc->undoStack()->push(parent);
-}
-
-void MainWindow::about()
-{
-    QMessageBox::about(this, tr("About Undo"), tr("The Undo demonstration shows how to use the Qt Undo framework."));
-}
-
-void MainWindow::aboutQt()
-{
-    QMessageBox::aboutQt(this, tr("About Qt"));
-}
diff --git a/examples/widgets/tools/undo/mainwindow.h b/examples/widgets/tools/undo/mainwindow.h
deleted file mode 100644
index cda67ea196..0000000000
--- a/examples/widgets/tools/undo/mainwindow.h
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-#ifndef MAINWINDOW_H
-#define MAINWINDOW_H
-
-#include <QMainWindow>
-#include "ui_mainwindow.h"
-
-class Document;
-
-class MainWindow : public QMainWindow, public Ui::MainWindow
-{
-    Q_OBJECT
-
-public:
-    MainWindow(QWidget *parent = nullptr);
-
-    void addDocument(Document *doc);
-    void removeDocument(Document *doc);
-    void setCurrentDocument(Document *doc);
-    Document *currentDocument() const;
-
-public slots:
-    void openDocument();
-    void saveDocument();
-    void closeDocument();
-    void newDocument();
-
-    void addShape();
-    void removeShape();
-    void setShapeColor();
-
-    void addSnowman();
-    void addRobot();
-
-    void about();
-    void aboutQt();
-
-private slots:
-    void updateActions();
-
-private:
-    QUndoGroup *m_undoGroup;
-
-    QString fixedWindowTitle(const Document *doc) const;
-};
-
-#endif // MAINWINDOW_H
diff --git a/examples/widgets/tools/undo/mainwindow.ui b/examples/widgets/tools/undo/mainwindow.ui
deleted file mode 100644
index 91a0b437e5..0000000000
--- a/examples/widgets/tools/undo/mainwindow.ui
+++ /dev/null
@@ -1,322 +0,0 @@
-<ui version="4.0" >
- <class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow" >
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>567</width>
-    <height>600</height>
-   </rect>
-  </property>
-  <property name="iconSize" >
-   <size>
-    <width>32</width>
-    <height>32</height>
-   </size>
-  </property>
-  <widget class="QWidget" name="centralwidget" >
-   <layout class="QVBoxLayout" >
-    <property name="margin" >
-     <number>0</number>
-    </property>
-    <property name="spacing" >
-     <number>0</number>
-    </property>
-    <item>
-     <widget class="QTabWidget" name="documentTabs" >
-      <property name="currentIndex" >
-       <number>0</number>
-      </property>
-      <widget class="QWidget" name="tab" >
-       <attribute name="title" >
-        <string>Tab 1</string>
-       </attribute>
-      </widget>
-     </widget>
-    </item>
-   </layout>
-  </widget>
-  <widget class="QMenuBar" name="menubar" >
-   <property name="geometry" >
-    <rect>
-     <x>0</x>
-     <y>0</y>
-     <width>567</width>
-     <height>27</height>
-    </rect>
-   </property>
-   <widget class="QMenu" name="menuFile" >
-    <property name="title" >
-     <string>File</string>
-    </property>
-    <addaction name="actionNew" />
-    <addaction name="actionOpen" />
-    <addaction name="actionSave" />
-    <addaction name="actionClose" />
-    <addaction name="separator" />
-    <addaction name="actionExit" />
-   </widget>
-   <widget class="QMenu" name="menuShape" >
-    <property name="title" >
-     <string>Edit</string>
-    </property>
-    <widget class="QMenu" name="menuMacros" >
-     <property name="title" >
-      <string>Macros</string>
-     </property>
-     <addaction name="actionAddRobot" />
-     <addaction name="actionAddSnowman" />
-    </widget>
-    <addaction name="separator" />
-    <addaction name="actionAddCircle" />
-    <addaction name="actionAddRectangle" />
-    <addaction name="actionAddTriangle" />
-    <addaction name="actionRemoveShape" />
-    <addaction name="separator" />
-    <addaction name="actionRed" />
-    <addaction name="actionGreen" />
-    <addaction name="actionBlue" />
-    <addaction name="separator" />
-    <addaction name="menuMacros" />
-   </widget>
-   <widget class="QMenu" name="menuHelp" >
-    <property name="title" >
-     <string>Help</string>
-    </property>
-    <addaction name="actionAbout" />
-    <addaction name="actionAboutQt" />
-   </widget>
-   <addaction name="menuFile" />
-   <addaction name="menuShape" />
-   <addaction name="menuHelp" />
-  </widget>
-  <widget class="QStatusBar" name="statusbar" />
-  <widget class="QToolBar" name="toolBar" >
-   <property name="windowTitle" >
-    <string>File actions</string>
-   </property>
-   <property name="orientation" >
-    <enum>Qt::Horizontal</enum>
-   </property>
-   <attribute name="toolBarArea" >
-    <enum>TopToolBarArea</enum>
-   </attribute>
-   <attribute name="toolBarBreak" >
-    <bool>false</bool>
-   </attribute>
-   <addaction name="actionNew" />
-   <addaction name="actionOpen" />
-   <addaction name="actionSave" />
-   <addaction name="actionClose" />
-   <addaction name="separator" />
-  </widget>
-  <widget class="QToolBar" name="shapeToolBar" >
-   <property name="windowTitle" >
-    <string>Shape actions</string>
-   </property>
-   <property name="orientation" >
-    <enum>Qt::Vertical</enum>
-   </property>
-   <attribute name="toolBarArea" >
-    <enum>LeftToolBarArea</enum>
-   </attribute>
-   <attribute name="toolBarBreak" >
-    <bool>false</bool>
-   </attribute>
-   <addaction name="actionAddRectangle" />
-   <addaction name="actionAddCircle" />
-   <addaction name="actionAddTriangle" />
-   <addaction name="actionRemoveShape" />
-   <addaction name="separator" />
-   <addaction name="actionRed" />
-   <addaction name="actionGreen" />
-   <addaction name="actionBlue" />
-  </widget>
-  <widget class="QDockWidget" name="dockWidget" >
-   <property name="windowTitle" >
-    <string>Undo Stack</string>
-   </property>
-   <attribute name="dockWidgetArea" >
-    <number>2</number>
-   </attribute>
-   <widget class="QWidget" name="dockWidgetContents" >
-    <layout class="QVBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
-     </property>
-     <property name="spacing" >
-      <number>4</number>
-     </property>
-     <item>
-      <layout class="QHBoxLayout" >
-       <property name="margin" >
-        <number>0</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>40</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="QLabel" name="label" >
-         <property name="text" >
-          <string>Undo limit</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QSpinBox" name="undoLimit" />
-       </item>
-      </layout>
-     </item>
-     <item>
-      <widget class="QUndoView" name="undoView" >
-       <property name="alternatingRowColors" >
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </widget>
-  </widget>
-  <action name="actionOpen" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/fileopen.png</iconset>
-   </property>
-   <property name="text" >
-    <string>&amp;Open</string>
-   </property>
-  </action>
-  <action name="actionClose" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/fileclose.png</iconset>
-   </property>
-   <property name="text" >
-    <string>&amp;Close</string>
-   </property>
-  </action>
-  <action name="actionNew" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/filenew.png</iconset>
-   </property>
-   <property name="text" >
-    <string>&amp;New</string>
-   </property>
-  </action>
-  <action name="actionSave" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/filesave.png</iconset>
-   </property>
-   <property name="text" >
-    <string>&amp;Save</string>
-   </property>
-  </action>
-  <action name="actionExit" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/exit.png</iconset>
-   </property>
-   <property name="text" >
-    <string>E&amp;xit</string>
-   </property>
-  </action>
-  <action name="actionRed" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/red.png</iconset>
-   </property>
-   <property name="text" >
-    <string>Red</string>
-   </property>
-  </action>
-  <action name="actionGreen" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/green.png</iconset>
-   </property>
-   <property name="text" >
-    <string>Green</string>
-   </property>
-  </action>
-  <action name="actionBlue" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/blue.png</iconset>
-   </property>
-   <property name="text" >
-    <string>Blue</string>
-   </property>
-  </action>
-  <action name="actionAddRectangle" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/rectangle.png</iconset>
-   </property>
-   <property name="text" >
-    <string>Add Rectangle</string>
-   </property>
-  </action>
-  <action name="actionAddCircle" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/circle.png</iconset>
-   </property>
-   <property name="text" >
-    <string>Add Circle</string>
-   </property>
-  </action>
-  <action name="actionRemoveShape" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/remove.png</iconset>
-   </property>
-   <property name="text" >
-    <string>Remove Shape</string>
-   </property>
-  </action>
-  <action name="actionAddRobot" >
-   <property name="text" >
-    <string>Add robot</string>
-   </property>
-  </action>
-  <action name="actionAddSnowman" >
-   <property name="text" >
-    <string>Add snowan</string>
-   </property>
-  </action>
-  <action name="actionAddTriangle" >
-   <property name="icon" >
-    <iconset resource="undo.qrc" >:/icons/triangle.png</iconset>
-   </property>
-   <property name="text" >
-    <string>addTriangle</string>
-   </property>
-  </action>
-  <action name="actionAbout" >
-   <property name="text" >
-    <string>About</string>
-   </property>
-  </action>
-  <action name="actionAboutQt" >
-   <property name="text" >
-    <string>About Qt</string>
-   </property>
-  </action>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>QUndoView</class>
-   <extends>QListView</extends>
-   <header>qundoview.h</header>
-  </customwidget>
- </customwidgets>
- <resources>
-  <include location="undo.qrc" />
- </resources>
- <connections/>
-</ui>
diff --git a/examples/widgets/tools/undo/undo.pro b/examples/widgets/tools/undo/undo.pro
deleted file mode 100644
index 9b7b577dd3..0000000000
--- a/examples/widgets/tools/undo/undo.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-QT += widgets
-requires(qtConfig(undoview))
-
-SOURCES += main.cpp mainwindow.cpp commands.cpp document.cpp
-HEADERS += mainwindow.h commands.h document.h
-FORMS += mainwindow.ui
-
-build_all:!build_pass {
-    CONFIG -= build_all
-    CONFIG += release
-}
-
-RESOURCES += undo.qrc
-
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/undo
-INSTALLS += target
diff --git a/examples/widgets/tools/undo/undo.qrc b/examples/widgets/tools/undo/undo.qrc
deleted file mode 100644
index 65619b8f1a..0000000000
--- a/examples/widgets/tools/undo/undo.qrc
+++ /dev/null
@@ -1,20 +0,0 @@
-<RCC>
-    <qresource prefix="/" >
-        <file>icons/background.png</file>
-        <file>icons/blue.png</file>
-        <file>icons/circle.png</file>
-        <file>icons/exit.png</file>
-        <file>icons/fileclose.png</file>
-        <file>icons/filenew.png</file>
-        <file>icons/fileopen.png</file>
-        <file>icons/filesave.png</file>
-        <file>icons/green.png</file>
-        <file>icons/ok.png</file>
-        <file>icons/rectangle.png</file>
-        <file>icons/red.png</file>
-        <file>icons/redo.png</file>
-        <file>icons/remove.png</file>
-        <file>icons/triangle.png</file>
-        <file>icons/undo.png</file>
-    </qresource>
-</RCC>
diff --git a/examples/widgets/tools/undoframework/CMakeLists.txt b/examples/widgets/tools/undoframework/CMakeLists.txt
index 47b4e4474a..753d4205dc 100644
--- a/examples/widgets/tools/undoframework/CMakeLists.txt
+++ b/examples/widgets/tools/undoframework/CMakeLists.txt
@@ -35,7 +35,12 @@ target_link_libraries(undoframework PRIVATE
 
 # Resources:
 set(undoframework_resource_files
-    "images/cross.png"
+    "icons/cross.png"
+    "icons/rectangle.png"
+    "icons/redo.png"
+    "icons/remove.png"
+    "icons/triangle.png"
+    "icons/undo.png"
 )
 
 qt_add_resources(undoframework "undoframework"
diff --git a/examples/widgets/tools/undoframework/images/cross.png b/examples/widgets/tools/undoframework/icons/cross.png
similarity index 100%
rename from examples/widgets/tools/undoframework/images/cross.png
rename to examples/widgets/tools/undoframework/icons/cross.png
diff --git a/examples/widgets/tools/undo/icons/rectangle.png b/examples/widgets/tools/undoframework/icons/rectangle.png
similarity index 100%
rename from examples/widgets/tools/undo/icons/rectangle.png
rename to examples/widgets/tools/undoframework/icons/rectangle.png
diff --git a/examples/widgets/tools/undo/icons/redo.png b/examples/widgets/tools/undoframework/icons/redo.png
similarity index 100%
rename from examples/widgets/tools/undo/icons/redo.png
rename to examples/widgets/tools/undoframework/icons/redo.png
diff --git a/examples/widgets/tools/undo/icons/remove.png b/examples/widgets/tools/undoframework/icons/remove.png
similarity index 100%
rename from examples/widgets/tools/undo/icons/remove.png
rename to examples/widgets/tools/undoframework/icons/remove.png
diff --git a/examples/widgets/tools/undo/icons/triangle.png b/examples/widgets/tools/undoframework/icons/triangle.png
similarity index 100%
rename from examples/widgets/tools/undo/icons/triangle.png
rename to examples/widgets/tools/undoframework/icons/triangle.png
diff --git a/examples/widgets/tools/undo/icons/undo.png b/examples/widgets/tools/undoframework/icons/undo.png
similarity index 100%
rename from examples/widgets/tools/undo/icons/undo.png
rename to examples/widgets/tools/undoframework/icons/undo.png
diff --git a/examples/widgets/tools/undoframework/mainwindow.cpp b/examples/widgets/tools/undoframework/mainwindow.cpp
index 6b13d0d328..c2a6c1cff6 100644
--- a/examples/widgets/tools/undoframework/mainwindow.cpp
+++ b/examples/widgets/tools/undoframework/mainwindow.cpp
@@ -7,70 +7,75 @@
 #include "commands.h"
 
 #include <QAction>
+#include <QDockWidget>
 #include <QGraphicsView>
 #include <QMenu>
 #include <QMenuBar>
 #include <QMessageBox>
+#include <QToolBar>
 #include <QUndoView>
 
 //! [0]
 MainWindow::MainWindow()
 {
     undoStack = new QUndoStack(this);
-
-    createActions();
-    createMenus();
-
-    createUndoView();
-
     diagramScene = new DiagramScene();
-    QBrush pixmapBrush(QPixmap(":/images/cross.png").scaled(30, 30));
+
+    const QBrush pixmapBrush(QPixmap(":/icons/cross.png").scaled(30, 30));
     diagramScene->setBackgroundBrush(pixmapBrush);
     diagramScene->setSceneRect(QRect(0, 0, 500, 500));
 
+    createActions();
+    createMenus();
+    createToolBars();
+
+    createUndoView();
+
     connect(diagramScene, &DiagramScene::itemMoved,
             this, &MainWindow::itemMoved);
+    connect(diagramScene, &DiagramScene::selectionChanged,
+            this, &MainWindow::updateActions);
 
     setWindowTitle("Undo Framework");
     QGraphicsView *view = new QGraphicsView(diagramScene);
     setCentralWidget(view);
-    resize(700, 500);
+    adjustSize();
 }
 //! [0]
 
 //! [1]
 void MainWindow::createUndoView()
 {
-    undoView = new QUndoView(undoStack);
-    undoView->setWindowTitle(tr("Command List"));
-    undoView->show();
-    undoView->setAttribute(Qt::WA_QuitOnClose, false);
+    QDockWidget *undoDockWidget = new QDockWidget;
+    undoDockWidget->setWindowTitle(tr("Command List"));
+    undoDockWidget->setWidget(new QUndoView(undoStack));
+    addDockWidget(Qt::RightDockWidgetArea, undoDockWidget);
 }
 //! [1]
 
 //! [2]
 void MainWindow::createActions()
 {
-    deleteAction = new QAction(tr("&Delete Item"), this);
+    deleteAction = new QAction(QIcon(":/icons/remove.png"), tr("&Delete Item"), this);
     deleteAction->setShortcut(tr("Del"));
     connect(deleteAction, &QAction::triggered, this, &MainWindow::deleteItem);
-//! [2] //! [3]
+//! [2]
 
-//! [3] //! [4]
-    addBoxAction = new QAction(tr("Add &Box"), this);
-//! [4]
+    addBoxAction = new QAction(QIcon(":/icons/rectangle.png"), tr("Add &Box"), this);
     addBoxAction->setShortcut(tr("Ctrl+O"));
     connect(addBoxAction, &QAction::triggered, this, &MainWindow::addBox);
 
-    addTriangleAction = new QAction(tr("Add &Triangle"), this);
+    addTriangleAction = new QAction(QIcon(":/icons/triangle.png"), tr("Add &Triangle"), this);
     addTriangleAction->setShortcut(tr("Ctrl+T"));
     connect(addTriangleAction, &QAction::triggered, this, &MainWindow::addTriangle);
 
 //! [5]
     undoAction = undoStack->createUndoAction(this, tr("&Undo"));
+    undoAction->setIcon(QIcon(":/icons/undo.png"));
     undoAction->setShortcuts(QKeySequence::Undo);
 
     redoAction = undoStack->createRedoAction(this, tr("&Redo"));
+    redoAction->setIcon(QIcon(":/icons/redo.png"));
     redoAction->setShortcuts(QKeySequence::Redo);
 //! [5]
 
@@ -83,46 +88,66 @@ void MainWindow::createActions()
     aboutShortcuts << tr("Ctrl+A") << tr("Ctrl+B");
     aboutAction->setShortcuts(aboutShortcuts);
     connect(aboutAction, &QAction::triggered, this, &MainWindow::about);
-}
 
 //! [6]
+    updateActions();
+}
+
+void MainWindow::updateActions()
+{
+    deleteAction->setEnabled(!diagramScene->selectedItems().isEmpty());
+}
+//! [6]
+
+//! [7]
 void MainWindow::createMenus()
 {
-//! [6]
     fileMenu = menuBar()->addMenu(tr("&File"));
     fileMenu->addAction(exitAction);
 
-//! [7]
     editMenu = menuBar()->addMenu(tr("&Edit"));
     editMenu->addAction(undoAction);
     editMenu->addAction(redoAction);
     editMenu->addSeparator();
     editMenu->addAction(deleteAction);
-    connect(editMenu, &QMenu::aboutToShow,
-            this, &MainWindow::itemMenuAboutToShow);
-    connect(editMenu, &QMenu::aboutToHide,
-            this, &MainWindow::itemMenuAboutToHide);
-
 //! [7]
+
     itemMenu = menuBar()->addMenu(tr("&Item"));
     itemMenu->addAction(addBoxAction);
     itemMenu->addAction(addTriangleAction);
 
+//! [8]
     helpMenu = menuBar()->addMenu(tr("&About"));
     helpMenu->addAction(aboutAction);
-//! [8]
 }
+
+void MainWindow::createToolBars()
+{
+    QToolBar *editToolBar = new QToolBar;
+    editToolBar->addAction(undoAction);
+    editToolBar->addAction(redoAction);
+    editToolBar->addSeparator();
+    editToolBar->addAction(deleteAction);
 //! [8]
 
+    QToolBar *itemToolBar = new QToolBar;
+    itemToolBar->addAction(addBoxAction);
+    itemToolBar->addAction(addTriangleAction);
 //! [9]
+    addToolBar(editToolBar);
+    addToolBar(itemToolBar);
+}
+//! [9]
+
+//! [11]
 void MainWindow::itemMoved(DiagramItem *movedItem,
                            const QPointF &oldPosition)
 {
     undoStack->push(new MoveCommand(movedItem, oldPosition));
 }
-//! [9]
+//! [11]
 
-//! [10]
+//! [12]
 void MainWindow::deleteItem()
 {
     if (diagramScene->selectedItems().isEmpty())
@@ -131,20 +156,6 @@ void MainWindow::deleteItem()
     QUndoCommand *deleteCommand = new DeleteCommand(diagramScene);
     undoStack->push(deleteCommand);
 }
-//! [10]
-
-//! [11]
-void MainWindow::itemMenuAboutToHide()
-{
-    deleteAction->setEnabled(true);
-}
-//! [11]
-
-//! [12]
-void MainWindow::itemMenuAboutToShow()
-{
-    deleteAction->setEnabled(!diagramScene->selectedItems().isEmpty());
-}
 //! [12]
 
 //! [13]
diff --git a/examples/widgets/tools/undoframework/mainwindow.h b/examples/widgets/tools/undoframework/mainwindow.h
index c635ed0172..5ef1dddf75 100644
--- a/examples/widgets/tools/undoframework/mainwindow.h
+++ b/examples/widgets/tools/undoframework/mainwindow.h
@@ -32,12 +32,12 @@ private slots:
     void addBox();
     void addTriangle();
     void about();
-    void itemMenuAboutToShow();
-    void itemMenuAboutToHide();
+    void updateActions();
 
 private:
     void createActions();
     void createMenus();
+    void createToolBars();
     void createUndoView();
 
     QAction *deleteAction = nullptr;
diff --git a/examples/widgets/tools/undoframework/undoframework.qrc b/examples/widgets/tools/undoframework/undoframework.qrc
index 6321d94d8d..298cc768bd 100644
--- a/examples/widgets/tools/undoframework/undoframework.qrc
+++ b/examples/widgets/tools/undoframework/undoframework.qrc
@@ -1,6 +1,10 @@
 <!DOCTYPE RCC><RCC version="1.0">
     <qresource>
-        <file>images/cross.png</file>
+        <file>icons/cross.png</file>
+        <file>icons/rectangle.png</file>
+        <file>icons/redo.png</file>
+        <file>icons/remove.png</file>
+        <file>icons/triangle.png</file>
+        <file>icons/undo.png</file>
     </qresource>
     </RCC>
-