forked from openkylin/ukui-panel
feat(taskManager):优化预览图model,当显示时避免因数量改变引起的窗口闪烁问题
This commit is contained in:
parent
8a5e636e81
commit
d04c952ae2
|
@ -137,6 +137,38 @@ TaskManager {
|
|||
taskManager.state = "aboutToHideThumbanil";
|
||||
}
|
||||
}
|
||||
|
||||
// 更新预览图model数据
|
||||
onCurrentWinIdListChanged: updateThumbnailModel()
|
||||
property var modelList: []
|
||||
ListModel {
|
||||
id: thumbnailModel
|
||||
}
|
||||
function updateThumbnailModel() {
|
||||
// 这里不能直接用=(js中表示引用),需要浅拷贝
|
||||
var listFromModel = modelList.slice(0);
|
||||
var listFromCurrent = currentWinIdList.slice(0);
|
||||
var indexOfRemoveList = [];
|
||||
|
||||
for (var i = 0; i < listFromModel.length; i++) {
|
||||
if (listFromCurrent.includes(listFromModel[i])) {
|
||||
listFromCurrent.splice(listFromCurrent.indexOf(listFromModel[i]), 1);
|
||||
} else {
|
||||
indexOfRemoveList.push(i);
|
||||
}
|
||||
}
|
||||
for (var i = indexOfRemoveList.length -1; i > -1; i--) {
|
||||
listFromModel.splice(indexOfRemoveList[i], 1);
|
||||
thumbnailModel.remove(indexOfRemoveList[i]);
|
||||
}
|
||||
|
||||
for (var i = 0; i < listFromCurrent.length; i ++) {
|
||||
listFromModel.push(listFromCurrent[i]);
|
||||
thumbnailModel.append({"winId": listFromCurrent[i]});
|
||||
}
|
||||
|
||||
modelList = listFromModel;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -188,7 +188,7 @@ MouseArea {
|
|||
baseMouseArea.determineListViewSize()
|
||||
}
|
||||
|
||||
model: currentWinIdList
|
||||
model: thumbnailModel
|
||||
delegate: MouseArea {
|
||||
id: itemMouseArea
|
||||
width: childrenRect.width
|
||||
|
@ -205,7 +205,7 @@ MouseArea {
|
|||
}
|
||||
|
||||
function activateWindowView() {
|
||||
var winIds = [modelData];
|
||||
var winIds = [model.winId];
|
||||
if (baseMouseArea.menuVisible || containsMouse) {
|
||||
activeTimer.interval = 500;
|
||||
activeTimer.activeWinIds = winIds;
|
||||
|
@ -220,20 +220,20 @@ MouseArea {
|
|||
|
||||
onClicked: {
|
||||
if (mouse.button === Qt.RightButton) {
|
||||
var actions = UkuiTaskManager.TaskManager.windowActions(modelData);
|
||||
var actions = UkuiTaskManager.TaskManager.windowActions(model.winId);
|
||||
baseMouseArea.menuVisible = taskManager.viewModel.openMenu(true, actions, listView);
|
||||
} else {
|
||||
UkuiTaskManager.TaskManager.activateWindow(modelData);
|
||||
UkuiTaskManager.TaskManager.activateWindow(model.winId);
|
||||
}
|
||||
}
|
||||
Loader {
|
||||
WindowThumbnailMprisModel {
|
||||
id: mprisModel
|
||||
winID: modelData
|
||||
winID: model.winId
|
||||
}
|
||||
property string modelData: model.modelData
|
||||
property var title: windowTitles ? windowTitles[modelData] : ""
|
||||
property var icon: windowIcons ? windowIcons[modelData] : ""
|
||||
property string modelData: model.winId
|
||||
property var title: windowTitles ? windowTitles[model.winId] : ""
|
||||
property var icon: windowIcons ? windowIcons[model.winId] : ""
|
||||
property var windowThumbnailMprisModel: mprisModel
|
||||
property bool mouseAreaContainsMouse: itemMouseArea.containsMouse
|
||||
property bool mouseAreaContainsPress: itemMouseArea.containsPress
|
||||
|
|
Loading…
Reference in New Issue