diff --git a/src/app/qml/NeochatMaximizeComponent.qml b/src/app/qml/NeochatMaximizeComponent.qml index b465cabaa..702901b6f 100644 --- a/src/app/qml/NeochatMaximizeComponent.qml +++ b/src/app/qml/NeochatMaximizeComponent.qml @@ -156,7 +156,7 @@ Components.AlbumMaximizeComponent { onItemRightClicked: { const event = root.currentRoom.findEvent(root.currentEventId); - RoomManager.viewEventMenu(event, root.currentRoom) + RoomManager.viewEventMenu(root.QQC2.Overlay.overlay, event, root.currentRoom) } onSaveItem: { diff --git a/src/app/qml/RoomPage.qml b/src/app/qml/RoomPage.qml index c5edc0bf3..7ccb13330 100644 --- a/src/app/qml/RoomPage.qml +++ b/src/app/qml/RoomPage.qml @@ -349,8 +349,8 @@ Kirigami.Page { }); } - function onShowDelegateMenu(eventId: string, author, messageComponentType, plainText: string, richText: string, mimeType: string, progressInfo, isThread: bool, selectedText: string, hoveredLink: string) { - (delegateContextMenu.createObject(root, { + function onShowDelegateMenu(parent: QtObject, eventId: string, author, messageComponentType, plainText: string, richText: string, mimeType: string, progressInfo, isThread: bool, selectedText: string, hoveredLink: string) { + (delegateContextMenu.createObject(parent, { author: author, eventId: eventId, plainText: plainText, diff --git a/src/app/roommanager.cpp b/src/app/roommanager.cpp index feaf3b90f..73da9aa10 100644 --- a/src/app/roommanager.cpp +++ b/src/app/roommanager.cpp @@ -282,14 +282,15 @@ void RoomManager::viewEventSource(const QString &eventId) Q_EMIT showEventSource(eventId); } -void RoomManager::viewEventMenu(const RoomEvent *event, NeoChatRoom *room, const QString &selectedText, const QString &hoveredLink) +void RoomManager::viewEventMenu(QObject *parent, const RoomEvent *event, NeoChatRoom *room, const QString &selectedText, const QString &hoveredLink) { if (!event) { qWarning() << "Tried to open event menu with empty event"; return; } - Q_EMIT showDelegateMenu(event->id(), + Q_EMIT showDelegateMenu(parent, + event->id(), room->qmlSafeMember(event->senderId()), MessageComponentType::typeForEvent(*event), EventHandler::plainBody(room, event), diff --git a/src/app/roommanager.h b/src/app/roommanager.h index e2b8fac3d..ff569e419 100644 --- a/src/app/roommanager.h +++ b/src/app/roommanager.h @@ -233,7 +233,8 @@ public: /** * @brief Show a context menu for the given event. */ - Q_INVOKABLE void viewEventMenu(const RoomEvent *event, NeoChatRoom *room, const QString &selectedText = {}, const QString &hoveredLink = {}); + Q_INVOKABLE void + viewEventMenu(QObject *parent, const RoomEvent *event, NeoChatRoom *room, const QString &selectedText = {}, const QString &hoveredLink = {}); /** * @brief Set a URL to be loaded as the initial room. @@ -306,7 +307,8 @@ Q_SIGNALS: /** * @brief Request to show a menu for the given event. */ - void showDelegateMenu(const QString &eventId, + void showDelegateMenu(QObject *parent, + const QString &eventId, const NeochatRoomMember *author, MessageComponentType::Type messageComponentType, const QString &plainText, diff --git a/src/messagecontent/CodeComponent.qml b/src/messagecontent/CodeComponent.qml index 0c2be60a2..e595be491 100644 --- a/src/messagecontent/CodeComponent.qml +++ b/src/messagecontent/CodeComponent.qml @@ -132,7 +132,7 @@ QQC2.Control { acceptedDevices: PointerDevice.TouchScreen onLongPressed: { const event = root.Message.room.findEvent(root.eventId); - RoomManager.viewEventMenu(event, root.Message.room, root.Message.selectedText, root.Message.hoveredLink); + RoomManager.viewEventMenu(root.QQC2.Overlay.overlay, event, root.Message.room, root.Message.selectedText, root.Message.hoveredLink); } } diff --git a/src/messagecontent/QuoteComponent.qml b/src/messagecontent/QuoteComponent.qml index 26a69542d..4b2b8d324 100644 --- a/src/messagecontent/QuoteComponent.qml +++ b/src/messagecontent/QuoteComponent.qml @@ -68,7 +68,7 @@ QQC2.Control { acceptedButtons: Qt.LeftButton onLongPressed: { const event = root.Message.room.findEvent(root.eventId); - RoomManager.viewEventMenu(event, root.Message.room, root.Message.selectedText, root.Message.hoveredLink); + RoomManager.viewEventMenu(root.QQC2.Overlay.overlay, event, root.Message.room, root.Message.selectedText, root.Message.hoveredLink); } } } diff --git a/src/messagecontent/StateComponent.qml b/src/messagecontent/StateComponent.qml index 34d789592..d2d3be2f1 100644 --- a/src/messagecontent/StateComponent.qml +++ b/src/messagecontent/StateComponent.qml @@ -91,7 +91,7 @@ RowLayout { return; } const event = root.Message.room.findEvent(root.modelData.eventId); - RoomManager.viewEventMenu(event, root.Message.room, root.author, "", ""); + RoomManager.viewEventMenu(root.QQC2.Overlay.overlay, event, root.Message.room, root.author, "", ""); } } } diff --git a/src/messagecontent/TextComponent.qml b/src/messagecontent/TextComponent.qml index 26bf3532b..e1c5b6ec4 100644 --- a/src/messagecontent/TextComponent.qml +++ b/src/messagecontent/TextComponent.qml @@ -99,7 +99,7 @@ TextEdit { acceptedDevices: PointerDevice.TouchScreen onLongPressed: { const event = root.Message.room.findEvent(root.eventId); - RoomManager.viewEventMenu(event, root.Message.room, root.Message.selectedText, root.Message.hoveredLink); + RoomManager.viewEventMenu(root.QQC2.Overlay.overlay, event, root.Message.room, root.Message.selectedText, root.Message.hoveredLink); } } TapHandler { @@ -108,7 +108,7 @@ TextEdit { gesturePolicy: TapHandler.WithinBounds onTapped: { const event = root.Message.room.findEvent(root.eventId); - RoomManager.viewEventMenu(event, root.Message.room, root.Message.selectedText, root.Message.hoveredLink); + RoomManager.viewEventMenu(root.QQC2.Overlay.overlay, event, root.Message.room, root.Message.selectedText, root.Message.hoveredLink); } } } diff --git a/src/timeline/HiddenDelegate.qml b/src/timeline/HiddenDelegate.qml index 501aa2e02..a0ae54570 100644 --- a/src/timeline/HiddenDelegate.qml +++ b/src/timeline/HiddenDelegate.qml @@ -95,7 +95,7 @@ TimelineDelegate { function showMessageMenu(): void { let event = root.Message.room.findEvent(root.eventId); - RoomManager.viewEventMenu(event, root.room, ""); + RoomManager.viewEventMenu(root.QQC2.Overlay.overlay, event, root.room, ""); } } } diff --git a/src/timeline/MessageDelegate.qml b/src/timeline/MessageDelegate.qml index ebe07bb4c..6e7d5e157 100644 --- a/src/timeline/MessageDelegate.qml +++ b/src/timeline/MessageDelegate.qml @@ -234,7 +234,7 @@ MessageDelegateBase { function showMessageMenu(): void { let event = root.ListView.view.model.findEvent(root.eventId); - RoomManager.viewEventMenu(event, root.room, root.Message.selectedText, root.Message.hoveredLink); + RoomManager.viewEventMenu(root.QQC2.Overlay.overlay, event, root.room, root.Message.selectedText, root.Message.hoveredLink); } } }