1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-01 19:18:28 -04:00

fix(ui): resolve ui inconsistencies and missing i18n strings (#2719)

* Update WorkspacesTab.qml

* Update SettingsButtonGroupRow.qml

* Update WallpaperTab.qml

* Update WidgetsTabSection.qml

* add missing tooltips

* Update WallpaperTab.qml

* Update WorkspacesTab.qml
This commit is contained in:
Youseffo13
2026-07-02 17:27:15 +02:00
committed by GitHub
parent 4ae8ef927c
commit 83b9cdcb27
6 changed files with 327 additions and 63 deletions
@@ -12,6 +12,10 @@ Item {
focus: true
property string highlightedId: ""
DankTooltipV2 {
id: sharedTooltip
}
readonly property var __presentation: ({
"overview": {
"icon": "dashboard",
@@ -261,6 +265,12 @@ Item {
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: SettingsData.resetDashTabs()
onEntered: {
sharedTooltip.show(I18n.tr("Reset"), resetButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
}
Behavior on color {
@@ -528,6 +538,13 @@ Item {
root.highlightedId = rowItem.modelData;
SettingsData.setDashTabEnabled(rowItem.modelData, !rowItem.isEnabled);
}
onEntered: {
const tooltipText = rowItem.isEnabled ? I18n.tr("Hide") : I18n.tr("Show");
sharedTooltip.show(tooltipText, visibilityButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
}
}
}
+90 -35
View File
@@ -302,54 +302,109 @@ Item {
Item {
width: parent.width
height: fillModeGroup.height
height: fillModeColumn.height
visible: root.currentWallpaper !== "" && !root.currentWallpaper.startsWith("#")
DankButtonGroup {
id: fillModeGroup
property var internalModes: ["Stretch", "Fit", "Fill", "Scrolling", "Tile", "TileVertically", "TileHorizontally", "Pad"]
Column {
id: fillModeColumn
anchors.horizontalCenter: parent.horizontalCenter
model: [I18n.tr("Stretch", "wallpaper fill mode"), I18n.tr("Fit", "wallpaper fill mode"), I18n.tr("Fill", "wallpaper fill mode"), I18n.tr("Scroll", "wallpaper fill mode"), I18n.tr("Tile", "wallpaper fill mode"), I18n.tr("Tile V", "wallpaper fill mode"), I18n.tr("Tile H", "wallpaper fill mode"), I18n.tr("Pad", "wallpaper fill mode")]
selectionMode: "single"
buttonHeight: 28
minButtonWidth: 48
buttonPadding: Theme.spacingS
checkIconSize: 0
textSize: Theme.fontSizeSmall
checkEnabled: false
currentIndex: {
var mode = SessionData.perMonitorWallpaper ? SessionData.getMonitorWallpaperFillMode(selectedMonitorName) : SettingsData.wallpaperFillMode;
return internalModes.indexOf(mode);
spacing: Theme.spacingS
property var firstRowModes: ["Stretch", "Fit", "Fill", "Scrolling"]
property var secondRowModes: ["Tile", "TileVertically", "TileHorizontally", "Pad"]
function currentMode() {
return SessionData.perMonitorWallpaper ? SessionData.getMonitorWallpaperFillMode(selectedMonitorName) : SettingsData.wallpaperFillMode;
}
onSelectionChanged: (index, selected) => {
if (!selected)
return;
function selectMode(mode) {
if (SessionData.perMonitorWallpaper) {
SessionData.setMonitorWallpaperFillMode(selectedMonitorName, internalModes[index]);
SessionData.setMonitorWallpaperFillMode(selectedMonitorName, mode);
} else {
SettingsData.set("wallpaperFillMode", internalModes[index]);
SettingsData.set("wallpaperFillMode", mode);
}
}
Connections {
target: SettingsData
function onWallpaperFillModeChanged() {
if (SessionData.perMonitorWallpaper)
DankButtonGroup {
id: fillModeGroupFirstRow
property var internalModes: fillModeColumn.firstRowModes
anchors.horizontalCenter: parent.horizontalCenter
model: [I18n.tr("Stretch", "wallpaper fill mode"), I18n.tr("Fit", "wallpaper fill mode"), I18n.tr("Fill", "wallpaper fill mode"), I18n.tr("Scroll", "wallpaper fill mode")]
selectionMode: "single"
buttonHeight: 28
minButtonWidth: 48
buttonPadding: Theme.spacingS
checkIconSize: 0
textSize: Theme.fontSizeSmall
checkEnabled: false
currentIndex: {
var mode = fillModeColumn.currentMode();
var idx = internalModes.indexOf(mode);
return idx >= 0 ? idx : -1;
}
onSelectionChanged: (index, selected) => {
if (!selected)
return;
fillModeGroup.currentIndex = fillModeGroup.internalModes.indexOf(SettingsData.wallpaperFillMode);
fillModeColumn.selectMode(internalModes[index]);
}
}
Connections {
target: root
function onSelectedMonitorNameChanged() {
if (!SessionData.perMonitorWallpaper)
return;
fillModeGroup.currentIndex = Qt.binding(() => {
var mode = SessionData.perMonitorWallpaper ? SessionData.getMonitorWallpaperFillMode(selectedMonitorName) : SettingsData.wallpaperFillMode;
return fillModeGroup.internalModes.indexOf(mode);
});
DankButtonGroup {
id: fillModeGroupSecondRow
property var internalModes: fillModeColumn.secondRowModes
anchors.horizontalCenter: parent.horizontalCenter
model: [I18n.tr("Tile", "wallpaper fill mode"), I18n.tr("Tile V", "wallpaper fill mode"), I18n.tr("Tile H", "wallpaper fill mode"), I18n.tr("Pad", "wallpaper fill mode")]
selectionMode: "single"
buttonHeight: 28
minButtonWidth: 48
buttonPadding: Theme.spacingS
checkIconSize: 0
textSize: Theme.fontSizeSmall
checkEnabled: false
currentIndex: {
var mode = fillModeColumn.currentMode();
var idx = internalModes.indexOf(mode);
return idx >= 0 ? idx : -1;
}
onSelectionChanged: (index, selected) => {
if (!selected)
return;
fillModeColumn.selectMode(internalModes[index]);
}
}
}
Connections {
target: SettingsData
function onWallpaperFillModeChanged() {
if (SessionData.perMonitorWallpaper)
return;
fillModeGroupFirstRow.currentIndex = Qt.binding(() => {
var idx = fillModeGroupFirstRow.internalModes.indexOf(SettingsData.wallpaperFillMode);
return idx >= 0 ? idx : -1;
});
fillModeGroupSecondRow.currentIndex = Qt.binding(() => {
var idx = fillModeGroupSecondRow.internalModes.indexOf(SettingsData.wallpaperFillMode);
return idx >= 0 ? idx : -1;
});
}
}
Connections {
target: root
function onSelectedMonitorNameChanged() {
if (!SessionData.perMonitorWallpaper)
return;
fillModeGroupFirstRow.currentIndex = Qt.binding(() => {
var mode = SessionData.getMonitorWallpaperFillMode(selectedMonitorName);
var idx = fillModeGroupFirstRow.internalModes.indexOf(mode);
return idx >= 0 ? idx : -1;
});
fillModeGroupSecondRow.currentIndex = Qt.binding(() => {
var mode = SessionData.getMonitorWallpaperFillMode(selectedMonitorName);
var idx = fillModeGroupSecondRow.internalModes.indexOf(mode);
return idx >= 0 ? idx : -1;
});
}
}
}
@@ -373,7 +428,7 @@ Item {
},
{
"value": "primary",
"label": I18n.tr("Primary Theme Color")
"label": I18n.tr("Primary")
},
{
"value": "surface",
@@ -78,7 +78,7 @@ Item {
signal selectionChanged(int index, bool selected)
width: parent?.width ?? 0
height: 60
height: Math.max(60, textColumn.implicitHeight + Theme.spacingM * 2)
Row {
id: contentRow
@@ -88,6 +88,7 @@ Item {
spacing: Theme.spacingM
Column {
id: textColumn
width: parent.width - buttonGroup.width - Theme.spacingM
anchors.verticalCenter: parent.verticalCenter
spacing: Theme.spacingXS
@@ -26,6 +26,11 @@ StyledRect {
signal sliderValueChanged(int newValue)
signal sliderDragFinished(int finalValue)
DankTooltipV2 {
id: sharedTooltip
}
width: parent?.width ?? 0
height: Theme.spacingL * 2 + contentColumn.height
radius: Theme.cornerRadius
@@ -121,6 +126,12 @@ StyledRect {
root.sliderValueChanged(root.defaultValue);
root.sliderDragFinished(root.defaultValue);
}
onEntered: {
sharedTooltip.show(I18n.tr("Reset"), resetButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
}
}
@@ -72,6 +72,11 @@ Item {
signal sliderValueChanged(int newValue)
signal sliderDragFinished(int finalValue)
DankTooltipV2 {
id: sharedTooltip
}
width: parent?.width ?? 0
height: headerRow.height + Theme.spacingXS + slider.height
@@ -135,6 +140,12 @@ Item {
root.sliderValueChanged(root.defaultValue);
root.sliderDragFinished(root.defaultValue);
}
onEntered: {
sharedTooltip.show(I18n.tr("Reset"), resetButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
}
}
}
+196 -27
View File
@@ -57,12 +57,30 @@ Column {
readonly property real rowHeight: 72
readonly property real rowSpacing: Theme.spacingS
property var rowHeights: []
function rowHeightAt(i) {
if (i < 0 || i >= rowHeights.length || rowHeights[i] === undefined)
return rowHeight;
return Math.max(rowHeight, rowHeights[i]);
}
function cumulativeHeightUpTo(pos) {
var y = 0;
var n = Math.min(pos, items.length);
for (var i = 0; i < n; i++)
y += rowHeightAt(i) + rowSpacing;
return y;
}
readonly property real totalHeight: {
const n = items.length;
let base = n * (rowHeight + rowSpacing);
let base = cumulativeHeightUpTo(n);
if (n > 0)
base -= rowSpacing;
if (gapIndex >= 0)
base += (rowHeight + rowSpacing);
return Math.max(0, base - rowSpacing);
return Math.max(0, base);
}
function resetWorkingOrder() {
@@ -76,15 +94,21 @@ Column {
var pos = workingOrder.indexOf(i);
if (pos < 0)
pos = i;
var y = pos * (rowHeight + rowSpacing);
var y = cumulativeHeightUpTo(pos);
if (gapIndex >= 0 && pos >= gapIndex)
y += (rowHeight + rowSpacing);
return y;
}
function slotIndexForY(localY) {
var idx = Math.round(localY / (rowHeight + rowSpacing));
return Math.max(0, Math.min(idx, items.length));
var y = 0;
for (var i = 0; i < items.length; i++) {
var h = rowHeightAt(i) + rowSpacing;
if (y + h / 2 > localY)
return i;
y += h;
}
return items.length;
}
function slotIndexForGlobalY(rootItem, gy) {
@@ -102,7 +126,7 @@ Column {
function updateDragTarget(centerY) {
if (draggingIndex < 0)
return;
var pos = Math.floor(centerY / (rowHeight + rowSpacing));
var pos = slotIndexForY(centerY);
pos = Math.max(0, Math.min(pos, items.length - 1));
var arr = workingOrder.slice();
var d = arr.indexOf(draggingIndex);
@@ -201,10 +225,27 @@ Column {
readonly property bool highlighted: root.highlightedId !== "" && root.highlightedId === modelData.id && root.highlightedSection === root.sectionId
width: reorderArea.width
height: root.rowHeight
height: Math.max(root.rowHeight, textColumn.implicitHeight + 28)
z: dragging ? 100 : (highlighted ? 3 : 1)
opacity: (dragging && root.crossSectionActive) ? 0 : 1
onHeightChanged: {
var arr = root.rowHeights.slice();
while (arr.length <= rowIndex)
arr.push(root.rowHeight);
if (arr[rowIndex] !== height) {
arr[rowIndex] = height;
root.rowHeights = arr;
}
}
Component.onCompleted: {
var arr = root.rowHeights.slice();
while (arr.length <= rowIndex)
arr.push(root.rowHeight);
arr[rowIndex] = height;
root.rowHeights = arr;
}
Binding {
target: delegateItem
property: "y"
@@ -235,13 +276,12 @@ Column {
id: itemBackground
anchors.fill: parent
anchors.margins: 2
scale: delegateItem.dragging ? 1.02 : 1.0
transformOrigin: Item.Center
radius: delegateItem.dragging ? Theme.cornerRadius + 6 : Theme.cornerRadius
color: delegateItem.dragging ? Theme.secondaryContainer : Theme.withAlpha(Theme.surfaceContainer, 0.8)
color: delegateItem.dragging ? Theme.secondaryContainer : Theme.withAlpha(Theme.surfaceContainer, modelData.enabled ? 0.7 : 0.4)
border.color: delegateItem.dragging ? Theme.primary : Theme.outlineHeavy
border.width: delegateItem.dragging ? 2 : 0
border.width: delegateItem.dragging ? 2 : 1
Behavior on scale {
NumberAnimation {
@@ -266,29 +306,61 @@ Column {
}
}
DankIcon {
name: "drag_indicator"
size: Theme.iconSize - 4
color: Theme.outline
anchors.left: parent.left
anchors.leftMargin: Theme.spacingM + 8
anchors.verticalCenter: parent.verticalCenter
opacity: 0.8
Rectangle {
anchors.fill: parent
radius: parent.radius
color: Theme.primary
opacity: (dragArea.containsMouse && !delegateItem.dragging) ? 0.06 : 0
Behavior on opacity {
NumberAnimation {
duration: Theme.shortDuration
}
}
}
DankIcon {
id: dragHandle
name: "drag_indicator"
size: Theme.iconSize - 4
color: delegateItem.dragging ? Theme.primary : Theme.outline
anchors.left: parent.left
anchors.leftMargin: Theme.spacingM
anchors.verticalCenter: parent.verticalCenter
opacity: modelData.enabled ? ((dragArea.containsMouse || delegateItem.dragging || delegateItem.highlighted) ? 1.0 : 0.45) : 0
visible: opacity > 0.01
Behavior on opacity {
NumberAnimation {
duration: Theme.shortDuration
}
}
Behavior on color {
ColorAnimation {
duration: Theme.shortDuration
}
}
}
DankIcon {
id: tabIcon
name: modelData.icon
size: Theme.iconSize
color: modelData.enabled ? Theme.primary : Theme.outline
anchors.left: parent.left
anchors.leftMargin: Theme.spacingM * 2 + 40
anchors.leftMargin: Theme.spacingM * 2 + Theme.iconSize - 4
anchors.verticalCenter: parent.verticalCenter
Behavior on color {
ColorAnimation {
duration: Theme.shortDuration
}
}
}
Column {
id: textColumn
anchors.left: parent.left
anchors.leftMargin: Theme.spacingM * 3 + 40 + Theme.iconSize
anchors.left: tabIcon.right
anchors.leftMargin: Theme.spacingM
anchors.right: actionButtons.left
anchors.rightMargin: Theme.spacingM
anchors.verticalCenter: parent.verticalCenter
@@ -339,6 +411,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), gpuMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
gpuContextMenu.widgetData = modelData;
gpuContextMenu.sectionId = root.sectionId;
@@ -405,6 +483,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), diskMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
diskUsageContextMenu.widgetData = modelData;
diskUsageContextMenu.sectionId = root.sectionId;
@@ -496,7 +580,7 @@ Column {
}
onEntered: {
var currentEnabled = modelData.minimumWidth !== undefined ? modelData.minimumWidth : true;
const tooltipText = currentEnabled ? "Force Padding" : "Dynamic Width";
const tooltipText = currentEnabled ? I18n.tr("Force Padding") : I18n.tr("Dynamic Width");
sharedTooltip.show(tooltipText, minimumWidthButton, 0, 0, "bottom");
}
onExited: {
@@ -515,7 +599,7 @@ Column {
root.hideWhenIdleChanged(root.sectionId, index, modelData.hideWhenIdle !== true);
}
onEntered: {
const tooltipText = modelData.hideWhenIdle === true ? "Hide when no updates: ON" : "Hide when no updates: OFF";
const tooltipText = modelData.hideWhenIdle === true ? I18n.tr("Hide when no updates: ON") : I18n.tr("Hide when no updates: OFF");
sharedTooltip.show(tooltipText, hideWhenIdleButton, 0, 0, "bottom");
}
onExited: {
@@ -530,6 +614,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), memMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
memUsageContextMenu.widgetData = modelData;
memUsageContextMenu.sectionId = root.sectionId;
@@ -564,6 +654,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), focusedWindowMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
focusedWindowContextMenu.widgetData = modelData;
focusedWindowContextMenu.sectionId = root.sectionId;
@@ -597,6 +693,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), musicMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
musicContextMenu.widgetData = modelData;
musicContextMenu.sectionId = root.sectionId;
@@ -630,6 +732,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), runningAppsMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
runningAppsContextMenu.widgetData = modelData;
runningAppsContextMenu.sectionId = root.sectionId;
@@ -663,6 +771,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), batteryMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
batteryContextMenu.widgetData = modelData;
batteryContextMenu.sectionId = root.sectionId;
@@ -748,7 +862,7 @@ Column {
return false;
}
})();
const tooltipText = isCompact ? "Full Size" : "Compact";
const tooltipText = isCompact ? I18n.tr("Full Size") : I18n.tr("Compact");
sharedTooltip.show(tooltipText, compactModeButton, 0, 0, "bottom");
}
onExited: {
@@ -764,6 +878,12 @@ Column {
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), kbdLayoutCtxMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
kbdLayoutCtxMenu.widgetData = modelData;
kbdLayoutCtxMenu.sectionId = root.sectionId;
@@ -797,6 +917,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), appsDockMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
appsDockContextMenu.widgetData = modelData;
appsDockContextMenu.sectionId = root.sectionId;
@@ -830,6 +956,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), trayMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
trayContextMenu.widgetData = modelData;
trayContextMenu.sectionId = root.sectionId;
@@ -894,6 +1026,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), ccMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
controlCenterContextMenu.widgetData = modelData;
controlCenterContextMenu.sectionId = root.sectionId;
@@ -929,6 +1067,12 @@ Column {
iconName: "more_vert"
iconSize: 18
iconColor: Theme.outline
onEntered: {
sharedTooltip.show(I18n.tr("Options"), privacyMenuButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
onClicked: {
privacyContextMenu.widgetData = modelData;
privacyContextMenu.sectionId = root.sectionId;
@@ -967,7 +1111,7 @@ Column {
root.itemEnabledChanged(root.sectionId, modelData.id, !modelData.enabled);
}
onEntered: {
const tooltipText = modelData.enabled ? "Hide" : "Show";
const tooltipText = modelData.enabled ? I18n.tr("Hide") : I18n.tr("Show");
sharedTooltip.show(tooltipText, visibilityButton, 0, 0, "bottom");
}
onExited: {
@@ -1013,6 +1157,7 @@ Column {
}
DankActionButton {
id: removeWidgetButton
buttonSize: 32
iconName: "close"
iconSize: 18
@@ -1020,6 +1165,12 @@ Column {
onClicked: {
root.removeWidget(root.sectionId, index);
}
onEntered: {
sharedTooltip.show(I18n.tr("Remove"), removeWidgetButton, 0, 0, "bottom");
}
onExited: {
sharedTooltip.hide();
}
}
}
@@ -2317,6 +2468,7 @@ Column {
anchors.rightMargin: Theme.spacingM
anchors.verticalCenter: parent.verticalCenter
spacing: Theme.spacingS
clip: true
Item {
width: 16
@@ -2376,6 +2528,8 @@ Column {
color: Theme.surfaceText
font.weight: Font.Normal
anchors.verticalCenter: parent.verticalCenter
elide: Text.ElideRight
width: parent.width - 16 - Theme.spacingS - 16 - Theme.spacingS
}
}
@@ -2433,8 +2587,8 @@ Column {
property string sectionId: ""
property int widgetIndex: -1
width: 200
height: 160
width: 240
height: menuPrivacyColumn.implicitHeight + Theme.spacingS * 2
padding: 0
modal: true
focus: true
@@ -2494,8 +2648,11 @@ Column {
Row {
anchors.left: parent.left
anchors.leftMargin: Theme.spacingS
anchors.right: micToggle.left
anchors.rightMargin: Theme.spacingS
anchors.verticalCenter: parent.verticalCenter
spacing: Theme.spacingS
clip: true
DankIcon {
name: "mic"
@@ -2510,6 +2667,8 @@ Column {
color: Theme.surfaceText
font.weight: Font.Normal
anchors.verticalCenter: parent.verticalCenter
elide: Text.ElideRight
width: parent.width - 16 - Theme.spacingS
}
}
@@ -2546,8 +2705,11 @@ Column {
Row {
anchors.left: parent.left
anchors.leftMargin: Theme.spacingS
anchors.right: cameraToggle.left
anchors.rightMargin: Theme.spacingS
anchors.verticalCenter: parent.verticalCenter
spacing: Theme.spacingS
clip: true
DankIcon {
name: "camera_video"
@@ -2562,6 +2724,8 @@ Column {
color: Theme.surfaceText
font.weight: Font.Normal
anchors.verticalCenter: parent.verticalCenter
elide: Text.ElideRight
width: parent.width - 16 - Theme.spacingS
}
}
@@ -2598,8 +2762,11 @@ Column {
Row {
anchors.left: parent.left
anchors.leftMargin: Theme.spacingS
anchors.right: screenshareToggle.left
anchors.rightMargin: Theme.spacingS
anchors.verticalCenter: parent.verticalCenter
spacing: Theme.spacingS
clip: true
DankIcon {
name: "screen_share"
@@ -2614,6 +2781,8 @@ Column {
color: Theme.surfaceText
font.weight: Font.Normal
anchors.verticalCenter: parent.verticalCenter
elide: Text.ElideRight
width: parent.width - 16 - Theme.spacingS
}
}