forked from openkylin/ukui-panel
fix(task-manager):修复右键菜单乱飞的问题
This commit is contained in:
parent
b46e1f3b8f
commit
224472484c
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue