summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch '4.6' of scm.dev.nokia.troll.no:qt/qt-s60-public into ↵Qt Continuous Integration System2009-12-161-1/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.6-integration * '4.6' of scm.dev.nokia.troll.no:qt/qt-s60-public: (31 commits) Fixed qstylesheetstyle benchmark for Symbian Fixed qdiriterator benchmark for Symbian Fixed events benchmark postEvent function Fix for QTBUG-4908 SVG transparency rendering problem. Long informative texts causes messagebox to grow outside of screen area qreal-ization qreal-ization qreal-ization QS60Style: Remove layouts with mirrored information Fixed qgraphicsview autotest build for winscw. Enabled input method update code for all platforms. (ODBC) Fixes segfault when error string is larger than 256 chars. Fixed QGraphicsView benchmark for Symbian. FEP indicator shown in status pane when it should not Skipped the most memory intensive tests in QByteArray benchmark. qreal-ization qreal-ization QS60Style: Theme graphics for QSlider in 3.1 QS60Style: Groove changes caused build break of S60 3.1 Slow spinbox on N95 when using keys Up/Down ...
| * Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/qt into 4.6-s60axis2009-12-1612-33/+181
| |\ | | | | | | | | | | | | Conflicts: src/s60installs/bwins/QtGuiu.def
| * | qreal-izationAleksandar Sasha Babic2009-12-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Using math wrapper functions instead direct call. This gives us top-level control to what (single/double) precision we are effectively using. Task-number: QTBUG-4894 Reviewed-by: janarve Reviewed-by: Kim Motoyoshi Kalland
* | | Merge commit 'origin/4.6' into 4.6Olivier Goffart2009-12-141-3/+21
|\ \ \ | | |/ | |/|
| * | Merge commit oslo-staging-2/4.6 into upstream/4.6Olivier Goffart2009-12-1412-30/+160
| |\ \
| * | | Fix crashes when deleting QWidgets and QGraphicsItems in touch event handlers.Bradley T. Hughes2009-12-111-3/+21
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use QWeakPointer to bail out early if a widget is deleted while we are delivering/propagating a TouchBegin event. In QGraphicsScene, we need to make sure that we clear the scene's active touch points for items that are removed from the scene. This allows us to detect when an item is removed during TouchBegin event delivery/propagation. Unlike QWidget, propagation continues since we use a hit-test instead of the item's hierarchy for propagation. Task-number: QTBUG-6654 Reviewed-by: bnilsen
* | | Fixed bug in graphics effects caching of graphics item hierarchies.Samuel Rødal2009-12-141-2/+9
| | | | | | | | | | | | | | | | | | | | | Make sure to invalidate the cache if the transform of a sub-item changes. Reviewed-by: Bjørn Erik Nilsen
* | | Added InvalidateReason to invalidateCache to optimize effectsSamuel Rødal2009-12-141-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | This lets us ignore the invalidateCache call when the transform of a graphics item with an effect changes, and the cached system is LogicalCoordinates and cached mode is not PadToEffectiveBoundingRect. Reviewed-by: Bjørn Erik Nilsen
* | | Optimize QGraphicsItemEffectSourcePrivate::pixmap() for QGraphicsPixmapItems.Samuel Rødal2009-12-141-7/+11
| |/ |/| | | | | | | | | | | Even for DeviceCoordinate mode we can return the raw pixmap if the graphics item size is untransformed. Reviewed-by: Bjørn Erik Nilsen
* | Fixes Graphicsitem transformation problems when grouping/ungrouping.Yoann Lopes2009-12-111-2/+44
| | | | | | | | | | | | | | | | | | | | | | New transformation properties added in 4.6, such as rotation or transformOriginPoint were not taken into account in addTogroup and removeFromGroup. Autotest and manual test included. Task-number: QTBUG-5071 Reviewed-by: bnilsen
* | Merge branch '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.6Jan-Arve Sæther2009-12-111-3/+8
|\ \
| * | Fixed qgraphicseffectsource autotest.Samuel Rødal2009-12-111-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prevent crashing when asking for a source pixmap in logical coordinates and PadToEffectiveBoundingRect mode. Also, change the expected values for the test that uses LogicalCoordinates and PadToEffectiveBoundingRect mode to reflect that the boundingRectFor() function applies padding in device coordinates (and in this case there is a scale by 2 when drawing the effect). Reviewed-by: Bjørn Erik Nilsen
* | | Add a simple check for a common wrong usage to avoid infinite recursionJan-Arve Sæther2009-12-112-10/+20
|/ / | | | | | | Reviewed-by: Alexis
* | Fix redraw bugs when using graphics effects in device coordinate mode.Samuel Rødal2009-12-105-9/+77
| | | | | | | | | | | | | | | | | | | | QGraphicsEffect::boundingRectFor() needs the source bounding rect in device coordinates. This patch fixes the documentation to reflect this, and fixes some internal usage of boundingRectFor() to ensure it always gets the device rect of the source. Task-number: QTBUG-5918 Reviewed-by: Bjørn Erik Nilsen
* | Doc: The ctor of of QGraphicsLayout might install the layout.Jan-Arve Sæther2009-12-101-0/+4
| | | | | | | | Task-number: QTBUG-6447
* | Fix a crash on the focus chain when removing items from the scene.Alexis Menard2009-12-094-9/+10
|/ | | | | | | | | | | | | | | The crash was because of the dangling pointer set on the tabFocusFirst attribute in QGraphicsScene. A child which was the tabFocusFirst was removed from the scene and fixFocusChainBeforeReparenting was setting the new tabFocusFirst pointer to the parent (since in that example it was the focusNext) but later on the parent was removed also from the scene (due to the recursion of removeItem if you call it with the parent : first children, then the parent itself) and fixFocusChainBeforeReparenting was not called again so if you delete the parent then the scene has the dangling pointer set. Task-number:QTBUG-6544 Reviewed-by:janarve
* Doc: Explicitly mention that QWidget/QGraphicsItem takes ownership of effects.Bjørn Erik Nilsen2009-12-081-0/+2
|
* Remove id property from QGraphicsObjectAlan Alpert2009-12-082-8/+0
| | | | | | | | | | It is not actually useful (exact same READ/WRITE as objectName) and is confusing when used in QML. Task-number: QTBUG-6580 Reviewed-by: andreas Reviewed-by: alexis Reviewed-by: ogoffart
* Fixed memory leaks when removing a QGraphicsEffect from a QGraphicsItem or ↵Yoann Lopes2009-12-072-17/+7
| | | | | | | | | | | | | | QWidget with setGraphicsEffect(0). The effect was not deleted in that case, problem solved for both QGraphicsItem and QWidget. Autotest included. Task-number: QTBUG-5917 Reviewed-by: bnilsen
* Merge commit 'origin/4.6' into 4.6Olivier Goffart2009-12-041-1/+1
|\
| * Merge commit 'c0b81480b2909b18ac15bdd124a562ae005c2f41' into origin-4.6Olivier Goffart2009-12-041-2/+2
| |\
| * | Fix for virtual keyboard poping up when it should not.Robert Griebl2009-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Pressing and releasing the finger/stylus on an editable text widget should only trigger the input method if the release position is still within the widget's boundaries. Reviewed-by: axis
* | | Merge branch '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.6Jan-Arve Sæther2009-12-043-5/+4
|\ \ \
| * | | Fixes clipping bug in the embedded dialogs demo.Yoann Lopes2009-12-041-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem was that when using DeviceCoordinateCache for items in a scene, newly exposed areas were wrongly painted over the Pixmap in the cache, instead of blending into it. Autotest included. Task-number: QTBUG-657 Reviewed-by: Andreas Reviewed-by: bnilsen
| * | | Fix crash when QGraphicsItem destructor deletes other QGraphicsItemOlivier Goffart2009-12-041-2/+2
| | |/ | |/| | | | | | | | | | | | | Same fix as e7a10b00be3e4aa197900ecf424e6d44b07248ae Reviewed-by: Alexis
| * | Some doc fixesJan-Arve Sæther2009-12-031-2/+2
| |/ | | | | | | | | | | - Remove a lie. - When referring to the size of an anchor, refer to it consistently as 'spacing' instead of magnitude.
* | Merge branch 'fleury-ooo-sequential' into 4.6Jan-Arve Sæther2009-12-044-206/+438
|\ \ | |/ |/|
| * Made sure that we didn't reference dangling parallel anchors.Jan-Arve Sæther2009-12-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We cannot delete the parallel anchors before we do the actual vertex restoration, since the parallel anchors created by vertex simplification will always be connected to some of the AnchorVertexPair found in simplifiedVertices that we iterate over later. Thus, we must delete the parallel anchors created by vertex simplification after we have done the restoration of the vertices. (the parallel anchor will be properly dealt with (i.e. taken out of the graph as we do the restoration)), so not deleting it won't cause it to be revisited later if that is a worry. Reviewed-by: Eduardo M. Fleury
| * Rename the global limit to g_offset.Jan-Arve Sæther2009-12-031-13/+13
| | | | | | | | | | It is both a limit and an offset (the offset is dictated by the limit), but in the code is it interpreted as an offset.
| * Merge branch 'ooo-sequential' of ↵Jan-Arve Sæther2009-12-014-206/+438
| |\ | | | | | | | | | | | | | | | | | | git://gitorious.org/~fleury/qt/fleury-openbossa-clone into fleury-ooo-sequential Conflicts: tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
| | * QGAL: Remove deprecated assert clausesEduardo M. Fleury2009-11-271-16/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | These assert messages are no longer valid since some anchors can have their size not respected if they are in parallel with the layout and have size equal to "QWIDGETSIZE_MAX". Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
| | * QGAL: Refactor solvePreferred to support min/maxPrefSizeEduardo M. Fleury2009-11-271-24/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the addition of min and maxPrefSizeHints, the logic used in the preferred simplex had to be changed. The concept behind it is still the same, we minimize the deviation from each item's preferred size. Previously we would make an special effort to avoid items being shrunk, that's why the "shinker" simplex variables had larger multipliers in the objective function. Now we still have variables with large multipliers and others with small mutlipliers, but rather than differentiating between shrinker and/or grower variables, we classify them as "soft" or "hard". "Soft" variables, or slacks, are those that allow the anchor to change its value up to the minPref or maxPref boundaries, OTOH, "hard" slacks are those that allow the item to go all the way to its minimum or maximum sizes. Naturally, the "hard" slacks get large coeficients in the objective function while the "soft" ones get small ones. Now all the slack variables are restricted in size as to respect the boundaries of each interval: - Minimum to MinimumPreferred, - MinimumPreferred to Preferred, - Preferred to MaximumPreferred and - MaximumPreferred to Maximum With such limits, the SizeHint constraints became redundant in the calculation of preferred sizes so they are no longer used. Additionally, as an optimization, if a given interval is NULL (for instance, MinimumPreferred is equal to Preferred), then the associated slack variable would have its size restricted to zero, therefore it is not created at all. Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
| | * QGAL: Add AnchorData::minPrefSize and maxPrefSizeEduardo M. Fleury2009-11-273-46/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the addition of out-of-order sequential simplification, the calculation of preferred sizes became more complicated. In the past, when parallel anchors or the simplex solver had to decide between conflicting preferred sizes, they could assume that increasing the size of an anchor was better than decreasing it. That assumption comes from early discussions with Jan-Arve regarding the preferred size calculation algorithm. However, when ooo-sequential anchors exist, we can have a situation where increasing the size of an anchor can actually reduce the size of a simplified anchor inside it. To solve that, we need to expose some information regarding the internal anchors to the decision makers outside, ie. the simplex solver and parallel anchors. This information is now being provided in terms of two additional values present in each anchor, as follows: - minPrefSize: Always in the interval [minSize, prefSize]. Denotes the minimum size an anchor can assume as to avoid shrinking anchors below their preferred sizes. - maxPrefSize: Always in the interval [prefSize, maxSize]. Similar to the value above, but refering to the maximum size the anchor should assume. Some examples: 1) Standard anchor: 10 / 50 / 500 o----------------------------> Becomes: 10 / 50 / 50 / 500 / 500 o----------------------------> We'd rather grow than shrink, so we say that our preferred size is 50, but if we need to grow up to 500, that's OK. Note that we are still able to shrink all the way to 10, but it will hurt us more. 2) Two anchors: 100 / 200 / 500 10 / 20 / 40 o--------------------> <-------------------o Resulting sequential anchor: 60 / 160 / 180 / 480 / 490 o------------------------------------------> The resulting anchor have a preferred size of 180 but it can "easily" grow to 480 (only the first half grows). If it had to go all the way to 490 the second half would have to shrink below its preferred size. OTOH, if it had to shrink, it could go to 160 if the second half grew. However, shrinking even more, towards 60, would require the first half to shrink below its preferred size. With this information parallel and simplex are now able to choose the best solutions when solving conflicts. Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
| | * QGAL: parallel anchors sometimes have to fix constraintsCaio Marcelo de Oliveira Filho2009-11-271-16/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For an out-of-order parallel anchor, i.e. when the second child is backwards in relation to the parallel anchor, we need to fix the constraints that used to have the second child. The parallel anchor will replace its child, but we must change the multiplier signal, so the constraint remain valid. This commit also changes the order of restoration steps, since now we depend on correct vertex information to fix back the constraints, we do it before the restoring of pair vertices. Signed-off-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> Reviewed-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org>
| | * QGAL: move second child direction check to a functionCaio Marcelo de Oliveira Filho2009-11-272-12/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | In a parallel anchor, the second child anchor may be forward or backwards in relation to the parallel itself. Moves the directionality check to a function. It'll be useful in the next commit. Signed-off-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> Reviewed-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org>
| | * QGAL: Use single arrow in "dumpGraph"Eduardo M. Fleury2009-11-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Modify the "dot" format graph to use a single arrow between each pair of vertices. Previously we would use two anchors (a black forward one and a gray backwards). With a single arrow the graph loooks cleaner. Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
| | * QGAL: Enable out-of-order sequential simplificationEduardo M. Fleury2009-11-271-46/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Modify the simplification code to allow the creation of out-of-order sequential anchors. Basically the "changedDirection" end-of-sequence condition was removed, also note that createSequence no longer bothers to revert the direction of anchors if the order it receives is not standard. Removing expect-fail clause from test since now we pass :-) Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
| | * QGAL: Support for out-of-order sequential anchorsEduardo M. Fleury2009-11-271-6/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now sequential anchors account for the fact they may be composed of anchors with different directions. Both refreshSizeHints and updateChildrenSizes have been updated to support this situation. Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
| | * QGAL: Do not revert negative anchorsJesus Sanchez-Palencia2009-11-272-23/+4
| | | | | | | | | | | | | | | | | | | | | | | | Since we now support anchors with size less then zero, we no longer need to revert anchors with negative spacing. Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
| | * QGAL: Limit absolute size of anchors and add offset to calculationEduardo M. Fleury2009-11-272-12/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit is groundwork for the support of negative-sized anchors by the simplex solver. The idea is to add to all variables an offset large enough to ensure they are never negative. The implementation limits all variable sizes in the range [-limit, limit] and feed them into the simplex with an offset of "limit". Subtracting this offset later to find out the real values. "limit" is defined as QWIDGETSIZE_MAX for platforms where qreal is double and as QWIDGETSIZE_MAX / 32 when it is float. This is to avoid numerical errors in the simplex solver. This commit also modifies the ASSERT clause inside QSimplex so it becomes less prone to false positives due to numerical errors. Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Signed-off-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
| | * QGAL: Rename internalSizeHints to applySizePolicyEduardo M. Fleury2009-11-271-10/+15
| | | | | | | | | | | | | | | | | | | | | Former name did not reflect actual work done by the function. Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
| | * QGAL: Fix memory management issues (leak + invalid read)Eduardo M. Fleury2009-11-272-6/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixing QGraphicsAnchor memory leak and access to free'd region. -- Leak: User-created anchors have two representations in QGAL, one visible externally (QGraphicsAnchor) and other internal (AnchorData). When such anchors are removed externally (QGraphicsAnchor is deleted), the former implementation ensured that the internal representation would be deleted too. However the opposite was not true. In cases where the anchors are deleted internally (in the layout destructor, for instance, or when an item is removed through the removeAt API), the public QGraphicsAnchor object would leak. This commit ensures the deletion will happen in both directions and adds protection to avoid a deletion loop. -- Invalid read: In QGAL::removeAnchor(vertex1, vertex2), we read vertex information after calling removeAnchor_helper(vertex1, vertex2). The problem is that in cases where the removed anchor is the last anchor to connect to a center vertex, its removal will cause also the removal of such vertex. Thus, accessing the vertices after the removeAnchor_helper() call is unsafe. To solve that we cache the information we need and then clear the vertex pointers to avoid errors in the future. Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Artur Duque de Souza <artur.souza@openbossa.org>
| | * QGAL: Prevent internal anchors from being exposed by QGAL::anchor()Eduardo M. Fleury2009-11-271-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adding check to prevent the structural layout anchors as well as those internal to items, from being exposed through the public API. These checks also ensure no QGraphicsAnchor instances will be created for those anchors. Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Artur Duque de Souza <artur.souza@openbossa.org>
| | * QGAL: default spacing can be unset using a negative valueEduardo M. Fleury2009-11-271-21/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After a default spacing is set through QGAL::setSpacing() family of methods, the user must be able to unset it. To avoid adding another public method, we enabled this feature by allowing a negative value to be passed to those methods. Signed-off-by: Eduardo M. Fleury <eduardo.fleury@openbossa.org> Reviewed-by: Anselmo Lacerda S. de Melo <anselmo.melo@openbossa.org>
* | | Only call updateFont if the font have changed.Alexis Menard2009-11-301-1/+2
|/ / | | | | | | | | | | | | | | | | When receiving the polish event, we call updateFont only if the font has changed (from the QApplication::font()). This avoid to clear sizeHints cache. Task-number:QTBUG-6272 Reviewed-by:janarve
* | Merge commit 'upstream/4.6' into oslo-staging-2/4.6Olivier Goffart2009-11-271-3/+3
|\ \
| * \ Merge commit oslo-staging-2/4.6 into upstream/4.6Olivier Goffart2009-11-275-226/+32
| |\ \ | | |/ | |/|
| * | Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/qt into 4.6David Boddie2009-11-253-12/+25
| |\ \
| * \ \ Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.6David Boddie2009-11-242-1/+2
| |\ \ \
| * | | | Doc: Fixes to markup.David Boddie2009-11-241-3/+3
| | | | | | | | | | | | | | | | | | | | Reviewed-by: Trust Me