-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 @@ -469,8 +469,9 @@ void KOAgendaItem::paintEvent ( QPaintEvent *e ) yy = y(); else yy = mCellYTop * ( height() / cellHeight() ); int xx = x(); + if ( xPaintCoord != xx || yPaintCoord != yy || wPaintCoord != width() || hPaintCoord != height()) { xPaintCoord= xx; yPaintCoord = yy; @@ -496,9 +497,28 @@ void KOAgendaItem::paintEvent ( QPaintEvent *e ) 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() { |