summaryrefslogtreecommitdiff
Unidiff
Diffstat (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
@@ -431,50 +431,65 @@ void OImageScrollView::keyPressEvent(QKeyEvent * e)
431 } 431 }
432 QScrollView::keyPressEvent(e); 432 QScrollView::keyPressEvent(e);
433} 433}
434 434
435void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph) 435void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph)
436{ 436{
437 int w = clipw; 437 int w = clipw;
438 int h = cliph; 438 int h = cliph;
439 int x = clipx; 439 int x = clipx;
440 int y = clipy; 440 int y = clipy;
441 bool erase = false; 441 bool erase = false;
442 442
443 if (!_pdata.size().isValid()) { 443 if (!_pdata.size().isValid()) {
444 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor()); 444 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor());
445 return; 445 return;
446 } 446 }
447
447 if (w>_pdata.width()) { 448 if (w>_pdata.width()) {
448 w=_pdata.width(); 449 w=_pdata.width();
449 x = 0; 450 x = 0;
450 erase = true; 451 erase = true;
451 } else if (x+w>_pdata.width()){ 452 } else if (x+w>_pdata.width()){
452 x = _pdata.width()-w; 453 x = _pdata.width()-w;
453 } 454 }
455
454 if (h>_pdata.height()) { 456 if (h>_pdata.height()) {
455 h=_pdata.height(); 457 h=_pdata.height();
456 y = 0; 458 y = 0;
457 erase = true; 459 erase = true;
458 } else if (y+h>_pdata.height()){ 460 } else if (y+h>_pdata.height()){
459 y = _pdata.height()-h; 461 y = _pdata.height()-h;
460 } 462 }
461 if (erase||_original_data.hasAlphaBuffer()) { 463
464 if (erase||_original_data.hasAlphaBuffer()||clipy>_pdata.height()||clipx>_pdata.width()) {
465 odebug << QSize(clipx,clipy) << " # " << QSize(clipw,cliph) << oendl;
462 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor()); 466 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor());
463 } 467 }
464 p->drawPixmap(clipx,clipy,_pdata,x,y,w,h); 468 odebug << QSize(x,y) << " - " << QSize(w,h) << oendl;
469 if (clipy<=_pdata.height()&&clipx<=_pdata.width()) {
470#if 0
471 odebug << "painting image content" << oendl;
472#endif
473 p->drawPixmap(clipx,clipy,_pdata,x,y,w,h);
474 }
475#if 0
476else {
477 odebug << "not painting image content" << oendl;
478 }
479#endif
465} 480}
466 481
467/* using the real geometry points and not the translated points is wanted! */ 482/* using the real geometry points and not the translated points is wanted! */
468void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) 483void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e)
469{ 484{
470 int mx, my; 485 int mx, my;
471 mx = e->x(); 486 mx = e->x();
472 my = e->y(); 487 my = e->y();
473 if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) { 488 if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) {
474 int diffx = _mouseStartPosX-mx; 489 int diffx = _mouseStartPosX-mx;
475 int diffy = _mouseStartPosY-my; 490 int diffy = _mouseStartPosY-my;
476 scrollBy(diffx,diffy); 491 scrollBy(diffx,diffy);
477 } 492 }
478 _mouseStartPosX=mx; 493 _mouseStartPosX=mx;
479 _mouseStartPosY=my; 494 _mouseStartPosY=my;
480} 495}