ApplicationCompositor::ApplicationCompositor() { memset(_reticleActive, 0, sizeof(_reticleActive)); memset(_magActive, 0, sizeof(_reticleActive)); memset(_magSizeMult, 0, sizeof(_magSizeMult)); auto geometryCache = DependencyManager::get<GeometryCache>(); _reticleQuad = geometryCache->allocateID(); _magnifierQuad = geometryCache->allocateID(); _magnifierBorder = geometryCache->allocateID(); auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>(); connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverEnterEntity, [=](const EntityItemID& entityItemID, const MouseEvent& event) { if (_hoverItemId != entityItemID) { _hoverItemId = entityItemID; _hoverItemEnterUsecs = usecTimestampNow(); auto properties = entityScriptingInterface->getEntityProperties(_hoverItemId); // check the format of this href string before we parse it QString hrefString = properties.getHref(); auto cursor = Cursor::Manager::instance().getCursor(); if (!hrefString.isEmpty()) { if (!hrefString.startsWith("hifi:")) { hrefString.prepend("hifi://"); } // parse out a QUrl from the hrefString QUrl href = QUrl(hrefString); _hoverItemTitle = href.host(); _hoverItemDescription = properties.getDescription(); cursor->setIcon(Cursor::Icon::LINK); } else { _hoverItemTitle.clear(); _hoverItemDescription.clear(); cursor->setIcon(Cursor::Icon::DEFAULT); } } }); connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverLeaveEntity, [=](const EntityItemID& entityItemID, const MouseEvent& event) { if (_hoverItemId == entityItemID) { _hoverItemId = _noItemId; _hoverItemTitle.clear(); _hoverItemDescription.clear(); auto cursor = Cursor::Manager::instance().getCursor(); cursor->setIcon(Cursor::Icon::DEFAULT); if (!_tooltipId.isEmpty()) { qDebug() << "Closing tooltip " << _tooltipId; Tooltip::closeTip(_tooltipId); _tooltipId.clear(); } } }); }
ApplicationCompositor::ApplicationCompositor() { memset(_reticleActive, 0, sizeof(_reticleActive)); memset(_magActive, 0, sizeof(_reticleActive)); memset(_magSizeMult, 0, sizeof(_magSizeMult)); auto geometryCache = DependencyManager::get<GeometryCache>(); _reticleQuad = geometryCache->allocateID(); _magnifierQuad = geometryCache->allocateID(); _magnifierBorder = geometryCache->allocateID(); auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>(); connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverEnterEntity, [=](const EntityItemID& entityItemID, const MouseEvent& event) { if (_hoverItemId != entityItemID) { _hoverItemId = entityItemID; _hoverItemEnterUsecs = usecTimestampNow(); auto properties = entityScriptingInterface->getEntityProperties(_hoverItemId); _hoverItemHref = properties.getHref(); auto cursor = Cursor::Manager::instance().getCursor(); if (!_hoverItemHref.isEmpty()) { cursor->setIcon(Cursor::Icon::LINK); } else { cursor->setIcon(Cursor::Icon::DEFAULT); } } }); connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverLeaveEntity, [=](const EntityItemID& entityItemID, const MouseEvent& event) { if (_hoverItemId == entityItemID) { _hoverItemId = _noItemId; _hoverItemHref.clear(); auto cursor = Cursor::Manager::instance().getCursor(); cursor->setIcon(Cursor::Icon::DEFAULT); if (!_tooltipId.isEmpty()) { qDebug() << "Closing tooltip " << _tooltipId; Tooltip::closeTip(_tooltipId); _tooltipId.clear(); } } }); }