| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
| |
State saved in QHistoryState should not be persistent between
state machine starts/stops.
Task-number: QTBUG-8842
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
| |
Task-number: QTBUG-7092
|
|
|
|
|
|
|
|
| |
These two classes were missing exports. Since the accessors are inline,
the bug would only be visible when someone tried to call the
constructors of the classes.
Reviewed-by: Kent Hansen
|
|
|
|
|
|
|
|
|
|
| |
QApplication instance
We can't assert on actually watching the watched object, since we may
have installed an event filter on QApplication::instance(), in which
case we will filter events for all objects.
Reviewed-by: Gunnar
|
|\
| |
| |
| |
| |
| | |
Conflicts:
doc/src/frameworks-technologies/statemachine.qdoc
src/corelib/statemachine/qstatemachine.cpp
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
"Polished" was never a very descriptive word, and it already has a
meaning attached in the QStyle API. Additionally, "propertiesAssigned"
has the benefit of giving the relation to the assignProperty() function
as part of the name.
Reviewed-by: Kent Hansen
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Returning the input argument in a function can lead to confusion and
serves no purpose here. Instead, we'll mirror the API from
QMenu::addAction() overloads, where the overload that takes a
preconstructed object has a void return type.
Reviewed-by: Kent Hansen
|
| |
| |
| |
| |
| |
| |
| | |
Using the abbreviated "Dont" is consistent with other negated enum
names in Qt.
Reviewed-by: Kent Hansen
|
| |
| |
| |
| |
| |
| |
| | |
The name "animated" is consistent with naming in Qt otherwise, as in
QTreeView::animated and QMainWindow::animated.
Reviewed-by: Kent Hansen
|
|/
|
|
|
|
|
|
|
|
| |
The state machine algorithm frequently needs to know what type a state
is, e.g. if it is atomic, final or a history state. We were using
qobject_cast() to determine this, but that function is expensive.
This commit introduces an internal StateType to be able to differentiate
between the different types of state. This vastly improves performance.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QAbstractState::parentState() is called heavily by the state machine
algorithm. The parent state is obtained by qobject_cast'ing
QObject::parent(). qobject_cast() is expensive. This commit introduces
caching of the result in order to improve performance.
We expect that the cache won't be invalidated much since the parent-child
relationship of states usually doesn't change after the state machine is
started.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
| |
This function is useful for debugging, if nothing else, and has been
requested by users. We also refer to it in one of our blog posts, so
there's little point in trying to hide it any longer.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
| |
By popular demand on the Qt Labs blog.
This makes it possible to readily use QStateMachine with e.g. worker
threads that post events to the machine.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the same type of optimization as that done for transitions in
commit 5d8dcd57cd13fdd9c8643fa3bdda9f197a4351ff. The idea is to avoid
calling qobject_cast() because it's very expensive.
Obtaining child states needs to be as fast as possible because it's in
the critical path of the state machine algorithm; it's called by a ton
of internal functions, like isCompound(), isAtomic(), isInFinalState().
It's also called heavily for parallel state groups.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
| |
Since QStateMachine inherits QState now.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Transitions are children of their source state. We use
QObject::children() and qobject_cast() each child to a
QAbstractTransition to see if it is indeed a transition. However,
calling qobject_cast() is very expensive. This commit introduces
a cached list of transitions. The list is invalidated after a
child object has been added or removed.
In the typical case we expect the object hierarchy to remain fairly
constant once the state machine has been started (states, child states
and transitions are usually "static"), in other words the cached list
is not likely to be invalidated much.
Obtaining a state's transitions needs to be as fast as possible
because it's in the critical path of the state machine algorithm.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
| |
Necessary since the SignalEvent class was moved to qstatemachine.h.
|
|
|
|
|
|
| |
"Signal" and "Wrapped" is too generic; prefix with StateMachine.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
| |
Otherwise the events might creep into the event loop if the state
machine is restarted.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
|
|
|
|
| |
The priority specifies whether the event should be posted to what the
SCXML spec refers to as the "external" (NormalPriority) queue, or the
"internal" (HighPriority) queue.
Delayed events are now posted through a separate function,
postDelayedEvent(). That function returns an id that can be passed to
cancelDelayedEvent() to cancel it.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
| |
Avoid delayed scheduling in the cases where there's no need to
delay it (e.g. when the state machine intercepts a signal or event).
Task-number: QTBUG-4491
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
| |
|
|
|
|
|
|
|
|
|
| |
Those two classes are specific to the state machine framework, but
their names were so generic that we felt they were polluting the
Q-namespace. They are now QStateMachine::SignalEvent and
QStateMachine::WrappedEvent.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
| |
Reviewed-by: thierry
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
| |
Reviewed-by: Trust Me
|
| |
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The signal index actually emitted was different from the signal index
registered. This was due to recent changes in the meta-object protocol, where
new indexes are being created (cloned) for signals with default parameters.
When registering the transition signal, we now look for the original (non
cloned) signal index. The transition keeps track of the user-specified signal
index, and sets it when calling onTransition.
Reviewed-by: Kent Hansen
Reviewed-by: Olivier Goffart
Task-number: 260403
|
|\ |
|
| |
| |
| |
| |
| |
| | |
eventObject was a horrible name. The documentation already used the
term "event source", so let's call it that.
Agreed with Eskil.
|
|\ \
| |/
| |
| |
| |
| |
| |
| | |
Conflicts:
examples/painting/svgviewer/files/bubbles.svg
src/corelib/kernel/qobject.cpp
src/network/kernel/qhostinfo.cpp
tests/auto/qhostinfo/tst_qhostinfo.cpp
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Make some functions static that are not used anywhere but in the
current file. Others that are used, add the declaration to the _p.h to
ensure we don't forget about them.
Finally, there's no need to enable debugging code if it's not used
anywhere.
Reviewed-by: TrustMe
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
examples/opengl/samplebuffers/glwidget.cpp
src/corelib/io/qfsfileengine_unix.cpp
src/corelib/kernel/qobject.cpp
src/corelib/tools/qsharedpointer.cpp
src/gui/gui.pro
tests/auto/qhttp/tst_qhttp.cpp
tests/auto/qkeyevent/tst_qkeyevent.cpp
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| | |
|
| |
| |
| |
| |
| |
| | |
Rationale: We're using template magic now to get the private
pointer in qglobal.h, so no need to have two macros. Also
keeps backward compatibility with outside (KDE) code.
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/corelib/global/qglobal.h
src/corelib/kernel/qmetatype.cpp
src/corelib/kernel/qobject.cpp
src/corelib/thread/qthread_unix.cpp
src/gui/graphicsview/qgraphicssceneevent.h
src/gui/itemviews/qheaderview.h
src/gui/kernel/qapplication_qws.cpp
src/gui/kernel/qgesture.h
src/gui/kernel/qgesturerecognizer.h
src/gui/painting/qpaintengine_raster.cpp
src/network/access/qhttpnetworkreply.cpp
src/network/access/qnetworkcookie.h
src/network/socket/qnativesocketengine_unix.cpp
|
| | |
| | |
| | |
| | |
| | | |
Contains some smaller fixes and renaming of macros. Looks big,
but isn't scary at all ;)
|
|\ \ \
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
config.tests/unix/openssl/openssl.pri
demos/embedded/embedded.pro
examples/itemviews/chart/chart.pro
examples/network/network.pro
examples/painting/painterpaths/painterpaths.pro
examples/threads/mandelbrot/mandelbrot.pro
qmake/project.cpp
src/3rdparty/libtiff/libtiff/tif_config.h
src/corelib/arch/arch.pri
src/corelib/global/qglobal.cpp
src/corelib/kernel/kernel.pri
src/corelib/kernel/qcore_unix_p.h
src/corelib/kernel/qobject.cpp
src/corelib/thread/qthread_unix.cpp
src/corelib/tools/qsharedpointer_impl.h
src/corelib/tools/tools.pri
src/gui/kernel/qaction.h
src/gui/kernel/qapplication.cpp
src/gui/painting/qregion.h
src/gui/widgets/qlineedit.cpp
src/gui/widgets/qlineedit_p.h
src/network/socket/qnativesocketengine_unix.cpp
tests/auto/qdir/tst_qdir.cpp
tests/auto/qdiriterator/tst_qdiriterator.cpp
tests/auto/qhttp/qhttp.pro
tests/auto/qline/qline.pro
tests/auto/qnetworkreply/tst_qnetworkreply.cpp
tests/auto/qresourceengine/qresourceengine.pro
tests/auto/qsharedpointer/qsharedpointer.pro
tests/auto/qstring/qstring.pro
tests/auto/qtcpsocket/qtcpsocket.pro
tests/auto/qtcpsocket/tst_qtcpsocket.cpp
|
| | |
| | |
| | |
| | |
| | | |
1) it's needed for the Declarative UI integration and
2) it hopefully fixes the build on Windows.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The constructors that take a list of target states produce
hard-to-read code, and they're rarely useful in practice since
99% of transitions take a single target state; so it's better
to enforce that setTarget{State,States}() be used instead.
|
| | |
| | |
| | |
| | | |
Reviewed-by: Kent Hansen
|
| | |
| | |
| | |
| | |
| | | |
Broke on WinCE since QStateMachinePrivate is now using
Q_AUTOTEST_EXPORT.
|
| | |
| | |
| | |
| | | |
Needed for Declarative UI integration.
|
| | |
| | |
| | |
| | |
| | | |
QObject::sender() does not return const QObject*, so neither should
this API; it just forces you to const_cast for no good reason.
|
|\ \ \
| |/ /
| | /
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
configure.exe
qmake/Makefile.unix
qmake/generators/makefile.cpp
src/corelib/global/qglobal.h
src/corelib/kernel/kernel.pri
src/corelib/kernel/qcoreevent.cpp
src/corelib/kernel/qsharedmemory_unix.cpp
src/gui/graphicsview/qgraphicsscene.cpp
src/gui/kernel/qaction.cpp
src/gui/kernel/qaction.h
src/gui/kernel/qaction_p.h
src/gui/kernel/qapplication.cpp
src/gui/kernel/qapplication.h
src/gui/kernel/qwidget.cpp
src/gui/kernel/qwidget.h
src/gui/kernel/qwidget_mac.mm
src/gui/painting/qgraphicssystemfactory.cpp
src/gui/styles/qwindowsstyle.cpp
src/gui/text/qfontengine_qpf.cpp
src/gui/widgets/qabstractscrollarea_p.h
src/network/access/qnetworkaccessdebugpipebackend.cpp
src/network/socket/qlocalsocket_unix.cpp
src/network/socket/qnativesocketengine_p.h
src/network/socket/qnativesocketengine_unix.cpp
src/openvg/qpaintengine_vg.cpp
tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp
tests/auto/qcssparser/qcssparser.pro
tests/auto/qdir/tst_qdir.cpp
tests/auto/qfile/tst_qfile.cpp
tests/auto/qobject/tst_qobject.cpp
tests/auto/qpathclipper/qpathclipper.pro
tests/auto/qprocess/tst_qprocess.cpp
tests/auto/qsettings/tst_qsettings.cpp
tests/auto/qsharedpointer/qsharedpointer.pro
tests/auto/qsqlquerymodel/qsqlquerymodel.pro
tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro
tests/auto/qsqltablemodel/qsqltablemodel.pro
tests/auto/qsqlthread/qsqlthread.pro
tests/auto/qwidget/tst_qwidget.cpp
|