src/hbwidgets/itemviews/hbabstractviewitem.cpp
changeset 28 b7da29130b0e
parent 23 e6ad4ef83b23
child 30 80e4d18b72f5
--- a/src/hbwidgets/itemviews/hbabstractviewitem.cpp	Thu Sep 02 20:44:51 2010 +0300
+++ b/src/hbwidgets/itemviews/hbabstractviewitem.cpp	Fri Sep 17 08:32:10 2010 +0300
@@ -57,7 +57,7 @@
 
 const QString KDefaultLayoutOption = "default";
 const int HbAbstractViewItemShared::ViewItemDeferredDeleteEvent = QEvent::registerEventType();
-const int HbViewItemPressDelay = 50;
+const int HbViewItemPressDelay = 100;
 
 /*!
     @alpha
@@ -466,7 +466,20 @@
         paintChildItemsRecursively(subChild, painter,option);
     }
     option->exposedRect = child->boundingRect();
+
+    bool restorePainter = false;
+    if (child->flags() & QGraphicsItem::ItemClipsToShape) {
+        painter->save();
+        restorePainter = true;
+
+        painter->setClipRect(child->boundingRect());
+    }
     child->paint(painter, option, 0);
+
+    if (restorePainter) {
+        painter->restore();
+    }
+
     // Draw children in front
     for (; i < count; ++i) {
         QGraphicsItem *subChild = children.at(i);
@@ -1265,16 +1278,10 @@
 {
     Q_D(const HbAbstractViewItem);
     if (d->mRepolishRequested) {
-        if (d->repolishOutstanding) {
-            // force the polish event in order to get the real size
-            // updateGeometry() in ::updateChildItems() causes this function to be called
-            // before QEvent::Polish of repolish() is handled from the event loop
-            QCoreApplication::sendPostedEvents(const_cast<HbAbstractViewItem*>(this), QEvent::Polish);
-        } else {
-            // needed for pure widget or at startup phase, if first polish has not yet been done
-            QEvent polishEvent(QEvent::Polish);
-            QCoreApplication::sendEvent(const_cast<HbAbstractViewItem *>(this), &polishEvent);
-        }
+        // force the polish event in order to get the real size
+        // updateGeometry() in ::updateChildItems() causes this function to be called
+        // before QEvent::Polish of repolish() is handled from the event loop.
+        QCoreApplication::sendPostedEvents(const_cast<HbAbstractViewItem*>(this), QEvent::Polish);
         QCoreApplication::sendPostedEvents(const_cast<HbAbstractViewItem *>(this), QEvent::LayoutRequest);
     }
     return HbWidget::sizeHint(which, constraint);
@@ -1340,6 +1347,11 @@
     Q_UNUSED(widget);
 
     Q_D(HbAbstractViewItem);
+    
+    if (!d->mFrontPixmapPainter) {
+        return;
+    }
+    
     if (!d->mInPaintItems) {
         bool usePixmapCache = d->usePixmapCache();