Pass room through the model, not when creating the delegate

This is another thing that enables us to view multiple rooms in a single
timeline. Specifically, this improves the experience in room search
going across room versions and getting a correct readOnly status (for
hiding certain hover actions.)
This commit is contained in:
Joshua Goins
2026-01-14 21:25:45 -05:00
parent 41609749d8
commit f5c991c55c
4 changed files with 12 additions and 20 deletions

View File

@@ -52,7 +52,6 @@ QQC2.ScrollView {
delegate: Timeline.MessageDelegate {
alwaysFillWidth: true
cardBackground: false
room: root.room
}
}
@@ -61,7 +60,6 @@ QQC2.ScrollView {
delegate: Timeline.MessageDelegate {
alwaysFillWidth: true
cardBackground: false
room: root.room
}
}
}

View File

@@ -21,16 +21,12 @@ DelegateChooser {
DelegateChoice {
roleValue: DelegateType.State
delegate: StateDelegate {
room: root.room
}
delegate: StateDelegate {}
}
DelegateChoice {
roleValue: DelegateType.Message
delegate: MessageDelegate {
room: root.room
}
delegate: MessageDelegate {}
}
DelegateChoice {
@@ -45,23 +41,17 @@ DelegateChooser {
DelegateChoice {
roleValue: DelegateType.Predecessor
delegate: PredecessorDelegate {
room: root.room
}
delegate: PredecessorDelegate {}
}
DelegateChoice {
roleValue: DelegateType.Successor
delegate: SuccessorDelegate {
room: root.room
}
delegate: SuccessorDelegate {}
}
DelegateChoice {
roleValue: DelegateType.TimelineEnd
delegate: TimelineEndDelegate {
room: root.room
}
delegate: TimelineEndDelegate {}
}
DelegateChoice {
@@ -75,9 +65,7 @@ DelegateChooser {
Component {
id: hiddenDelegate
HiddenDelegate {
room: root.room
}
HiddenDelegate {}
}
Component {
id: emptyDelegate

View File

@@ -326,6 +326,10 @@ QVariant MessageModel::data(const QModelIndex &idx, int role) const
return event.value().get().matrixType();
}
if (role == RoomRole) {
return QVariant::fromValue(eventRoom);
}
return {};
}
@@ -356,6 +360,7 @@ QHash<int, QByteArray> MessageModel::roleNames() const
roles[IsEditableRole] = "isEditable";
roles[ShowAuthorRole] = "showAuthor";
roles[EventTypeRole] = "eventType";
roles[RoomRole] = "room";
return roles;
}

View File

@@ -87,6 +87,7 @@ public:
IsEditableRole, /**< Whether the event can be edited by the user. */
ShowAuthorRole, /**< Whether the author of a message should be shown. */
EventTypeRole, /**< The matrix event type of this message. */
RoomRole, /**< The room this event is from. */
LastRole, // Keep this last
};
Q_ENUM(EventRoles)