summaryrefslogtreecommitdiff
path: root/indra/llui/llemojihelper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui/llemojihelper.cpp')
-rw-r--r--indra/llui/llemojihelper.cpp178
1 files changed, 89 insertions, 89 deletions
diff --git a/indra/llui/llemojihelper.cpp b/indra/llui/llemojihelper.cpp
index 89e6ddf987..fbe313924c 100644
--- a/indra/llui/llemojihelper.cpp
+++ b/indra/llui/llemojihelper.cpp
@@ -46,124 +46,124 @@ constexpr S32 HELPER_FLOATER_OFFSET_Y = 0;
std::string LLEmojiHelper::getToolTip(llwchar ch) const
{
- return LLEmojiDictionary::instance().getNameFromEmoji(ch);
+ return LLEmojiDictionary::instance().getNameFromEmoji(ch);
}
bool LLEmojiHelper::isActive(const LLUICtrl* ctrl_p) const
{
- return mHostHandle.get() == ctrl_p;
+ return mHostHandle.get() == ctrl_p;
}
// static
bool LLEmojiHelper::isCursorInEmojiCode(const LLWString& wtext, S32 cursorPos, S32* pShortCodePos)
{
- // If the cursor is currently on a colon start the check one character further back
- S32 shortCodePos = (cursorPos == 0 || L':' != wtext[cursorPos - 1]) ? cursorPos : cursorPos - 1;
-
- auto isPartOfShortcode = [](llwchar ch) {
- switch (ch)
- {
- case L'-':
- case L'_':
- case L'+':
- return true;
- default:
- return LLStringOps::isAlnum(ch);
- }
- };
- while (shortCodePos > 1 && isPartOfShortcode(wtext[shortCodePos - 1]))
- {
- shortCodePos--;
- }
-
- bool isShortCode = (L':' == wtext[shortCodePos - 1]) && (cursorPos - shortCodePos >= 2);
- if (pShortCodePos)
- *pShortCodePos = (isShortCode) ? shortCodePos - 1 : -1;
- return isShortCode;
+ // If the cursor is currently on a colon start the check one character further back
+ S32 shortCodePos = (cursorPos == 0 || L':' != wtext[cursorPos - 1]) ? cursorPos : cursorPos - 1;
+
+ auto isPartOfShortcode = [](llwchar ch) {
+ switch (ch)
+ {
+ case L'-':
+ case L'_':
+ case L'+':
+ return true;
+ default:
+ return LLStringOps::isAlnum(ch);
+ }
+ };
+ while (shortCodePos > 1 && isPartOfShortcode(wtext[shortCodePos - 1]))
+ {
+ shortCodePos--;
+ }
+
+ bool isShortCode = (L':' == wtext[shortCodePos - 1]) && (cursorPos - shortCodePos >= 2);
+ if (pShortCodePos)
+ *pShortCodePos = (isShortCode) ? shortCodePos - 1 : -1;
+ return isShortCode;
}
void LLEmojiHelper::showHelper(LLUICtrl* hostctrl_p, S32 local_x, S32 local_y, const std::string& short_code, std::function<void(llwchar)> cb)
{
- // Commit immediately if the user already typed a full shortcode
- if (const auto* emojiDescrp = LLEmojiDictionary::instance().getDescriptorFromShortCode(short_code))
- {
- cb(emojiDescrp->Character);
- hideHelper();
- return;
- }
-
- if (mHelperHandle.isDead())
- {
- LLFloater* pHelperFloater = LLFloaterReg::getInstance(DEFAULT_EMOJI_HELPER_FLOATER);
- mHelperHandle = pHelperFloater->getHandle();
- mHelperCommitConn = pHelperFloater->setCommitCallback(std::bind([&](const LLSD& sdValue) { onCommitEmoji(utf8str_to_wstring(sdValue.asStringRef())[0]); }, std::placeholders::_2));
- }
- setHostCtrl(hostctrl_p);
- mEmojiCommitCb = cb;
-
- S32 floater_x, floater_y;
- if (!hostctrl_p->localPointToOtherView(local_x, local_y, &floater_x, &floater_y, gFloaterView))
- {
- LL_ERRS() << "Cannot show emoji helper for non-floater controls." << LL_ENDL;
- return;
- }
-
- LLFloater* pHelperFloater = mHelperHandle.get();
- LLRect rect = pHelperFloater->getRect();
- S32 left = floater_x - HELPER_FLOATER_OFFSET_X;
- S32 top = floater_y - HELPER_FLOATER_OFFSET_Y + rect.getHeight();
- rect.setLeftTopAndSize(left, top, rect.getWidth(), rect.getHeight());
- pHelperFloater->setRect(rect);
- pHelperFloater->openFloater(LLSD().with("hint", short_code));
+ // Commit immediately if the user already typed a full shortcode
+ if (const auto* emojiDescrp = LLEmojiDictionary::instance().getDescriptorFromShortCode(short_code))
+ {
+ cb(emojiDescrp->Character);
+ hideHelper();
+ return;
+ }
+
+ if (mHelperHandle.isDead())
+ {
+ LLFloater* pHelperFloater = LLFloaterReg::getInstance(DEFAULT_EMOJI_HELPER_FLOATER);
+ mHelperHandle = pHelperFloater->getHandle();
+ mHelperCommitConn = pHelperFloater->setCommitCallback(std::bind([&](const LLSD& sdValue) { onCommitEmoji(utf8str_to_wstring(sdValue.asStringRef())[0]); }, std::placeholders::_2));
+ }
+ setHostCtrl(hostctrl_p);
+ mEmojiCommitCb = cb;
+
+ S32 floater_x, floater_y;
+ if (!hostctrl_p->localPointToOtherView(local_x, local_y, &floater_x, &floater_y, gFloaterView))
+ {
+ LL_ERRS() << "Cannot show emoji helper for non-floater controls." << LL_ENDL;
+ return;
+ }
+
+ LLFloater* pHelperFloater = mHelperHandle.get();
+ LLRect rect = pHelperFloater->getRect();
+ S32 left = floater_x - HELPER_FLOATER_OFFSET_X;
+ S32 top = floater_y - HELPER_FLOATER_OFFSET_Y + rect.getHeight();
+ rect.setLeftTopAndSize(left, top, rect.getWidth(), rect.getHeight());
+ pHelperFloater->setRect(rect);
+ pHelperFloater->openFloater(LLSD().with("hint", short_code));
}
void LLEmojiHelper::hideHelper(const LLUICtrl* ctrl_p, bool strict)
{
- mIsHideDisabled &= !strict;
- if (mIsHideDisabled || (ctrl_p && !isActive(ctrl_p)))
- {
- return;
- }
+ mIsHideDisabled &= !strict;
+ if (mIsHideDisabled || (ctrl_p && !isActive(ctrl_p)))
+ {
+ return;
+ }
- setHostCtrl(nullptr);
+ setHostCtrl(nullptr);
}
bool LLEmojiHelper::handleKey(const LLUICtrl* ctrl_p, KEY key, MASK mask)
{
- if (mHelperHandle.isDead() || !isActive(ctrl_p))
- {
- return false;
- }
+ if (mHelperHandle.isDead() || !isActive(ctrl_p))
+ {
+ return false;
+ }
- return mHelperHandle.get()->handleKey(key, mask, true);
+ return mHelperHandle.get()->handleKey(key, mask, true);
}
void LLEmojiHelper::onCommitEmoji(llwchar emoji)
{
- if (!mHostHandle.isDead() && mEmojiCommitCb)
- {
- mEmojiCommitCb(emoji);
- }
+ if (!mHostHandle.isDead() && mEmojiCommitCb)
+ {
+ mEmojiCommitCb(emoji);
+ }
}
void LLEmojiHelper::setHostCtrl(LLUICtrl* hostctrl_p)
{
- const LLUICtrl* pCurHostCtrl = mHostHandle.get();
- if (pCurHostCtrl != hostctrl_p)
- {
- mHostCtrlFocusLostConn.disconnect();
- mHostHandle.markDead();
- mEmojiCommitCb = {};
-
- if (!mHelperHandle.isDead())
- {
- mHelperHandle.get()->closeFloater();
- }
-
- if (hostctrl_p)
- {
- mHostHandle = hostctrl_p->getHandle();
- mHostCtrlFocusLostConn = hostctrl_p->setFocusLostCallback(std::bind([&]() { hideHelper(getHostCtrl()); }));
- }
- }
+ const LLUICtrl* pCurHostCtrl = mHostHandle.get();
+ if (pCurHostCtrl != hostctrl_p)
+ {
+ mHostCtrlFocusLostConn.disconnect();
+ mHostHandle.markDead();
+ mEmojiCommitCb = {};
+
+ if (!mHelperHandle.isDead())
+ {
+ mHelperHandle.get()->closeFloater();
+ }
+
+ if (hostctrl_p)
+ {
+ mHostHandle = hostctrl_p->getHandle();
+ mHostCtrlFocusLostConn = hostctrl_p->setFocusLostCallback(std::bind([&]() { hideHelper(getHostCtrl()); }));
+ }
+ }
}