views:

83

answers:

1

I have an application where a borderless window is shown and hidden, using orderOut and orderFront. When it is visible, I want the it to become the key window when the mouse moves over it. So far I've done this:

  • In awakeFromNib I have set its first responder to itself.
  • In the window's constructor I set accepts mouse events to YES.
  • In the mouseMoved method, I use makeKeyAndOrderToFront.

My problem is, that this only works the first time I move the mouse over the window. After that, it doesn't receive any mouseOver events. I've tried checking the firstResponder but as far as I can tell it never changes from the window.

Any ideas what I can do to get this working?

A: 

You need to add a tracking area if you want to receive mouseMoved events (I assume that's what you mean as Cocoa has no such thing as a mouseOver event).

I wrote a little app called Focus which does something similar — it hides a borderless window which covers the menu bar when you move the mouse over it. The code is simple enough it might be useful as an example.

Nicholas Riley