ShellIconOverlayIdentifiers - pourquoi si peu?

84

À ce stade, tout le monde sait qu'il existe 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 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 devraient être implémentés que s'il n'y a pas d'alternatives satisfaisantes

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

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

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

Bellamy
la source
Pourquoi est-ce étiqueté "tortoisesvn"? Est-ce que je manque quelque chose?
Cody Gray
19
Je pensais être intelligent car tortoisesvn est l'application la plus fréquemment mentionnée en ce qui concerne les limitations excessives des icônes - principalement parce qu'elle prend 9 de vos emplacements disponibles. Suppression de la balise.
rbellamy
1
Les limitations sont toujours les mêmes sur Windows 10. Je ne sais pas pourquoi non plus.
Gohan le

Réponses:

86

À moins que quelqu'un ici ne travaille dans l'équipe Windows Shell, je doute que vous obteniez une réponse qui aborde vraiment les limites techniques et 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 vraisemblablement 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 tirer pleinement parti de tous ces changements.

Vous devez également considérer qu'il s'agit plus que probablement d'un choix de conception conscient, plutôt que d'une limitation imposée. Raymond Chen (qui en fait fait le travail de l'équipe shell) a publié une entrée de blog répondant à la rumeur sur Windows 7 enlever la couverture de la « main de partage ». Il fait un argument convaincant selon lequel la superposition d'icônes n'est vraiment pas un moyen souhaitable de montrer des informations (au-delà du fait que le système est limité à 15) [italiques ajoutés]:

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 ou plusieurs superpositions 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 le seul moyen d'être sûr qu'une propriété est manquante, c'est quand vous ne voyez aucune superposition. (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é à la coque n'en vaut tout simplement pas la peine dans la majorité des cas réels. L'équipe Windows Shell est évidemment parvenue à la même conclusion et a coupé la superposition "partage de main". 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, presque tout est 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 essaie vraiment de 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 ne sont pas la priorité , un autre article de blog du même Raymond Chen châtie:

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 afin que l'utilisateur puisse commencer à faire ce qu'il voulait faire. Les décorations peuvent venir plus tard. Cette société voulait savoir s'il y avait un moyen d'améliorer leurs performances et de faire apparaître leur superposition à l'écran avant même que l'icône n'apparaisse, démontrant une interprétation phénoménalement égoïste de la «performance».

Cody Gray
la source
15
Excellente réponse. Alors peut-être que la meilleure question est "Quelle est une alternative aux superpositions d'icônes qui présente la même file d'attente visuelle instantanée sur l'état d'un fichier / dossier?" Il me semble que l'utilisation d'icônes pour faire plus qu'identifier le type de contenu devient de plus en plus importante pour la raison exacte mentionnée par Raymond Chen - avec le flou des limites d'emplacement des fichiers, le statut COMPTE.
rbellamy
3
Je soupçonne vraiment que ce n'est ni un choix de conception conscient ni une limitation imposée, mais une décision de conception absurde prise il y a longtemps (environ Win 95), et jamais corrigée en raison de la base d'utilisateurs installée. La décision la plus stupide est que chaque extension de superposition ne peut prendre en charge qu'une seule superposition d'icônes et pour chaque fichier, le shell ne demande que "s'applique?". Il aurait dû être que chaque superposition supporte un tableau d'icônes, et pour chaque fichier le shell demande "quelle superposition d'icônes?", Auquel l'extension pourrait répondre "Je ne s'applique pas" comme une option.
Keith Robertson
9
Intéressant que MS ait adopté cela en brouillant mon ShellIconOverlayIdentifiersentrée de registre avec OneDrive crud à partir de Win10. Pour un développeur en utilisant quelque chose comme TortoiseSVN / GIT, ces superpositions sont cruciales et le fait que seul peut être montré est une raison POURQUOI .
Alex McMillan
2
De toutes les choses que Windows 10 a cassées, @Alex, celle-ci est assez loin dans ma liste. Décider d'imposer OneDrive aux utilisateurs était clairement une décision prise par le service marketing, et non par l'équipe shell. Personne n'a prévu de temps et d'argent pour revenir en arrière et améliorer les listes d'images de coquilles afin de les rendre conviviales.
Cody Gray
6
Ce n'est pas une réponse acceptable. Je sais qu'une partie de celui-ci est venue de Microsoft lui-même, donc, le refus est pour l'approche de Microsoft. Voir mon exemple: j'ai synchronisé des dossiers de DropBox, Google Drive, Mega, OneDrive et Tortoise SVN et j'aimerais sincèrement voir toutes les superpositions correctement sur tous les dossiers, mais je ne peux pas à cause de cette limitation stupide.
Carlos B.Feitoza Filho
13

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

Bruce
la source
4

Tout cela est très bien, comme l'explique Cody Gray, mais franchement, c'est assez sans imagination, 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 je l'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 la plupart des gens devraient s'inquiéter. De plus, je vois des fournisseurs agressifs comme Box sur-concurrencer pour essayer de se prioriser, et cela ne sera jamais bon.

Voici une possibilité: que se passe-t-il si les icônes superposées à plusieurs reprises avaient un indicateur de superposition générique; une petite matrice rectangle de plusieurs couleurs comme le bouton Google Chrome Apps? Une seule superposition afficherait simplement la superposition sur 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ônes à visualiser (à petite taille d'icône ou un peu plus grande). Chaque icône superposée annonce à son tour par une info-bulle de quoi il s'agit, lorsque vous passez la souris dessus.

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, et ainsi de suite.

narration_sd
la source
2
L'idée derrière les superpositions est que vous devriez être en mesure d'identifier le statut de l'objet observé "en un coup d'œil". Votre plan, tout en étant créatif, nécessiterait des «mains sur le clavier ou la souris» pour faire ressortir les informations. Non pas que j'ai une meilleure solution ...
rbellamy
S'ils doivent être dans une fenêtre déroulante, pourquoi ne pas simplement mettre les informations dans la barre d'informations ou le volet de prévisualisation ou à un autre endroit de l'interface utilisateur? L'intérêt des icônes de superposition est qu'elles sont en fait superposées et visibles en un coup d'œil.
Cody Gray