Unlocking Focus on wrong view ((null)) under OS X 10.7.2

Osx Lionxcode4.2NswindowNsresponder

Osx Lion Problem Overview


I have a Cocoa app that has an NSWindowController controlling an NSWindow with an NSComboBox in it. Nothing special, and it worked fine until upgrading to OS X 10.7.2. Now I get the following exception, which occurs only once, when the window controller's window loads. (Since the window controller in my app remains loaded, it happens only once per app launch.) Subsequently focusing and unfocusing the combo box does not trigger it.

Anyone know whether something changed in 10.7.2, and if so how to work around it?

(This is happening with Xcode 4.2.)

2011-10-24 11:30:21.649 MyApp[7934:707] Unlocking Focus on wrong view ((null)), expected <NSComboBox: 0x40083d6e0>
2011-10-24 11:30:21.653 MyApp[7934:707] (
    0   CoreFoundation    0x00007fff8412d286 __exceptionPreprocess + 198
    1   libobjc.A.dylib   0x00007fff88cdad5e objc_exception_throw + 43
    2   CoreFoundation    0x00007fff8412d0ba +[NSException raise:format:arguments:] + 106
    3   CoreFoundation    0x00007fff8412d044 +[NSException raise:format:] + 116
    4   AppKit            0x00007fff8c76c1d5 -[NSFocusStack unfocusView:] + 194
    5   AppKit            0x00007fff8c7e838e +[_NSAutomaticFocusRing showForView:] + 2545
    6   AppKit            0x00007fff8cdbb4d1 __postActiveFirstResponderChanged_block_invoke_1 + 32
    7   CoreFoundation    0x00007fff840ecf37 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
    8   CoreFoundation    0x00007fff840ece96 __CFRunLoopDoObservers + 374
    9   CoreFoundation    0x00007fff840c2159 __CFRunLoopRun + 825
    10  CoreFoundation    0x00007fff840c1ae6 CFRunLoopRunSpecific + 230
    11  HIToolbox         0x00007fff8c0d73d3 RunCurrentEventLoopInMode + 277
    12  HIToolbox         0x00007fff8c0de58f ReceiveNextEventCommon + 181
    13  HIToolbox         0x00007fff8c0de4ca BlockUntilNextEventMatchingListInMode + 62
    14  AppKit            0x00007fff8c71e3f1 _DPSNextEvent + 659
    15  AppKit            0x00007fff8c71dcf5 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135
    16  AppKit            0x00007fff8c71a62d -[NSApplication run] + 470
    17  AppKit            0x00007fff8c99980c NSApplicationMain + 867
    18  MyApp             0x0000000100001682 main + 34
    19  MyApp             0x0000000100001654 start + 52
)

Osx Lion Solutions


Solution 1 - Osx Lion

You could try calling this command on the NSComboBox: setFocusRingType:NSFocusRingTypeNone That should cure the problem, although it does not explain the difference between the two releases.

Solution 2 - Osx Lion

http://hints.macworld.com/index.php?topic=system107&page=5

This appears to have been a bug in OS X 10.7.* (Lion) series. With zero changes to my code, the crash no-longer occurs on OS X 10.8 (Mountain Lion) complied with Xcode 4.4.1.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionalexantdView Question on Stackoverflow
Solution 1 - Osx LionDavid EllimanView Answer on Stackoverflow
Solution 2 - Osx Lionuser3210324View Answer on Stackoverflow