-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) | |||
431 | } | 431 | } |
432 | QScrollView::keyPressEvent(e); | 432 | QScrollView::keyPressEvent(e); |
433 | } | 433 | } |
434 | 434 | ||
435 | void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph) | 435 | void 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 | ||
476 | else { | ||
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! */ |
468 | void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) | 483 | void 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 | } |