summaryrefslogtreecommitdiffstats
path: root/src/quick3d
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-04-25 13:47:15 +0200
committerSean Harmer <sean.harmer@kdab.com>2016-04-28 07:50:44 +0000
commit1b65fbd858db8d81aa6847669b7d98cf3038550b (patch)
treeaca1e1606e2251925664b9aca1f00723d364d0c0 /src/quick3d
parent135ad25792c8c903e2fc1c69109f0b1d5761d2ae (diff)
Scene3DItem: add the hoverEnabled property
If set to true, the item will receive HoverEvents that will be transmitted as positionChanged events to MouseHandlers in the scene. For most cases this would result in high traffic for events that aren't handled. If hoverEnabled is set to true, then that processing will take place, otherwise it won't (unless you are pressing a mouse button). The default is hoverEnabled set to false. Change-Id: I8fc2d519ee902349ace8f4e130cd12f3018c01af Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick3d')
-rw-r--r--src/quick3d/imports/scene3d/scene3ditem.cpp15
-rw-r--r--src/quick3d/imports/scene3d/scene3ditem_p.h4
2 files changed, 17 insertions, 2 deletions
diff --git a/src/quick3d/imports/scene3d/scene3ditem.cpp b/src/quick3d/imports/scene3d/scene3ditem.cpp
index c29a4f4d6..317a858e0 100644
--- a/src/quick3d/imports/scene3d/scene3ditem.cpp
+++ b/src/quick3d/imports/scene3d/scene3ditem.cpp
@@ -83,8 +83,6 @@ Scene3DItem::Scene3DItem(QQuickItem *parent)
{
setFlag(QQuickItem::ItemHasContents, true);
setAcceptedMouseButtons(Qt::MouseButtonMask);
- setAcceptHoverEvents(true);
-
// TO DO: register the event source in the main thread
m_aspectEngine->registerAspect(m_renderAspect);
@@ -150,6 +148,14 @@ void Scene3DItem::setCameraAspectRatioMode(CameraAspectRatioMode mode)
emit cameraAspectRatioModeChanged(mode);
}
+void Scene3DItem::setHoverEnabled(bool enabled)
+{
+ if (enabled != acceptHoverEvents()) {
+ setAcceptHoverEvents(enabled);
+ emit hoverEnabledChanged();
+ }
+}
+
Scene3DItem::CameraAspectRatioMode Scene3DItem::cameraAspectRatioMode() const
{
return m_cameraAspectRatioMode;
@@ -243,6 +249,11 @@ void Scene3DItem::setItemArea(const QSize &area)
surfaceSelector->setExternalRenderTargetSize(area);
}
+bool Scene3DItem::isHoverEnabled() const
+{
+ return acceptHoverEvents();
+}
+
void Scene3DItem::setCameraAspectModeHelper()
{
switch (m_cameraAspectRatioMode) {
diff --git a/src/quick3d/imports/scene3d/scene3ditem_p.h b/src/quick3d/imports/scene3d/scene3ditem_p.h
index 1419d9826..bb141b423 100644
--- a/src/quick3d/imports/scene3d/scene3ditem_p.h
+++ b/src/quick3d/imports/scene3d/scene3ditem_p.h
@@ -75,6 +75,7 @@ class Scene3DItem : public QQuickItem
Q_PROPERTY(QStringList aspects READ aspects WRITE setAspects NOTIFY aspectsChanged)
Q_PROPERTY(bool multisample READ multisample WRITE setMultisample NOTIFY multisampleChanged)
Q_PROPERTY(CameraAspectRatioMode cameraAspectRatioMode READ cameraAspectRatioMode WRITE setCameraAspectRatioMode NOTIFY cameraAspectRatioModeChanged)
+ Q_PROPERTY(bool hoverEnabled READ isHoverEnabled WRITE setHoverEnabled NOTIFY hoverEnabledChanged)
Q_CLASSINFO("DefaultProperty", "entity")
public:
explicit Scene3DItem(QQuickItem *parent = 0);
@@ -86,6 +87,7 @@ public:
bool multisample() const;
void setMultisample(bool enable);
void setItemArea(const QSize &area);
+ bool isHoverEnabled() const;
enum CameraAspectRatioMode {
AutomaticAspectRatio,
@@ -98,12 +100,14 @@ public Q_SLOTS:
void setAspects(const QStringList &aspects);
void setEntity(Qt3DCore::QEntity *entity);
void setCameraAspectRatioMode(CameraAspectRatioMode mode);
+ void setHoverEnabled(bool enabled);
Q_SIGNALS:
void aspectsChanged();
void entityChanged();
void multisampleChanged();
void cameraAspectRatioModeChanged(CameraAspectRatioMode mode);
+ void hoverEnabledChanged();
private Q_SLOTS:
void applyRootEntityChange();