[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/office/flake/lib
From:       Thomas Zander <zander () kde ! org>
Date:       2006-05-16 10:47:14
Message-ID: 1147776434.391747.454.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 541457 by zander:

Only repaint part of rubberselect that actually needs repainting


 M  +15 -4     KoShapeRubberSelectStrategy.cpp  


--- trunk/playground/office/flake/lib/KoShapeRubberSelectStrategy.cpp #541456:541457
@@ -47,20 +47,31 @@
 {
     painter.setRenderHint( QPainter::Antialiasing, false );
 
-    QColor selectColor( Qt::blue ); // todo make configurable
+    QColor selectColor( Qt::blue ); // TODO make configurable
     selectColor.setAlphaF( 0.5 );
     QBrush sb( selectColor, Qt::SolidPattern );
     painter.setPen( QPen( sb, 0 ) );
     painter.setBrush( sb );
-    painter.drawRect( converter.normalToView(m_selectRect) );
+    QRectF paintRect = converter.normalToView(m_selectRect);
+    if(painter.hasClipping())
+        paintRect = paintRect.intersect(painter.clipRegion().boundingRect());
+    painter.drawRect( paintRect);
 }
 
 
 void KoShapeRubberSelectStrategy::handleMouseMove( KoGfxEvent *event )
 {
-    m_canvas->updateCanvas(m_selectRect.normalized());
+    QPointF old = m_selectRect.bottomRight();
     m_selectRect.setBottomRight( event->point );
-    m_canvas->updateCanvas(m_selectRect.normalized());
+    QRectF moved(old.x(), old.y(), qAbs(old.x() - event->point.x()),
+            qAbs(old.y() - event->point.y()));
+    // (request) repaint vertical changed part
+    m_canvas->updateCanvas(moved.unite( QRectF(QPointF(old.x(), m_selectRect.top()),
+                    QSizeF(m_selectRect.width(), 1)) ));
+
+    // (request) repaint horizontal changed part
+    m_canvas->updateCanvas(moved.unite( QRectF(QPointF(m_selectRect.left(), old.y()),
+                    QSizeF(1, m_selectRect.height())) ));
 }
 
 void KoShapeRubberSelectStrategy::finishInteraction()
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic