summaryrefslogtreecommitdiff
authorzecke <zecke>2005-02-22 22:46:25 (UTC)
committer zecke <zecke>2005-02-22 22:46:25 (UTC)
commit9e755f078a806d6c81e1dbdbc54d12888041bbff (patch) (side-by-side diff)
tree0b49051c792eee3bb09674568e492cdac145de18
parente33e10f5643a2fb5c640667939e4139bf7b580e2 (diff)
downloadopie-9e755f078a806d6c81e1dbdbc54d12888041bbff.zip
opie-9e755f078a806d6c81e1dbdbc54d12888041bbff.tar.gz
opie-9e755f078a806d6c81e1dbdbc54d12888041bbff.tar.bz2
Do not scale the buttons in the decoration over and over again.
The logic was if the requested size is not the size of the pixmap load and scale it to the right size. The problem was the scaleButton method was changed to not scale the pixmap (to avoid bluring al will kill me for that) if the delta of the sizes was <= 4. We now do not try to scale if the delta is <= 4
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpedecoration_qws.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/library/qpedecoration_qws.cpp b/library/qpedecoration_qws.cpp
index fa38180..fb47c14 100644
--- a/library/qpedecoration_qws.cpp
+++ b/library/qpedecoration_qws.cpp
@@ -248,159 +248,159 @@ bool QPEManager::eventFilter( QObject *o, QEvent *e )
helpState = 0;
}
if ( helpState != oldState )
drawButton( w, QPEDecoration::Help, helpState );
}
break;
default:
break;
}
return QObject::eventFilter( o, e );
}
void QPEManager::drawButton( QWidget *w, QPEDecoration::QPERegion r, int state )
{
QPainter painter(w);
QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region;
painter.internalGfx()->setWidgetDeviceRegion( rgn );
painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All));
decoration->paintButton( &painter, w, (QWSDecoration::Region)r, state );
}
void QPEManager::drawTitle( QWidget *w )
{
QPainter painter(w);
QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region;
painter.internalGfx()->setWidgetDeviceRegion( rgn );
painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All));
decoration->paint( &painter, w );
decoration->paintButton(&painter, w, QWSDecoration::Menu, 0);
decoration->paintButton(&painter, w, QWSDecoration::Close, 0);
decoration->paintButton(&painter, w, QWSDecoration::Minimize, 0);
decoration->paintButton(&painter, w, QWSDecoration::Maximize, 0);
}
void QPEManager::whatsThisTimeout()
{
if ( !QWhatsThis::inWhatsThisMode() ) {
if ( inWhatsThis ) {
if ( whatsThis ) {
QWidget *w = whatsThis;
whatsThis = 0;
drawTitle( w );
}
wtTimer->stop();
} else {
QWhatsThis::enterWhatsThisMode();
helpState = 0;
updateActive();
if ( active ) {
whatsThis = active;
drawTitle( active );
// check periodically to see if we've left whats this mode
wtTimer->start( 250 );
}
}
inWhatsThis = !inWhatsThis;
}
}
//===========================================================================
static QImage *okImage( int th )
{
static QImage *i = 0;
- if ( !i || i->height() != th ) {
+ if ( !i || ::abs( i->height()-th ) > 4 ) {
delete i;
i = new QImage(scaleButton(Resource::loadImage("OKButton"),th));
}
return i;
}
static QImage *closeImage( int th )
{
static QImage *i = 0;
- if ( !i || i->height() != th ) {
+ if ( !i || ::abs( i->height()-th ) > 4 ) {
delete i;
i = new QImage(scaleButton(Resource::loadImage("CloseButton"),th));
}
return i;
}
static QImage *helpImage( int th )
{
static QImage *i = 0;
- if ( !i || i->height() != th ) {
+ if ( !i || ::abs( i->height()-th ) > 4 ) {
delete i;
i = new QImage(scaleButton(Resource::loadImage("HelpButton"),th));
}
return i;
}
static QImage *maximizeImage( int th )
{
static QImage *i = 0;
- if ( !i || i->height() != th ) {
+ if ( !i || ::abs( i->height()-th ) > 4 ) {
delete i;
i = new QImage(scaleButton(Resource::loadImage("MaximizeButton"),th));
}
return i;
}
int WindowDecorationInterface::metric( Metric m, const WindowData *wd ) const
{
switch ( m ) {
case TitleHeight:
if ( QApplication::desktop()->height() > 320 )
return 19;
else
return 15;
case LeftBorder:
case RightBorder:
case TopBorder:
case BottomBorder:
return 4;
case OKWidth:
return okImage(metric(TitleHeight,wd))->width();
case CloseWidth:
return closeImage(metric(TitleHeight,wd))->width();
case HelpWidth:
return helpImage(metric(TitleHeight,wd))->width();
case MaximizeWidth:
return maximizeImage(metric(TitleHeight,wd))->width();
case CornerGrabSize:
return 16;
}
return 0;
}
void WindowDecorationInterface::drawArea( Area a, QPainter *p, const WindowData *wd ) const
{
int th = metric( TitleHeight, wd );
QRect r = wd->rect;
switch ( a ) {
case Border:
{
const QColorGroup &cg = wd->palette.active();
qDrawWinPanel(p, r.x()-metric(LeftBorder,wd),
r.y()-th-metric(TopBorder,wd),
r.width()+metric(LeftBorder,wd)+metric(RightBorder,wd),
r.height()+th+metric(TopBorder,wd)+metric(BottomBorder,wd),
cg, FALSE, &cg.brush(QColorGroup::Background));
}
break;
case Title:
{
const QColorGroup &cg = wd->palette.active();
QBrush titleBrush;
QPen titleLines;
if ( wd->flags & WindowData::Active ) {
titleBrush = cg.brush(QColorGroup::Highlight);
titleLines = titleBrush.color().dark();
} else {
titleBrush = cg.brush(QColorGroup::Background);
titleLines = titleBrush.color();
}