Modification de la top bar d'une Window
Bonjour à tous,
Je ne sais pas si un tel sujet existe déjà (pas trouvé malgré la recherche), mais je cherche à faire une modification sur le topbar d'une NSWindow.
Il s'agit en fait de faire comme pas mal de Shareware (et aussi comme Safari 4), c'est à dire implémenter un ptit objet en haut à droite de la fenêtre.
Pour mon cas, ça sera un popup (voir screenshot joint)
Si vous avez une piste, je prend !
Je ne sais pas si un tel sujet existe déjà (pas trouvé malgré la recherche), mais je cherche à faire une modification sur le topbar d'une NSWindow.
Il s'agit en fait de faire comme pas mal de Shareware (et aussi comme Safari 4), c'est à dire implémenter un ptit objet en haut à droite de la fenêtre.
Pour mon cas, ça sera un popup (voir screenshot joint)
Si vous avez une piste, je prend !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu veux dire qu'il faudrait carrément que je réimplémente les différents boutons close, minimize, zoom et tout le tralala ? ... abusé quand même...
Moi quand je vois les shareware qui implémentent ça juste pour mettre "XX Days left... Buy Now", j'ai du mal à croire qu'ils se sont taper une sous classe NSWindow avec le codage des différents event (mouseDragged, etc..)
Non, mais hacker la méthode de dessin de la barre en appelant la méthode père puis ce qu'on veut...
Et comment je vais trouver ça moi
Mais il y a peut-être une méthode non documentée pour le faire directement d'ailleurs.
de NSWindow
En récupérant par exemple la superview de NSWindowToolbarButton (donc situé là où je veux, cà d à droite), on peut la modifier pour y rajouter ce que l'on veut
Mais je suppose que c'est incompatible avec un éventuel "toolbarButton".
Bha à la limite si y'en a un de toolbarbutton tu mets une condition pour décaler l'item que tu rajoutes dans la title bar.
La première qui est aussi la plus officielle est de créer une mini fenêtre sans décor (borderless) dans laquelle se trouve ton NSControl.
Ensuite tu attaches cette mini fenêtre (méthode addChildWindow:ordered: de NSWindow) à ta fenêtre principale.
La seconde est tout simplement d'accéder à la NSView dans laquelle est dessinée la barre de titre pour ensuite y ajouter (méthode addSubview de NSView) ton NSControl.
Cette NSview est récupérable par un [[maFenetre contentView] superview].
Cette méthode reste fiable, tant qu'Apple ne change pas la manière dont il dessine ses fenêtres cocoa, et bien sûr, elle ne fonctionne que sur les fenêtres stylées (donc celle qui ont une barre de menu).
Voilà : http://13bold.com/tutorials/accessory-view/