highlight selection on mouse up

marrconemarrcone Membre
19:30 modifié dans API AppKit #1
Lorsque je clique sur une ligne dans une outlineview, la selection (highlight) apparait lors du mouse down. J'aimerai que le rectangle bleu de la selection ne se dessine qu'au mouse up comme dans la source list de itunes. Comment faire ?

Réponses

  • narknark Membre
    février 2010 modifié #2
    Salut,

    La méthode barbare dirait de sous-classer NSOutlineView et de redéfinir les méthodes comme suit :

    <br />@implementation UpOutlineView<br /><br />- (void)mouseDown:(NSEvent *)theEvent {<br />	// ainsi il ne se passe rien quand tu &quot;mouseDown&quot;<br />}<br /><br />- (void)mouseUp:(NSEvent *)theEvent {<br />	// et la tu feinte en appelant le &quot;mouseDown&quot; de la super-classe<br />	[super mouseDown:theEvent];<br />}<br /><br />@end<br />
    


    Avec un NSTableView, ça marche très bien, mais avec un NSOutlineView tu va rencontrer des problèmes du coté du déroulement des noeuds. Il doit exister une méthode plus propre, peut-être voir du coté de -drawRow:clipRect: mais c'est qu'une hypothèse.
  • AliGatorAliGator Membre, Modérateur
    février 2010 modifié #3
    Ouch ! Envoyer un mouseDown quand tu fais un mouseUp  B) violent comme truc (et le meilleur moyen d'avoir des effets de bord !)

    Plus logique de se contenter de régler la sélection, sur le mouseUp, genre setSelectedIndex ou je ne sais quel méthode (je vous laisse regarder dans la doc NSOutlineView doit bien y avoir un truc comme ça)
  • narknark Membre
    19:30 modifié #4
    Je précise "La méthode barbare" == à  ne pas mettre en production...
    On s'entend.  >:D
  • narknark Membre
    19:30 modifié #5
    Hey, jette un oeil à  ce code :
    http://perspx.com/software/pxsourcelist/

    Je crois que cet outline a le comportement souhaité.

Connectez-vous ou Inscrivez-vous pour répondre.