summaryrefslogtreecommitdiffabout
path: root/korganizer/koagendaitem.cpp
Side-by-side diff
Diffstat (limited to 'korganizer/koagendaitem.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koagendaitem.cpp22
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
@@ -467,12 +467,13 @@ void KOAgendaItem::paintEvent ( QPaintEvent *e )
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();
@@ -494,13 +495,32 @@ void KOAgendaItem::paintEvent ( QPaintEvent *e )
} 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") ) {