Fix opening message menus for popup windows
We were previously assuming that we always want to parent these menus to RoomPage, but that only exists on the main window. If you tried to open the menu for say - the search window - then it would confusingly still open on the main menu. Thankfully the way to fix this is simple, by passing a parent QtObject around.
This commit is contained in:
@@ -156,7 +156,7 @@ Components.AlbumMaximizeComponent {
|
|||||||
|
|
||||||
onItemRightClicked: {
|
onItemRightClicked: {
|
||||||
const event = root.currentRoom.findEvent(root.currentEventId);
|
const event = root.currentRoom.findEvent(root.currentEventId);
|
||||||
RoomManager.viewEventMenu(event, root.currentRoom)
|
RoomManager.viewEventMenu(root.QQC2.Overlay.overlay, event, root.currentRoom)
|
||||||
}
|
}
|
||||||
|
|
||||||
onSaveItem: {
|
onSaveItem: {
|
||||||
|
|||||||
@@ -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) {
|
function onShowDelegateMenu(parent: QtObject, eventId: string, author, messageComponentType, plainText: string, richText: string, mimeType: string, progressInfo, isThread: bool, selectedText: string, hoveredLink: string) {
|
||||||
(delegateContextMenu.createObject(root, {
|
(delegateContextMenu.createObject(parent, {
|
||||||
author: author,
|
author: author,
|
||||||
eventId: eventId,
|
eventId: eventId,
|
||||||
plainText: plainText,
|
plainText: plainText,
|
||||||
|
|||||||
@@ -282,14 +282,15 @@ void RoomManager::viewEventSource(const QString &eventId)
|
|||||||
Q_EMIT showEventSource(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) {
|
if (!event) {
|
||||||
qWarning() << "Tried to open event menu with empty event";
|
qWarning() << "Tried to open event menu with empty event";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_EMIT showDelegateMenu(event->id(),
|
Q_EMIT showDelegateMenu(parent,
|
||||||
|
event->id(),
|
||||||
room->qmlSafeMember(event->senderId()),
|
room->qmlSafeMember(event->senderId()),
|
||||||
MessageComponentType::typeForEvent(*event),
|
MessageComponentType::typeForEvent(*event),
|
||||||
EventHandler::plainBody(room, event),
|
EventHandler::plainBody(room, event),
|
||||||
|
|||||||
@@ -233,7 +233,8 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @brief Show a context menu for the given event.
|
* @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.
|
* @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.
|
* @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,
|
const NeochatRoomMember *author,
|
||||||
MessageComponentType::Type messageComponentType,
|
MessageComponentType::Type messageComponentType,
|
||||||
const QString &plainText,
|
const QString &plainText,
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ QQC2.Control {
|
|||||||
acceptedDevices: PointerDevice.TouchScreen
|
acceptedDevices: PointerDevice.TouchScreen
|
||||||
onLongPressed: {
|
onLongPressed: {
|
||||||
const event = root.Message.room.findEvent(root.eventId);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ QQC2.Control {
|
|||||||
acceptedButtons: Qt.LeftButton
|
acceptedButtons: Qt.LeftButton
|
||||||
onLongPressed: {
|
onLongPressed: {
|
||||||
const event = root.Message.room.findEvent(root.eventId);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ RowLayout {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const event = root.Message.room.findEvent(root.modelData.eventId);
|
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, "", "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ TextEdit {
|
|||||||
acceptedDevices: PointerDevice.TouchScreen
|
acceptedDevices: PointerDevice.TouchScreen
|
||||||
onLongPressed: {
|
onLongPressed: {
|
||||||
const event = root.Message.room.findEvent(root.eventId);
|
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 {
|
TapHandler {
|
||||||
@@ -108,7 +108,7 @@ TextEdit {
|
|||||||
gesturePolicy: TapHandler.WithinBounds
|
gesturePolicy: TapHandler.WithinBounds
|
||||||
onTapped: {
|
onTapped: {
|
||||||
const event = root.Message.room.findEvent(root.eventId);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ TimelineDelegate {
|
|||||||
|
|
||||||
function showMessageMenu(): void {
|
function showMessageMenu(): void {
|
||||||
let event = root.Message.room.findEvent(root.eventId);
|
let event = root.Message.room.findEvent(root.eventId);
|
||||||
RoomManager.viewEventMenu(event, root.room, "");
|
RoomManager.viewEventMenu(root.QQC2.Overlay.overlay, event, root.room, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ MessageDelegateBase {
|
|||||||
|
|
||||||
function showMessageMenu(): void {
|
function showMessageMenu(): void {
|
||||||
let event = root.ListView.view.model.findEvent(root.eventId);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user