Fixed problems with smileys

This commit is contained in:
Torsten Schulz
2024-02-18 12:05:46 +01:00
parent 38ab762794
commit ee522aa82e
2 changed files with 15 additions and 11 deletions

View File

@@ -3,7 +3,6 @@
#include <string>
#include <regex>
#include <iomanip>
#include <fstream>
#include <rapidcsv.h>
#include <curl/curl.h>
#include <libxml2/libxml/parser.h>
@@ -412,9 +411,9 @@ Wt::WContainerWidget* App::createInputContainer(Wt::WVBoxLayout* layout) {
auto inputLine = createInputLine(inputLayout);
inputLine->setFocus();
createSendImageButton(inputLayout);
auto cursorPosition = std::make_shared<int>(0);
createSmileyButton(inputLayout, inputLine, cursorPosition);
createSmileyBar(inputContainer, inputLine, cursorPosition);
messageCursorPosition_ = std::make_shared<int>(0);
createSmileyButton(inputLayout, inputLine, messageCursorPosition_);
createSmileyBar(inputContainer, inputLine, messageCursorPosition_);
createSendButton(inputLayout, inputLine);
return inputContainer;
}
@@ -539,6 +538,7 @@ void App::sendMessage(Wt::WLineEdit *inputLine) {
}
inputLine->setValueText("");
auto sendString = Wt::WString(utf8String.substr(0, 250));
*messageCursorPosition_ = 0;
server_.addMessage(sessionId(), currentConversationWith_, Broadcast::Message(sessionId(), sendString));
}
@@ -762,11 +762,15 @@ std::unique_ptr<Wt::WContainerWidget> App::createSmileysBar(Wt::WLineEdit *input
auto item = smileyBar->addNew<Wt::WText>(code, Wt::TextFormat::UnsafeXHTML);
item->setToolTip(smiley.second.tooltip);
item->clicked().connect([=]() {
try {
auto currentText = inputLine->text().toUTF8();
currentText.insert(*cursorPosition, smiley.first);
inputLine->setText(currentText);
inputLine->setFocus();
*cursorPosition += currentText.length() - 1;
*cursorPosition += smiley.first.length();
} catch (const std::exception &e) {
std::cout << e.what() << std::endl;
}
});
}
smileyBar->setStyleClass("smiley-bar");

View File

@@ -47,7 +47,7 @@ private:
{";p", Smiley("1F61C", "Twinkle tongue")},
{"O)", Smiley("1F607", "Angel")},
{":*", Smiley("1F617", "Kiss")},
{"<3", Smiley("1FA77", "Heart")},
{"(h)", Smiley("1FA77", "Heart")},
{"xD", Smiley("1F602", "Laughing hard")},
{":@", Smiley("1F635", "Confused")},
{":O", Smiley("1F632", "Surprised")},
@@ -87,7 +87,7 @@ private:
std::vector<std::string> searchResults_;
std::string currentConversationWith_{""};
bool inboxOpen_{false};
int messageCursorPosition_{-1};
std::shared_ptr<int> messageCursorPosition_;
std::unique_ptr<Wt::WSound> messageReceived_;
Search searchFields;
Wt::WTimer *loginTimer_;