-rw-r--r-- | korganizer/koagendaitem.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp index 5ee433a..7e6fa48 100644 --- a/korganizer/koagendaitem.cpp +++ b/korganizer/koagendaitem.cpp @@ -465,16 +465,17 @@ void KOAgendaItem::paintEvent ( QPaintEvent *e ) if ( globalFlagBlockAgenda > 0 && globalFlagBlockAgenda < 5 ) return; int yy; if ( mAllDay ) yy = y(); else yy = mCellYTop * ( height() / cellHeight() ); int xx = x(); + if ( xPaintCoord != xx || yPaintCoord != yy || wPaintCoord != width() || hPaintCoord != height()) { xPaintCoord= xx; yPaintCoord = yy; wPaintCoord = width(); hPaintCoord = height(); globalFlagBlockAgendaItemUpdate = 0; paintMe( mSelected ); @@ -492,17 +493,36 @@ void KOAgendaItem::paintEvent ( QPaintEvent *e ) if ( mSelected ) { paintFrom = paintPixSel(); } else { if ( mAllDay ) paintFrom = paintPixAllday(); else paintFrom = paintPix(); } - bitBlt (this, rx, ry, paintFrom, x()+rx ,yPaintCoord+ry, rw, rh ,CopyROP); + xx += rx; + + if ( xx < 0 ) { + rw = rw + xx; + rx -= xx; + xx = 0; + if ( rw < 0 ) { + qDebug("KOAgendaItem::Width1 < 0. Returning "); + return; + } + } + if ( paintFrom->width() < xx+rw ) { + rw = paintFrom->width() - xx; + if ( rw < 0 ) { + qDebug("KOAgendaItem::Width2 < 0. Returning "); + return; + } + } + //qDebug("%d %d %d %d %d %d %d",rx, ry, paintFrom, xx ,yPaintCoord+ry, rw, rh); + bitBlt (this, rx, ry, paintFrom, xx ,yPaintCoord+ry, rw, rh ,CopyROP); } void KOAgendaItem::computeText() { mDisplayedText = mIncidence->summary(); if ( (mIncidence->type() == "Todo") ) { if ( static_cast<Todo*>(mIncidence)->hasDueDate() ) { if ( static_cast<Todo*>(mIncidence)->dtDue().date() < QDate::currentDate() ) |