feat(taskManager):优化预览图model,当显示时避免因数量改变引起的窗口闪烁问题

This commit is contained in:
qiqi49 2024-05-10 17:50:12 +08:00 committed by He Sir
parent 8a5e636e81
commit d04c952ae2
2 changed files with 40 additions and 8 deletions

View File

@ -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;
}
}
}
}

View File

@ -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