web entity wantsKeyboardFocus property

This commit is contained in:
HifiExperiments 2024-02-15 11:54:49 -08:00
parent eebeca515e
commit dc32e5c0a3
10 changed files with 50 additions and 4 deletions

View file

@ -171,6 +171,7 @@ void WebEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& scene
_dpi = entity->getDPI(); _dpi = entity->getDPI();
_color = entity->getColor(); _color = entity->getColor();
_alpha = entity->getAlpha(); _alpha = entity->getAlpha();
_wantsKeyboardFocus = entity->wantsKeyboardFocus();
_pulseProperties = entity->getPulseProperties(); _pulseProperties = entity->getPulseProperties();
if (_contentType == ContentType::NoContent) { if (_contentType == ContentType::NoContent) {

View file

@ -67,7 +67,7 @@ protected:
virtual bool isTransparent() const override; virtual bool isTransparent() const override;
virtual bool wantsHandControllerPointerEvents() const override { return true; } virtual bool wantsHandControllerPointerEvents() const override { return true; }
virtual bool wantsKeyboardFocus() const override { return true; } virtual bool wantsKeyboardFocus() const override { return _wantsKeyboardFocus; }
void handlePointerEventAsTouch(const PointerEvent& event); void handlePointerEventAsTouch(const PointerEvent& event);
void handlePointerEventAsMouse(const PointerEvent& event); void handlePointerEventAsMouse(const PointerEvent& event);
@ -103,6 +103,7 @@ private:
bool _useBackground { false }; bool _useBackground { false };
QString _userAgent; QString _userAgent;
WebInputMode _inputMode { WebInputMode::TOUCH }; WebInputMode _inputMode { WebInputMode::TOUCH };
bool _wantsKeyboardFocus { true };
glm::vec3 _contextPosition; glm::vec3 _contextPosition;

View file

@ -644,6 +644,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
CHECK_PROPERTY_CHANGE(PROP_SCRIPT_URL, scriptURL); CHECK_PROPERTY_CHANGE(PROP_SCRIPT_URL, scriptURL);
CHECK_PROPERTY_CHANGE(PROP_MAX_FPS, maxFPS); CHECK_PROPERTY_CHANGE(PROP_MAX_FPS, maxFPS);
CHECK_PROPERTY_CHANGE(PROP_INPUT_MODE, inputMode); CHECK_PROPERTY_CHANGE(PROP_INPUT_MODE, inputMode);
CHECK_PROPERTY_CHANGE(PROP_WANTS_KEYBOARD_FOCUS, wantsKeyboardFocus);
CHECK_PROPERTY_CHANGE(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, showKeyboardFocusHighlight); CHECK_PROPERTY_CHANGE(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, showKeyboardFocusHighlight);
CHECK_PROPERTY_CHANGE(PROP_WEB_USE_BACKGROUND, useBackground); CHECK_PROPERTY_CHANGE(PROP_WEB_USE_BACKGROUND, useBackground);
CHECK_PROPERTY_CHANGE(PROP_USER_AGENT, userAgent); CHECK_PROPERTY_CHANGE(PROP_USER_AGENT, userAgent);
@ -1423,6 +1424,8 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
* @property {string} scriptURL="" - The URL of a JavaScript file to inject into the web page. * @property {string} scriptURL="" - The URL of a JavaScript file to inject into the web page.
* @property {number} maxFPS=10 - The maximum update rate for the web content, in frames/second. * @property {number} maxFPS=10 - The maximum update rate for the web content, in frames/second.
* @property {WebInputMode} inputMode="touch" - The user input mode to use. * @property {WebInputMode} inputMode="touch" - The user input mode to use.
* @property {boolean} wantsKeyboardFocus=true - <code>true</code> if the entity should capture keyboard focus, <code>false</code> if it
* shouldn't.
* @property {boolean} showKeyboardFocusHighlight=true - <code>true</code> if the entity is highlighted when it has keyboard * @property {boolean} showKeyboardFocusHighlight=true - <code>true</code> if the entity is highlighted when it has keyboard
* focus, <code>false</code> if it isn't. * focus, <code>false</code> if it isn't.
* @property {boolean} useBackground=true - <code>true</code> if the web entity should have a background, * @property {boolean} useBackground=true - <code>true</code> if the web entity should have a background,
@ -1857,6 +1860,7 @@ ScriptValue EntityItemProperties::copyToScriptValue(ScriptEngine* engine, bool s
COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_SCRIPT_URL, scriptURL); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_SCRIPT_URL, scriptURL);
COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_MAX_FPS, maxFPS); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_MAX_FPS, maxFPS);
COPY_PROPERTY_TO_QSCRIPTVALUE_GETTER(PROP_INPUT_MODE, inputMode, getInputModeAsString()); COPY_PROPERTY_TO_QSCRIPTVALUE_GETTER(PROP_INPUT_MODE, inputMode, getInputModeAsString());
COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_WANTS_KEYBOARD_FOCUS, wantsKeyboardFocus);
COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, showKeyboardFocusHighlight); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, showKeyboardFocusHighlight);
COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_WEB_USE_BACKGROUND, useBackground); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_WEB_USE_BACKGROUND, useBackground);
COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_USER_AGENT, userAgent); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_USER_AGENT, userAgent);
@ -2238,6 +2242,7 @@ void EntityItemProperties::copyFromScriptValue(const ScriptValue& object, bool h
COPY_PROPERTY_FROM_QSCRIPTVALUE(scriptURL, QString, setScriptURL); COPY_PROPERTY_FROM_QSCRIPTVALUE(scriptURL, QString, setScriptURL);
COPY_PROPERTY_FROM_QSCRIPTVALUE(maxFPS, uint8_t, setMaxFPS); COPY_PROPERTY_FROM_QSCRIPTVALUE(maxFPS, uint8_t, setMaxFPS);
COPY_PROPERTY_FROM_QSCRIPTVALUE_ENUM(inputMode, InputMode); COPY_PROPERTY_FROM_QSCRIPTVALUE_ENUM(inputMode, InputMode);
COPY_PROPERTY_FROM_QSCRIPTVALUE(wantsKeyboardFocus, bool, setWantsKeyboardFocus);
COPY_PROPERTY_FROM_QSCRIPTVALUE(showKeyboardFocusHighlight, bool, setShowKeyboardFocusHighlight); COPY_PROPERTY_FROM_QSCRIPTVALUE(showKeyboardFocusHighlight, bool, setShowKeyboardFocusHighlight);
COPY_PROPERTY_FROM_QSCRIPTVALUE(useBackground, bool, setUseBackground); COPY_PROPERTY_FROM_QSCRIPTVALUE(useBackground, bool, setUseBackground);
COPY_PROPERTY_FROM_QSCRIPTVALUE(userAgent, QString, setUserAgent); COPY_PROPERTY_FROM_QSCRIPTVALUE(userAgent, QString, setUserAgent);
@ -2522,6 +2527,7 @@ void EntityItemProperties::merge(const EntityItemProperties& other) {
COPY_PROPERTY_IF_CHANGED(scriptURL); COPY_PROPERTY_IF_CHANGED(scriptURL);
COPY_PROPERTY_IF_CHANGED(maxFPS); COPY_PROPERTY_IF_CHANGED(maxFPS);
COPY_PROPERTY_IF_CHANGED(inputMode); COPY_PROPERTY_IF_CHANGED(inputMode);
COPY_PROPERTY_IF_CHANGED(wantsKeyboardFocus);
COPY_PROPERTY_IF_CHANGED(showKeyboardFocusHighlight); COPY_PROPERTY_IF_CHANGED(showKeyboardFocusHighlight);
COPY_PROPERTY_IF_CHANGED(useBackground); COPY_PROPERTY_IF_CHANGED(useBackground);
COPY_PROPERTY_IF_CHANGED(userAgent); COPY_PROPERTY_IF_CHANGED(userAgent);
@ -2917,6 +2923,7 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr
ADD_PROPERTY_TO_MAP(PROP_SCRIPT_URL, ScriptURL, scriptURL, QString); ADD_PROPERTY_TO_MAP(PROP_SCRIPT_URL, ScriptURL, scriptURL, QString);
ADD_PROPERTY_TO_MAP(PROP_MAX_FPS, MaxFPS, maxFPS, uint8_t); ADD_PROPERTY_TO_MAP(PROP_MAX_FPS, MaxFPS, maxFPS, uint8_t);
ADD_PROPERTY_TO_MAP(PROP_INPUT_MODE, InputMode, inputMode, WebInputMode); ADD_PROPERTY_TO_MAP(PROP_INPUT_MODE, InputMode, inputMode, WebInputMode);
ADD_PROPERTY_TO_MAP(PROP_WANTS_KEYBOARD_FOCUS, WantsKeyboardFocus, wantsKeyboardFocus, bool);
ADD_PROPERTY_TO_MAP(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, ShowKeyboardFocusHighlight, showKeyboardFocusHighlight, bool); ADD_PROPERTY_TO_MAP(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, ShowKeyboardFocusHighlight, showKeyboardFocusHighlight, bool);
ADD_PROPERTY_TO_MAP(PROP_WEB_USE_BACKGROUND, useBackground, useBackground, bool); ADD_PROPERTY_TO_MAP(PROP_WEB_USE_BACKGROUND, useBackground, useBackground, bool);
ADD_PROPERTY_TO_MAP(PROP_USER_AGENT, UserAgent, userAgent, QString); ADD_PROPERTY_TO_MAP(PROP_USER_AGENT, UserAgent, userAgent, QString);
@ -3340,6 +3347,7 @@ OctreeElement::AppendState EntityItemProperties::encodeEntityEditPacket(PacketTy
APPEND_ENTITY_PROPERTY(PROP_SCRIPT_URL, properties.getScriptURL()); APPEND_ENTITY_PROPERTY(PROP_SCRIPT_URL, properties.getScriptURL());
APPEND_ENTITY_PROPERTY(PROP_MAX_FPS, properties.getMaxFPS()); APPEND_ENTITY_PROPERTY(PROP_MAX_FPS, properties.getMaxFPS());
APPEND_ENTITY_PROPERTY(PROP_INPUT_MODE, (uint32_t)properties.getInputMode()); APPEND_ENTITY_PROPERTY(PROP_INPUT_MODE, (uint32_t)properties.getInputMode());
APPEND_ENTITY_PROPERTY(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, properties.getWantsKeyboardFocus());
APPEND_ENTITY_PROPERTY(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, properties.getShowKeyboardFocusHighlight()); APPEND_ENTITY_PROPERTY(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, properties.getShowKeyboardFocusHighlight());
APPEND_ENTITY_PROPERTY(PROP_WEB_USE_BACKGROUND, properties.getUseBackground()); APPEND_ENTITY_PROPERTY(PROP_WEB_USE_BACKGROUND, properties.getUseBackground());
APPEND_ENTITY_PROPERTY(PROP_USER_AGENT, properties.getUserAgent()); APPEND_ENTITY_PROPERTY(PROP_USER_AGENT, properties.getUserAgent());
@ -3806,6 +3814,7 @@ bool EntityItemProperties::decodeEntityEditPacket(const unsigned char* data, int
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_SCRIPT_URL, QString, setScriptURL); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_SCRIPT_URL, QString, setScriptURL);
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_MAX_FPS, uint8_t, setMaxFPS); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_MAX_FPS, uint8_t, setMaxFPS);
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_INPUT_MODE, WebInputMode, setInputMode); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_INPUT_MODE, WebInputMode, setInputMode);
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_WANTS_KEYBOARD_FOCUS, bool, setWantsKeyboardFocus);
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, bool, setShowKeyboardFocusHighlight); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, bool, setShowKeyboardFocusHighlight);
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_WEB_USE_BACKGROUND, bool, setUseBackground); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_WEB_USE_BACKGROUND, bool, setUseBackground);
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_USER_AGENT, QString, setUserAgent); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_USER_AGENT, QString, setUserAgent);
@ -4169,6 +4178,7 @@ void EntityItemProperties::markAllChanged() {
_scriptURLChanged = true; _scriptURLChanged = true;
_maxFPSChanged = true; _maxFPSChanged = true;
_inputModeChanged = true; _inputModeChanged = true;
_wantsKeyboardFocusChanged = true;
_showKeyboardFocusHighlightChanged = true; _showKeyboardFocusHighlightChanged = true;
_useBackgroundChanged = true; _useBackgroundChanged = true;
_userAgentChanged = true; _userAgentChanged = true;
@ -4836,6 +4846,9 @@ QList<QString> EntityItemProperties::listChangedProperties() {
if (faceCameraChanged()) { if (faceCameraChanged()) {
out += "faceCamera"; out += "faceCamera";
} }
if (wantsKeyboardFocusChanged()) {
out += "wantsKeyboardFocus";
}
if (showKeyboardFocusHighlightChanged()) { if (showKeyboardFocusHighlightChanged()) {
out += "showKeyboardFocusHighlight"; out += "showKeyboardFocusHighlight";
} }

View file

@ -362,6 +362,7 @@ public:
DEFINE_PROPERTY_REF(PROP_SCRIPT_URL, ScriptURL, scriptURL, QString, ""); DEFINE_PROPERTY_REF(PROP_SCRIPT_URL, ScriptURL, scriptURL, QString, "");
DEFINE_PROPERTY_REF(PROP_MAX_FPS, MaxFPS, maxFPS, uint8_t, WebEntityItem::DEFAULT_MAX_FPS); DEFINE_PROPERTY_REF(PROP_MAX_FPS, MaxFPS, maxFPS, uint8_t, WebEntityItem::DEFAULT_MAX_FPS);
DEFINE_PROPERTY_REF_ENUM(PROP_INPUT_MODE, InputMode, inputMode, WebInputMode, WebInputMode::TOUCH); DEFINE_PROPERTY_REF_ENUM(PROP_INPUT_MODE, InputMode, inputMode, WebInputMode, WebInputMode::TOUCH);
DEFINE_PROPERTY_REF(PROP_WANTS_KEYBOARD_FOCUS, WantsKeyboardFocus, wantsKeyboardFocus, bool, true);
DEFINE_PROPERTY_REF(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, ShowKeyboardFocusHighlight, showKeyboardFocusHighlight, bool, true); DEFINE_PROPERTY_REF(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, ShowKeyboardFocusHighlight, showKeyboardFocusHighlight, bool, true);
DEFINE_PROPERTY_REF(PROP_WEB_USE_BACKGROUND, UseBackground, useBackground, bool, true); DEFINE_PROPERTY_REF(PROP_WEB_USE_BACKGROUND, UseBackground, useBackground, bool, true);
DEFINE_PROPERTY_REF(PROP_USER_AGENT, UserAgent, userAgent, QString, WebEntityItem::DEFAULT_USER_AGENT); DEFINE_PROPERTY_REF(PROP_USER_AGENT, UserAgent, userAgent, QString, WebEntityItem::DEFAULT_USER_AGENT);

View file

@ -322,9 +322,10 @@ enum EntityPropertyList {
PROP_SCRIPT_URL = PROP_DERIVED_2, PROP_SCRIPT_URL = PROP_DERIVED_2,
PROP_MAX_FPS = PROP_DERIVED_3, PROP_MAX_FPS = PROP_DERIVED_3,
PROP_INPUT_MODE = PROP_DERIVED_4, PROP_INPUT_MODE = PROP_DERIVED_4,
PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT = PROP_DERIVED_5, PROP_WANTS_KEYBOARD_FOCUS = PROP_DERIVED_5,
PROP_WEB_USE_BACKGROUND = PROP_DERIVED_6, PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT = PROP_DERIVED_6,
PROP_USER_AGENT = PROP_DERIVED_7, PROP_WEB_USE_BACKGROUND = PROP_DERIVED_7,
PROP_USER_AGENT = PROP_DERIVED_8,
// Polyline // Polyline
PROP_LINE_POINTS = PROP_DERIVED_0, PROP_LINE_POINTS = PROP_DERIVED_0,

View file

@ -61,6 +61,7 @@ EntityItemProperties WebEntityItem::getProperties(const EntityPropertyFlags& des
COPY_ENTITY_PROPERTY_TO_PROPERTIES(scriptURL, getScriptURL); COPY_ENTITY_PROPERTY_TO_PROPERTIES(scriptURL, getScriptURL);
COPY_ENTITY_PROPERTY_TO_PROPERTIES(maxFPS, getMaxFPS); COPY_ENTITY_PROPERTY_TO_PROPERTIES(maxFPS, getMaxFPS);
COPY_ENTITY_PROPERTY_TO_PROPERTIES(inputMode, getInputMode); COPY_ENTITY_PROPERTY_TO_PROPERTIES(inputMode, getInputMode);
COPY_ENTITY_PROPERTY_TO_PROPERTIES(wantsKeyboardFocus, wantsKeyboardFocus);
COPY_ENTITY_PROPERTY_TO_PROPERTIES(showKeyboardFocusHighlight, getShowKeyboardFocusHighlight); COPY_ENTITY_PROPERTY_TO_PROPERTIES(showKeyboardFocusHighlight, getShowKeyboardFocusHighlight);
COPY_ENTITY_PROPERTY_TO_PROPERTIES(useBackground, getUseBackground); COPY_ENTITY_PROPERTY_TO_PROPERTIES(useBackground, getUseBackground);
COPY_ENTITY_PROPERTY_TO_PROPERTIES(userAgent, getUserAgent); COPY_ENTITY_PROPERTY_TO_PROPERTIES(userAgent, getUserAgent);
@ -83,6 +84,7 @@ bool WebEntityItem::setSubClassProperties(const EntityItemProperties& properties
SET_ENTITY_PROPERTY_FROM_PROPERTIES(scriptURL, setScriptURL); SET_ENTITY_PROPERTY_FROM_PROPERTIES(scriptURL, setScriptURL);
SET_ENTITY_PROPERTY_FROM_PROPERTIES(maxFPS, setMaxFPS); SET_ENTITY_PROPERTY_FROM_PROPERTIES(maxFPS, setMaxFPS);
SET_ENTITY_PROPERTY_FROM_PROPERTIES(inputMode, setInputMode); SET_ENTITY_PROPERTY_FROM_PROPERTIES(inputMode, setInputMode);
SET_ENTITY_PROPERTY_FROM_PROPERTIES(wantsKeyboardFocus, setWantsKeyboardFocus);
SET_ENTITY_PROPERTY_FROM_PROPERTIES(showKeyboardFocusHighlight, setShowKeyboardFocusHighlight); SET_ENTITY_PROPERTY_FROM_PROPERTIES(showKeyboardFocusHighlight, setShowKeyboardFocusHighlight);
SET_ENTITY_PROPERTY_FROM_PROPERTIES(useBackground, setUseBackground); SET_ENTITY_PROPERTY_FROM_PROPERTIES(useBackground, setUseBackground);
SET_ENTITY_PROPERTY_FROM_PROPERTIES(userAgent, setUserAgent); SET_ENTITY_PROPERTY_FROM_PROPERTIES(userAgent, setUserAgent);
@ -113,6 +115,7 @@ int WebEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, i
READ_ENTITY_PROPERTY(PROP_SCRIPT_URL, QString, setScriptURL); READ_ENTITY_PROPERTY(PROP_SCRIPT_URL, QString, setScriptURL);
READ_ENTITY_PROPERTY(PROP_MAX_FPS, uint8_t, setMaxFPS); READ_ENTITY_PROPERTY(PROP_MAX_FPS, uint8_t, setMaxFPS);
READ_ENTITY_PROPERTY(PROP_INPUT_MODE, WebInputMode, setInputMode); READ_ENTITY_PROPERTY(PROP_INPUT_MODE, WebInputMode, setInputMode);
READ_ENTITY_PROPERTY(PROP_WANTS_KEYBOARD_FOCUS, bool, setWantsKeyboardFocus);
READ_ENTITY_PROPERTY(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, bool, setShowKeyboardFocusHighlight); READ_ENTITY_PROPERTY(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, bool, setShowKeyboardFocusHighlight);
READ_ENTITY_PROPERTY(PROP_WEB_USE_BACKGROUND, bool, setUseBackground); READ_ENTITY_PROPERTY(PROP_WEB_USE_BACKGROUND, bool, setUseBackground);
READ_ENTITY_PROPERTY(PROP_USER_AGENT, QString, setUserAgent); READ_ENTITY_PROPERTY(PROP_USER_AGENT, QString, setUserAgent);
@ -131,6 +134,7 @@ EntityPropertyFlags WebEntityItem::getEntityProperties(EncodeBitstreamParams& pa
requestedProperties += PROP_SCRIPT_URL; requestedProperties += PROP_SCRIPT_URL;
requestedProperties += PROP_MAX_FPS; requestedProperties += PROP_MAX_FPS;
requestedProperties += PROP_INPUT_MODE; requestedProperties += PROP_INPUT_MODE;
requestedProperties += PROP_WANTS_KEYBOARD_FOCUS;
requestedProperties += PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT; requestedProperties += PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT;
requestedProperties += PROP_WEB_USE_BACKGROUND; requestedProperties += PROP_WEB_USE_BACKGROUND;
requestedProperties += PROP_USER_AGENT; requestedProperties += PROP_USER_AGENT;
@ -158,6 +162,7 @@ void WebEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeBitst
APPEND_ENTITY_PROPERTY(PROP_SCRIPT_URL, getScriptURL()); APPEND_ENTITY_PROPERTY(PROP_SCRIPT_URL, getScriptURL());
APPEND_ENTITY_PROPERTY(PROP_MAX_FPS, getMaxFPS()); APPEND_ENTITY_PROPERTY(PROP_MAX_FPS, getMaxFPS());
APPEND_ENTITY_PROPERTY(PROP_INPUT_MODE, (uint32_t)getInputMode()); APPEND_ENTITY_PROPERTY(PROP_INPUT_MODE, (uint32_t)getInputMode());
APPEND_ENTITY_PROPERTY(PROP_WANTS_KEYBOARD_FOCUS, wantsKeyboardFocus());
APPEND_ENTITY_PROPERTY(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, getShowKeyboardFocusHighlight()); APPEND_ENTITY_PROPERTY(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, getShowKeyboardFocusHighlight());
APPEND_ENTITY_PROPERTY(PROP_WEB_USE_BACKGROUND, getUseBackground()); APPEND_ENTITY_PROPERTY(PROP_WEB_USE_BACKGROUND, getUseBackground());
APPEND_ENTITY_PROPERTY(PROP_USER_AGENT, getUserAgent()); APPEND_ENTITY_PROPERTY(PROP_USER_AGENT, getUserAgent());
@ -269,6 +274,17 @@ WebInputMode WebEntityItem::getInputMode() const {
}); });
} }
void WebEntityItem::setWantsKeyboardFocus(bool value) {
withWriteLock([&] {
_needsRenderUpdate |= _wantsKeyboardFocus != value;
_wantsKeyboardFocus = value;
});
}
bool WebEntityItem::wantsKeyboardFocus() const {
return _wantsKeyboardFocus;
}
void WebEntityItem::setShowKeyboardFocusHighlight(bool value) { void WebEntityItem::setShowKeyboardFocusHighlight(bool value) {
_showKeyboardFocusHighlight = value; _showKeyboardFocusHighlight = value;
} }

View file

@ -72,6 +72,9 @@ public:
void setInputMode(const WebInputMode& value); void setInputMode(const WebInputMode& value);
WebInputMode getInputMode() const; WebInputMode getInputMode() const;
bool wantsKeyboardFocus() const;
void setWantsKeyboardFocus(bool value);
bool getShowKeyboardFocusHighlight() const; bool getShowKeyboardFocusHighlight() const;
void setShowKeyboardFocusHighlight(bool value); void setShowKeyboardFocusHighlight(bool value);
@ -94,6 +97,7 @@ protected:
QString _scriptURL; QString _scriptURL;
uint8_t _maxFPS; uint8_t _maxFPS;
WebInputMode _inputMode; WebInputMode _inputMode;
bool _wantsKeyboardFocus { false };
bool _showKeyboardFocusHighlight { false }; bool _showKeyboardFocusHighlight { false };
bool _useBackground { false }; bool _useBackground { false };
QString _userAgent; QString _userAgent;

View file

@ -292,6 +292,7 @@ enum class EntityVersion : PacketVersion {
TextAlignment, TextAlignment,
Mirror, Mirror,
EntityTags, EntityTags,
WantsKeyboardFocus,
// Add new versions above here // Add new versions above here
NUM_PACKET_TYPE, NUM_PACKET_TYPE,

View file

@ -237,6 +237,9 @@
"showKeyboardFocusHighlight": { "showKeyboardFocusHighlight": {
"tooltip": "If enabled, highlights when it has keyboard focus." "tooltip": "If enabled, highlights when it has keyboard focus."
}, },
"wantsKeyboardFocus": {
"tooltip": "If enabled, this web entity will capture keyboard focus once clicked."
},
"isEmitting": { "isEmitting": {
"tooltip": "If enabled, then particles are emitted." "tooltip": "If enabled, then particles are emitted."
}, },

View file

@ -808,6 +808,11 @@ const GROUPS = [
}, },
propertyID: "inputMode", propertyID: "inputMode",
}, },
{
label: "Wants Keyboard Focus",
type: "bool",
propertyID: "wantsKeyboardFocus",
},
{ {
label: "Focus Highlight", label: "Focus Highlight",
type: "bool", type: "bool",