Don't make the tabbox wider than the screen if some window has a too

long title

svn path=/trunk/kdebase/kwin/; revision=140220
This commit is contained in:
Malte Starostik 2002-03-02 16:03:29 +00:00
parent 6c9397cc51
commit f10a38655b

View file

@ -18,6 +18,7 @@ Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org>
#include <qapplication.h> #include <qapplication.h>
#include <qdesktopwidget.h> #include <qdesktopwidget.h>
#include <qcursor.h> #include <qcursor.h>
#include <kstringhandler.h>
// specify externals before namespace // specify externals before namespace
@ -99,7 +100,7 @@ void TabBox::reset()
QRect r = desktop->screenGeometry(screen); QRect r = desktop->screenGeometry(screen);
int w = QMAX( wmax + 20, r.width()/3 ); int w = QMIN( QMAX( wmax + 20, r.width()/3 ), r.width() );
setGeometry( (r.width()-w)/2 + r.x(), setGeometry( (r.width()-w)/2 + r.x(),
r.height()/2-fontMetrics().height()*2-10 + r.y(), r.height()/2-fontMetrics().height()*2-10 + r.y(),
w, fontMetrics().height()*4 + 20 ); w, fontMetrics().height()*4 + 20 );
@ -241,19 +242,25 @@ void TabBox::paintContents()
p.fillRect( r, colorGroup().brush( QColorGroup::Background ) ); p.fillRect( r, colorGroup().brush( QColorGroup::Background ) );
if ( mode () == WindowsMode ) { if ( mode () == WindowsMode ) {
if ( currentClient() ) { if ( currentClient() ) {
int textw, maxlen = client->caption().length();
int icon = client->icon().isNull() ? 0 : 42;
QString s; QString s;
if (!client->isOnDesktop(workspace()->currentDesktop())){ do {
s.append(": "); s = QString();
} if (!client->isOnDesktop(workspace()->currentDesktop())){
s.append(": ");
}
if (client->isIconified()) if (client->isIconified())
s += QString("(")+client->caption()+")"; s += QString("(")+KStringHandler::csqueeze(client->caption(), maxlen)+")";
else else
s += client->caption(); s += KStringHandler::csqueeze(client->caption(), maxlen);
int textw = fontMetrics().width( s ); textw = fontMetrics().width( s );
maxlen--;
} while (textw > r.width() - icon);
r.setLeft( r.left() + (r.width() - textw)/2); r.setLeft( r.left() + (r.width() - textw)/2);
if ( !client->icon().isNull() ) { if ( icon ) {
int py = r.center().y() - 16; int py = r.center().y() - 16;
r.setLeft( r.left() + 20 ); r.setLeft( r.left() + 20 );
p.drawPixmap( r.left()-42, py, client->icon() ); p.drawPixmap( r.left()-42, py, client->icon() );