Commit Graph

993 Commits

Author SHA1 Message Date
Miikka Heikkinen
f021680513 QmlDesigner: Fix selection box size calculations
Selection box for zero size items ended up being infinite, which broke
some functionality like fit to camera. Now boxes should be correctly
zero sized for non-model items. This also fixes issues with parent
box size if it has zero size children.

Change-Id: I3c8fae3ee971fbb0cf9e0de2615c107ce97a76f8
Fixes: QDS-1287
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-12-04 14:24:53 +00:00
Miikka Heikkinen
0758b58ceb QmlDesigner: Fix planar scaling randomly setting the third axis to zero
All the math before checking if the scaling axis is zero can cause
enough rounding errors to make qFuzzyIsNull to not think the value is
zero anymore, so check increase the check range.

Change-Id: I776d44886f061be6c1fd91c09eb8efcfb29e0936
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-12-04 09:54:37 +00:00
Miikka Heikkinen
4ce7f39e4e QmlDesigner: Fix 3D edit gizmos orientation and rotation order
When selected node has non-default rotation order or orientation,
gizmos need to account for that.

Change-Id: Ie3817fd057b43f708ac1feea3e98e1e44f56d66a
Fixes: QDS-1290
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-12-04 09:54:26 +00:00
hjk
d61773fa25 QmlDesigner: Suppress warnings if Quick3D is not used
Amends d076c59429.

Change-Id: I3cba673b7cdd4e99541581008bedfb6d0d333339
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2019-12-04 09:01:04 +00:00
Miikka Heikkinen
73d3df7908 QmlDesigner: Make imported models selectable
Import creates an opaque Component, which can contain one or more
pickable models. We mark all instanceless models pickable according to
the parent instance pickable status and specify the parent instance
as the pick target using a dynamic property.

Change-Id: I05b96ee48eb8f246c50b2254d620b621e2437aa5
Fixes: QDS-1282
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-12-03 08:44:30 +00:00
Mahmoud Badri
de141661df Do not zoom camera when changing view
When changing the view by clicking the axis helper, maintain the
current view camera zoom

Task-number: QDS-1274
Change-Id: Icb502bd70da1e6348be90a52885366393ea072c6
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2019-12-03 07:54:09 +00:00
Miikka Heikkinen
8ff52e37a7 QmlDesigner: Implement multiselection for edit 3D view
Multiselection works in 3D edit view with ctrl-click just like it
does on the Design Studio.

Change-Id: I266f2de11758bed064f44dd97cd79189e3e1f831
Fixes: QDS-1265
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-28 14:43:49 +00:00
Thomas Hartmann
880ab11e76 QmlDesigner: Use proxy dialog for 3D edit view
To integrate the 3D edit view in the qml2puppet process,
we create a dialog in the Qt Creator process.
This dialog acts as a proxy that manages the actual window.

For this I introduced a new command that allows showing, hiding, resizing
and moving of the 3D edit view.
The 3D edit view always follows the proxy dialog.

During moving and resizing we hide the window to avoid artefacts.

At this point in time the proxy widget is a dialog, but it could
also be a dockwidget or any other QWidget in the future.

Task-number: QDS-1179
Change-Id: I67ccab49eb2de9ba23098a67b2f9577f6c7fd3ac
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2019-11-28 13:09:51 +00:00
Eike Ziller
6fc85b49fa Merge remote-tracking branch 'origin/4.11'
Conflicts:
	src/plugins/designer/codemodelhelpers.cpp

Change-Id: I78906f2fbbfd27d254589a272ebca423b0b80699
2019-11-28 08:24:10 +01:00
Mahmoud Badri
8e2ef36e60 Implement 3D edit view top controls UI
Implement global/local, projection type, and default light controls UI.
Also small tweaks:
- Fixed ortho. camera near clipping
- Grid color darkened a bit
- Selection rect color changed to yellow

Task-number: QDS-1250
Change-Id: I03cf2023ee1b8a6a0768e4dbf7d6fee621a25ce2
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-26 13:42:30 +00:00
Miikka Heikkinen
05bb285b0d QmlDesigner: Offset move/scale gizmo label in screen space
Offsetting in scene space resulted in label being inconsistent distance
away from the object, depending on zoom and angle.

Change-Id: Ief555de664c042bb1a5c93af0ee7e5a1c3e7ce0a
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2019-11-26 10:37:01 +00:00
Miikka Heikkinen
d076c59429 QmlDesigner: Block selection of hidden objects
If eyeball is turned off for object, it shouldn't be pickable in
3D edit view.

Change-Id: Ib9308aaaecc822f448591f249bd96ffb5d0c9c48
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-26 10:36:51 +00:00
Miikka Heikkinen
f9c1795d3b QmlDesigner: Add UX approved gradient background to 3D edit view
Change-Id: I18b976324f57cf559a43d9ff239796cf25b3cb2f
Fixes: QDS-1202
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-25 15:01:28 +00:00
Miikka Heikkinen
6ee83b4c19 QmlDesigner: Center on selection box when fit tool is used in 3D Edit
Instead of centering edit camera on selected object, center it on
the selection box, which includes child objects.

Change-Id: I7315a4bcfffc74e72a2b21d0a04fc99ee9f4f3c3
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2019-11-25 08:48:08 +00:00
Miikka Heikkinen
389f96b0ee QmlDesigner: Implement group selection boxes in 3D edit view
Object's selection box now includes the bounds of all of its
descendants. Selection boxes of immediate children of a selected
object are also drawn.
Individual/group selection buttons also now work as expected.

Change-Id: Ice7ef9a536e32c6bb6da70fe23bf0a38e72c14f8
Fixes: QDS-1210
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-22 14:02:48 +00:00
Miikka Heikkinen
9dac42f153 QmlDesigner: Implement fit selection button in 3D edit view
Shortcuts for scale and move were also updated to correct ones.

Change-Id: Iffcad0c81475553003962e65dc059879a237546e
Fixes: QDS-1235
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-22 14:02:32 +00:00
Miikka Heikkinen
c7120bde92 QmlDesigner: Implement axis helper on 3D edit view
Axis helper shows up on top right corner of 3D edit view.
Clicking on axis helper arms zooms camera on that side of the selected
object.

Change-Id: Ibd81a933036f7965f825e3dc97ad7156da62e14c
Fixes: QDS-1205
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-22 13:57:43 +00:00
Miikka Heikkinen
7a46dc620e QmlDesigner: Fix build error
Change-Id: I53d425d0b6f4e66c09bd988bd188218cbf51a99c
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-11-22 11:11:22 +00:00
Miikka Heikkinen
0b510f173e QmlDesigner: Implement selection box to 3D edit view
Change-Id: Ib0b13ecd7946e3b7da8ed06d4f5965e06e51a152
Fixes: QDS-1210
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-22 10:48:48 +00:00
Miikka Heikkinen
dbfdacecf4 QmlDesigner: Fix issues with MouseArea3D deactivation detection
Existing mouse grab is now released when MouseArea3D is deactivated
or set to no longer grab the mouse. Various gizmos were also set
to follow MouseArea3D's dragging property instead of keeping track
of drag themselves.

Change-Id: I49f968f20b26eb222fc8635b943e9144073fb164
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-22 10:48:35 +00:00
Miikka Heikkinen
3dd5e089b1 QmlDesigner: Add UX approved light icons for 3D editview
Light icons have a color overlay that indicates light color.

Change-Id: I5f6d80f63d0916dd7cb7b2d5345d586aacd550ef
Fixes: QDS-1209
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-22 10:48:22 +00:00
Miikka Heikkinen
4c73b4629c QmlDesigner: Some fixes to edit 3D after UX review
- Slightly larger cam plane rotate ring to avoid overlap
- Scale tool is always local
- Little more transparent and borderless light/cam icons when selected
- Center light/cam icon on the object

Change-Id: Icb24d89fb3ea852b139677aebe797881a12e474a
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-22 10:48:08 +00:00
Miikka Heikkinen
77cb514a79 QmlDesigner: Implement better camera navigation in 3D edit view
Edit camera is now controlled as in Qt 3D Studio:
ALT + left button orbits camera.
ALT + middle button pans camera.
ALT + right button zooms camera.
Wheel zooms camera.

Task-number: QDS-1206
Change-Id: Ia72644073d172b00483ceed8bcc5ffb8dce68741
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-22 10:47:42 +00:00
Eike Ziller
4e6142c932 Merge remote-tracking branch 'origin/4.11'
Conflicts:
	src/plugins/autotest/testresultspane.cpp
	src/plugins/cmakeprojectmanager/cmaketool.cpp

Change-Id: Iade695ac9cab8bf3e3a1abd6e2c71f4a19132ac0
2019-11-21 22:18:35 +02:00
Miikka Heikkinen
49f7cfb7a1 QmlDesigner: Implement proper helper grid for 3D edit view
Change-Id: I9e33218d4b1528610155c5fb9bf94a9597ee23df
Fixes: QDS-1204
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-18 08:40:00 +00:00
Miikka Heikkinen
db54919798 QmlDesigner: Finalize camera visualization in edit 3D view
Added the UX approved camera icons, which will now turn transparent
and ignore mouse events when camera is selected so they do not
interfere with transform gizmos. Frustum visualization also changes
color according to selection state.

Change-Id: Id77066d9abb2b54696fae833201236afa238486a
Fixes: QDS-1208
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-18 08:39:38 +00:00
Miikka Heikkinen
20257e1e4f QmlDesigner: Implement RotateGizmo for 3D edit view
Added a gizmo for rotating selected object either freely or locked
around X, Y, Z, or camera axis.

Change-Id: Ib43c7dd3fc0f49f384d5920fce21ea932c4fc90d
Task-number: QDS-1196
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-18 08:39:16 +00:00
Henning Gruendl
a48497d663 QmlDesigner: Fix filename spelling in qrc
Change-Id: I90fb27156d51ad5160b57ea476017a17dc757043
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
2019-11-13 10:50:49 +00:00
Mahmoud Badri
8722836b44 Implement EditView3D's toolbar
Move and scale shortcuts are temporarily set to (M) and (T) instead of
(W) and (R) to avoid interference with the WASD RF controller

Task-number: QDS-1201
Change-Id: Ia7ebb6c0d39880be6b87b12d0a4a1d16638fd141
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-13 10:12:33 +00:00
Thiago Macieira
5390607019 Add QDataStream operators for ValueModifiedCommand
Qt 6 does not accept implicit downcasts.

Change-Id: Iad959315ad374ef288f5fffd15d68b67304880cd
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-13 10:05:59 +00:00
hjk
0120e462b2 Partial compile fix for current Qt dev and/or Qt 6
This does not cover Utils::MapReduceOption with QVector, and code
that's not compiled on my machine.

Change-Id: Ib63923985c52b1bb74e5ec2068a2bb37469ac618
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-11-12 10:50:51 +00:00
Mahmoud Badri
5df7ad94ec Implement DnD 3D objects from the item library to the EditView3D
Proof of concept drag and drop implementation. Basic functionality
working but needs polish.

Task-number: QDS-1132
Change-Id: Ie3b9e80de9a414c4955d6e38daf338045bc1e614
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-12 10:00:34 +00:00
Eike Ziller
646c7860cb Merge remote-tracking branch 'origin/4.11'
Conflicts:
	src/plugins/genericprojectmanager/genericprojectplugin.cpp
	src/plugins/projectexplorer/environmentaspect.cpp
	src/plugins/projectexplorer/environmentaspect.h
	src/plugins/projectexplorer/environmentaspectwidget.cpp

Change-Id: Id21d62cf14419febd1e06c9b429fcdf4501c0eaf
2019-11-11 12:58:11 +01:00
hjk
62636b270d Qml2Puppet: Compile fix
Add missing #include. Amends db7087225d.

Change-Id: I8d9147fb788ee47b37dac9f347a6828250eec1e0
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2019-11-11 09:43:33 +00:00
Miikka Heikkinen
db7087225d QmlDesigner: Implement camera frustum visualization for edit 3D
Task-number: QDS-1208
Change-Id: I3241fcdc68d01666a2536df32f170cd898cbd7af
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-11 08:44:16 +00:00
Miikka Heikkinen
e2a4d82713 QmlDesigner: Fix 3D edit view light
The default point light is very dim as it has quadratic fade.
Explicitly set fades to zero to make sure edit light is always bright.

Change-Id: I67e3ba0905c2d907d660320c1510556fb3ea5de3
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2019-11-08 12:55:19 +00:00
Miikka Heikkinen
54a3620339 QmlDesigner: Remove workaround for buggy DisableCulling
QTBUG-79768 has been fixed, so the workaround can be removed.

Change-Id: I649f295cacb8b1b87def58087cd60c7f62dc47c1
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2019-11-08 12:55:03 +00:00
Miikka Heikkinen
862b7fa35c QmlDesigner: Add planar move and scale handles to gizmos
Change-Id: Icae60ec35fc84d731243a005e97b174fa9a94815
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2019-11-08 12:54:06 +00:00
Miikka Heikkinen
c67965fb29 QmlDesigner: Add ScaleGizmo to 3D edit view
ScaleGizmo allows scaling in the direction of local or global axes,
as well as uniform scaling. Any scale component cannot be made
negative with ScaleGizmo.

Change-Id: I9b98d9593e07ded340178b07b73fa1b72421ba20
Fixes: QDS-1195
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2019-11-08 12:53:21 +00:00
Miikka Heikkinen
fbe83ceba5 QmlDesigner: Fix 3D edit view after Quick3DAPI changes
Use importScene property instead of scene.

Change-Id: I863e9233da9806952f539eef25fe1f166b3b8e37
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-05 08:44:00 +00:00
Eike Ziller
04bd6e39c8 Merge remote-tracking branch 'origin/4.11'
Conflicts:
	share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quick3dnodeinstance.cpp

Change-Id: I8ea57eba526ab830608fd928c28771c5441749f8
2019-11-01 15:31:19 +01:00
hjk
2e5e3daff6 QmlPuppet: Avoid warning about unused argument
Change-Id: Icad7539983655a3107cdca93b83e33aa6682e176
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-01 08:49:25 +00:00
Miikka Heikkinen
97788c457e QmlDesigner: MoveGizmo improvements in 3D edit view
Mouse press and release are now properly handled by MouseArea3D.
This fixes various issues:

- No need to move the mouse after release for release to register.
- Drag is no longer limited to the 3D edit window, though it is still
  limited to the screen.
- Drag arrows no longer register start of drag if you click outside
  the arrow and then move the cursor over the arrow while holding the
  mouse button down.

Also added the missing center ball to the MoveGizmo to allow free
dragging along the camera plane.

Change-Id: Iab55ae79f8af024534510e5fd29379532ac74025
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-11-01 08:49:12 +00:00
Thomas Hartmann
c66e96a840 QmlDesigner: Define explicit values for enum class
Change-Id: Iba4dec251ac41c414c51757b2f3e6e94d1aa2ccd
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2019-11-01 08:38:09 +00:00
Thomas Hartmann
17dbc74cca QmlDesigner: Avoid reflection when setting values from puppet
When editing values in the puppet we did not take reflection into account.
This means that any changes we did from the puppet for notified back
from Qt Creator. Since those notifications are asynchronous this leads
to various issues especially when more than one axis (property) was modified
at once.

This patch avoids reflection. The notifications are 'flagged' and then
ignored in the Qt5InformationNodeInstanceServer.

While a node is moved we ignore any changes to that specific node.

Task-number: QDS-1191
Change-Id: Ic74e22ea71832ce12321f9085a7296c2a7d9893d
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-10-30 09:46:35 +00:00
Miikka Heikkinen
519fc4ec72 QmlDesigner: New arrow mesh for edit3D view
Change-Id: Iefe2de026fc386ed910949a98a0157bd59d8e62b
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2019-10-30 08:40:33 +00:00
Miikka Heikkinen
47f54dd101 QmlDesigner: Add camera and light gizmos to 3D edit view
A small icon and a placeholder mesh are displayed at the location of
the lights and cameras in the scene, to provide a way to see and
interact with them.

Change-Id: I1f90fce77a643cab2c3fda3ee2105af53dea57a9
Task-number: QDS-1177
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-10-29 12:57:06 +00:00
Christian Kandeler
d3e6fa0f2e QmlDesigner: Fix some warnings
Change-Id: Ice9c29409b53457c20cef272b6a5dd6feb97adb3
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-10-29 11:35:38 +00:00
Thomas Hartmann
6b17cd91a6 QmlDesigner: Use transactions in 3D Edit View
We send a ValuesModifiedCommand 'immediately' when the item is moved.
This means the 2D form editor and property editor update
while moving nodes in the 3D edit view.
The updates are 'compressed' by 100ms. This is to avoid performance issues.
The timer could be reduced to 50ms or even 10ms, but 100ms feel
acceptable at least for me.

The code was a bit refactored.
Qt5InformationNodeInstanceServer::modifyVariantValue() can be used later
to update other Vector3D based properties like rotation and scale.

There is one issue left. MouseArea3D emits 'onReleased' only after the
mouse is moved again. This delays the 'commit' of the transaction which
is annoying and can triggers bugs.

Change-Id: I834a1e2658278ff8dd39678f39e51735dee91b65
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2019-10-28 10:58:35 +00:00
Thomas Hartmann
7b2b040f41 QmlDesigner: Add transaction option to ValuesChangedCommand
This option allows to define transactions for
ValuesChangedCommand and ValuesModifiedCommand.

Change-Id: Ia603027b5c431f1a1912d8959561f92a19fd0243
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2019-10-28 08:56:42 +00:00