Hi all,Occasionally, and unpredictably, my app will hang at a semaphore_wait_signal_trap, see the partial stack trace below. What's happening is that I override NSButtonCell so I can draw a checkbox on a parent row, and not on child rows. My NSButtonCell override, called TableViewButtonCell, looks like this:
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView { if(-1 < currentRow) {SearchRowItem* anItem = static_cast<SearchRowItem*>([tableView itemAtRow:currentRow]);
if(![anItem isChild]) { [super drawWithFrame:cellFrame inView:controlView]; } } }It my item is not a child, I allow the checkbox to be drawn, otherwise I skip it. I set currentRow in my override of NSOutlineView (called IDFOutlineView):
- (void)drawRow:(int)rowIndex clipRect:(NSRect)clipRect {// TableViewButtonCell doesn't know the current row when we draw; this communicates it. TableViewButtonCell::drawWithFrame is just downstream from here.
[TableViewButtonCell setCurrentRow:rowIndex]; [super drawRow:rowIndex clipRect:clipRect]; }I set it up in my column prototype cell in my NSOutlineView awakeFromNib like this:
TableViewButtonCell *tPrototypeCell = [[TableViewButtonCell alloc] init];
[tPrototypeCell setTableView:tableView]; [tPrototypeCell setControlSize:NSMiniControlSize]; [tPrototypeCell setButtonType:NSSwitchButton]; [tPrototypeCell setTarget:self]; [tPrototypeCell setAction:@selector(toggleCheckbox:)]; [tCol setDataCell:[tPrototypeCell autorelease]];Is that a reasonable method for doing a control in a column that appears conditionally? Am I shooting myself in the foot somehow?
Thanks for your advice. Here's the partial stack trace:35 - [NSView displayIfNeeded] + 933 (in AppKit) [0x94fab523] 35 - [NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 3090 (in AppKit) [0x9506ab4f]
35 - [NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView :] + 306 (in AppKit) [0x9506e02b]
35 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView :] + 4541 (in AppKit) [0x9506f5af]
35 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView :] + 4541 (in AppKit) [0x9506f5af]
35 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView :] + 4541 (in AppKit) [0x9506f5af]
35 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView :] + 4541 (in AppKit) [0x9506f5af]
35 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView :] + 4541 (in AppKit) [0x9506f5af]
35 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView :] + 1819 (in AppKit) [0x9506eb0d]
35 -[NSView _drawRect:clip:] + 3853 (in AppKit) [0x9507129c]
35 -[NSTableView drawRect:] + 2199 (in AppKit) [0x94fe0c84]
35 -[NSOutlineView drawRowIndexes:clipRect:] + 122 (in AppKit) [0x94fe202a]
35 -[NSTableView drawRowIndexes:clipRect:] + 363 (in AppKit) [0x94fe21a0]
35 -[IDFOutlineView drawRow:clipRect:] + 132 (in Identity Finder) [0x48e032]
35 -[NSTableView drawRow:clipRect:] + 872 (in AppKit) [0x9503cdb2]
35 -[NSOutlineView _drawContentsAtRow:column:withCellFrame:] + 99 (in AppKit) [0x9503d7ea]
35 -[NSTableView _drawContentsAtRow:column:withCellFrame:] + 269 (in AppKit) [0x9503d951]
35 -[TableViewButtonCell drawWithFrame:inView:] + 181 (in Identity Finder) [0x48fe19]
35 -[NSButtonCell drawInteriorWithFrame:inView:] + 2054 (in AppKit) [0x94ff46b5]
35 -[NSButtonCell _configureAndDrawTitleWithRect:cellFrame:controlView:] + 4317 (in AppKit) [0x953739d5]
35 -[NSButtonCell drawTitle:withFrame:inView:] + 187 (in AppKit) [0x950d8844]
35 -[NSAttributedString(NSStringDrawingExtension) _drawCenteredVerticallyInRect:scrollable:] + 2834 (in AppKit) [0x950d937c]
35 __NSStringDrawingCore + 1694 (in AppKit) [0x94fda89f]
35 +[NSStringDrawingTextStorage _fastDrawString:attributes:length:inRect:graphicsContext:baselineRendering:usesFontLeading:usesScreenFont:typesetterBehavior:paragraphStyle:lineBreakMode:boundingRect:padding:scrollable :] + 3684 (in AppKit) [0x9504ca2b]
35 -[NSFont boundingRectForFont] + 63 (in AppKit) [0x950f0ac4]
35 _CTFontGetBoundingBox + 77 (in CoreText) [0x90313e75]
35 __ZNK5TFont14GetBoundingBoxEv + 65 (in CoreText) [0x90313edb]
35 __ZNK9TBaseFont14GetBoundingBoxEP7TStrike + 57 (in CoreText) [0x90313fe1]
35 _GCGetStrikeInfo + 35 (in ATS) [0x964094a1]
35 _TSAcquireReader + 50 (in CarbonCore) [0x9197ab1a]
35 _semaphore_wait_signal_trap + 10 (in libSystem.B.dylib)
Michael Domino michael.dom...@identityfinder.com
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com