From 227b14a0b6d0daebdce5035ff1708b02888d065b Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Wed, 1 Jul 2020 02:53:18 +0200 Subject: [PATCH] Make text in fancy tabbar wrap if too wide --- src/widgets/fancytabwidget.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/widgets/fancytabwidget.cpp b/src/widgets/fancytabwidget.cpp index 49090b8e8..f13d792b5 100644 --- a/src/widgets/fancytabwidget.cpp +++ b/src/widgets/fancytabwidget.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -100,7 +101,8 @@ class FancyTabBar: public QTabBar { QSize size; if (tabWidget->mode() == FancyTabWidget::Mode_LargeSidebar) { - size = QSize(std::max(FancyTabWidget::TabSize_LargeSidebarWidth, tabWidget->iconsize_largesidebar() + 22), tabWidget->iconsize_largesidebar() + 24); + QFontMetrics fm(font()); + size = QSize(std::max(FancyTabWidget::TabSize_LargeSidebarWidth, tabWidget->iconsize_largesidebar() + 22), tabWidget->iconsize_largesidebar() + fm.boundingRect(QRect(0, 0, std::max(FancyTabWidget::TabSize_LargeSidebarWidth, tabWidget->iconsize_largesidebar() + 22), height()), Qt::TextWordWrap, QTabBar::tabText(index)).height() + 6); } else { size = QTabBar::tabSizeHint(index); @@ -246,7 +248,7 @@ class FancyTabBar: public QTabBar { } else { m = QTransform::fromTranslate(tabrect.left(), tabrect.top()); - textFlags = Qt::AlignHCenter | Qt::AlignBottom; + textFlags = Qt::AlignHCenter | Qt::AlignBottom | Qt::TextWordWrap; iconFlags = Qt::AlignHCenter | Qt::AlignTop; tabrectLabel = QRect(QPoint(0, 0), m.mapRect(tabrect).size());