Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

Commit ca61bd99 authored by Kurt Hindenburg's avatar Kurt Hindenburg

Change the way the tab widths are calcuated and their text to allow better space usage.

Patches/comments to make this better welcomed. I wanted something committed for KDE 4.5.

CCBUG: 157201

svn path=/trunk/KDE/kdebase/apps/konsole/; revision=1115895
parent 4c440f9d
......@@ -260,6 +260,7 @@ ViewContainerTabBar::ViewContainerTabBar(QWidget* parent,TabbedViewContainer* co
, _dropIndicatorIndex(-1)
, _drawIndicatorDisabled(false)
{
setElideMode(Qt::ElideLeft);
}
void ViewContainerTabBar::setDropIndicator(int index, bool drawDisabled)
{
......@@ -395,9 +396,31 @@ void ViewContainerTabBar::dropEvent(QDropEvent* event)
event->ignore();
}
/* Try to provide a reasonable tab width:
* If there are less than 5 tabs, let the tabs fill out the tabbar.
* Otherwise, check the tab text size and the minimumTabWidth value.
* The minimumTabWidth is to prevent the tabs from getting too
* small such that no scroll indicators will appear.
*/
QSize ViewContainerTabBar::tabSizeHint(int index) const
{
return QTabBar::tabSizeHint(index);
const int fillTabCount = 5;
const int minimumTabWidth = 150; // Arbitrary value
int tabBarWidth = rect().width();
int tabCount = count();
int tabMaxWidth;
if (tabCount <= fillTabCount)
tabMaxWidth = tabBarWidth / (tabCount + 0.5);
else
tabMaxWidth = tabBarWidth / (fillTabCount + 0.5);
int tabTextWidth = fontMetrics().width(tabText(index));
// qBound ( minimum, value, max )
kDebug()<<minimumTabWidth<<"; "<<tabTextWidth<<"; "<< tabMaxWidth;
kDebug()<<qBound(minimumTabWidth, tabTextWidth, tabMaxWidth);
QSize size (qBound(minimumTabWidth, tabTextWidth, tabMaxWidth),
QTabBar::tabSizeHint(index).height());
return size;
}
QPixmap ViewContainerTabBar::dragDropPixmap(int tab)
{
......@@ -766,22 +789,11 @@ void TabbedViewContainer::updateActivity(ViewProperties* item)
void TabbedViewContainer::updateTitle(ViewProperties* item)
{
// prevent tab titles from becoming overly-long as this limits the number
// of tabs which can fit in the tab bar.
//
// if the view's title is overly long then trim it and select the
// right-most 20 characters (assuming they contain the most useful
// information) and insert an elide at the front
const int MAX_TAB_TEXT_LENGTH = 20;
QListIterator<QWidget*> iter(widgetsForItem(item));
while ( iter.hasNext() )
{
const int index = _stackWidget->indexOf( iter.next() );
QString tabText = item->title();
if (tabText.count() > MAX_TAB_TEXT_LENGTH)
tabText = tabText.right(MAX_TAB_TEXT_LENGTH).prepend("...");
_tabBar->setTabText( index , tabText );
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment