summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets
diff options
context:
space:
mode:
authorAleksei Ilin <Aleksei.Ilin@moex.com>2016-04-08 14:28:21 +0300
committerAleksei Ilin <Aleksei.Ilin@moex.com>2016-06-24 13:26:00 +0000
commit96f3e3585936bdc8feaba72c59521e402f5d6b54 (patch)
tree974fb2796804b7aa795e943374a2cc312c63eece /src/widgets/widgets
parentc80155043122d0202ca5f782572115209c7c22c7 (diff)
Add signal QMainWindow::tabifiedDockWidgetActivated
Task-number: QTBUG-52175 Change-Id: I0d133e9fee1a0d7a7e06b1156c868471c2b3c29f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r--src/widgets/widgets/qdockarealayout.cpp11
-rw-r--r--src/widgets/widgets/qdockarealayout_p.h2
-rw-r--r--src/widgets/widgets/qmainwindow.cpp12
-rw-r--r--src/widgets/widgets/qmainwindow.h3
-rw-r--r--src/widgets/widgets/qmainwindowlayout.cpp6
5 files changed, 30 insertions, 4 deletions
diff --git a/src/widgets/widgets/qdockarealayout.cpp b/src/widgets/widgets/qdockarealayout.cpp
index c14fd5a942..3b185a5e67 100644
--- a/src/widgets/widgets/qdockarealayout.cpp
+++ b/src/widgets/widgets/qdockarealayout.cpp
@@ -1493,8 +1493,10 @@ bool QDockAreaLayoutInfo::hasFixedSize() const
return perp(o, minimumSize()) == perp(o, maximumSize());
}
-
-void QDockAreaLayoutInfo::apply(bool animate)
+/*! \internal
+ Applies the layout and returns the activated QDockWidget or nullptr.
+ */
+QDockWidget *QDockAreaLayoutInfo::apply(bool animate)
{
QWidgetAnimator &widgetAnimator = mainWindowLayout()->widgetAnimator;
@@ -1533,6 +1535,8 @@ void QDockAreaLayoutInfo::apply(bool animate)
}
#endif // QT_NO_TABBAR
+ QDockWidget *activated = nullptr;
+
for (int i = 0; i < item_list.size(); ++i) {
QDockAreaLayoutItem &item = item_list[i];
@@ -1561,6 +1565,7 @@ void QDockAreaLayoutInfo::apply(bool animate)
} else if (r.isValid()
&& (geo.right() < 0 || geo.bottom() < 0)) {
emit dw->visibilityChanged(true);
+ activated = dw;
}
}
}
@@ -1568,6 +1573,8 @@ void QDockAreaLayoutInfo::apply(bool animate)
if (*sep == 1)
updateSeparatorWidgets();
#endif //QT_NO_TABBAR
+
+ return activated;
}
static void paintSep(QPainter *p, QWidget *w, const QRect &r, Qt::Orientation o, bool mouse_over)
diff --git a/src/widgets/widgets/qdockarealayout_p.h b/src/widgets/widgets/qdockarealayout_p.h
index 0ae1350394..591b156902 100644
--- a/src/widgets/widgets/qdockarealayout_p.h
+++ b/src/widgets/widgets/qdockarealayout_p.h
@@ -174,7 +174,7 @@ public:
QList<int> indexOf(QWidget *widget) const;
QList<int> indexOfPlaceHolder(const QString &objectName) const;
- void apply(bool animate);
+ QDockWidget *apply(bool animate);
void paintSeparators(QPainter *p, QWidget *widget, const QRegion &clip,
const QPoint &mouse) const;
diff --git a/src/widgets/widgets/qmainwindow.cpp b/src/widgets/widgets/qmainwindow.cpp
index f86244172d..5dfa439b2e 100644
--- a/src/widgets/widgets/qmainwindow.cpp
+++ b/src/widgets/widgets/qmainwindow.cpp
@@ -377,6 +377,18 @@ void QMainWindowPrivate::init()
\sa setToolButtonStyle()
*/
+#ifndef QT_NO_DOCKWIDGET
+/*!
+ \fn void QMainWindow::tabifiedDockWidgetActivated(QDockWidget *dockWidget)
+
+ This signal is emitted when the tabified dock widget is activated by
+ selecting the tab. The activated dock widget is passed in \a dockWidget.
+
+ \since 5.8
+ \sa tabifyDockWidget(), tabifiedDockWidgets()
+*/
+#endif
+
/*!
Constructs a QMainWindow with the given \a parent and the specified
widget \a flags.
diff --git a/src/widgets/widgets/qmainwindow.h b/src/widgets/widgets/qmainwindow.h
index aab1448b8f..4622d89e4c 100644
--- a/src/widgets/widgets/qmainwindow.h
+++ b/src/widgets/widgets/qmainwindow.h
@@ -195,6 +195,9 @@ public Q_SLOTS:
Q_SIGNALS:
void iconSizeChanged(const QSize &iconSize);
void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle);
+#ifndef QT_NO_DOCKWIDGET
+ void tabifiedDockWidgetActivated(QDockWidget *dockWidget);
+#endif
protected:
#ifndef QT_NO_CONTEXTMENU
diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp
index 6c05887705..ee6da73302 100644
--- a/src/widgets/widgets/qmainwindowlayout.cpp
+++ b/src/widgets/widgets/qmainwindowlayout.cpp
@@ -1686,7 +1686,11 @@ void QMainWindowLayout::tabChanged()
QDockAreaLayoutInfo *info = dockInfo(tb);
if (info == 0)
return;
- info->apply(false);
+
+ QDockWidget *activated = info->apply(false);
+
+ if (activated)
+ emit static_cast<QMainWindow *>(parentWidget())->tabifiedDockWidgetActivated(activated);
if (QWidget *w = centralWidget())
w->raise();