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:
parent
6c9397cc51
commit
f10a38655b
1 changed files with 17 additions and 10 deletions
27
tabbox.cpp
27
tabbox.cpp
|
@ -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() );
|
||||||
|
|
Loading…
Reference in a new issue