Skip to content

Commit f6e6320

Browse files
authored
Merge branch 'master' into fix-rolegroupmodel-memoryleak
2 parents 7d49db7 + 2ccf53c commit f6e6320

5 files changed

Lines changed: 60 additions & 45 deletions

File tree

panels/dock/package/main.qml

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,30 @@ Window {
1919
id: dock
2020
property int positionForAnimation: Panel.position
2121
property bool useColumnLayout: positionForAnimation % 2
22-
// TODO: 临时溢出逻辑,待后面修改
23-
property int dockLeftSpaceForCenter: useColumnLayout ?
24-
(Screen.height - dockLeftPart.implicitHeight - dockRightPart.implicitHeight) :
25-
(Screen.width - dockLeftPart.implicitWidth - dockRightPart.implicitWidth)
26-
property int dockRemainingSpaceForCenter: useColumnLayout ?
27-
(Screen.height / 1.8 - dockRightPart.implicitHeight) :
28-
(Screen.width / 1.8 - dockRightPart.implicitWidth)
22+
property int dockCenterPartCount: dockCenterPartModel.count
23+
24+
property int dockRemainingSpaceForCenter: {
25+
const otherCount = dockCenterPartCount - 1; // not include taskmanager
26+
const spacing = useColumnLayout ? gridLayout.rowSpacing : gridLayout.columnSpacing;
27+
28+
let otherOccupied = 0;
29+
if (otherCount > 0) {
30+
otherOccupied = otherCount * dockItemMaxSize + otherCount * spacing;
31+
}
32+
33+
if (useColumnLayout) {
34+
return Screen.height - dockLeftPart.implicitHeight - dockRightPart.implicitHeight - otherOccupied;
35+
} else {
36+
return Screen.width - dockLeftPart.implicitWidth - dockRightPart.implicitWidth - otherOccupied;
37+
}
38+
}
39+
2940
property int dockPartSpacing: gridLayout.columnSpacing
3041
// TODO
3142
signal dockCenterPartPosChanged()
3243
signal pressedAndDragging(bool isDragging)
3344
signal viewDeactivated()
3445

35-
property int dockCenterPartCount: dockCenterPartModel.count
36-
3746
property int dockSize: Applet.dockSize
3847
property int dockItemMaxSize: dockSize
3948
property int itemIconSizeBase: 0
@@ -527,18 +536,8 @@ Window {
527536

528537
Item {
529538
id: dockCenterPart
530-
property var taskmanagerRootObject: {
531-
let applet = DS.applet("org.deepin.ds.dock.taskmanager")
532-
return applet ? applet.rootObject : null
533-
}
534-
535-
readonly property real taskmanagerImplicitWidth: taskmanagerRootObject ? taskmanagerRootObject.implicitWidth : 0
536-
readonly property real taskmanagerImplicitHeight: taskmanagerRootObject ? taskmanagerRootObject.implicitHeight : 0
537-
readonly property real taskmanagerAppContainerWidth: taskmanagerRootObject ? taskmanagerRootObject.appContainerWidth : 0
538-
readonly property real taskmanagerAppContainerHeight: taskmanagerRootObject ? taskmanagerRootObject.appContainerHeight : 0
539-
540-
implicitWidth: centerLoader.implicitWidth - taskmanagerImplicitWidth + taskmanagerAppContainerWidth
541-
implicitHeight: centerLoader.implicitHeight - taskmanagerImplicitHeight + taskmanagerAppContainerHeight
539+
implicitWidth: centerLoader.implicitWidth
540+
implicitHeight: centerLoader.implicitHeight
542541
onXChanged: dockCenterPartPosChanged()
543542
onYChanged: dockCenterPartPosChanged()
544543
Layout.leftMargin: !useColumnLayout && Panel.itemAlignment === Dock.CenterAlignment ?

panels/dock/taskmanager/package/AppItem.qml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ Item {
429429

430430

431431
function onEntered() {
432-
if (Qt.platform.pluginName === "xcb" && windows.length === 0) {
432+
if (windows.length === 0) {
433433
toolTipShowTimer.start()
434434
return
435435
}
@@ -457,7 +457,7 @@ Item {
457457
previewTimer.stop()
458458
}
459459

460-
if (Qt.platform.pluginName === "xcb" && windows.length === 0) {
460+
if (windows.length === 0) {
461461
toolTip.close()
462462
return
463463
}

panels/dock/taskmanager/package/TaskManager.qml

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,17 @@ ContainmentItem {
1414
id: taskmanager
1515
property bool useColumnLayout: Panel.rootObject.useColumnLayout
1616
property int dockOrder: 16
17-
property real remainingSpacesForTaskManager: Panel.itemAlignment === Dock.LeftAlignment ? Panel.rootObject.dockLeftSpaceForCenter : Panel.rootObject.dockRemainingSpaceForCenter
18-
17+
property real remainingSpacesForTaskManager: Panel.rootObject.dockRemainingSpaceForCenter
1918
readonly property int appTitleSpacing: Math.max(10, Math.round(Panel.rootObject.dockItemMaxSize * 9 / 14) / 3)
20-
property real remainingSpacesForSplitWindow: Panel.rootObject.dockLeftSpaceForCenter - (
21-
(Panel.rootObject.dockCenterPartCount - 1) * (visualModel.cellWidth + appTitleSpacing) + (Panel.rootObject.dockCenterPartCount) * Panel.rootObject.dockPartSpacing)
22-
// 用于居中计算的实际应用区域尺寸
23-
property int appContainerWidth: useColumnLayout ? Panel.rootObject.dockSize : appContainer.implicitWidth
24-
property int appContainerHeight: useColumnLayout ? appContainer.implicitHeight : Panel.rootObject.dockSize
25-
26-
implicitWidth: useColumnLayout ? Panel.rootObject.dockSize : Math.max(remainingSpacesForTaskManager, appContainer.implicitWidth)
27-
implicitHeight: useColumnLayout ? Math.max(remainingSpacesForTaskManager, appContainer.implicitHeight) : Panel.rootObject.dockSize
2819

20+
implicitWidth: {
21+
let maxW = Panel.itemAlignment === Dock.LeftAlignment ? Math.max(remainingSpacesForTaskManager, appContainer.implicitWidth) : Math.min(remainingSpacesForTaskManager, appContainer.implicitWidth)
22+
return useColumnLayout ? Panel.rootObject.dockSize : maxW
23+
}
24+
implicitHeight: {
25+
let maxH = Panel.itemAlignment === Dock.LeftAlignment ? Math.max(remainingSpacesForTaskManager, appContainer.implicitHeight) : Math.min(remainingSpacesForTaskManager, appContainer.implicitHeight)
26+
return useColumnLayout ? maxH : Panel.rootObject.dockSize
27+
}
2928
// Helper function to find the current index of an app by its appId in the visualModel
3029
function findAppIndex(appId) {
3130
for (let i = 0; i < visualModel.items.count; i++) {
@@ -65,7 +64,7 @@ ContainmentItem {
6564
spacing: appContainer.spacing
6665
cellSize: visualModel.cellWidth
6766
itemPadding: taskmanager.appTitleSpacing
68-
remainingSpace: taskmanager.remainingSpacesForSplitWindow
67+
remainingSpace: taskmanager.remainingSpacesForTaskManager
6968
font.family: D.DTK.fontManager.t6.family
7069
font.pixelSize: Math.max(10, Math.min(20, Math.round(textCalculator.iconSize * 0.35)))
7170
}
@@ -133,8 +132,24 @@ ContainmentItem {
133132
Behavior on opacity { NumberAnimation { duration: 200 } }
134133
Behavior on scale { NumberAnimation { duration: 200 } }
135134

136-
implicitWidth: useColumnLayout ? taskmanager.implicitWidth : appItem.implicitWidth
137-
implicitHeight: useColumnLayout ? visualModel.cellWidth : taskmanager.implicitHeight
135+
implicitWidth: {
136+
let targetW = useColumnLayout ? taskmanager.implicitWidth : appItem.implicitWidth;
137+
if (useColumnLayout || visualModel.count <= 0) return targetW;
138+
139+
let totalSpacing = Math.max(0, visualModel.count - 1) * taskmanager.appTitleSpacing;
140+
let availableW = taskmanager.remainingSpacesForTaskManager - totalSpacing;
141+
let maxW = availableW / visualModel.count;
142+
return Math.min(targetW, Math.max(1, maxW));
143+
}
144+
implicitHeight: {
145+
let targetH = useColumnLayout ? visualModel.cellWidth : taskmanager.implicitHeight;
146+
if (!useColumnLayout || visualModel.count <= 0) return targetH;
147+
148+
let totalSpacing = Math.max(0, visualModel.count - 1) * taskmanager.appTitleSpacing;
149+
let availableH = taskmanager.remainingSpacesForTaskManager - totalSpacing;
150+
let maxH = availableH / visualModel.count;
151+
return Math.min(targetH, Math.max(1, maxH));
152+
}
138153

139154
property int visualIndex: DelegateModel.itemsIndex
140155
property var modelIndex: visualModel.modelIndex(index)
@@ -274,7 +289,7 @@ ContainmentItem {
274289

275290
Component.onCompleted: {
276291
Panel.rootObject.dockItemMaxSize = Qt.binding(function(){
277-
return Math.min(Panel.rootObject.dockSize, Panel.rootObject.dockLeftSpaceForCenter * 1.2 / (Panel.rootObject.dockCenterPartCount - 1 + visualModel.count) - 2)
292+
return Math.min(Panel.rootObject.dockSize, Panel.rootObject.dockRemainingSpaceForCenter * 1.2 / (Panel.rootObject.dockCenterPartCount - 1 + visualModel.count) - 2)
278293
})
279294
}
280295
}

panels/dock/tray/ShellSurfaceItemProxy.qml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ Item {
1919
property int cursorShape: Qt.ArrowCursor
2020
property alias shellSurfaceItem: impl
2121

22-
implicitWidth: shellSurface ? shellSurface.width : 10
23-
implicitHeight: shellSurface ? shellSurface.height : 10
22+
implicitWidth: shellSurface ? shellSurface.width : 16
23+
implicitHeight: shellSurface ? shellSurface.height : 16
2424

2525
function takeFocus() {
2626
impl.takeFocus()

panels/dock/tray/quickpanel/PanelTrayItem.qml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,14 @@ Control {
3838
toolTipY: DockPanelPositioner.y
3939
}
4040

41-
contentItem: Grid {
42-
rows: root.useColumnLayout ? 2 : 1
43-
spacing: 0
44-
padding: 0
41+
contentItem: GridLayout {
42+
flow: root.useColumnLayout ? GridLayout.TopToBottom : GridLayout.LeftToRight
43+
rowSpacing: 0
44+
columnSpacing: 0
4545

4646
Loader {
4747
id: placeholder
48+
Layout.alignment: Qt.AlignCenter
4849
active: root.shellSurface
4950
visible: active
5051
sourceComponent: TrayItemSurface {
@@ -56,8 +57,8 @@ Control {
5657
}
5758
Control {
5859
id: quickpanelPlaceholder
59-
width: placeholder.active ? placeholder.width : 16 + itemMargins
60-
height: placeholder.active ? placeholder.height : 16 + itemMargins
60+
Layout.alignment: Qt.AlignCenter
61+
padding: itemMargins
6162
contentItem: DciIcon {
6263
sourceSize: Qt.size(16, 16)
6364
name: "dock-control-panel"

0 commit comments

Comments
 (0)