ShellIconOverlayIdentifiers - perché così pochi?


84

A questo punto, tutti sanno che esiste un limite al numero di ShellIconOverlayIdentifiers(da MSDN):

Il numero di diversi gestori di sovrapposizioni di icone che il sistema può supportare è limitato dalla quantità di spazio disponibile per le sovrapposizioni di icone nell'elenco delle immagini di sistema. Ci sono attualmente quindici slot assegnati per le sovrapposizioni di icone, alcuni dei quali sono riservati dal sistema. Per questo motivo, i gestori di sovrapposizione di icone dovrebbero essere implementati solo se non ci sono alternative soddisfacenti

Posso capire il limite di 15 overlay in Windows 95. Ma in un ambiente in cui sono presenti RAM, numerosi Core e GPU, c'è qualche ragione tecnica per un numero così basso in un sistema operativo moderno?

E perché questo valore non è configurabile?

Prima di dare la risposta "prestazioni", considera: Windows consente la configurazione in modo tale da poter ridurre le prestazioni ... perché scegliere questo problema in particolare?


Perché è etichettato "tortoisesvn"? Mi sto perdendo qualcosa?
Cody Grey

19
Ho pensato di essere intelligente poiché tortoisesvn è l'app citata più di frequente quando si tratta di limitazioni eccessive di icone, principalmente perché richiede 9 degli slot disponibili. Rimosso il tag.
rbellamy

1
Le limitazioni sono sempre le stesse su Windows 10. Non so neanche perché.
Gohan

Risposte:


86

A meno che qualcuno qui non lavori nel team di Windows Shell, dubito che otterrai una risposta che affronti davvero i limiti tecnici e il modo in cui influenzano la scelta del design. Ma ci proverò...

La mia ipotesi è che non ci sia alcuna limitazione tecnica, o almeno non ce n'è una adesso. La vera ragione è presumibilmente che nessuno si è mai preso il tempo di sedersi e aggiornare il codice, il design e le specifiche per eliminare questa limitazione. Le funzionalità non sono implementate per impostazione predefinita e solo perché l'ambiente di elaborazione è cambiato negli ultimi anni non significa che qualcuno si sia seduto e abbia riscritto Windows per sfruttare appieno tutti quei cambiamenti.

Dovresti anche considerare che è più che probabile una scelta di progettazione consapevole, piuttosto che una limitazione imposta. Raymond Chen (che effettivamente fa il lavoro del team di shell) ha pubblicato un blog rispondendo al clamore su Windows 7 rimuovere la sovrapposizione "condivisione mano". Egli sostiene in modo convincente che l'icona sovrapposta non è davvero un modo desiderabile di mostrare le informazioni (al di là del fatto che il sistema è limitato a 15) [enfasi aggiunta]:

In generale, gli overlay non sono un buon modo per presentare le informazioni perché può esserci un solo overlay per icona e c'è un limite di 15 overlay per ImageList. Se ci sono due o più sovrapposizioni che si applicano a un oggetto, allora una vincerà e le altre perderanno, a quel punto il valore della sovrapposizione come un modo per determinare quali proprietà si applicano a un oggetto diminuisce poiché l'unico modo per essere sicuri che una proprietà manca è quando non vedi alcuna sovrapposizione. (Se vedi qualche altro overlay, non puoi dire se è perché la tua proprietà è mancante o perché quell'altro overlay è visualizzato invece del tuo.)

Mi sembra ragionevole che il disordine extra aggiunto alla shell semplicemente non valga la pena nella maggior parte dei casi del mondo reale. Il team di Windows Shell è ovviamente giunto alla stessa conclusione e ha tagliato la copertura della "mano di condivisione". La spiegazione diretta di Raymond:

Dati i cambiamenti nel modo in cui le persone usano i computer, la condivisione delle informazioni sta diventando sempre più lo stato predefinito. Quando imposti un gruppo Home, praticamente tutto verrà condiviso. Per rimuovere il disordine visivo, le informazioni sono state spostate nel riquadro Dettagli.

E so che hai specificamente chiesto di non parlare delle prestazioni, ma Windows cerca davvero di impedirti di spararti ai piedi. Gli utenti richiedono reattività nella shell e le icone sovrapposte possono interferire con questo. Ad ulteriore prova che non sono la priorità , un altro post sul blog dello stesso Raymond Chen rimprovera:

Un altro esempio di applicazioni che hanno una visione egoistica delle prestazioni proviene da un'azienda che sviluppa un gestore di sovrapposizione di icone. La shell considera il calcolo dell'overlay come un elemento a bassa priorità, poiché è più importante avere icone sullo schermo in modo che l'utente possa iniziare a fare quello che desidera. Le decorazioni possono venire dopo. Questa azienda voleva sapere se c'era un modo per migliorare le loro prestazioni e ottenere la loro sovrapposizione sullo schermo anche prima che l'icona apparisse, dimostrando un'interpretazione fenomenale egoistica della "performance".


15
Ottima risposta. Quindi forse la domanda migliore è "Qual è un'alternativa alle sovrapposizioni di icone che presenta la stessa coda visiva istantanea sullo stato di un file / cartella?" Mi sembra che usare le icone per fare di più che identificare il tipo di contenuto stia diventando sempre più importante per l'esatto motivo menzionato da Raymond Chen - con l'offuscamento dei confini della posizione dei file, lo stato MATTERS.
rbellamy

3
Sospetto molto che non sia né una scelta di progettazione consapevole né una limitazione imposta, ma una decisione di progettazione fatua presa molto tempo fa (circa Win 95) e mai risolta a causa della base di utenti installata. La decisione più stupida è che ogni estensione di overlay può supportare solo una sovrapposizione di icone e per ogni file la shell chiede solo "si applica?". Esso dovrebbe essere che ogni sovrapposizione supporta una serie di icone, e per ogni file della shell chiede "quale icona overlay?", A cui l'estensione potrebbe rispondere "Non lo applico", come un'opzione.
Keith Robertson

9
È interessante che MS abbia abbracciato questo confondendo la mia ShellIconOverlayIdentifiersvoce di registro con OneDrive grezzo a partire da Win10. Per uno sviluppatore che utilizza qualcosa come TortoiseSVN / GIT, queste sovrapposizioni sono cruciali e il fatto che solo uno può essere mostrata è una ragione PERCHE ' .
Alex McMillan

2
Di tutte le cose che Windows 10 si è rotto, @Alex, quella è piuttosto in fondo alla mia lista. Decidere di imporre OneDrive agli utenti è stata chiaramente una decisione presa dal reparto marketing, non dal team di shell. Nessuno ha preventivato tempo e denaro per tornare indietro e migliorare gli elenchi di immagini della shell per renderlo user-friendly.
Cody Grey

6
Questa non è una risposta accettabile. So che parte di esso proviene dalla stessa Microsoft, quindi l'inaccettazione è per l'approccio di Microsoft. Guarda il mio esempio: ho sincronizzato le cartelle di DropBox, Google Drive, Mega, OneDrive e Tortoise SVN e vorrei sinceramente vedere tutti gli overlay correttamente su tutte le cartelle, ma non posso a causa di questa stupida limitazione.
Carlos B. Feitoza Filho

13

Ottima risposta sulle questioni pratiche da parte di Cody. Quanto al motivo per cui 15 e non qualche altro numero, il limite è incorporato nel controllo ImageList stesso.


4

Tutto questo va molto bene, come spiegato da Cody Gray, ma francamente è piuttosto privo di fantasia e, come riportato dietro le quinte, suona un po 'frustrato.

Nel 2015 e con Windows 10, sicuramente ci può e deve essere una capacità migliore, poiché ho notato circa trenta sovrapposizioni presenti e dovevo dare la priorità a quelle che volevo di più vedere, che non è ciò di cui vuoi che la maggior parte delle persone si preoccupi affatto. Inoltre vedo fornitori aggressivi come Box che competono eccessivamente per cercare di dare la priorità a se stessi, e questo non andrà mai bene.

Ecco una possibilità: cosa succederebbe se le icone sovrapposte di moltiplicazione avessero un indicatore di sovrapposizione generico; una piccola matrice rettangolare di più colori come il pulsante Google Chrome Apps? Singolarmente sovrapposto mostrerebbe solo la sovrapposizione di un lungo elenco.

Quindi, quando il puntatore del mouse incontra l'icona, una piccola finestra a comparsa raccoglie tutte le variazioni dell'icona da visualizzare (con dimensioni dell'icona piccole o leggermente più grandi). Ogni icona sovrapposta a sua volta annuncia tramite tooltip di cosa si tratta, quando si passa il mouse sopra.

Ora puoi avere tutte le sovrapposizioni di icone di cui hai bisogno, per lo stato in vari cloud, per le indicazioni del repository come per gli strumenti Tortoise e così via.


2
L'idea alla base delle sovrapposizioni è che dovresti essere in grado di identificare lo stato dell'oggetto sotto osservazione "a colpo d'occhio". Il tuo piano, sebbene creativo, richiederebbe "le mani sulla tastiera o sul mouse" per far emergere le informazioni. Non che io abbia una soluzione migliore ...
rbellamy

Se devono essere in una finestra a comparsa, perché non inserire semplicemente le informazioni nella barra delle informazioni o nel riquadro di anteprima o in qualche altro punto dell'interfaccia utente? Il punto centrale delle icone sovrapposte è che sono effettivamente sovrapposte e visibili a colpo d'occhio.
Cody Grey
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.