Make it so that the menus for individual thread messages can be accessed

This is mostly just for text type messages at the moment but give the framework so that when other message types can be sent in threads they can be added easily
This commit is contained in:
James Graham
2025-03-15 16:03:27 +00:00
parent 4a800f99e1
commit 24235174fd
11 changed files with 137 additions and 50 deletions

View File

@@ -82,6 +82,38 @@ void MessageAttached::setMaxContentWidth(qreal maxContentWidth)
Q_EMIT maxContentWidthChanged();
}
QString MessageAttached::selectedText() const
{
return m_selectedText;
}
void MessageAttached::setSelectedText(const QString &selectedTest)
{
m_explicitSelectedText = true;
if (m_selectedText == selectedTest) {
return;
}
m_selectedText = selectedTest;
propagateMessage(this);
Q_EMIT selectedTextChanged();
}
QString MessageAttached::hoveredLink() const
{
return m_hoveredLink;
}
void MessageAttached::setHoveredLink(const QString &hoveredLink)
{
m_explicitHoveredLink = true;
if (m_hoveredLink == hoveredLink) {
return;
}
m_hoveredLink = hoveredLink;
propagateMessage(this);
Q_EMIT hoveredLinkChanged();
}
void MessageAttached::propagateMessage(MessageAttached *message)
{
if (m_explicitRoom || m_room != message->room()) {
@@ -104,6 +136,16 @@ void MessageAttached::propagateMessage(MessageAttached *message)
Q_EMIT maxContentWidthChanged();
}
if (m_explicitSelectedText || m_selectedText != message->selectedText()) {
m_selectedText = message->selectedText();
Q_EMIT selectedTextChanged();
}
if (m_explicitHoveredLink || m_hoveredLink != message->hoveredLink()) {
m_hoveredLink = message->hoveredLink();
Q_EMIT hoveredLinkChanged();
}
const auto styles = attachedChildren();
for (auto *child : attachedChildren()) {
MessageAttached *message = qobject_cast<MessageAttached *>(child);