Skip to content

Commit 62b3b02

Browse files
committed
Handle tab icon updates.
1 parent 7698584 commit 62b3b02

File tree

7 files changed

+20
-2
lines changed

7 files changed

+20
-2
lines changed

src/private/Frame.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,11 @@ void Frame::onDockWidgetTitleChanged()
105105
updateTitleAndIcon();
106106

107107
if (!m_inCtor) { // don't call pure virtual in ctor
108-
if (auto dw = qobject_cast<DockWidgetBase*>(sender()))
109-
renameTab(indexOfDockWidget(dw), dw->title());
108+
if (auto dw = qobject_cast<DockWidgetBase*>(sender())) {
109+
int index = indexOfDockWidget(dw);
110+
renameTab(index, dw->title());
111+
changeTabIcon(index, dw->icon(DockWidgetBase::IconPlace::TabBar));
112+
}
110113
}
111114
}
112115

src/private/Frame_p.h

+1
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ protected Q_SLOTS:
258258

259259
protected:
260260
virtual void renameTab(int index, const QString &) = 0;
261+
virtual void changeTabIcon(int index, const QIcon &) = 0;
261262

262263
/**
263264
* @brief Returns the minimum size of the dock widgets.

src/private/TabWidget_p.h

+3
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ class DOCKS_EXPORT TabWidget : public Draggable
127127
///@brief rename's the tab's text
128128
virtual void renameTab(int index, const QString &) = 0;
129129

130+
///@brief change the tab's icon
131+
virtual void changeTabIcon(int index, const QIcon &) = 0;
132+
130133
/**
131134
* @brief Returns the current index
132135
*/

src/private/widgets/FrameWidget.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ void FrameWidget::renameTab(int index, const QString &text)
169169
m_tabWidget->renameTab(index, text);
170170
}
171171

172+
void FrameWidget::changeTabIcon(int index, const QIcon &icon)
173+
{
174+
m_tabWidget->changeTabIcon(index, icon);
175+
}
172176

173177
int KDDockWidgets::FrameWidget::nonContentsHeight() const
174178
{

src/private/widgets/FrameWidget_p.h

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class DOCKS_EXPORT FrameWidget : public Frame
4949
DockWidgetBase *dockWidgetAt_impl(int index) const override;
5050
QRect dragRect() const override;
5151
void renameTab(int index, const QString &) override;
52+
void changeTabIcon(int index, const QIcon &) override;
5253
int nonContentsHeight() const override;
5354
private:
5455
friend class ::TestDocks;

src/private/widgets/TabWidgetWidget.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,11 @@ void TabWidgetWidget::renameTab(int index, const QString &text)
135135
setTabText(index, text);
136136
}
137137

138+
void TabWidgetWidget::changeTabIcon(int index, const QIcon &icon)
139+
{
140+
setTabIcon(index, icon);
141+
}
142+
138143
DockWidgetBase *TabWidgetWidget::dockwidgetAt(int index) const
139144
{
140145
return qobject_cast<DockWidgetBase *>(widget(index));

src/private/widgets/TabWidgetWidget_p.h

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class DOCKS_EXPORT TabWidgetWidget
5555
bool insertDockWidget(int index, DockWidgetBase *, const QIcon&, const QString &title) override;
5656
void setTabBarAutoHide(bool) override;
5757
void renameTab(int index, const QString &) override;
58+
void changeTabIcon(int index, const QIcon &) override;
5859

5960
DockWidgetBase *dockwidgetAt(int index) const override;
6061
int currentIndex() const override;

0 commit comments

Comments
 (0)