chatgui: rlottie animated emoji with hover-to-animate, drag-to-select

- Add LottieIcon class (TGS gzip decompress + rlottie C API render)
- Add AnimTimer singleton (33ms tick, activate/deactivate refcount)
- Add EmojiButton (hover-triggered animation in emoji picker)
- Add AnimatedEmoji support to EmojiData (5 TGS mappings)
- MessageDelegate: QTextLayout-based animated emoji overlay (text + reactions)
- ChatView: drag-to-select (click deselects, 5px drag starts selection)
- ChatView: hoveredIndexChanged signal for hover-triggered animations
- MessageList: wire AnimTimer tick to viewport update, hover → activate
- CMake: AUTORCC, rlottie, zlib dependencies
- Add 5 TGS animations as Qt resources
This commit is contained in:
Evgeny committed 2026-06-24 13:45:25 +03:00
1 parent 0e2b0e28d8
commit 62b3695a77
42 files changed
+286658 -73

No files matched your search

+7 -2
View File
@@ -1,10 +1,11 @@
#include "inputbar.h"
#include "emojipanel.h"
#include "debug_ui.h"
#include <QDebug>
#include <QTextEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QFileDialog>
#include <QDebug>
#include <QKeyEvent>
#include <QFontMetrics>
#include <QScrollBar>
@@ -117,7 +118,11 @@ void InputBar::adjustInputHeight() {
}
void InputBar::onSendClicked() {
QString text = m_input->toPlainText().trimmed();
QString text = m_input->toPlainText();
GUI_INFO("send: len=%d hasLF=%d text='%s'",
text.length(), text.contains('\n'), qPrintable(text));
while (!text.isEmpty() && (text.back() == ' ' || text.back() == '\t'))
text.chop(1);
if (text.isEmpty()) return;
emit sendMessage(text);
m_input->clear();