Position de la souris dans une NSWindow
UniX
Membre
Salut.
J'ai placé un bouton dans une fenêtre qui doit me servir à modifier le frame de certaines vues de la fenêtre lorsque je clique dessus. Le bouton a l'attribut continuous, de ce fait, je voudrais pouvoir faire mon opération en live lorsque je déplace la souris en plus de cliquer le bouton.
Je cherche donc à récupérer la position de la souris lors du clic. J'ai fait ça avec des vues, mais je ne sais pas trop la méthode pour une fenêtre... Notamment, les méthodes mouseDown, et mouseDragged.
J'ai placé un bouton dans une fenêtre qui doit me servir à modifier le frame de certaines vues de la fenêtre lorsque je clique dessus. Le bouton a l'attribut continuous, de ce fait, je voudrais pouvoir faire mon opération en live lorsque je déplace la souris en plus de cliquer le bouton.
Je cherche donc à récupérer la position de la souris lors du clic. J'ai fait ça avec des vues, mais je ne sais pas trop la méthode pour une fenêtre... Notamment, les méthodes mouseDown, et mouseDragged.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Dans mon cas, j'ai une NSView dans la NSWindow...
Par contre, je n'arrive pas à obtenir ce que je souhaite.
Je voudrais ajouter en haut à droite d'une NSTableView une petite case qui va me permettre de faire varier la largeur de la NSTableView.
Pour la NSTableView, je n'affiche en fait pas l'entête de colonne, que j'ai remplacé par 1 NSImageView pour la barre, et une custom view pour la fameuse petite case.
J'ai envisagé de filtrer les clics et drag dans cette custom view, et de changer le frame de la NSTableView en conséquence.
Malheureusement la fenêtre se déplace, et visiblement, le frame ne varie pas ....
Voici un screenshot :
Consulte le main.m fourni pour sample app. Les 2 méthodes qui devraient t'intéresser sont:
[tt]- (unsigned int)splitView:(RBSplitView*)sender dividerForPoint:(NSPoint)point inSubview:(RBSplitSubview*)subview; [/tt] pour rendre possible un redimensionnement sans passer par un diviseur "officiel"
et
[tt]- (NSRect)splitView:(RBSplitView*)sender cursorRect:(NSRect)rect forDivider:(unsigned int)divider [/tt] Celle là est surtout cosmétique
il te suffit de monitorer le mouseDragged du cornerView, ensuite de récupérer les coords x de la souris, et enfin de redimenssionner le scrollView englobant la table.
.
Je crois qu'il existe une méthode à surclasser pour éviter ça, mais je ne retrouve plus laquelle ...
Voici le .h du cornerView :
puis le .m :
J'ai ajouté ce customCornerView via setCornerView: dans le awakeFromNib du contrôleur de la fenêtre.
.
Mais bon, j'ai réussi à contourner ou résoudre tous les problèmes que j'avais, et j'ai pu remettre un fonctionnement plus classique avec la cornerView.
Merci pour votre aide.