Skip to content

Commit b776fc2

Browse files
Fixed sizeHints and sizePolicies to properly support different font sizes i.e. set via QApplication::setFont
1 parent c5e7104 commit b776fc2

File tree

3 files changed

+37
-4
lines changed

3 files changed

+37
-4
lines changed

src/DockAreaTabBar.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ CDockAreaTabBar::CDockAreaTabBar(CDockAreaWidget* parent) :
113113
d(new DockAreaTabBarPrivate(this))
114114
{
115115
d->DockArea = parent;
116-
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored);
116+
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
117117
setFrameStyle(QFrame::NoFrame);
118118
setWidgetResizable(true);
119119
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
@@ -565,6 +565,23 @@ bool CDockAreaTabBar::isTabOpen(int Index) const
565565
return !tab(Index)->isHidden();
566566
}
567567

568+
569+
//===========================================================================
570+
QSize CDockAreaTabBar::minimumSizeHint() const
571+
{
572+
QSize Size = sizeHint();
573+
Size.setWidth(Super::minimumSizeHint().width());// this defines the minimum width of a dock area
574+
return Size;
575+
}
576+
577+
//===========================================================================
578+
QSize CDockAreaTabBar::sizeHint() const
579+
{
580+
QSize Size = Super::sizeHint();
581+
Size.setHeight(d->TabsContainerWidget->sizeHint().height());
582+
return Size;
583+
}
584+
568585
} // namespace ads
569586

570587
//---------------------------------------------------------------------------

src/DockAreaTabBar.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,21 @@ private slots:
156156
*/
157157
bool isTabOpen(int Index) const;
158158

159+
/**
160+
* Overrides the minimumSizeHint() function of QScrollArea
161+
* The minimumSizeHint() is bigger than the sizeHint () for the scroll
162+
* area because even if the scrollbars are invisible, the required speace
163+
* is reserved in the minimumSizeHint(). This override simply returns
164+
* sizeHint();
165+
*/
166+
virtual QSize minimumSizeHint() const override;
167+
168+
/**
169+
* The function provides a sizeHint that matches the height of the
170+
* internal viewport.
171+
*/
172+
virtual QSize sizeHint() const override;
173+
159174
public slots:
160175
/**
161176
* This property sets the index of the tab bar's visible tab

src/DockAreaTitleBar.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ DockAreaTitleBarPrivate::DockAreaTitleBarPrivate(CDockAreaTitleBar* _public) :
130130
//============================================================================
131131
void DockAreaTitleBarPrivate::createButtons()
132132
{
133+
QSizePolicy ButtonSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
133134
// Tabs menu button
134135
TabsMenuButton = new tTileBarButton();
135136
TabsMenuButton->setObjectName("tabsMenuButton");
@@ -145,7 +146,7 @@ void DockAreaTitleBarPrivate::createButtons()
145146
#ifndef QT_NO_TOOLTIP
146147
TabsMenuButton->setToolTip(QObject::tr("List all tabs"));
147148
#endif
148-
TabsMenuButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
149+
TabsMenuButton->setSizePolicy(ButtonSizePolicy);
149150
TopLayout->addWidget(TabsMenuButton, 0);
150151
_this->connect(TabsMenuButton->menu(), SIGNAL(triggered(QAction*)),
151152
SLOT(onTabsMenuActionTriggered(QAction*)));
@@ -159,7 +160,7 @@ void DockAreaTitleBarPrivate::createButtons()
159160
UndockButton->setToolTip(QObject::tr("Detach Group"));
160161
#endif
161162
setTitleBarButtonIcon(UndockButton, QStyle::SP_TitleBarNormalButton);
162-
UndockButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
163+
UndockButton->setSizePolicy(ButtonSizePolicy);
163164
TopLayout->addWidget(UndockButton, 0);
164165
_this->connect(UndockButton, SIGNAL(clicked()), SLOT(onUndockButtonClicked()));
165166

@@ -179,7 +180,7 @@ void DockAreaTitleBarPrivate::createButtons()
179180
CloseButton->setToolTip(QObject::tr("Close Group"));
180181
}
181182
#endif
182-
CloseButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
183+
CloseButton->setSizePolicy(ButtonSizePolicy);
183184
CloseButton->setIconSize(QSize(16, 16));
184185
if (testConfigFlag(CDockManager::DockAreaHasCloseButton))
185186
{

0 commit comments

Comments
 (0)