| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
the API for these 2 classes is identical, the implementation is almost
identical, they share the same data structures, so bite the bullet and
merge them.
this means we go back to using screenPos() instead of globalPos()
again
|
|
|
|
|
|
| |
rects instead
these are more useful, as already shown in the fingerpaint example
|
|
|
|
|
| |
this is an internal widget state variable, so the name should reflect
that (and we shouldn't include it in the docs either)
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
src/gui/graphicsview/qgraphicsitem.cpp
src/gui/graphicsview/qgraphicsitem_p.h
src/gui/graphicsview/qgraphicsscene_p.h
|
| |
| |
| |
| |
| |
| |
| | |
Unlike the span array, the clip line array is only free'd in the
destructor, so if it's already allocated we shouldn't allocate it again.
Reviewed-by: Denis Dzyubenko
|
| |
| |
| |
| |
| |
| | |
This makes debugging etc much easier, plus most of the places
controlPointRect() was called the caller had to convert the rect to a
QRectF manually.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QPainter::worldTransform() does not return identity matrix when created
on a redirected widget. It should always be identity by default, and
should only change as a result of QPainter::setWorldTransform. The
reason it didn't return identity for redirected widgets, was that we
translated the shared painter's world matrix directly.
Since we cannot modify the world matrix directly, we have to store
the shared painter's current world transform in a separate matrix
(redirectedMatrix), reset the world transform to identity, and later
combine the redirectedMatrix with world transforms set on the painter.
Note that redirection_offset was in negative coordinates before,
and that redirectionMatrix now is in positive coordinates, hence opposite
signs around.
Auto-test included.
Reviewed-by: lars
Reviewed-by: Samuel
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Also add QMetaType types as list or recognized numerical types
Reviewed-by: thierry
|
| | |
| | |
| | |
| | |
| | | |
Merge-request: 631
Reviewed-by: Olivier Goffart <ogoffart@trolltech.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
And changed QTreeWidgetItem::operator<() and
QTableWidgetItem::operator<() to use it
Merge-request: 631
Reviewed-by: Olivier Goffart <ogoffart@trolltech.com>
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This reverts commit 72e083c98c3adb07bb1578fb7f28f121fc3f34ac.
This test broke the tst_QTransform::projectivePathMapping autotest. Lars
is looking into it; for now we take the patch out.
Reviewed-by: Lars
|
| |\ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This reverts commit 07dca7a30d4bd1efd8032915700420cca3fd60fa.
Move the equality operator code back in (qFuzzyCompare) to avoid
breaking many autotests. The change should go back in later on,
possibly supplemented by a qFuzzyCompare(QTransform) function.
But until we can figure out how to not break everything this
patch has to wait.
Reviewed-by: Lars
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We use stable sorting to keep insertion order. This works fine as long
as we sort a complete list of siblings in one go, and this list already
has items in insertion order. But if we shuffle such a list, the only
way to get proper sort order again (with insertion order intact), is
if each item has a sibling index. We used to have this, but we don't
have it anymore (as it's not needed for NoIndex mode).
So until we separate the BSP index into a separate class and add this
index there, we add this workaround which uses the toplevelitems list
to ensure the items have the correct order.
Reviewed-by: bnilsen
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Before we had almost two identical functions for removing an item from
the scene. There was only minor differences depending on whether the
item was removed from QGraphicsScene::removeItem or from the item's
destructor. Now we have one function that handles both cases just fine.
Reviewed-by: Andreas
|
| | | |
| | | |
| | | |
| | | |
| | | | |
We don't have to pass optimization flags; we already have a member
variable we can test for painter state protection.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Removes a piece of code in 775ec8e96c9219981ff220ca5f3d24f0501d17b5
that was submitted by accident. The code in mouseMoveEvent is now
identical to that in master.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
If we pass the viewport widget as the widget pointer when rendering to
an arbitrary painter (e.g., onto a pixmap), we confuse the rendering
functions to thinking that it's the viewport's region we should render
into. So instead, when drawItems() is passed a painter that's different
from the view, we pass 0 for the widget.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This change introduced an unexpected interdependency for scenes with
items that enable ItemStacksBehindParent, and that contain children
that are transformed. There's a manual test for this, called
clippingAndTransformations, which shows this problem.
The bug has been fixed and this change also includes an autotest that
covers exactly this problem.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This flag toggles whether we should send notifications for setPos,
setMatrix, and setTransform. It's off by default. Docs have been updated.
All autotests pass. This change also cleans up a bit so that we both
have readable code, and keeping the optimized path for when we need to
send the notifications.
By enabling this flag by default we are going to trigger regressions in
end-user code.
Reviewed-by: bnilsen
|
| | | |
| | | |
| | | |
| | | | |
See also: 1c9032f29d4500b33622d7510b6361c99d9af296
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This reverts commit 0fc58ca3220083b9e10f88aab2e39824c2764db3.
Conflicts:
src/gui/graphicsview/qgraphicsitem.cpp
src/gui/graphicsview/qgraphicsitem_p.h
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
properly pass to drawItemHelper.
The second is a double conversion to deviceTransform in createStyleOption
of QGraphicsItem. Since the recursive drawing already give a transform
in device mode we don't need to convert it two times.
Reviewed-by:andreas
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This reapply commit 8ad5020940f10d4ecc5c5e8b3b9656531cb84ef3 and its
dependent change that has been reverted while rebasing the
recursivepaint branch.
With the new properties it is possible to easily animate transformations
Reviewed-by: Andreas
Documentation still need to be reviewed.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
E.g. item->update(QRectF(0, 0, 5, 5)); item->update();
The problem was that we discarded all update requests whenever the item
was already marked as dirty. The dirty bit only means it has pending
updates (which might be a full update). However, we have a separate bit
for full updates (fullUpdatePending) so we have to check against that
bit instead.
Makes tst_QGraphicsProxyWidget::paintEvent happy.
Another auto-test included.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Once a _q_processDirtyItems call is queued, it means we at least have
one item that is marked as dirty and we must reset it when the
_q_processDirtyItems slot is called. The problem however, was that
we didn't reset the item's dirty state if a full scene update occurred
in between, i.e. item->update(); scene.update();
We don't have to calculate the item's dirty rect if a full scene update
occurs in between, but we still have to reset its state.
Auto-test included.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
The problem was that we only marked the painted view bounding rect of
the moved item as dirty. We also have to mark its children.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Use itemCollidesWithPath, the helper function.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
The recursive items function didn't contain the special case check for
when the source and target rectangle are identical.
|
| | | |
| | | |
| | | |
| | | | |
Don't skip all indexed items that aren't transparent ;-).
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Make sure we don't claim that we have sorted all toplevel items when
we are using the BSP tree, as when painting we have only actually sorted
a subset of the elements.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Calling repaint() instead of update() is bad when having multiple
views (which GV perfectly supports). The result is that e.g. when
moving a chip in the chip demo, there's a visible lag between
each view. It can also be a performance killer on QWS, where
the surface is locked for each repaint().
Instead of calling repaint() we call update() as before, but we also
make sure the updates are processed immediately.
|
| | | |
| | | |
| | | |
| | | | |
Makes tst_QGraphicsItem::paint happy.
|
| | | |
| | | |
| | | |
| | | | |
Makes tst_QGraphicsItem::cacheMode happy.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Makes tst_QGraphicsScene::changedSignal and
tst_QGraphicsItem::setMatrix happy.
|
| | | |
| | | |
| | | |
| | | | |
Makes tst_QGraphicsScene::update happy.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We have to keep the growingItemsBoundingRect up-to-date if there's no
scene rect. The only difference now is that sceneRectChanged will not
be emitted before entering the event-loop, but the documentation
only states it'll be emitted when the scene rect changes, so we
consider it harmless.
Makes tst_QGraphicsView::sceneRect_growing and
tst_QGrahicsScene::sceneRect happy.
Reviewed-by: Andreas
|
| | | |
| | | |
| | | |
| | | | |
Partially fixes tst_QGraphicsScene::update failure.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This fixes one of two failures in tst_QGraphicsScene::items_QRectF_2.
The other seems unrelated.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The code marked the item's own stacking order as dirty when changing
its own Z value, the right thing is however to set the _parent's_ bit.
Also added missing code for when the ItemStacksBehindParent flag was
toggled.
Reviewed-by: bnilsen
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Test if the children ignore the parent's opacity if the current item's
opacity is 0.0. If any of the children do ignore the parent then we must
continue. Further optimizations are possible: if the item itself is
transparent, then don't visit children that don't ignore parent opacity.
Reviewed-by: bnilsen
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
See change 72842b2d, the patch misplaces 'p' and 'parent'. This fixes
the tst_QGraphicsItem::opacity autotests.
Reviewed-by: bnilsen
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This removes a microoptimization we did to avoid processing items whose
size was (0x0). Turns out an autotest started failing if we did this -
we have to find and draw such items because they are commonly used to
draw points (e.g., plot graphs).
Reviewed-by: bnilsen
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The children variable tested for clipping was the wrong variable. This
broke when the code was moved down as part of a previous cleanup change.
Reviewed-by: bnilsen
|
| | | |
| | | |
| | | |
| | | |
| | | | |
The code looks ugly and needs to be refactored, but at least this
reintroduces the BSP so the chip demo works fine again.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This function allows the user to disable notifications for item changes.
In QSimpleCanvasItem, all notifications are disabled by default, and
you can enable them one at a time. QGraphicsItem's behavior is to by
default enable all notifications.
A side effect of this change is that I've removed one optimization in
favor of another: by not constructing a QVariant at all when there's no
notification we get maximum performance, at the expense of constructing
it twice if there is a notification.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
connection
This connection was queued in the views before, but we don't do that
anymore, instead we re-use the _q_emitUpdated slot and process
pending updates on the views there.
Makes tst_QGraphicsView::viewportUpdateMode happy again.
|