summaryrefslogtreecommitdiff
path: root/libopie2
Side-by-side diff
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiemm/oimagescrollview.cpp19
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
@@ -441,30 +441,45 @@ void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clip
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;