Passer au travers d'une childWindow
UniX
Membre
Salut.
J'ai une childWindow "accrochée" à une fenêtre.
Je souhaiterais que lorsque je clique par dessus la childWindow, le clic s'applique à la window qui est en dessous (sa parentWindow), et non à la childWindow.
J'ai essayé de faire un truc dans le style :
... mais c'est pas terrible ...!
Comment dois-je m'y prendre ?
J'ai une childWindow "accrochée" à une fenêtre.
Je souhaiterais que lorsque je clique par dessus la childWindow, le clic s'applique à la window qui est en dessous (sa parentWindow), et non à la childWindow.
J'ai essayé de faire un truc dans le style :
- (void)mouseDown:(NSEvent *)event<br />{<br /> [[self parentWindow]mouseDown:event];<br />}<br /><br />- (void)mouseDragged:(NSEvent *)event<br />{<br /> [[self parentWindow]mouseDragged:event];<br />}<br /><br />- (void)mouseUp:(NSEvent *)event<br />{<br /> [[self parentWindow]mouseUp:event];<br />}
... mais c'est pas terrible ...!
Comment dois-je m'y prendre ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Normal la doc dit :
J'ai aussi essayé canBecomeKeyWindow et canBecomeMainWindow, mais sans plus de résultat.
Il me semble que c'est ce que j'avais utilisé (pour une fenêtre semi-transparente qui devait "laisser passer les clics à travers", dans mon cas)
A faire je pense de préférence avant le [mainWin addChild:taChildWindow], quoique ça ne doit pas avoir d'importance (mais c'est plus logique)
Ca ne peut pas marcher. Un NSEvent est attaché à une fenêtre, il ne peut donc pas ensuite être renvoyé à une autre sans transformation. Notamment, il faut modifier le locationInWindow pour transformer les coords de la child vers son parent.
Je te conseille plutôt de faire ceci : créé une sous-classe NSWindow et réimplémente la méthode sendEvent:. Cette sous-classe sera celle de la child-window.
Le but du code est de créer un nouvel event de type mouseDown qui sera attaché à la fenêtre parente (via le paramètre windowNumber). Il faut aussi transformer les coords d'une fenêtre vers l'autre. Enfin, on envoie cet event à l'appli pour que la fenêtre parente le reçoit :
Ici le code ne s'occupe que du mouseDown, mais tu peux l'adapter pour d'autres events.
.
Merci Bru et Aligator pour votre aide.