question sur firstresponder et événements souris

APAP Membre
15:05 modifié dans API AppKit #1
Bonjour,

J'ai une application qui ouvre une fenêtre genre "tooltip" lors d'un mouse down sur la fenêtre principale.
Cette fenêtre tooltip contient différents boutons.
Je cherche à  réaliser la chose suivante:
- l'utilisateur effectue un clic gauche dans la vue principale et garde le bouton de la souris enfoncé
- la fenêtre tooltip s'affiche
- l'utilisateur déplace le curseur de la souris sur le bouton de la fenêtre tooltip et relâche alors le bouton de la souris (mouse up)

Ce que je voudrais, c'est que ce mouseup lance l'action associée au bouton sur lequel le mouse up a eu lieu. Malheureusement tant que je n'ai pas relâché le bouton de la souris, la fenêtre tooltip (et donc les boutons qu'elle contient) ne reçoit aucun événement souris et ce même en la mettant firstrespondeur lors de l'affichage.

Avez-vous des idées pour contourner ce problème?

Merci d'avance pour votre aide :) 

Réponses

  • mpergandmpergand Membre
    août 2010 modifié #2
    Essaye de passer l'event à  ta fenêtre tooltip:
    [toolTipWindow mouseDown:mouseDownEvent];

  • APAP Membre
    15:05 modifié #3
    Merci pour ta réponse,

    Tu veux dire faire une sorte de "forwarding" des événements à  ma fenêtre tooltip?
    ça me parait être un moyen correct, même si je pensais plus faire qu'il arrive directement au bon endroit, mais je ne sais pas si cela est possible.
  • mpergandmpergand Membre
    15:05 modifié #4
    Ca semble fonctionner:
    -(void) sendMouseDownToWindow:(NSWindow*) window<br />{<br />	NSEvent* event=[NSApp currentEvent];<br />	NSPoint mousePoint=[window convertScreenToBase:[NSEvent mouseLocation]];<br /><br />	NSEvent* mouseEvent=[NSEvent mouseEventWithType:NSLeftMouseDown location:mousePoint modifierFlags:0 timestamp:[event timestamp]<br />								windowNumber:[window windowNumber] context:[NSGraphicsContext currentContext]<br />								eventNumber:[event eventNumber]+1 clickCount:1 pressure:0.0];<br />	[window sendEvent:mouseEvent];<br />}
    
Connectez-vous ou Inscrivez-vous pour répondre.