FSBrowser : un NSBrowser pour le filesystem... mais qui ne marche pas !

ChachaChacha Membre
02:08 modifié dans API AppKit #1
Bonjour à  tous (promis, je reviens bientôt de façon régulière)
D'ici là , je vous pose un problème que malgré toute ma bonne volonté je n'ai pas pu résoudre... et pourtant j'en ai essayé des trucs et des machins.

Vous avez sans doute constaté que Cocoa ne livre pas publiquement de classe pour parcourir une arborescence de fichiers : il faut utiliser un NSBrowser et tout réimplémenter dedans. For heureusement, un example est fourni dans la doc developer (Examples/AppKit/SimpleBrowser).

J'ai voulu extraire la substantifique moëlle de cet exemple pour faire une classe autonome FSBrowser; par exemple, le delegate du NSBrowser n'est plus le NSApp, mais lui-même. Bref.

ça fonctionne assez bien sauf un bug cosmétique : dans ma version (ci-jointe), il y a un léger flash au niveau des icônes, et elle ne restent pas sur le fond bleu de sélection (essayez vous comprendrez).

ça fait plusieurs jours que je cherche quelle différence entre mon code et le SimpleBrowser est responsable de ce comportement, et comment le corriger.

Je sais que c'est le pire des services, mais si une bonne âme veut bien se pencher sur le code... en tous cas, je sèche.

Merci

+
Chacha

[edit] bien sûr, pour "for heureusement", comprenez "fort heureusement". Je laisse la faute, elle m'a bien fait rigoler.

[Fichier joint supprimé par l'administrateur]

Réponses

  • 02:08 modifié #2
    J'ai un peu regardé ...même si je n'ai pas la solution, il y a un truc que j'ai relevé qui pourrait t'intéresser: cet exemple date de 2001-2002 (sur base de la date du copyright dans le .h). Or si mes souvenirs sont bons, en 2001, on était en 10.1. Or il se fait que une méthode a été ajoutée à  NSBrowserCell pour le 10.2 (setImage:). Donc même si ça n'explique pas ce qui ne va pas, essaye peut-être en priorité d'utiliser celle là , plutôt que le "réinventage de roue".
  • ChachaChacha Membre
    02:08 modifié #3
    dans 1163673450:

    cet exemple date de 2001-2002 (...) Or si mes souvenirs sont bons, en 2001, on était en 10.1 (...) une méthode a été ajoutée à  NSBrowserCell pour le 10.2 (setImage:)


    C'est miraculeux ! Merci Renaud, ça marche nickel maintenant. Effectivement, je n'avais pas pensé à  regarder l'évolution du NSBrowser.

    +
    Chacha
  • novembre 2006 modifié #4
    En règle générale, il vaut toujours mieux vérifier ce genre de trucs avec les exemples, ils sont souvent fait pour montrer une utilisation d'une nouveauté, au moment où ils ont été créés, mais il ne sont pas toujours mis à  jour (ou s'il le sont, c'est pour remplacer les méthodes deprecated par les versions modernes).

    Il y a quand même quelque chose d'amusant, je ne sais pas si tu as remarqué: il y a une méthode "setImage:" qui demande 10.2 et une méthode "setAlternateImage:" qui demande 10.0.
Connectez-vous ou Inscrivez-vous pour répondre.