mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-24 21:42:51 -05:00
displays: workaround for duplicate models
This commit is contained in:
@@ -927,10 +927,46 @@ rm -rf '${home}'/.cache/icon-cache '${home}'/.cache/thumbnails 2>/dev/null || tr
|
||||
return barConfigs.filter(cfg => cfg.enabled);
|
||||
}
|
||||
|
||||
function getScreensSortedByPosition() {
|
||||
const screens = [];
|
||||
for (let i = 0; i < Quickshell.screens.length; i++) {
|
||||
screens.push(Quickshell.screens[i]);
|
||||
}
|
||||
screens.sort((a, b) => {
|
||||
if (a.x !== b.x)
|
||||
return a.x - b.x;
|
||||
return a.y - b.y;
|
||||
});
|
||||
return screens;
|
||||
}
|
||||
|
||||
function getScreenModelIndex(screen) {
|
||||
if (!screen || !screen.model)
|
||||
return -1;
|
||||
const sorted = getScreensSortedByPosition();
|
||||
let modelCount = 0;
|
||||
let screenIndex = -1;
|
||||
for (let i = 0; i < sorted.length; i++) {
|
||||
if (sorted[i].model === screen.model) {
|
||||
if (sorted[i].name === screen.name) {
|
||||
screenIndex = modelCount;
|
||||
}
|
||||
modelCount++;
|
||||
}
|
||||
}
|
||||
if (modelCount <= 1)
|
||||
return -1;
|
||||
return screenIndex;
|
||||
}
|
||||
|
||||
function getScreenDisplayName(screen) {
|
||||
if (!screen)
|
||||
return "";
|
||||
if (displayNameMode === "model" && screen.model) {
|
||||
const modelIndex = getScreenModelIndex(screen);
|
||||
if (modelIndex >= 0) {
|
||||
return screen.model + "-" + modelIndex;
|
||||
}
|
||||
return screen.model;
|
||||
}
|
||||
return screen.name;
|
||||
@@ -940,13 +976,27 @@ rm -rf '${home}'/.cache/icon-cache '${home}'/.cache/thumbnails 2>/dev/null || tr
|
||||
if (!screen)
|
||||
return false;
|
||||
|
||||
const screenDisplayName = getScreenDisplayName(screen);
|
||||
|
||||
return prefs.some(pref => {
|
||||
if (typeof pref === "string") {
|
||||
return pref === "all" || pref === screen.name || pref === screen.model;
|
||||
if (pref === "all" || pref === screen.name)
|
||||
return true;
|
||||
if (displayNameMode === "model") {
|
||||
return pref === screenDisplayName;
|
||||
}
|
||||
return pref === screen.model;
|
||||
}
|
||||
|
||||
if (displayNameMode === "model") {
|
||||
return pref.model && screen.model && pref.model === screen.model;
|
||||
if (pref.model && screen.model) {
|
||||
if (pref.modelIndex !== undefined) {
|
||||
const screenModelIndex = getScreenModelIndex(screen);
|
||||
return pref.model === screen.model && pref.modelIndex === screenModelIndex;
|
||||
}
|
||||
return pref.model === screen.model;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return pref.name === screen.name;
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
import qs.Widgets
|
||||
@@ -16,10 +17,16 @@ Rectangle {
|
||||
property string currentDeviceName: ""
|
||||
|
||||
function getScreenPinKey() {
|
||||
if (!screenName)
|
||||
return "";
|
||||
const screen = Quickshell.screens.find(s => s.name === screenName);
|
||||
if (screen) {
|
||||
return SettingsData.getScreenDisplayName(screen);
|
||||
}
|
||||
if (SettingsData.displayNameMode === "model" && screenModel && screenModel.length > 0) {
|
||||
return screenModel;
|
||||
}
|
||||
return screenName || "";
|
||||
return screenName;
|
||||
}
|
||||
|
||||
function resolveDeviceName() {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import qs.Common
|
||||
import qs.Modules.Plugins
|
||||
import qs.Services
|
||||
@@ -79,10 +80,16 @@ BasePill {
|
||||
}
|
||||
|
||||
function getScreenPinKey() {
|
||||
if (!root.screenName)
|
||||
return "";
|
||||
const screen = Quickshell.screens.find(s => s.name === root.screenName);
|
||||
if (screen) {
|
||||
return SettingsData.getScreenDisplayName(screen);
|
||||
}
|
||||
if (SettingsData.displayNameMode === "model" && root.screenModel && root.screenModel.length > 0) {
|
||||
return root.screenModel;
|
||||
}
|
||||
return root.screenName || "";
|
||||
return root.screenName;
|
||||
}
|
||||
|
||||
function getPinnedBrightnessDevice() {
|
||||
|
||||
@@ -1486,17 +1486,26 @@ Item {
|
||||
currentPrefs = [];
|
||||
}
|
||||
|
||||
const screenModelIndex = SettingsData.getScreenModelIndex(screenData);
|
||||
|
||||
let newPrefs = currentPrefs.filter(pref => {
|
||||
if (typeof pref === "string")
|
||||
return false;
|
||||
if (pref.modelIndex !== undefined && screenModelIndex >= 0) {
|
||||
return !(pref.model === screenData.model && pref.modelIndex === screenModelIndex);
|
||||
}
|
||||
return pref.name !== screenData.name || pref.model !== screenData.model;
|
||||
});
|
||||
|
||||
if (checked) {
|
||||
newPrefs.push({
|
||||
const prefObj = {
|
||||
name: screenData.name,
|
||||
model: screenData.model || ""
|
||||
});
|
||||
};
|
||||
if (screenModelIndex >= 0) {
|
||||
prefObj.modelIndex = screenModelIndex;
|
||||
}
|
||||
newPrefs.push(prefObj);
|
||||
}
|
||||
|
||||
dankBarTab.setBarScreenPreferences(selectedBarId, newPrefs);
|
||||
|
||||
@@ -691,9 +691,9 @@ Item {
|
||||
StyledText {
|
||||
text: {
|
||||
if (parent.currentMode) {
|
||||
return parent.currentMode.width + "×" + parent.currentMode.height + "@" + Math.round(parent.currentMode.refresh / 1000) + "Hz"
|
||||
return parent.currentMode.width + "×" + parent.currentMode.height + "@" + Math.round(parent.currentMode.refresh / 1000) + "Hz";
|
||||
}
|
||||
return modelData.width + "×" + modelData.height
|
||||
return modelData.width + "×" + modelData.height;
|
||||
}
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
@@ -870,17 +870,26 @@ Item {
|
||||
currentPrefs = [];
|
||||
}
|
||||
|
||||
const screenModelIndex = SettingsData.getScreenModelIndex(screenData);
|
||||
|
||||
var newPrefs = currentPrefs.filter(pref => {
|
||||
if (typeof pref === "string")
|
||||
return false;
|
||||
if (pref.modelIndex !== undefined && screenModelIndex >= 0) {
|
||||
return !(pref.model === screenData.model && pref.modelIndex === screenModelIndex);
|
||||
}
|
||||
return pref.name !== screenData.name || pref.model !== screenData.model;
|
||||
});
|
||||
|
||||
if (checked) {
|
||||
newPrefs.push({
|
||||
const prefObj = {
|
||||
name: screenData.name,
|
||||
model: screenData.model || ""
|
||||
});
|
||||
};
|
||||
if (screenModelIndex >= 0) {
|
||||
prefObj.modelIndex = screenModelIndex;
|
||||
}
|
||||
newPrefs.push(prefObj);
|
||||
}
|
||||
|
||||
displaysTab.setScreenPreferences(componentId, newPrefs);
|
||||
|
||||
Reference in New Issue
Block a user