summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--resources/qml/ReplyPopup.qml1
-rw-r--r--resources/qml/delegates/Reply.qml9
-rw-r--r--src/timeline/EventDelegateChooser.cpp2
-rw-r--r--src/timeline/EventDelegateChooser.h17
4 files changed, 23 insertions, 6 deletions
diff --git a/resources/qml/ReplyPopup.qml b/resources/qml/ReplyPopup.qml
index 17ce7ee4..7f2917cc 100644
--- a/resources/qml/ReplyPopup.qml
+++ b/resources/qml/ReplyPopup.qml
@@ -33,6 +33,7 @@ Rectangle {
         userColor: TimelineManager.userColor(modelData.userId, palette.window)
         visible: room && room.reply
         maxWidth: parent.width - anchors.leftMargin - anchors.rightMargin
+        limitHeight: true
     }
     ImageButton {
         id: closeReplyButton
diff --git a/resources/qml/delegates/Reply.qml b/resources/qml/delegates/Reply.qml
index ff46347f..f0884a06 100644
--- a/resources/qml/delegates/Reply.qml
+++ b/resources/qml/delegates/Reply.qml
@@ -20,9 +20,10 @@ AbstractButton {
 
     property string userId: eventId ? room.dataById(eventId, Room.UserId, "") : ""
     property string userName: eventId ? room.dataById(eventId, Room.UserName, "") : ""
-    implicitHeight: replyContainer.implicitHeight
+    implicitHeight: replyContainer.height
     implicitWidth: replyContainer.implicitWidth
     required property int maxWidth
+    property bool limitHeight: false
 
     NhekoCursorShape {
         anchors.fill: parent
@@ -48,6 +49,7 @@ AbstractButton {
         replyTo: ""
         mainInset: 4 + Nheko.paddingMedium
         maxWidth: r.maxWidth
+        limitAsReply: r.limitHeight
 
         //height: replyContainer.implicitHeight
         data: Row {
@@ -55,6 +57,10 @@ AbstractButton {
 
             spacing: Nheko.paddingSmall
 
+            clip: r.limitHeight
+
+            height: Math.min( timelineEvent.main?.height, timelineView.height / 10) + Nheko.paddingSmall + usernameBtn.height
+
             Rectangle {
                 id: colorline
 
@@ -71,6 +77,7 @@ AbstractButton {
                 AbstractButton {
                     id: usernameBtn
 
+
                     contentItem: Label {
                         id: userName_
                         text: r.userName
diff --git a/src/timeline/EventDelegateChooser.cpp b/src/timeline/EventDelegateChooser.cpp
index f299b991..5ce8d63e 100644
--- a/src/timeline/EventDelegateChooser.cpp
+++ b/src/timeline/EventDelegateChooser.cpp
@@ -142,7 +142,7 @@ EventDelegateChooser::DelegateIncubator::setInitialState(QObject *obj)
     auto attached = qobject_cast<EventDelegateChooserAttachedType *>(
       qmlAttachedPropertiesObject<EventDelegateChooser>(obj));
     Q_ASSERT(attached != nullptr);
-    attached->setIsReply(this->forReply);
+    attached->setIsReply(this->forReply || chooser.limitAsReply_);
 
     for (const auto &role : roles) {
         const auto &roleName = roleNames[role.role()];
diff --git a/src/timeline/EventDelegateChooser.h b/src/timeline/EventDelegateChooser.h
index df1953ab..139b143a 100644
--- a/src/timeline/EventDelegateChooser.h
+++ b/src/timeline/EventDelegateChooser.h
@@ -137,6 +137,7 @@ class EventDelegateChooser : public QQuickItem
     Q_PROPERTY(int maxWidth READ maxWidth WRITE setMaxWidth NOTIFY maxWidthChanged)
     Q_PROPERTY(int replyInset READ replyInset WRITE setReplyInset NOTIFY replyInsetChanged)
     Q_PROPERTY(int mainInset READ mainInset WRITE setMainInset NOTIFY mainInsetChanged)
+    Q_PROPERTY(bool limitAsReply READ limitAsReply WRITE setLimitAsReply NOTIFY limitAsReplyChanged)
 
 public:
     QQmlListProperty<EventDelegateChoice> choices();
@@ -156,6 +157,12 @@ public:
         sameWidth_ = width;
         emit sameWidthChanged();
     }
+    bool limitAsReply() const { return limitAsReply_; }
+    void setLimitAsReply(bool width)
+    {
+        limitAsReply_ = width;
+        emit limitAsReplyChanged();
+    }
     int maxWidth() const { return maxWidth_; }
     void setMaxWidth(int width)
     {
@@ -229,6 +236,7 @@ signals:
     void eventIdChanged();
     void replyToChanged();
     void sameWidthChanged();
+    void limitAsReplyChanged();
     void maxWidthChanged();
     void replyInsetChanged();
     void mainInsetChanged();
@@ -264,10 +272,11 @@ private:
     TimelineModel *room_{nullptr};
     QString eventId_;
     QString replyId;
-    bool sameWidth_ = false;
-    int maxWidth_   = 400;
-    int replyInset_ = 0;
-    int mainInset_  = 0;
+    bool sameWidth_    = false;
+    bool limitAsReply_ = false;
+    int maxWidth_      = 400;
+    int replyInset_    = 0;
+    int mainInset_     = 0;
 
     static void appendChoice(QQmlListProperty<EventDelegateChoice> *, EventDelegateChoice *);
     static qsizetype choiceCount(QQmlListProperty<EventDelegateChoice> *);