diff --git a/examples/activeqt/hierarchy/hierarchy.pro b/examples/activeqt/hierarchy/hierarchy.pro
index acc108a..ac34924 100644
--- a/examples/activeqt/hierarchy/hierarchy.pro
+++ b/examples/activeqt/hierarchy/hierarchy.pro
@@ -10,7 +10,7 @@ SOURCES  = objects.cpp main.cpp
 HEADERS  = objects.h
 RC_FILE  = hierarchy.rc
 DEF_FILE = hierarchy.def
-
+include(../../../../qtbase/tests/manual/diaglib/diaglib.pri)
 # install
 target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/hierarchy
 INSTALLS += target
diff --git a/examples/activeqt/hierarchy/objects.cpp b/examples/activeqt/hierarchy/objects.cpp
index 1cb59ae..f6758ef 100644
--- a/examples/activeqt/hierarchy/objects.cpp
+++ b/examples/activeqt/hierarchy/objects.cpp
@@ -39,8 +39,38 @@
 ****************************************************************************/
 
 #include "objects.h"
+#include <QDebug>
 #include <QLayout>
+#include <QDialogButtonBox>
+#include <QLibraryInfo>
+#include <QVBoxLayout>
 #include <QPainter>
+#include <QSlider>
+#include <QTimer>
+#include <QLabel>
+#include <QPushButton>
+#include <qwidgetdump.h>
+#include <qwindowdump.h>
+
+class Dialog : public QDialog {
+public:
+    Dialog(QString t, QWidget *p) : QDialog(p)
+    {
+        setWindowTitle(t);
+        QVBoxLayout *vl = new QVBoxLayout(this);
+        vl->addWidget(new QLabel(QLibraryInfo::build()));
+        QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Close, this);
+        connect(bb, &QDialogButtonBox::rejected, this, &QDialog::reject);
+        vl->addWidget(bb);
+        QPushButton *db = bb->addButton("Dump", QDialogButtonBox::ActionRole);
+        connect(db, &QAbstractButton::clicked, this,
+        [] ()
+        {
+            QtDiag::dumpAllWidgets();
+            QtDiag::dumpAllWindows();
+        });
+    }
+};
 
 /* Implementation of QParentWidget */
 //! [0]
@@ -48,6 +78,13 @@ QParentWidget::QParentWidget(QWidget *parent)
 : QWidget(parent)
 {
     vbox = new QVBoxLayout(this);
+    vbox->addWidget(new QLabel(QLibraryInfo::build()));
+    QSlider *sl = new QSlider;
+    sl->setOrientation(Qt::Horizontal);
+    vbox->addWidget(sl);    
+    QPushButton *pb = new QPushButton("Show dialogs (delayed)", this);
+    vbox->addWidget(pb);
+    connect(pb, &QAbstractButton::clicked, this, &QParentWidget::testSlot);
 }
 
 //! [0] //! [1]
@@ -65,6 +102,30 @@ QSubWidget *QParentWidget::subWidget(const QString &name)
     return findChild<QSubWidget*>(name);
 }
 
+void QParentWidget::testSlot()
+{
+    QTimer::singleShot(500, this, SLOT(reallyShow()));
+}
+
+void QParentWidget::reallyShow()
+{
+    {
+        qDebug(">Show1");
+        Dialog dlg1("Dialog 1 / 2", this);
+        dlg1.setObjectName("Dlg1");
+        dlg1.exec();
+        qDebug("<Show1");
+    }
+
+    {
+        qDebug(">Show2");
+        Dialog dlg2("Dialog 2 / 2", this);
+        dlg2.setObjectName("Dlg2");
+        dlg2.exec();
+        qDebug("<Show2");
+    }
+}
+
 //! [2]
 QSize QParentWidget::sizeHint() const
 {
diff --git a/examples/activeqt/hierarchy/objects.h b/examples/activeqt/hierarchy/objects.h
index 4ceea1f..c410aaa 100644
--- a/examples/activeqt/hierarchy/objects.h
+++ b/examples/activeqt/hierarchy/objects.h
@@ -42,7 +42,8 @@
 #define OBJECTS_H
 
 #include <QWidget>
-
+#include <QMessageBox>
+#include <QTimer>
 QT_BEGIN_NAMESPACE
 class QVBoxLayout;
 QT_END_NAMESPACE
@@ -64,6 +65,8 @@ public slots:
     void createSubWidget( const QString &name );
 
     QSubWidget *subWidget( const QString &name );
+    void testSlot();
+    void reallyShow();
 
 private:
     QVBoxLayout *vbox;
diff --git a/tools/testcon/mainwindow.cpp b/tools/testcon/mainwindow.cpp
index 98550ab..fb42011 100644
--- a/tools/testcon/mainwindow.cpp
+++ b/tools/testcon/mainwindow.cpp
@@ -50,6 +50,7 @@
 #include <ActiveQt/QAxSelect>
 #include <ActiveQt/QAxWidget>
 #include <ActiveQt/qaxtypes.h>
+#include <qwindowdump.h>
 
 QT_BEGIN_NAMESPACE
 
@@ -79,6 +80,10 @@ MainWindow::MainWindow(QWidget *parent)
     setupUi(this);
     MainWindow::m_instance = this; // Logging handler needs the UI
 
+    QAction *dw  = FileMenu->addAction("Dump windows");
+    connect(dw, &QAction::triggered,
+            [] { QtDiag::dumpAllWindows(); });
+
     setObjectName(QLatin1String("MainWindow"));
 
     const int scriptCount = int(sizeof(scriptLanguages) / sizeof(scriptLanguages[0]));
diff --git a/tools/testcon/testcon.pro b/tools/testcon/testcon.pro
index 5c3645d..12d5b4f 100644
--- a/tools/testcon/testcon.pro
+++ b/tools/testcon/testcon.pro
@@ -12,3 +12,4 @@ RC_FILE  = testcon.rc
 
 target.path = $$[QT_INSTALL_BINS]
 INSTALLS += target
+include(../../../qtbase/tests/manual/diaglib/diaglib.pri)
