started adding text selection

This commit is contained in:
fourtf
2017-02-17 23:51:35 +01:00
parent bfd57121b8
commit 181fb69a44
12 changed files with 238 additions and 29 deletions
-2
View File
@@ -76,8 +76,6 @@ ChatWidget::setChannelName(const QString &name)
auto messageRef = new messages::MessageRef(message);
qDebug() << "xD";
this->messages.appendItem(
std::shared_ptr<messages::MessageRef>(messageRef), deleted);
});
+66
View File
@@ -24,6 +24,7 @@ ChatWidgetView::ChatWidgetView(ChatWidget *parent)
{
this->setAttribute(Qt::WA_OpaquePaintEvent);
this->scrollbar.setSmallChange(5);
this->setMouseTracking(true);
QObject::connect(&Settings::getInstance(), &Settings::wordTypeMaskChanged,
this, &ChatWidgetView::wordTypeMaskChanged);
@@ -286,5 +287,70 @@ ChatWidgetView::wheelEvent(QWheelEvent *event)
true);
}
}
void
ChatWidgetView::mouseMoveEvent(QMouseEvent *event)
{
std::shared_ptr<messages::MessageRef> message;
QPoint relativePos;
if (!tryGetMessageAt(event->pos(), message, relativePos)) {
this->setCursor(Qt::ArrowCursor);
return;
}
auto _message = message->getMessage();
auto user = _message->getUserName();
messages::Word hoverWord;
if (!message->tryGetWordPart(relativePos, hoverWord)) {
this->setCursor(Qt::ArrowCursor);
return;
}
int index = message->getSelectionIndex(relativePos);
qDebug() << index;
if (hoverWord.getLink().getIsValid()) {
this->setCursor(Qt::PointingHandCursor);
qDebug() << hoverWord.getLink().getValue();
} else {
this->setCursor(Qt::ArrowCursor);
}
}
bool
ChatWidgetView::tryGetMessageAt(QPoint p,
std::shared_ptr<messages::MessageRef> &_message,
QPoint &relativePos)
{
auto messages = chatWidget->getMessagesSnapshot();
int start = this->scrollbar.getCurrentValue();
if (start >= messages.getLength()) {
return false;
}
int y = -(messages[start].get()->getHeight() *
(fmod(this->scrollbar.getCurrentValue(), 1))) +
12;
for (int i = start; i < messages.getLength(); ++i) {
auto message = messages[i];
y += message->getHeight();
if (p.y() < y) {
relativePos = QPoint(p.x(), y - p.y());
_message = message;
return true;
}
}
return false;
}
}
}
+7
View File
@@ -39,6 +39,12 @@ protected:
void paintEvent(QPaintEvent *);
void wheelEvent(QWheelEvent *event);
void mouseMoveEvent(QMouseEvent *event);
bool tryGetMessageAt(QPoint p,
std::shared_ptr<messages::MessageRef> &message,
QPoint &relativePos);
private:
struct GifEmoteData {
messages::LazyLoadedImage *image;
@@ -56,6 +62,7 @@ private slots:
void
wordTypeMaskChanged()
{
layoutMessages();
update();
}
};
+1
View File
@@ -152,6 +152,7 @@ Notebook::performLayout(bool animated)
if (Settings::getInstance().hideUserButton.get()) {
userButton.hide();
} else {
userButton.move(x, 0);
userButton.show();
x += 24;
}