recherche bouton un peu spécial

APAP Membre
18:02 modifié dans API AppKit #1
Bonjour,

Je cherche un NSButton un peu spécial et je ne vois pas trop comment faire:

Je cherche un bouton qui déclenche le clic lors du mouseup, même si le mouse down n'a pas été réalisé sur lui.
Ce bouton devra également avoir un état normal et un état "survolé" sous forme de 2 images différentes.

Si vous avez des idées je suis preneur :)

Merci :)

Réponses

  • tabliertablier Membre
    18:02 modifié #2
      ???  Je n'en suis pas sur (!),
    je pense qu'il faut gérer les événements mouse-down et up dans la fenêtre qui contient le bouton et faire le reste par programmation (voir NSWindow). Pour les deux images: Sur un bouton type "Push On/ Push Off"  ou bien type "Toggle" il faut déclarer une des images comme  "Image" et l'autre comme "Alt. image". Par programmation on passe d'une image à  l'autre en changeant l'état du bouton:  [leBouton setState: etat]  avec etat = NSOnState ou NSOffState. 
  • AliGatorAliGator Membre, Modérateur
    18:02 modifié #3
    Le problème étant que si le mouseDown a été fait sur un objet A, c'est cet objet A qui va tracker les events ensuite. Donc si tu fais ton mouseDown sur autre chose que le bouton, genre le fond de la fenêtre NSWindow, c'est la fenêtre qui va tracker les events et qui va recevoir le mouseUp...

    La seule solution que je vois là  comme ça c'est de faire le tracking toi-même. Genre de mémoire dans NSCell (un des composants sous-jacent de NSButton) tu as une méthode de tracking de la souris en lui passant un rectangle NSRect à  tracker (et une vue dans laquelle se trouve se rectangle). Et il me semble qu'il existe encore d'autres méthodes permettant de faire du tracking de la souris dans un rectangle donné. Après à  toi de gérer le tracking et le mouseUp et les conditions qui vont bien, vu que ce que tu veux faire est spécifique et pas du tout usuel c'est à  toi de le prévoir...
  • APAP Membre
    18:02 modifié #4
    En effet, il semble qu'il faille jouer avec trackMouse / startTrackingAt / continueTracking de NSButtonCell.

    Je vais creuser tout cela. Merci pour la piste. :)
Connectez-vous ou Inscrivez-vous pour répondre.