-rw-r--r-- | libopie2/opiemm/oimagescrollview.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/libopie2/opiemm/oimagescrollview.cpp b/libopie2/opiemm/oimagescrollview.cpp index a8165a4..73df3ff 100644 --- a/libopie2/opiemm/oimagescrollview.cpp +++ b/libopie2/opiemm/oimagescrollview.cpp @@ -431,50 +431,65 @@ void OImageScrollView::keyPressEvent(QKeyEvent * e) } QScrollView::keyPressEvent(e); } void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph) { int w = clipw; int h = cliph; int x = clipx; int y = clipy; bool erase = false; if (!_pdata.size().isValid()) { p->fillRect(clipx,clipy,clipw,cliph, backgroundColor()); return; } + if (w>_pdata.width()) { w=_pdata.width(); x = 0; erase = true; } else if (x+w>_pdata.width()){ x = _pdata.width()-w; } + if (h>_pdata.height()) { h=_pdata.height(); y = 0; erase = true; } else if (y+h>_pdata.height()){ y = _pdata.height()-h; } - if (erase||_original_data.hasAlphaBuffer()) { + + if (erase||_original_data.hasAlphaBuffer()||clipy>_pdata.height()||clipx>_pdata.width()) { + odebug << QSize(clipx,clipy) << " # " << QSize(clipw,cliph) << oendl; p->fillRect(clipx,clipy,clipw,cliph, backgroundColor()); } - p->drawPixmap(clipx,clipy,_pdata,x,y,w,h); + odebug << QSize(x,y) << " - " << QSize(w,h) << oendl; + if (clipy<=_pdata.height()&&clipx<=_pdata.width()) { +#if 0 + odebug << "painting image content" << oendl; +#endif + p->drawPixmap(clipx,clipy,_pdata,x,y,w,h); + } +#if 0 +else { + odebug << "not painting image content" << oendl; + } +#endif } /* using the real geometry points and not the translated points is wanted! */ void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) { int mx, my; mx = e->x(); my = e->y(); if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) { int diffx = _mouseStartPosX-mx; int diffy = _mouseStartPosY-my; scrollBy(diffx,diffy); } _mouseStartPosX=mx; _mouseStartPosY=my; } |