Fixed problems with smileys
This commit is contained in:
14
src/app.cpp
14
src/app.cpp
@@ -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");
|
||||
|
||||
@@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user