web-dev-qa-db-fra.com

ShellIconOverlayIdentifiers - pourquoi si peu?

À ce stade, tout le monde sait qu'il y a une limite au nombre de ShellIconOverlayIdentifiers (à partir de MSDN):

Le nombre de gestionnaires de superposition d'icônes différents que le système peut prendre en charge est limité par la quantité d'espace disponible pour les superpositions d'icônes dans la liste d'images du système. Il y a actuellement quinze emplacements alloués pour les superpositions d'icônes, dont certains sont réservés par le système. Pour cette raison, les gestionnaires de superposition d'icônes ne doivent être implémentés que s'il n'y a pas d'alternatives satisfaisantes.

Je peux comprendre la superposition de 15 superpositions dans Windows 95. Mais dans un environnement où il y a des gigantesques RAM, de nombreux cœurs et des GPU, y a-t-il une raison technique à un si faible nombre dans un système d'exploitation moderne?

Et pourquoi cette valeur n'est-elle pas configurable?

Avant de donner la réponse "performances", pensez à: Windows permet une configuration telle que vous pouvez tuer les performances ... pourquoi choisir ce problème spécifiquement?

84
rbellamy

À moins que quelqu'un ici ne travaille au sein de l'équipe Windows Shell, je doute que vous obtiendrez une réponse qui traite vraiment des limites techniques et de la façon dont elles affectent le choix de conception. Mais j'essayerai...

Je suppose qu'il n'y a pas de limitation technique, ou du moins il n'y en a pas maintenant. La vraie raison est probablement que personne n'a jamais pris le temps de s'asseoir et de mettre à jour le code, la conception et les spécifications pour lever cette limitation. Les fonctionnalités ne sont pas implémentées par défaut, et ce n'est pas parce que l'environnement informatique a changé au cours des dernières années que quelqu'un s'est assis et a réécrit Windows pour profiter pleinement de tous ces changements.

Vous devriez également considérer que c'est plus que probablement un choix de conception conscient, plutôt qu'une limitation imposée. Raymond Chen (qui en fait le fait travail sur l'équipe Shell) a publié un entrée de blog répondant au tollé sur Windows 7 supprimant la superposition "part de partage". Il fait valoir de façon convaincante que la superposition d'icônes n'est vraiment pas un moyen souhaitable d'afficher des informations (au-delà du fait que le système est limité à 15) [non souligné dans l'original]:

De manière générale, les superpositions ne sont pas un bon moyen de présenter des informations car il ne peut y avoir qu'une seule superposition par icône, et il y a une limite de 15 superpositions par ImageList. S'il y a deux superpositions ou plus qui s'appliquent à un élément, alors l'une gagnera et les autres perdront, à quel point la valeur de la superposition comme moyen de déterminer quelles propriétés s'appliquent à un élément diminue puisque la seule façon d'être sûr qu'une propriété est manquante est quand vous ne voyez aucune superposition du tout. (Si vous voyez une autre superposition, vous ne pouvez pas dire si c'est parce que votre propriété est manquante ou parce que cette autre superposition s'affiche à la place de la vôtre.)

Il me semble raisonnable que l'encombrement supplémentaire ajouté à Shell ne vaille tout simplement pas la peine dans la majorité des cas du monde réel. L'équipe Windows Shell est évidemment parvenue à la même conclusion et a supprimé la superposition de "main partagée". Explication directe de Raymond:

Étant donné les changements dans la façon dont les gens utilisent les ordinateurs, le partage d'informations devient de plus en plus l'état par défaut. Lorsque vous configurez un groupe résidentiel, à peu près tout va être partagé. Pour supprimer l'encombrement visuel, les informations ont été déplacées vers le volet Détails.

Et, je sais que vous avez spécifiquement demandé de ne pas mentionner les performances, mais Windows le fait vraiment essayez pour vous empêcher de vous tirer une balle dans le pied. Les utilisateurs exigent de la réactivité dans le shell, et les icônes de superposition peuvent interférer avec cela. Comme preuve supplémentaire qu'ils sont pas la priorité, n autre article de blog par les mêmes châtiments de Raymond Chen:

Un autre exemple d'applications ayant une vision égoïste des performances est venu d'une entreprise développant un gestionnaire de superposition d'icônes. Le Shell traite le calcul de superposition comme un élément de faible priorité, car il est plus important d'avoir des icônes à l'écran pour que l'utilisateur puisse commencer à faire ce qu'il veut faire. Les décorations peuvent venir plus tard. Cette entreprise voulait savoir s'il y avait un moyen d'améliorer ses performances et d'afficher sa superposition sur l'écran avant même que l'icône n'apparaisse, démontrant une interprétation phénoménalement égoïste de la "performance".

84
Cody Gray

Excellente réponse sur les questions pratiques par Cody. Quant à savoir pourquoi 15 et non un autre nombre, la limite est intégrée dans le contrôle ImageList lui-même.

13
Bruce

Tout cela est très bien et bon, comme l'explique Cody Gray, mais franchement, c'est assez peu imaginatif, et comme rapporté dans les coulisses, cela semble un peu frustré

En 2015 et avec Windows 10, il peut et doit sûrement y avoir une meilleure capacité, comme j'ai noté une trentaine de superpositions présentes et j'ai dû prioriser celles que je voulais le plus voir, ce qui n'est pas du tout ce dont vous voulez que la plupart des gens s'inquiètent. Je vois également des fournisseurs agressifs comme Box sur-concurrencer pour essayer de se prioriser, et cela ne sera jamais bon.

Voici une possibilité. Et si les icônes de superposition superposées avaient un indicateur de superposition générique; une petite matrice rectangulaire de plusieurs couleurs comme le Google Chrome Apps? Uniquement superposé, il suffit d'afficher la superposition d'une longue liste.

Ensuite, lorsque le pointeur de la souris rencontre l'icône, une petite fenêtre déroulante rassemble toutes les variations d'icône à afficher (à la taille d'une petite icône ou un peu plus grande). Chaque icône superposée annonce à son tour par info-bulle ce que c'est, lorsque vous passez la souris.

Vous pouvez maintenant avoir toutes les superpositions d'icônes dont vous avez besoin, pour l'état dans divers nuages, pour les indications de référentiel comme pour les outils Tortoise, etc.

4
narration_sd