alexrozanski / PXSourceList

Source List control for the Mac
Other
639 stars 77 forks source link

Editing titles on cell based source list causes exception. #40

Closed swaterfall closed 10 years ago

swaterfall commented 10 years ago

I'm having a problem when editing the titles of items in the cell based list. Renaming an item's title and selecting outside the cell or hitting the return key causes an exception:

screen shot 2014-03-20 at 16 59 22

Exception detected while handling key input.
-[NSProxy doesNotRecognizeSelector:controlTextDidEndEditing:] called!

When you then deselect the cell the title returns to the previous one.

I check the demo app and it has the same problem on the cell based list but it works fine on the view based.

Any ideas?

besi commented 10 years ago

+1

This is my complete stacktrace:

2014-03-21 08:30:46.162 PXSourceList[67090:303] *** -[NSProxy doesNotRecognizeSelector:controlTextDidEndEditing:] called!
2014-03-21 08:30:46.167 PXSourceList[67090:303] (
    0   CoreFoundation                      0x00007fff87e4d25c __exceptionPreprocess + 172
    1   libobjc.A.dylib                     0x00007fff8fc5de75 objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff87e4d10c +[NSException raise:format:] + 204
    3   CoreFoundation                      0x00007fff87dab3f2 ___forwarding___ + 1010
    4   CoreFoundation                      0x00007fff87daaf78 _CF_forwarding_prep_0 + 120
    5   CoreFoundation                      0x00007fff87e1be0c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
    6   CoreFoundation                      0x00007fff87d0fa6d _CFXNotificationPost + 2893
    7   Foundation                          0x00007fff8a4fe7ba -[NSNotificationCenter postNotificationName:object:userInfo:] + 68
    8   AppKit                              0x00007fff854e595b -[NSTableView textDidEndEditing:] + 333
    9   CoreFoundation                      0x00007fff87e1be0c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
    10  CoreFoundation                      0x00007fff87d0fa6d _CFXNotificationPost + 2893
    11  Foundation                          0x00007fff8a4fe7ba -[NSNotificationCenter postNotificationName:object:userInfo:] + 68
    12  AppKit                              0x00007fff850a2df8 -[NSTextView(NSSharing) resignFirstResponder] + 638
    13  AppKit                              0x00007fff84f7b2c0 -[NSWindow makeFirstResponder:] + 455
    14  AppKit                              0x00007fff8503f6e5 -[NSWindow sendEvent:] + 10173
    15  AppKit                              0x00007fff84fde6e4 -[NSApplication sendEvent:] + 2021
    16  Afloat                              0x0000000100786479 Afloat + 13433
    17  AppKit                              0x00007fff84e2eb89 -[NSApplication run] + 646
    18  AppKit                              0x00007fff84e19913 NSApplicationMain + 940
    19  PXSourceList                        0x0000000100001462 main + 34
    20  PXSourceList                        0x0000000100001434 start + 52
    21  ???                                 0x0000000000000003 0x0 + 3
)
alexrozanski commented 10 years ago

Cheers guys, good catch.

The issue here is that -controlTextDidEndEditing: is neither a (PXSourceList | NSOutlineView)Delegate or (PXSourceList | NSOutlineView)DataSource method but is implemented by NSOutlineView, so PXSourceListDelegateDataSourceProxy returns YES in -respondsToSelector: for this selector (see here) but then doesn't actually generate a method signature for it in -methodSignatureForSelector: because it's not a delegate/data source method.

This is probably best addressed as a separate case for forwarding NSControl delegate methods (which this is). I'll get a fix out as soon as I can (which might be a week or two).