summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fixup update rect regression by adjusting expose rectangles.Andreas Aardal Hanssen2009-04-062-8/+95
| | | | | | | | | | | | | | | | | | | | | | | This change shows a limitation in Graphics View caused by QPen's default width being 0 (cosmetic), while Graphics View actually does not support cosmetic pens at all. Because items are at risk of drawing lines that poke 1 pixel outside their bounding rect, QGraphicsView must look for items that are up to one pixel larger than their bounding rect mapped to viewport coordinates. Furthermore, mapToScene(QRect) forces us to adjust the input rectangle by (0, 0, 1, 1), because it uses QRect::bottomRight() (etc) when mapping the rectangle to a polygon (which is _wrong_). Since this behavior has been there since 4.2, we don't want to fix it in a 4.5 patch release... The only _proper_ fix to this problem is for the view to know the item's "adjust" in device coordinates, allowing items to use cosmetic pens freely. Fex, we could introduce QGraphicsItem::viewportMargins() or so. Added an autotest to ensure this doesn't break again. Reviewed-by: bnilsen
* Fixes: Wrong adjustment of rect added in ↵Bjoern Erik Nilsen2009-04-061-3/+2
| | | | | | | | | | 0aa2ef27249dc8e782c2942340776bb19de80a0d RevBy: TrustMe AutoTest: tst_QGraphicsItem::boundingRegion() pass again Details: The original code adjusted the QRect version of a mapped bounding rect, wheras my patch adjusted a mapped bounding rect (QRectF) and then converted it to a QRect.
* Fixes: We have to adjust the item's bounding rect.Bjoern Erik Nilsen2009-04-061-2/+16
| | | | | | | | RevBy: Andreas AutoTest: Still pass Details: QRectF::intersects does not work with flat rectangles, so we cannot intersect the bounding rect without adjusting it first.
* Fixes: Optimize the way we adjust rectangles.Bjoern Erik Nilsen2009-04-062-47/+68
| | | | | RevBy: Olivier AutoTest: Still pass
* Fixes: Partially revert 9b0af2395c84a6895a5ce6368f151d4ec00c8755Bjoern Erik Nilsen2009-04-061-2/+2
| | | | | | | | | | RevBy: Andreas AutoTest: tst_QGraphicsView::itemAt2 pass again Details: A QPoint in the view has to be mapped to a pixel in the scene, otherwise it won't be possible to e.g. click on items that are smaller than a pixel. So...we have to optimize the hit-testing code in another way
* Fixes: Minimize QVariant overhead related to QGraphicsItem::itemChange.Bjoern Erik Nilsen2009-04-063-43/+69
| | | | | RevBy: Andreas AutoTest: included
* Optimise QPainterPath::contains(QPointF)Lars Knoll2009-04-061-1/+1
| | | | | | We can shortcut quite some calculations for the common case by first checking whether the point is contained in the control point rect.
* Optimise QGraphicsScene/View::items(const QPointF &pos)Lars Knoll2009-04-063-14/+88
| | | | | Implement specialized (and more efficient versions) of item_helper() and child_helper() that test for QPointF in the scene.
* Fixes: Simplify the cut-offs and be more agressive :-)Bjoern Erik Nilsen2009-04-063-42/+68
| | | | | AutoTest: Still pass. Details: It's easier to read and understand the code now.
* Fixes: Discard update requests if possible.Bjoern Erik Nilsen2009-04-062-10/+35
| | | | | | | | AutoTest: Still pass. Details: Update requests can be discarded if the item itself is clipped away and the item clips all its children to shape. This cut-off is extremely effective (and aggressive:))
* Fixes: Don't bother updating hidden items.Bjoern Erik Nilsen2009-04-062-1/+4
| | | | AutoTest: Still pass
* Fixes: Do not update children if not required.Bjoern Erik Nilsen2009-04-061-1/+2
| | | | AutoTest: Still pass
* Fixes: Don't check the force boolean.Bjoern Erik Nilsen2009-04-061-1/+1
| | | | Details: It's clipped away regardless.
* Fixes: Minimize QVariant constr/destr in setPosHelper.Bjoern Erik Nilsen2009-04-061-2/+3
| | | | RevBy: TrustMe
* Fixes: Optimize QGraphicsViewPrivate::itemUpdated.Bjoern Erik Nilsen2009-04-061-21/+19
| | | | | | | AutoTest: Still pass Details: Get rid of QTransform::inverted()/operator*= and do nothing if the item clips all its children and the update rect is outside the bounding rect.
* Fixes: Discard update requests if possible.Bjoern Erik Nilsen2009-04-063-21/+44
| | | | | | | | AutoTest: Still pass. Details: Update requests can be discarded if the item itself is clipped away and the item clips all its children to shape. This cut-off is extremely effective (and aggressive:))
* Fixes: Don't bother processing items that are clipped away.Bjoern Erik Nilsen2009-04-062-52/+67
| | | | RevBy: Andreas
* Fixes: Optimization: Clip path is empty if the bounding rect is empty.Bjoern Erik Nilsen2009-04-061-1/+10
| | | | RevBy: TrustMe
* Fixes: Clever invalidating of the cached clip path.Bjoern Erik Nilsen2009-04-062-13/+129
| | | | | | | | RevBy: Andreas AutoTest: still pass Details: Adds emptyClipPath bit, a cut-off to test if the item has an empty clip path (i.e., is clipped away). Also adds code for invalidating the cache from inside setPos().
* Fixes: Compile on funky scratchbox ARM compiler.Bjoern Erik Nilsen2009-04-061-1/+1
|
* Fixes: Get rid of lots of calls to qFuzzyCompare.Bjoern Erik Nilsen2009-04-062-3/+9
| | | | | | | RevBy: Olivier AutoTest: Still pass. Details: Items usually don't have effective opacity, i.e. it is 1.0, so don't bother doing fuzzy compare if that's the case.
* Fixes: Only use the parent's cached clip path if it is clipped.Bjoern Erik Nilsen2009-04-061-2/+3
| | | | | RevBy: TrustMe Details: ...otherwise it'll be empty and too much will be clipped away.
* Add a cut-off for simple rectangle lookups.Andreas Aardal Hanssen2009-04-061-0/+5
| | | | | | | | Make sure we use the rect-variation of QGraphicsScene's item lookup functions if the view has a simple transform and a simple expose region. Reviewed-by: Bjoern Erik Nilsen <bjorn.nilsen@nokia.com>
* Fixes: Cleanup/Optimize QGraphicsView::findItems.Bjoern Erik Nilsen2009-04-063-115/+94
| | | | | | | | | | | | | | RevBy: Alexis AutoTest: Still pass Details: findItems() does almost exactly the same as QGraphicsView::items, the only difference is that it checks whether we are about to redraw all items. Next step is to optimize the items_helper functions. The patch does also include a fix for ::items/childItems_helper(const QPainterPath ...); it didn't take Qt::Intersects/ContainsItemBoundingRect into account (in the same fashion as we do in the other helper functions).
* Fixes: Optimization: Cache QGraphicsItem::clipPath().Bjoern Erik Nilsen2009-04-062-7/+53
| | | | | | RevBy: Alexis AutoTest: Still pass Details: No-brainer.
* Fixes: Don't fill the pixmap because we will copy the cache into it.Alexis Menard2009-04-061-3/+1
| | | | | RevBy: bnilsen AutoTest: All pass + plasma ok
* Fixes: Be a bit more smarter when calling setGeometry from itemChangeAlexis Menard2009-04-066-29/+105
| | | | | | | | RevBy: bnilsen AutoTest: Bench Details : if we come from setPosHelper (so itemChange) we don't need to do all the stuff regarding the size in setGeometry because the size doesn't change. I remove two calls to fullUpdateHelper and update() because prepareGeometryChange already call updateHelper and setPosHelper call fullUpdaterHelper too so we don't need to call them inside setGeometry. We can only call prepareGeometryChange only if we don't come from setPos.
* Fixes: Small optimization in QGraphicsItem::clipPath().Bjoern Erik Nilsen2009-04-061-7/+6
| | | | | | RevBy: Andreas Details: Use QPainterPath::addRect() rather than addPolygon() and closeSubPath().
* Fixes: Optimize: QGraphicsItem::clipPath.Bjoern Erik Nilsen2009-04-061-31/+15
| | | | | RevBy: Andreas AutoTest: Still pass
* Fixes: Speed up QGrahicsItemPrivate::effectiveOpacity().Bjoern Erik Nilsen2009-04-062-1/+13
| | | | | RevBy: Andreas AutoTest: tst_QGraphicsItem::opacity still passes
* Fixes: Optimization: Important cut-offs for QTransform.Bjoern Erik Nilsen2009-04-062-3/+34
| | | | | | | Task: none RevBy: Samuel AutoTest: Still pass Details: Please do not perform (potentially expensive) calculations just for fun :)
* Fixes: Get rid of a gazillion calls to QTransform::operator*=.Bjoern Erik Nilsen2009-04-062-16/+27
| | | | Details: Be a little bit smarter before doing *= :)
* Fixes: Small optimization: reduce calls to QTransform::type().Bjoern Erik Nilsen2009-04-061-7/+8
| | | | | | | | | | Task: none RevBy: Ariya Hidayat AutoTest: Still pass. Details: QTransform::type() is cached, so only the first call to it should be expensive. However, it is not inlined so there's an overhead involved (especially when these functions are called a gazillion times).
* Fixes: Use QRect::isEmpty() rather than isNull() if possible.Bjoern Erik Nilsen2009-04-063-7/+7
| | | | | | RevBy: Andreas Details: Note that isNull() implies isEmpty(), but it only catches the cases where width and height is 0.
* Fixes: Cleanup calls to QGraphicsViewPrivate::updateRect()/updateRegion()Bjoern Erik Nilsen2009-04-061-14/+5
| | | | | | Details: Checking for QRect::isNull() was wrong in the first place, and checking for isEmpty()/isNull() is overhead after 4a491a84aeba68279927597a261522dcc23bb3ff.
* Fixes: Optimize QGraphicsViewPrivate::updateRect()/updateRegion().Bjoern Erik Nilsen2009-04-061-0/+6
| | | | | | | | Details: Those cut-offs are extremely important. After few seconds interaction with the iphone demo, updateRect() was called approx. 3000 times with an empty rect. Then imagine what happens when having e.g. FullViewportUpdate. We do q->viewport()->update() JUST FOR FUN!
* Fixes: Optimize QGraphicsView::itemUpdated.Bjoern Erik Nilsen2009-04-061-3/+10
| | | | | | | | Task: - RevBy: Andreas AutoTest: - Details: Accumulate the parentToItem transform as we iterate instead of creating it from bottom-up each time.
* Doc - Mentioned what the default filters are forKavindra Devi Palaraja2009-04-061-1/+4
| | | | | | | QFileSystemModel::filter(). Task-number: 250285 Reviewed-by: Benjamin Poulain <benjamin.poulain@nokia.com>
* Rename these files to have lowercase .txt extension.Thiago Macieira2009-04-062-0/+0
| | | | | | | mkdist doesn't case-insensitive comparison. Reviewed-by: TrustMe BT: yes
* Install the animation.mng file.Thiago Macieira2009-04-061-1/+1
| | | | | | | | Otherwise, for people who install Qt (everyone outside Nokia), the animation file isn't present. Reviewed-by: Trust Me BT: yes
* Corrected typo.jasplin2009-04-061-1/+1
| | | | Reviewed-by: jasplin
* Doc - Clarified that button style on X11 platforms may depend on theKavindra Devi Palaraja2009-04-061-1/+2
| | | | | | | desktop environment. Task-number: 250338 Reviewed-by: Jens Bache-Wiig <jbache@trolltech.com>
* Remove QTDIR dependency from moc autotestSimon Hausmann2009-04-061-10/+26
| | | | | | | Use qmake -query QT_INSTALL_HEADERS at test startup time instead of relying on the dead QTDIR environment variable. Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Moc autotest cleanupSimon Hausmann2009-04-061-12/+0
| | | | | | Remove unused QTDIR tests. Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Fix moc autotest failuresSimon Hausmann2009-04-062-3/+11
| | | | | | | | | | | | We have to pass the correct include paths when testing the multiple inheritance warning, because we want moc to find the QtGui and QObject headers. In addition we have to adjust the line numbers and include QObject in the qobject test to avoid a warning about the unknown QObject superclass. Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* BT: Fix a crash when running a widget window modal when it has no parentNorwegian Rock Cat2009-04-061-7/+5
| | | | | | | | We changed the logic for determining sheets, but it seems we forgot to take the parentWidget() into account. It's required for WindowModality to make any sense. Reviewed-by: Richard Moe Gustavsen
* QThread::start(): priority has no effect on Linux systemsBradley T. Hughes2009-04-061-0/+12
| | | | | | | | | The default scheduling policy on Linux doesn't allow specifying thread priorities, so the priority passed to start() and setPriority() has no effect. Document this. Task number: 249997 Reviewed-by: Kavindra Devi Palaraja <kavindra.palaraja@nokia.com>
* Fix up color matching on 64-bit Cocoa.Norwegian Rock Cat2009-04-061-7/+38
| | | | | | | | | | | | | | | | It seems that GetThemeTextColor is not available at all for 64-bit versions of the operating system and there is no good equivalent. We were using a technique where we would create a small pixmap and then use HIThemeSetTextFillColor() with the proper enum. However, this function will silently set a black color if it doesn't know about the enum. So, we get black when we really shouldn't. It also seems to produce colors that are a bit different from the Carbon function. So, in the meantime, just hard code the values in. It might break if you are hacking the resources in Mac OS X, but we'll have to live with that until we get a real function. Task-number: 248918 Reviewed-by: Prasanth Ullattil
* Fix QNetworkReply's automatic pushing of a cache when the cache isThiago Macieira2009-04-061-17/+27
| | | | | | | | | | | | | | | | | | | | | | | | | more than 64k. This issue was found by Warwick: the copyReadyRead() slot is called only once as a result of readyRead(), but since there's no more data to be received (the source QIODevice is a QBuffer), we'll never get a readyRead() again. So, if we don't have a limited buffer size, we should read everything. This applies to QFile as well. The side-effect is that we cause the entire QFile to be loaded to memory, so if you had a 2 GB cache entry, you'll probably run out of memory. Future optimisations: - don't memcpy the data from a QBuffer into another buffer - find a way to avoid loading the entire contents of the file (probably not possible with the default QNetworkDiskCache since that may compress the data, so we won't know the size and thus can't fake finished()) Reviewed-by: Warwick Allison
* Update the qmake documentation regarding when the .qmake.cache isAndy Shaw2009-04-061-0/+3
| | | | | | processed. Reviewed-by: TrustMe