fix(task-manager):修复右键菜单乱飞的问题

This commit is contained in:
iaom 2024-03-28 10:38:30 +08:00
parent b46e1f3b8f
commit 224472484c
4 changed files with 11 additions and 5 deletions

View File

@ -138,7 +138,7 @@ ListView {
onClicked: {
if (mouse.button === Qt.RightButton) {
proxyModel.openMenu(false, model.Actions);
proxyModel.openMenu(false, model.Actions, baseView);
} else {
if (CurrentWinIdList.length === 0) {
visualModel.model.launch(visualModel.model.index(model.index, 0));

View File

@ -191,7 +191,7 @@ ContentWindow {
onClicked: {
if (mouse.button === Qt.RightButton) {
var actions = UkuiTaskManager.TaskManager.windowActions(modelData);
thumbnailView.menuVisible = proxyModel.openMenu(true, actions);
thumbnailView.menuVisible = proxyModel.openMenu(true, actions, listView);
} else {
UkuiTaskManager.TaskManager.activateWindow(modelData);
}

View File

@ -3,6 +3,7 @@
//
#include "task-manager-filter-model.h"
#include <QQuickWindow>
#include "ukui-task-manager.h"
#include "window-manager.h"
namespace TaskManager {
@ -91,7 +92,7 @@ bool TaskManagerFilterModel::filterAcceptsRow(int source_row, const QModelIndex
}
}
bool TaskManagerFilterModel::openMenu(const bool &showDisabledActions, const TaskManager::Actions &actions)
bool TaskManagerFilterModel::openMenu(const bool &showDisabledActions, const TaskManager::Actions &actions, QQuickItem *item)
{
if (actions.isEmpty()) {
return false;
@ -114,7 +115,11 @@ bool TaskManagerFilterModel::openMenu(const bool &showDisabledActions, const Tas
Q_EMIT menuAboutToHide();
});
m_contextMenu = menu;
menu->popup(QCursor::pos());
m_contextMenu->winId();
if(m_contextMenu->windowHandle()) {
m_contextMenu->windowHandle()->setTransientParent(item->window());
}
m_contextMenu->popup(QCursor::pos());
return true;
}

View File

@ -9,6 +9,7 @@
#include <QScreen>
#include <QMenu>
#include <QPointer>
#include <QQuickItem>
#include "actions.h"
#include "ukui-task-manager.h"
@ -29,7 +30,7 @@ public:
* @param showDisabledActions
* @param actions
*/
Q_INVOKABLE bool openMenu(const bool &showDisabledActions, const TaskManager::Actions &actions);
Q_INVOKABLE bool openMenu(const bool &showDisabledActions, const TaskManager::Actions &actions, QQuickItem *item);
Q_INVOKABLE void addQuickLauncher(const QString &desktopFile, int order);
Q_INVOKABLE void launch(const QModelIndex &index);