| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also fixed how the relayout is initiated. This is because we needed
to react differently to *posted* layout requests than to sent layout
requests. (sent ones should activate the layout, posted ones should
also resize the widget).
We therefore introduced the private slot _q_relayout() in order to
be able to make the distinction between posted and sent layout
requests. (Instead of posting we now invokeMethod with a queued
connection. In order to make it behave as it was compressed we also
have to refcount the number of calls to invokeMethod.)
(Note that refCount is 16 bits only, so it should not overflow
in sane cases. In the insane cases, the worst thing that will happen
is that it'll relayout the layout one extra time).
Make sure we resize QGraphicsWidget to be within its min,max sizes
when we change one of its constraints. (e.g. we change minimumSize to
something bigger than the current size). This did not work if the
widget did not have a layout.
Send a resize event whenever a QGraphicsWidget changes its size.
This did not happen before, because in the cases where a Layout Request
was sent, we did not send a resize event. This patch changes that, so
that when we send a resize event, we do not send a Layout Request
event.
This means that a Layout Request event is now *only* sent in order to
tell a widget to relayout its children (but the widgets size was not
changed, that's why we cannot send a resize event in that case)
Also includes a unit test, and a fix to make sure that we send a resize
event when we resize due to the sizehint changing followed by a setPos
command.
Added autotests for this. (and changed some)
Many thanks to John Tapsell and Stanislav Ionascu for help.
(autotests were provided by them).
My poor explanation did not convince Frederik 100%, but he is
"convinced enough" :)
Reviewed-by: Frederik Gladhorn
|
|
|
|
|
|
|
| |
Updated version of LGPL and FDL licenseheaders.
Apply release phase licenseheaders for all source files.
Reviewed-by: Trust Me
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In QWidget and QGraphicsWidget, propagating fonts blank out the resolve
mask, mainly to help in determining inheritance. This means that when
the font is set on a QPainter with device and therefore resolved against
the device font, none of the attributes in the font will take presedence
and the font will essentially just be ignored. For QWidgets this has not
been a problem due to the fact that the painter is opened on the widget,
getting the propagated font as its device font. For QGraphicsWidget,
however, the QPainter is opened on the viewport and the viewport's font
will therefore override the propagated font when it's passed into
setFont(). To fix this, we need the font returned by
QGraphicsWidget::font() to contain the resolve mask of the inherited
parts of its font as well. This is done last minute to avoid messing
up the rules of inheritance in the QGraphicsWidget tree (problem arises
e.g. in hierarchy A -> B -> C and a font is set on B which should override
the font C has previously inherited from A.)
Task-number: QTBUG-13188
Reviewed-by: Lars
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Crashed because tabFocusFirst could end up being a dangling pointer when
removing an item from the scene before deleting it.
When setting tabFocusFirst in fixFocusChainBeforeReparenting, we now
check that the item is in the scene. If it is not, tabFocusFirst is set
to 0.
Autotest included.
Task-number: QTBUG-12056
Reviewed-by: Alexis Ménard <alexis.menard@nokia.com>
|
|
|
|
|
|
|
|
| |
When given `flags |= foo | bar;', where `flags' is a bitfield, xlC says:
The bit-field "flags" cannot be bound to a non-const reference
`flags |= foo; flags |= bar;' works.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
demos/demos.pro
mkspecs/features/resources.prf
mkspecs/features/uic.prf
src/corelib/io/qurl.cpp
src/corelib/tools/qlocale_symbian.cpp
src/gui/graphicsview/qgraphicsscene.cpp
src/gui/graphicsview/qgraphicswidget_p.cpp
src/gui/graphicsview/qgraphicswidget_p.h
src/gui/util/qsystemtrayicon_win.cpp
src/multimedia/audio/qaudioinput.cpp
tests/auto/qhostinfo/qhostinfo.pro
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The geometry was not properly set because QGraphicsWidget rely on itemChange
to update its own geometry. Now when calling setPos we also ensure that
for a widget the geometry will be up to date. Setting the flag
ItemSendsPositionChanges to false for a given widget will give a small
performance boost.
Reviewed-by:janarve
Reviewed-by:bnilsen
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QGraphicsObject"
This reverts commit 4be83fa7337c5a4eb7b0ce085aa5854af5d33252.
Conflicts:
src/gui/graphicsview/qgraphicswidget.cpp
This drops the support of QML on top of 4.6
|
|/
|
|
|
|
|
|
| |
Mostly by avoiding sending useless QVariant at construction time.
itemChange is virtual, the user implementation will never be called.
Worst case the QGW one.
Reviewed-by:janarve
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit adds a private property that QML can use to add children for a given
item. This is a custom list that calls a callback which actually reparent
the item instead of just appending in the list (otherwise it will mess up
the state of QGraphicsView). This is needed because childItems() is pretty
useless you get a list but if you append something on it then it adds
that into a copy. Also the children property is the default property
a concept used by QML.
Width and Height private properties has been added in order to support
better the integration with QGraphicsWidget in QML. The actual implementation
is in the private class of QGI and QGraphicsWidget reimplements it to return
the geometry. (In 4.7 QDeclarativeItem reimplements it too).
This change should be harmless everything is private.
Task-number:QT-2757
Reviewed-by:andreas
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
|
|
| |
Note that the constraint is only enforced when resizing the window
interactively. Calling setGeometry() will not try to enforce the
constraint.
See the graphicsview/flowlayout example for a "manual test".
Task-number: 257455
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
demos/boxes/glshaders.cpp
demos/boxes/vector.h
demos/embedded/fluidlauncher/pictureflow.cpp
demos/embedded/fluidlauncher/pictureflow.h
doc/src/desktop-integration.qdoc
doc/src/distributingqt.qdoc
doc/src/examples-overview.qdoc
doc/src/examples.qdoc
doc/src/frameworks-technologies/dbus-adaptors.qdoc
doc/src/geometry.qdoc
doc/src/groups.qdoc
doc/src/objecttrees.qdoc
doc/src/platform-notes.qdoc
doc/src/plugins-howto.qdoc
doc/src/qt3support.qdoc
doc/src/qtdbus.qdoc
doc/src/qtdesigner.qdoc
doc/src/qtgui.qdoc
doc/src/qtmain.qdoc
doc/src/qtopengl.qdoc
doc/src/qtsvg.qdoc
doc/src/qtuiloader.qdoc
doc/src/qundo.qdoc
doc/src/richtext.qdoc
doc/src/topics.qdoc
src/corelib/tools/qdumper.cpp
src/gui/embedded/qkbdpc101_qws.cpp
src/gui/embedded/qkbdsl5000_qws.cpp
src/gui/embedded/qkbdusb_qws.cpp
src/gui/embedded/qkbdvr41xx_qws.cpp
src/gui/embedded/qkbdyopy_qws.cpp
src/gui/embedded/qmousebus_qws.cpp
src/gui/embedded/qmousevr41xx_qws.cpp
src/gui/embedded/qmouseyopy_qws.cpp
src/gui/painting/qpaintengine_d3d.cpp
src/gui/painting/qwindowsurface_d3d.cpp
src/opengl/gl2paintengineex/glgc_shader_source.h
src/opengl/gl2paintengineex/qglpexshadermanager.cpp
src/opengl/gl2paintengineex/qglpexshadermanager_p.h
src/opengl/gl2paintengineex/qglshader.cpp
src/opengl/gl2paintengineex/qglshader_p.h
src/opengl/util/fragmentprograms_p.h
src/plugins/kbddrivers/linuxis/linuxiskbdhandler.cpp
src/plugins/mousedrivers/linuxis/linuxismousehandler.cpp
src/script/parser/qscript.g
src/script/qscriptarray_p.h
src/script/qscriptasm_p.h
src/script/qscriptbuffer_p.h
src/script/qscriptclass.cpp
src/script/qscriptclassdata_p.h
src/script/qscriptcompiler.cpp
src/script/qscriptcompiler_p.h
src/script/qscriptcontext.cpp
src/script/qscriptcontext_p.cpp
src/script/qscriptcontext_p.h
src/script/qscriptcontextfwd_p.h
src/script/qscriptecmaarray.cpp
src/script/qscriptecmaarray_p.h
src/script/qscriptecmaboolean.cpp
src/script/qscriptecmacore.cpp
src/script/qscriptecmadate.cpp
src/script/qscriptecmadate_p.h
src/script/qscriptecmaerror.cpp
src/script/qscriptecmaerror_p.h
src/script/qscriptecmafunction.cpp
src/script/qscriptecmafunction_p.h
src/script/qscriptecmaglobal.cpp
src/script/qscriptecmaglobal_p.h
src/script/qscriptecmamath.cpp
src/script/qscriptecmamath_p.h
src/script/qscriptecmanumber.cpp
src/script/qscriptecmanumber_p.h
src/script/qscriptecmaobject.cpp
src/script/qscriptecmaobject_p.h
src/script/qscriptecmaregexp.cpp
src/script/qscriptecmaregexp_p.h
src/script/qscriptecmastring.cpp
src/script/qscriptecmastring_p.h
src/script/qscriptengine.cpp
src/script/qscriptengine_p.cpp
src/script/qscriptengine_p.h
src/script/qscriptenginefwd_p.h
src/script/qscriptextenumeration.cpp
src/script/qscriptextenumeration_p.h
src/script/qscriptextqobject.cpp
src/script/qscriptextqobject_p.h
src/script/qscriptextvariant.cpp
src/script/qscriptfunction.cpp
src/script/qscriptfunction_p.h
src/script/qscriptgc_p.h
src/script/qscriptmember_p.h
src/script/qscriptobject_p.h
src/script/qscriptprettypretty.cpp
src/script/qscriptprettypretty_p.h
src/script/qscriptvalue.cpp
src/script/qscriptvalueimpl.cpp
src/script/qscriptvalueimpl_p.h
src/script/qscriptvalueimplfwd_p.h
src/script/qscriptvalueiteratorimpl.cpp
src/script/qscriptxmlgenerator.cpp
src/script/qscriptxmlgenerator_p.h
tests/auto/linguist/lupdate/testdata/recursivescan/project.ui
tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp
tests/auto/qkeyevent/tst_qkeyevent.cpp
tools/linguist/shared/cpp.cpp
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If you set this flag on an item, and descendant item that gains input
focus will become this item's focus proxy. This simplifies how focus
proxy items are assigned from QML; instead of binding the possible
focusProxy property to a named child widget, this assignment happens
automatically as you set the focus property of a descendant to true.
As part of this change, QGraphicsWidget::focusWidget behavior has been
improved and moved into QGraphicsItem. For example, if you set focus on
an item that it's part of a scene, it can gain focus once the parent
has been assigned (which is how object trees are built in QML).
Autotests are included.
Reviewed-by: Michael Brasser
|
|\ \
| |/ |
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QStyleOptionGraphicsItem extends QStyleOption with three values:
1) matrix, 2) levelOfDetail, 3) exposedRect, and they all
involve expensive QTranform operations when calculated. We
pass style option(s) to drawItems() and paint(), but the
extended values are usually not in use. We can therefore gain
quite some nice speedup by making them opt-in with the
QGraphicsItem::ItemUsesExtendedStyleOption flag.
Additionally, QStyleOptionGraphicsItem::levelOfDetail has been
obsoleted, and a new function QStyleOptionGraphicsItem::
levelOfDetailFromTransform(const QTransform &) has been added.
Me and Andreas don't consider this change to be too controversial
even though it changes the behavior.
Auto tests still pass.
Reviewed-by: Andreas
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit reduces the memory footprint of QGraphicsWidget by
around 40% (from around 663 bytes to around 409 bytes - measured
using /proc/<pid>/statm on Linux - see 'man 5 proc').
The technique used is to lazily allocate (on the heap) certain
data structures (i.e. not allocate them unless they are needed):
- QGraphicsLayoutItemPrivate::userSizeHints
=> used only if the size, width, or height is explicitly set
- QGraphicsWidgetPrivate::margins
=> used only if the contents margins are accessed
- QGraphicsWidgetPrivate::windowFrameMargins
=> used only if the window frame margins are accessed
- QGraphicsWidgetPrivate::windowData
=> used only if the graphics widget is a window
In addition, a few unused data members (and related code) were removed:
- QGraphicsWidgetPrivate::contentsRect
- QGraphicsWidgetPrivate::mouseDelta
- QGraphicsWidgetPrivate::*LayoutItemMargin
Reviewed-by: andreas
Task-number: 251592
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change fd4d94df4eb16e9e54f61dd8ee45914e24832ae9 introduced mouse grab
and keyboard grab support to Graphics View (this was as part of 4.4).
The change was missing a large set of autotests that I wrote to test
the behavior of these features. As part of task 245317, which involves
investigating modality in Graphics View, I figured it would be a good
idea to start off but reconstructing these autotests. So this change
is mainly about adding autotests for mouse grabbing. And of course,
as it always is, I found two bugs while writing these tests.
1) Calling QGraphicsItem::grabMouse() while the item is holding the
implicit mouse grab will now upgrade the implicit grab to an
explicit grab.
2) Adding a popup to the scene will automatically grab the mouse.
Before, the popup would get the grab on show(), but if it was
already visible when added to the scene it would not gain the
grab.
Task-number: 245317
Reviewed-by: jasplin
|
|
|
|
|
|
|
|
|
| |
Do not send a QFontChange event before the item has been polished. This
is because we cannot call a virtual function while we're in the ctor.
This is basically the same as how we do it in QWidget.
Task-number: 246215
Reviewed-by: alexis
|
|
|