Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSApplication resigning front most application status: hide v. deactivate

I've got an application that needs to become the front most application after a timer expires and resign the front most status when the timer is started by pressing a button, e.g.

  • click "start timer" -> app resigns front most application
  • timer expires -> app becomes front most application

I deliberately paraphrased things a little because playing with active status of the sharedApplication doesn't do what I want.

I become the front most app by doing a [[NSApplication sharedApplication] activateIgnoringOtherApps: YES] and that works perfectly well.

Doing the reverse seems impossible!?

  • [[NSApplication sharedApplication] deactivate] shouldn't be called directly, but more importantly doesn't bring the next application in the "command-tab order" forwards. The app just sits there with its menu bar showing but it's no longer "active".

  • [[NSApplication sharedApplication] hide: self] resigns the active status and brings the next application in the "Command-tab order" to the front BUT it also hides all the application windows.

I need some way of bringing the next application in the command-tab order to the front WITHOUT hiding all my windows.

Is there a good way of doing that?

The solution should be 10.5 Leopard and 10.6 compatible.

I do have a solution from around 1996 but it involves Carbon APIs and I'd really prefer doing it the Cocoa or at least Foundation way..

Any help would be greatly appreciated.

like image 201
Frank R. Avatar asked Oct 19 '10 10:10

Frank R.


1 Answers

Have you tried hide followed by unhideWithoutActivation?

like image 83
stko Avatar answered Nov 02 '22 13:11

stko