Deduplicate the code and fix the "jaggy" behavior.
Task-number: QTCREATORBUG-10762
Change-Id: Iaca3bc5b77cb8d92f082232e6fd3c2d9e0935300
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
The left handle of the range mover element didn't properly follow
the mouse movement. Also, a lot of code is duplicated between
RangeMover and SelectionRange. This change prepares RangeMover for
being reused in SelectionRange by eliminating external
dependencies.
Task-number: QTCREATORBUG-10762
Change-Id: Ia3b83101263e7af8ed46e1aaf4e92654b0068861
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
The timeline can be vertically navigated by flicking, which is not very
appropriate for desktop applications. This change provides a scroll bar
and mouse wheel scrolling in addition to that. Also it makes the
vertical movement stop at the boundaries. The mouse wheel would exhibit
unintuitive behavior without it.
Change-Id: I5ef126525e452f46aa0a483a544345b8f618d829
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
The content of the horizontal Flickable element could remain at negative
positions after flicking and generally showed inconsistent behavior.
This was due to the redundant storage of the horizontal offset in
view.startX and flick.contentX. Explicitly assigning contentX from JS
code disables the automatic "rubber" effect which pulls the content back
into the allowed area.
Change-Id: I69e827854e2be3d8f6f4e2537e7105f80a8f2a89
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Before the grey shadows appeared on white background if you
"overflicked" at the beginning or start of the timeline.
Change-Id: I53361b5eecfacbd48967ea7e0c564c3376a8b170
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
The zoom level calculations were much too complex and introduced
rounding errors in various places. By moving them all into one
place and avoiding circular recalculations of the same thing those
problems are mitigated.
Task-number: QTCREATORBUG-10635
Change-Id: I7316caad1a590964402056a2e6430c8d059ae097
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This restores the functionality of the old zoom slider. It probably
looks a bit different, but it does the same thing.
Task-number: QTCREATORBUG-10635
Change-Id: Idcb19187df066e4b1336df73b122aa567a732dee
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
The zoom slider has to be rebuilt in QML as positioning QWidgets on
top of QQuickViews creates various problems we don't want to solve
for such a simple element.
Task-number: QTCREATORBUG-10635
Change-Id: I9aa22edd3e3a4fddb1d04545260ceacf22184260
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
The timeline can cover a large vertical space. The introduction of
the Flickable element to navigate that space has reverted the effect
of commit 5eb057c7e. This change restores the performance
improvements and avoids overflows in the underlying buffers.
Change-Id: I86ddd66652ee0a26c81619682a883622072b0f87
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
The vertical Flickable element can get very large if certain
categories are expanded. If the time marks have to fill the whole
element the underlying buffers holding the pixmaps and/or OpenGL
data may overflow.
Task-number: QTCREATORBUG-10420
Change-Id: I45952e8237bb827a963e0e4e8deb060646c0c8f4
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Introduce a second flickable element to encapsulate the timeline as
well as the labels and move SelectionRangeDetails and SelectionRange
out of that to make them float on top.
Task-number: QTCREATORBUG-10420
Change-Id: Ib4af7dc4b0155b9371c582938f1b4abb3e40cf06
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Vertical scrolling doesn't work at the moment and has to be implemented
in a different way. Besides, the code tracking the root's vertical
scroll hasn't done anything useful in a long time.
Change-Id: If2add3874cba971bbaace2c22fbf1b2bf0b463b7
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Allow the timeline model to clear its caches if the model manager changes
states. The timeline model caches for example event categories which
become invalid if the manager assumes the state EMPTY.
Task-number: QTCREATORBUG-10706
Change-Id: I10529ac56d39b169b850a8b5250fd36cb65a57ba
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Previously the timeline was only repainted if the selected start time
changed. If the start time is != 0 changes of endTime unfortunately
imply changes of startTime most of the time. This is why the
effect was mostly invisible.
Task-number: QTCREATORBUG-10707
Change-Id: I21a86a4248c949f5ad630e6c5a30f8caedcbfe7e
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
The flick range should always be bounded by finite numbers.
Task-number: QTCREATORBUG-10623
Change-Id: I27290eca531a1f36293dc0dea3dbdf0d2181e822
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Check the dimensions of the window being painted to before actually
painting the events and skip invisible ones.
Some primitive profiling using QTime shows that the average time taken
per event in TimelineRenderer::paint() is approximately halved by this
patch when profiling the QML widget gallery example and expanding all
categories in the timeline.
drawSelectionBoxes() is not optimized because the number of selection
boxes is expected to be so small that the overhead of the check might
outweigh the performance gains of skipping events.
Task-number: QTCREATORBUG-9982
Change-Id: I42e533c11e3a17f9d63b61ce5e4192c8f40e1be9
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
disconnectClientSignals only disconnects signals of objects that are
deleted directly afterwards. As deleting a QObject automatically
disconnects its signals it's unnecessary to explicitly do that before.
However, if QmlProfilerClientManager is deleted from the destructor of
QmlProfilerTool, receivers of those signals may have already been
deleted. This can lead to crashes.
Task-number: QTCREATORBUG-10634
Change-Id: I1e5ce7a6ac4b331fa423987e3a8faa3584b991d2
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This is to avoid confusion with generic Label
Quick component.
Change-Id: I6a72266c394862706215b6db40bcd3592f9d24b3
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Avoid rendering outside of the canvas by forcing the windows
size onto the scene, and also removing the related candidateSize
logic.
In the QtQUick1 based profiler one could scroll the canvas also
vertically, but that doesn't work any more. This is a hot fix
to work around the problem, we can hopefully bring back the
full solution later ...
Change-Id: Ibd3d54f6b98c3764e104116d395a77b880d88bcb
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Do the QML based painting when requested inside the UI thread, and
only copy the final canvas pixmap in the renderer thread (in paint()).
To avoid excessive re-drawing delay the painting via a timer to the
next event loop run.
The previous logic was still from Qt Quick 1 times, where the paint()
method was called in the GUI thread. This has changed in Qt Quick 2:
Here the paint() method will be called (on Unix) in a separate renderer
thread, making the drawRegion / onDrawRegion connections implicitly
deferred.
Change-Id: I298547013658e4cd1e94115305577bdb96cd0b2a
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProjectRunConfiguration is now derived from
LocalApplicationRunConfiguration.
Change-Id: Ieddac63ff9832771ed141c3f0aff1bcc0313f6bf
Reviewed-by: hjk <hjk121@nokiamail.com>
This seems to be a better abstraction than the "pseudo dynamic cast"
in the QmlProfilerTool and the DebuggerPlugin itself.
Change-Id: If7dea70e1353852ebb6d3ce43220c0b03ccb4b00
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Only methods as programming functions are affected. Besides renaming
some actions like "Switch Between Function Declaration/Definition" this
mostly touches (api) code comments.
This is a follow-up patch to commit 872bfb7.
Change-Id: Icb65e8d73b59a022f8885b14df497169543a3b92
Reviewed-by: hjk <hjk121@nokiamail.com>
There was more stuff broken by the switch to Qt Quick 2 than were
originally noticed, and the original fix was buggy as well.
Change-Id: I2b3e0619af923c52aba809355ac271b67097adf1
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
In several places, it says '#include "..."' for headers
from different libraries/plugins.
Change-Id: I96cd74fef9b30163adefe3e1720e0847bed9553a
Reviewed-by: hjk <hjk121@nokiamail.com>
A lot of our build system files specify unneeded include
paths. These roughly fall into the following categories:
a) Paths that are already set in more general files
such as qtcreator.pri.
b) Paths that serve no purpose at all, possibly
left over from earlier versions of the project.
c) Paths that act as workarounds for wrong include
statements of the form '#include "xyz.h"', where
xyz.h is not in the same directory as the including
file.
This patch removes such path specifications and fixes the offending
include statements from case c).
Tested on Linux, Windows and OSX with qmake and qbs.
Change-Id: I039a8449f8a65df0d616b4c08081145c18ae4b15
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>