Re: What changed in 10.10 scrollView / scrollPoint?
In case anyone else comes across this: I finally managed to track down the trigger for this issue. I have some sibling views, one which is along the top of my window. In some circumstances when I switch into full screen mode, I set the height of this view to zero and expanded the other main view to fill the screen. If I change the size of the document view in my scroll view (the main view which I have now expanded to fill the screen), and then use scrollPoint, it must trigger some sort of caching operation for the window. At that point, it chokes on the zero height view at the top of the window. Don’t ask me why - as far as I can tell this does not happen if the zero height view is at the bottom or on either side with zero width. Setting the height of the view to 1 did not fix the issue, but setting it to 2 did. It was choking on argb32_image_mark or related methods, so all I can assume is that something about the configuration made it unable to create an image (there used to be a similar issue apparently in iOS up to 7.1.2. I have now managed to work around the problem, but this is clearly new behavior in 10.10, seems totally bizarre, and is not triggered by swipe scrolling or pinch zooming. Thanks again for the suggestions of places to look. Gideon On 18 Nov 2014, at 7:53 am, Graham Cox graham@bigpond.com wrote: ... On 18 Nov 2014, at 12:58 am, Gideon King gid...@novamind.com wrote: I have always done this using scrollPoint on my view. I have been using this since 10.6. My view is not layer backed and has a single subview which is a layer *hosting* view. Now in Yosemite 10.10, this takes a *very* long time at 100% CPU, with a stack trace looking something like this: CoreGraphics`argb32_sample_argb32 + 621 CoreGraphics`argb32_image_mark + 1696 CoreGraphics`RGBA32_image + 1156 ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
What changed in 10.10 scrollView / scrollPoint?
Hi, I have an app where I need to programmatically scroll the content of a full screen scroll view. I have always done this using scrollPoint on my view. I have been using this since 10.6. My view is not layer backed and has a single subview which is a layer *hosting* view. Now in Yosemite 10.10, this takes a *very* long time at 100% CPU, with a stack trace looking something like this: CoreGraphics`argb32_sample_argb32 + 621 CoreGraphics`argb32_image_mark + 1696 CoreGraphics`RGBA32_image + 1156 libRIP.A.dylib`ripl_Mark + 23 libRIP.A.dylib`RIPLayerBltImage + 1146 libRIP.A.dylib`ripc_RenderImage + 265 libRIP.A.dylib`ripc_EndLayer + 1204 CoreGraphics`CGContextEndTransparencyLayer + 53 QuartzCore`-[CALayer renderInContext:] + 1025 QuartzCore`-[CALayer _renderSublayersInContext:] + 479 QuartzCore`-[CALayer renderInContext:] + 1082 AppKit`-[NSView _layerBackedDisplayRectIgnoringOpacity:inContext:isRootView:flipContextIfNeedeed:] + 245 AppKit`-[NSView(NSInternal) _drawLayerInContext:] + 252 AppKit`-[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] + 1121 AppKit`-[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] + 2135 AppKit`-[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inContext:topView:] + 117 AppKit`-[NSView _drawRectBasedDisplayRectIgnoringOpacity:inContext:] + 214 AppKit`-[NSView displayRectIgnoringOpacity:inContext:] + 529 AppKit`-[_NSMirrorDocumentView drawRect:] + 370 AppKit`-[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] + 1186 AppKit`__46-[NSView(NSLayerKitGlue) drawLayer:inContext:]_block_invoke + 218 AppKit`-[NSView(NSLayerKitGlue) _drawViewBackingLayer:inContext:drawingHandler:] + 2407 AppKit`-[NSView(NSLayerKitGlue) drawLayer:inContext:] + 108 AppKit`-[_NSBackingLayerContents drawLayer:inContext:] + 145 QuartzCore`-[CALayer drawInContext:] + 119 AppKit`-[_NSTiledLayer drawTile:inContext:] + 625 AppKit`-[_NSTiledLayerContents drawLayer:inContext:] + 169 QuartzCore`-[CALayer drawInContext:] + 119 AppKit`-[NSTileLayer drawInContext:] + 169 QuartzCore`CABackingStoreUpdate_ + 3306 QuartzCore`___ZN2CA5Layer8display_Ev_block_invoke + 59 QuartzCore`x_blame_allocations + 81 QuartzCore`CA::Layer::display_() + 1546 AppKit`-[NSTileLayer display] + 119 AppKit`-[_NSTiledLayerContents update:] + 5688 AppKit`-[_NSTiledLayer display] + 375 QuartzCore`CA::Layer::display_if_needed(CA::Transaction*) + 603 QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 35 QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 242 QuartzCore`CA::Transaction::commit() + 390 AppKit`-[NSClipView _immediateScrollToPoint:] + 8642 AppKit`-[NSClipView scrollToPoint:] + 241 AppKit`-[NSScrollView scrollClipView:toPoint:] + 75 AppKit`-[NSClipView _scrollTo:animateScroll:flashScrollerKnobs:] + 1682 AppKit`-[NSClipView _scrollPoint:fromView:] + 86 AppKit`-[NSView scrollPoint:] + 38 NovaMind`-[NMSCanvasView scrollPoint:](self=0x00010f011a90, _cmd=0x7fff920309d8, aPoint=NSPoint at 0x7fff5fbfbe60) + 320 at NMSCanvasView.m:607 I have checked my view, my superview (the clipview), and the scrollview and none of them have layers, so I don’t know what is being drawn. Also once this operation is complete, it seems to update again, outside the call to scrollPoint like this: CoreGraphics`argb32_image_mark + 1866 CoreGraphics`RGBA32_image + 1156 libRIP.A.dylib`ripl_Mark + 23 libRIP.A.dylib`RIPLayerBltImage + 1146 libRIP.A.dylib`ripc_RenderImage + 265 libRIP.A.dylib`ripc_EndLayer + 1204 CoreGraphics`CGContextEndTransparencyLayer + 53 QuartzCore`-[CALayer renderInContext:] + 1025 QuartzCore`-[CALayer _renderSublayersInContext:] + 479 QuartzCore`-[CALayer renderInContext:] + 1082 AppKit`-[NSView _layerBackedDisplayRectIgnoringOpacity:inContext:isRootView:flipContextIfNeedeed:] + 245 AppKit`-[NSView(NSInternal) _drawLayerInContext:] + 252 AppKit`-[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] + 1121 AppKit`-[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] + 2135 AppKit`-[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inContext:topView:] + 117 AppKit`-[NSView _drawRectBasedDisplayRectIgnoringOpacity:inContext:] + 214 AppKit`-[NSView displayRectIgnoringOpacity:inContext:] + 529 AppKit`-[_NSMirrorDocumentView drawRect:] + 370 AppKit`-[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] + 1186 AppKit`__46-[NSView(NSLayerKitGlue) drawLayer:inContext:]_block_invoke + 218 AppKit`-[NSView(NSLayerKitGlue) _drawViewBackingLayer:inContext:drawingHandler:] + 2407 AppKit`-[NSView(NSLayerKitGlue) drawLayer:inContext:] +
Finding events
When users save a document, I want to save a reference to an event in the file. Then when they open the document on either the same machine or another one, I want them to have access to the same event. There appear to be three things that could be saved: - eventIdentifier - calendarItemIdentifier - calendarItemExternalIdentifier The documentation says that the eventIdentifier can change if an event is edited and a different calendar chosen, so it seems pretty easy to lose track on that one, even though the documentation does also seem to imply that this is a suitable way to find events. The documentation implies that the calendarItemIdentifier is more stable, but not 100% reliable, and would be different for the same event on a different machine with synced calendars. The calendarItemExternalIdentifier seems to mostly provide what you need to find an item if it is on a shared calendar. They do list some reasons that may fail too, and also say that the identifier is different between Mac and iOS. So would the following be a suitable approach to do my best to find an event: - When saving the event reference, save all three identifiers in the file - When loading: 1. try to find the event by event identifier 2. if that fails, try to find the event by calendar item identifier 3. if that fails, try to find the event by the calendar item external identifier 4. If the event if found by any of these means, save the latest data just in case one of the other identifiers has changed. If this is not the right approach, what do I need to do differently? When the documentation says that external identifiers are different between Mac and iOS, does that mean that there is no way of referencing the same event on a shared calendar that is accessed from both operating systems? It seems that reminders don’t have the extra level of a reminder identifier like the event identifier - I really don’t understand why you would need both for an event and only one for a reminder. So for reminders, I would assume that just steps 2 and 3 above would suffice. Any tips on this would be much appreciated. I have seen posts where others have asked similar questions, but have not found anything approaching a definitive answer. Regards Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: iOS 7 downloadable fonts
Cool, thanks for that. I thought there must be a step I was missing. I don’t have the 7.1 beta to test and see if there is a bug there - will try to find time do grab it... Regards Gideon On 21 Jan 2014, at 5:33 pm, Tualatrix Chou tualat...@gmail.com wrote: After downloading the font, if you want to use it offline (or do not call the download API again), you can try to save the font URL and next time of launching, use CTFontManagerRegisterFontsForURL to register the font. This file is what you want: https://github.com/fdstevex/FDSFontDownloader/blob/master/FDSFontDownloader.m I try to use this on my app, everything works file on simulator, but register failed on device on iOS 7.1 Beta. Not sure if it is an bug of iOS 7.1. The article worth to read: http://blog.stevex.net/2013/09/downloadable-fonts-in-ios-7/ ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
System fonts on iOS 7
I am trying to display font information on the user interface of my application, and have come across some hidden fonts that are obviously there in the system, but not listed in the UIFont familyNames. This can happen when the user has pasted rich text into my application and it is in a hidden system font. And I know at least some of where this comes from - for example, when I use UIFont systemFontOfSize:, the font name is .HelveticaNeueInterface-M3” and the family name is .Helvetica Neue Interface”. When I use [UIFont familyNames] there is nothing named .Helvetica Neue Interface”, although there is Helvetica Neue”. My conclusion is that this is somehow a hidden font. I have a list of all the fonts as returned by UIFont, and want to put a checkmark beside the font the user is using in the text. But of course, the hidden system fonts are not in the list, so what am I supposed to do to indicate as the selected font? We have the seemingly impossible situation where the text is drawn in a font face that is not in the list returned by [UIFont familyNames]. By looking at the UIFont preferredFontForTextStyle: return values, I can see that there are at least the following hidden fonts: .HelveticaNeueInterface-M3” .HelveticaNeueInterface-MediumP4” .HelveticaNeueInterface-Bold” I wondered about using the font descriptors to turn it into a font that actually exists as far as the user is concerned, but asking for the font’s font descriptor for .HelveticaNeueInterface-M3” and then asking for matching font descriptors only gave me a font name of .AppleSystemUIFont”, and of course if I pass that into fontWithName, it returns the .HelveticaNeueInterface-M3”, so that just took me in a circle back to where I started. I’m thinking that when someone pastes text into my application, I could perhaps have a check in my code that the font is in the list returned by UIFont, and if not, I could probably have a lookup for the known system hidden fonts and replace them with suitable visible alternatives, and for anything unknown, I could have a fallback to a known font. It all seems a bit messy, so any feedback would be welcome. Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: System fonts on iOS 7
Ah, interesting to know that, thanks Jens. Yes, I guess I could leave it unchecked. But also my files are used cross-platform, so I would prefer to store font information for standard fonts, so will probably do the translation to standard fonts during pasting anyway. Regards Gideon Fonts with names prefixed with a . or % are hidden from the higher-level APIs for listing fonts. It's been that way since the dawn of time (i.e. since the original Mac in 1984.) I'm not sure why iOS 7 has a separate hidden copy of Helvetica Neue that's used for the UI, though. If you want to look up these fonts, you'll probably need to drop down to the CoreText API. But in general, I think it's fine to just not check any font name in your UI in this situation. —Jens ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
iOS 7 downloadable fonts
Hi, I am trying to use CTFontDescriptorMatchFontDescriptorsWithProgressHandler to download a font. It appears to download fine, and I can display it in my application. [UIFont familyNames] includes that font. I restart my application, and [UIFont familyNames] does not include the downloaded font, and I can’t create the font using fontWithName:size:. I have tested this on both my iPad and the simulator, and it always forgets the downloaded font on restart of the application. On the simulator, if I go to Library/Assets/com_apple_MobileAsset_Font I can see the folder with the downloaded font in it, and there is a com_apple_MobileAsset_Font.plist file which includes all the information about the downloaded font. So it knows about the font, and the font is really there, but when I try to use it in my application it isn’t there until I download it again during that session. Is there something I am doing wrong? Do I need to initialize something to get it to include the downloaded fonts in the search? Regards Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: How do I debug weak_unregister_no_lock?
OK, I have a single pane inspector which chains to another single pane inspector using pushPane. For this one particular pane, sometimes when we pop back to the parent, it gave the error. I tried putting a dealloc in my class and nilling out everything, but still got the problem. I then added self.inspector = nil; self.parentSlice = nil; to my dealloc, and since then I have not been able to reproduce the problem at all. I have created a number of subclasses of OUISingleViewInspectorPane but it is only this particular one that triggers the problem. I don’t know if you want to create a dealloc method for OUIInspectorPane which nils those two references… It would obviously be better to know the cause and fix it, but in the absence of that, perhaps this will fix the issue for everyone. Regards Gideon On 15 Jan 2014, at 5:56 pm, Kyle Sluder k...@ksluder.com wrote: On Jan 14, 2014, at 9:05 PM, Quincey Morris quinceymor...@rivergatesoftware.com wrote: On Jan 14, 2014, at 18:34 , Gideon King gid...@novamind.com wrote: Although it is always happening at the same point in the code, I really have no idea where to look for debugging it. I have no answers, but a couple of observations. First, you seem to be crashing in the dealloc (or destructor, if it’s a C++ class) of class OUIInspectorPane. I’d suggest you focus on properties of that class whose value is a weak object reference. Gah. We tried _so hard_ to find this bug before shipping our iOS 7 apps. We still have no idea what causes it, but it always seems to happen in the ARC-generated autodestructor of an OUIInspectorPane. Can you describe the contents of your inspectors? For a while we had a hunch it involved some OmniOutliner-specific piece of UI. ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: How do I debug weak_unregister_no_lock?
I just had this problem come up again. It happens when I pop a view controller, so there are a whole bunch of things being tidied up behind the scenes. Although it is always happening at the same point in the code, I really have no idea where to look for debugging it. Any tips on debugging this would be very much appreciated. Thanks Gideon On 12 Jan 2014, at 11:54 am, Gideon King gid...@novamind.com wrote: I have seen this crash twice in running my code over 100 times, so it’s pretty hard to reproduce, but definitely there. It seems to be related to deallocating an OUIInspectorPane object, but when I look in the debugger, it is actually my subclass of that object. I have zombies turned on, but that didn’t seem to isolate the problem. Can anyone suggest a way of tracking this down? * thread #1: tid = 0x9b3267, 0x026c492b libobjc.A.dylib`weak_unregister_no_lock + 119, queue = 'com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=1, address=0x2936f6d0) frame #0: 0x026c492b libobjc.A.dylib`weak_unregister_no_lock + 119 frame #1: 0x026c50fa libobjc.A.dylib`objc_destroyWeak_slow(objc_object**) + 135 frame #2: 0x002db8f1 NovaMind`-[OUIInspectorPane .cxx_destruct](self=0x168effd0, _cmd=0x026ca62e) + 113 at OUIInspectorPane.m:21 frame #3: 0x026b32d4 libobjc.A.dylib`object_cxxDestructFromClass(objc_object*, objc_class*) + 128 frame #4: 0x026b324f libobjc.A.dylib`object_cxxDestruct + 20 frame #5: 0x026be22c libobjc.A.dylib`objc_destructInstance + 48 frame #6: 0x02dfdecc CoreFoundation`-[NSObject(NSObject) __dealloc_zombie] + 156 frame #7: 0x01327c56 UIKit`-[UIViewController dealloc] + 1818 frame #8: 0x00361747 NovaMind`-[OUIViewController dealloc](self=0x168effd0, _cmd=0x026ca678) + 167 at OUIViewController.m:69 frame #9: 0x01324975 UIKit`-[UIViewController release] + 89 frame #10: 0x026c4e97 libobjc.A.dylib`objc_release + 71 frame #11: 0x0120a5fc UIKit`__destroy_helper_block_121 + 124 frame #12: 0x04c557a5 libsystem_sim_blocks.dylib`_Block_release + 207 frame #13: 0x01277e3f UIKit`-[UIViewAnimationBlockDelegate dealloc] + 66 frame #14: 0x026c5692 libobjc.A.dylib`objc_object::sidetable_release(bool) + 268 frame #15: 0x026c6adf libobjc.A.dylib`-[NSObject release] + 25 frame #16: 0x02ce1cb0 CoreFoundation`CFRelease + 272 frame #17: 0x02de974e CoreFoundation`-[__NSDictionaryI dealloc] + 126 frame #18: 0x026c5692 libobjc.A.dylib`objc_object::sidetable_release(bool) + 268 frame #19: 0x026c4e81 libobjc.A.dylib`objc_release + 49 frame #20: 0x026c5ce7 libobjc.A.dylib`(anonymous namespace)::AutoreleasePoolPage::pop(void*) + 537 frame #21: 0x02d01968 CoreFoundation`_CFAutoreleasePoolPop + 24 frame #22: 0x02d066c3 CoreFoundation`__CFRunLoopRun + 1971 frame #23: 0x02d05ac3 CoreFoundation`CFRunLoopRunSpecific + 467 frame #24: 0x02d058db CoreFoundation`CFRunLoopRunInMode + 123 frame #25: 0x040529e2 GraphicsServices`GSEventRunModal + 192 frame #26: 0x04052809 GraphicsServices`GSEventRun + 104 frame #27: 0x01215d3b UIKit`UIApplicationMain + 1225 frame #28: 0x216d NovaMind`main(argc=1, argv=0xbfffec78) + 141 at main.m:16 Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: UIPopoverController and UIToolbar interactions
…or set your passthroughViews to nil *after* your presentPopover call and have it just dismiss the popover as normal when you tap something on the toolbar. Regards Gideon On 14 Jan 2014, at 8:28 am, Sixten Otto hims...@sfko.com wrote: I tend to agree that it's problematic, but it is deliberate. From the documentation: … ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
How do I debug weak_unregister_no_lock?
I have seen this crash twice in running my code over 100 times, so it’s pretty hard to reproduce, but definitely there. It seems to be related to deallocating an OUIInspectorPane object, but when I look in the debugger, it is actually my subclass of that object. I have zombies turned on, but that didn’t seem to isolate the problem. Can anyone suggest a way of tracking this down? * thread #1: tid = 0x9b3267, 0x026c492b libobjc.A.dylib`weak_unregister_no_lock + 119, queue = 'com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=1, address=0x2936f6d0) frame #0: 0x026c492b libobjc.A.dylib`weak_unregister_no_lock + 119 frame #1: 0x026c50fa libobjc.A.dylib`objc_destroyWeak_slow(objc_object**) + 135 frame #2: 0x002db8f1 NovaMind`-[OUIInspectorPane .cxx_destruct](self=0x168effd0, _cmd=0x026ca62e) + 113 at OUIInspectorPane.m:21 frame #3: 0x026b32d4 libobjc.A.dylib`object_cxxDestructFromClass(objc_object*, objc_class*) + 128 frame #4: 0x026b324f libobjc.A.dylib`object_cxxDestruct + 20 frame #5: 0x026be22c libobjc.A.dylib`objc_destructInstance + 48 frame #6: 0x02dfdecc CoreFoundation`-[NSObject(NSObject) __dealloc_zombie] + 156 frame #7: 0x01327c56 UIKit`-[UIViewController dealloc] + 1818 frame #8: 0x00361747 NovaMind`-[OUIViewController dealloc](self=0x168effd0, _cmd=0x026ca678) + 167 at OUIViewController.m:69 frame #9: 0x01324975 UIKit`-[UIViewController release] + 89 frame #10: 0x026c4e97 libobjc.A.dylib`objc_release + 71 frame #11: 0x0120a5fc UIKit`__destroy_helper_block_121 + 124 frame #12: 0x04c557a5 libsystem_sim_blocks.dylib`_Block_release + 207 frame #13: 0x01277e3f UIKit`-[UIViewAnimationBlockDelegate dealloc] + 66 frame #14: 0x026c5692 libobjc.A.dylib`objc_object::sidetable_release(bool) + 268 frame #15: 0x026c6adf libobjc.A.dylib`-[NSObject release] + 25 frame #16: 0x02ce1cb0 CoreFoundation`CFRelease + 272 frame #17: 0x02de974e CoreFoundation`-[__NSDictionaryI dealloc] + 126 frame #18: 0x026c5692 libobjc.A.dylib`objc_object::sidetable_release(bool) + 268 frame #19: 0x026c4e81 libobjc.A.dylib`objc_release + 49 frame #20: 0x026c5ce7 libobjc.A.dylib`(anonymous namespace)::AutoreleasePoolPage::pop(void*) + 537 frame #21: 0x02d01968 CoreFoundation`_CFAutoreleasePoolPop + 24 frame #22: 0x02d066c3 CoreFoundation`__CFRunLoopRun + 1971 frame #23: 0x02d05ac3 CoreFoundation`CFRunLoopRunSpecific + 467 frame #24: 0x02d058db CoreFoundation`CFRunLoopRunInMode + 123 frame #25: 0x040529e2 GraphicsServices`GSEventRunModal + 192 frame #26: 0x04052809 GraphicsServices`GSEventRun + 104 frame #27: 0x01215d3b UIKit`UIApplicationMain + 1225 frame #28: 0x216d NovaMind`main(argc=1, argv=0xbfffec78) + 141 at main.m:16 Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
dataWithPDFInsideRect: subview positions when using layer backed views
Here’s the scenario: All views are flipped. OSX 10.9. I have a view with frame and bounds 0,0,2000,2000. The first subview has a frame 0,0,2000,2000 and bounds -1000,-1000,2000,2000. I set it to draw a solid color. On screen it covers the first view. It has a number of small 100,50 subviews at different locations. All this draws fine on screen, whether I am using layer backing or not. If I do not use layer backing, it also renders properly using dataWithPDFInsideRect:. As soon as I start using layer backing, dataWithPDFInsideRect: gives the following result: - the first level subview draws as if its origin was the same as its superview - i.e. it only covers the top left quadrant of the superview, - all the second level subviews draw on top of each other at origin 0,0. Is this a known issue? Is there a workaround (apart from not using layers)? Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Helping Arc with: PerformSelector may cause a leak because its selector is unknown
You can tell it to ignore the warning like this: #pragma clang diagnostic push #pragma clang diagnostic ignored -Warc-performSelector-leaks NSNumber *status = [ self performSelector: aSelector withObject: a withObject: b ]; #pragma clang diagnostic pop Hope that helps. Gideon On 22/10/2013, at 4:37 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: Xcode 5.0 complains: PerformSelector may cause a leak because its selector is unknown Is there a way to tell the compiler that aSelector returns an object which does NOT need to get released by the caller ? I saw something like __autoreleasing, but don't know how to apply this in my case. Gerriet. ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Converting views to use layer backing
I knew I was going to want to do something like that myself so created a small test project. You need to have the scrollview, the clipview, and the document view all layer backed for it to work with the scrollview magnification. You shouldn't need to explicitly set the autoresizesSubviews on. It should all scale just like a non layer-backed view, scaling the subviews with it. All that works fine if you don't change the bounds origin. The subviews are positioned relative to the bounds origin, so changing the bounds origin positions the subviews in the place you want…but it does break the drawing of the view itself. I haven't found a way to draw a layer backed view which has its bounds origin shifted yet. I thought using a CGContextTranslateCTM in the drawing code would work, but got nowhere with that. If I set the bounds origin to be 10,10 then my view tiles would get drawn with a 10px gap between them, and the drawing would start at 10,10. If I set the bounds origin to -10,-10, then the view tiles would be drawn with a 10px gap between them and the drawing would start at -10,-10 which means that there is a 20px gap along the top and left of the view. Clearly layer backed views don't like to have their bounds origins shifted. I guess the problems stem from the way the drawing code draws the content into the layer, but am not certain how to fix it. Can anyone else help with how to draw a layer backed view where the bounds origin has been shifted? Regards Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
EventKit calendarItemIdentifier and calendarItemExternalIdentifier
I am converting some code from CalendarStore to EventKit, and see that there are now two identifiers. It looks as if it I want to enable access to events across multiple devices, I should always store the calendarItemExternalIdentifier - correct? It is not clear from the documentation whether this is always going to be set, even if the calendar is not shared. Also my users will already have event IDs recorded from the old uid property. Is this guaranteed to be the same as the calendarItemIdentifier in EventKit? The documentation says that there could be more than one item matching the external identifier. So should my code treat them all as if they are the event/reminder I want to update, and update all occurrences? What about inconsistencies? Or should I store both the identifier and external identifier, and use the one with the identifier as the master? (assuming I can find it) The documentation also says that the external identifier will be different if you are accessing the same thing on iOS vs OSX, which would seem to suggest that some sort of combination of identifiers would be sensible. Any direction on this would be much appreciated. Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
realizeClass crash
Hi, my application is crashing consistently for one user. The application is in use successfully by thousands of people, and this user has it installed on 3 machines but it only crashes on one of them. Any ideas what would cause this kind of crash? Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_BAD_INSTRUCTION (SIGILL) Exception Codes: 0x0001, 0x Application Specific Information: objc[423]: layout bitmap too short Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libobjc.A.dylib 0x7fff93813d4d _objc_trap() + 0 1 libobjc.A.dylib 0x7fff93813e8e _objc_fatal + 195 2 libobjc.A.dylib 0x7fff93814cfd set_bits(layout_bitmap, unsigned long, unsigned long) + 83 3 libobjc.A.dylib 0x7fff9380859d layout_bitmap_create + 277 4 libobjc.A.dylib 0x7fff93816a67 realizeClass(class_t*) + 1460 5 libobjc.A.dylib 0x7fff9381754d realizeAllClasses() + 81 6 libobjc.A.dylib 0x7fff93818ca6 objc_getClassList + 67 7 com.omnigroup.framework.OmniBase0x0001007954b7 +[OBPostLoader processSelector:initialize:] + 215 8 com.omnigroup.framework.OmniBase0x000100795394 +[OBPostLoader processClasses] + 36 9 com.omnigroup.framework.OmniBase0x00010079522c +[OBObject initialize] + 76 10 libobjc.A.dylib 0x7fff9380b236 _class_initialize + 310 11 libobjc.A.dylib 0x7fff9380b138 _class_initialize + 56 12 libobjc.A.dylib 0x7fff9380b138 _class_initialize + 56 13 libobjc.A.dylib 0x7fff9380b0f3 prepareForMethodLookup + 164 14 libobjc.A.dylib 0x7fff9380aeef lookUpMethod + 71 15 libobjc.A.dylib 0x7fff938092fc objc_msgSend + 188 16 com.novamind.NovaMind5 0x00010025cd6a +[OAPreferenceController(NM) load] + 95 17 libobjc.A.dylib 0x7fff93808d90 call_load_methods + 389 18 libobjc.A.dylib 0x7fff9380898f load_images + 130 19 dyld0x7fff66e58e02 dyld::notifySingle(dyld_image_states, ImageLoader const*) + 230 20 dyld0x7fff66e67057 ImageLoader::recursiveInitialization(ImageLoader::LinkContext const, unsigned int, ImageLoader::InitializerTimingList) + 357 21 dyld0x7fff66e66eba ImageLoader::runInitializers(ImageLoader::LinkContext const, ImageLoader::InitializerTimingList) + 54 22 dyld0x7fff66e58fc0 dyld::initializeMainExecutable() + 207 23 dyld0x7fff66e5cb04 dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 3060 24 dyld0x7fff66e58397 dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) + 761 25 dyld0x7fff66e5805e _dyld_start + 54 Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
App store reject on asl log. How else do I get at the log messages?
Hi, My app was rejected from the store because I wanted the entitlement: com.apple.security.temporary-exception.files.absolute-path.read-only - /private/var/log/asl/ I need this so I can use the asl_new, asl_set_query, asl_search, aslresponse_next, asl_get, and aslresponse_free to be able to get the log messages for my application when people submit a bug report. The app store rejection told me that I need to investigate other ways of implementing the desired functionality. Are there other ways of getting at the console log entries for my app so I can get them sent to me with bug reports? Regards Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Sandboxing and ABAddressBook
I did, but even after I renamed that folder, I still got the error messages. I tried it on another machine and didn't get any sandbox errors, so maybe it's just something on my machine. Regards Gideon On 22/05/2013, at 3:34 AM, Sean McBride s...@rogue-research.com wrote: I notice the 'indexPlugins' method in your backtrace. Do you have anything in Library/Address Book Plug-Ins ? Sean On Mon, 20 May 2013 18:45:39 +1000, Gideon King said: I have address book data access enabled, but when I do a [ABAddressBook sharedAddressBook] in applicationDidFinishLaunching, it generates a series of sandbox deny file-read-data messages. ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Sandboxing and ABAddressBook
I checked /Library, /System/Library and ~/Library. I presume by network you would be referring to some server config, since I don't have a /Network folder but I recall seeing one on another machine I worked on in another place. G. On 22/05/2013, at 6:43 AM, Sean McBride s...@rogue-research.com wrote: Did you check all the 'Library's? In home, root, System, network... ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Sandboxing and ABAddressBook
Hi, I have address book data access enabled, but when I do a [ABAddressBook sharedAddressBook] in applicationDidFinishLaunching, it generates a series of sandbox deny file-read-data messages. Interestingly, if I then ask it for me it returns correct data, so whatever the messages are, it doesn't seem to be stopping it loading at least some of the addresses. I'd like to get rid of the error if possible - any ideas where to look? 0 libsystem_kernel.dylib 0x7fff93ea5fee __open + 10 1 CarbonCore 0x7fff90489f74 PBOpenIteratorSync + 378 2 CarbonCore 0x7fff90489de2 FSOpenIterator + 28 3 Foundation 0x7fff989cbab3 _NSDirectoryContentsFromCarbonError + 130 4 Foundation 0x7fff989c9962 -[NSFileManager directoryContentsAtPath:matchingExtension:options:keepExtension:error:] + 315 5 Foundation 0x7fff989c9814 -[NSFileManager contentsOfDirectoryAtPath:error:] + 36 6 AddressBook 0x7fff96be6716 -[ABDataSourcePluginIndex sourceBundlePaths] + 940 7 AddressBook 0x7fff96be6118 -[ABDataSourcePluginIndex indexPlugins] + 94 8 AddressBook 0x7fff96be6050 -[ABDataSourcePluginIndex bundleForClassName:] + 37 9 AddressBook 0x7fff96be5fce -[ABDataSourcePluginIndex loadBundleForClassName:error:] + 31 10 AddressBook 0x7fff96be5e47 +[ABAccountFactory sourceClassForClassName:] + 64 11 AddressBook 0x7fff96be5cda -[ABAccountFactory localAccount] + 39 12 AddressBook 0x7fff96be5c30 -[ABAccountFactory uncachedAccounts] + 53 13 AddressBook 0x7fff96be5a37 -[ABAccountRepository runWithLockLoadingExistingAccountsIfNecessary:] + 259 14 AddressBook 0x7fff96be588a -[ABAccountRepository allAccounts] + 208 15 AddressBook 0x7fff96be577a -[ABAccountRepository persistentAccounts] + 17 16 AddressBook 0x7fff96be5139 -[ABPersistentStoreCoordinatorFactory pool_makeCoordinatorForAllAvailableSources] + 102 17 AddressBook 0x7fff96be506c ABResultWithAutoreleasePool + 62 18 AddressBook 0x7fff96be501c -[ABPersistentStoreCoordinatorFactory makeCoordinatorForAllAvailableSources] + 73 19 AddressBook 0x7fff96be4de6 -[ABPersistentStoreCoordinatorCache nts_coordinatorForAllSources] + 102 20 AddressBook 0x7fff96be4d5a -[ABPersistentStoreCoordinatorCache coordinatorForAllSources] + 34 21 AddressBook 0x7fff96be4b25 -[ABAddressBook(ABAddressBook_CoreData_Private) nts_managedObjectContextWithStoreDescription:databasePath:loadFailure:] + 163 22 AddressBook 0x7fff96be43e9 -[ABAddressBook(ABAddressBook_CoreData_Private) managedObjectContext] + 112 23 AddressBook 0x7fff96bdffe3 +[ABAddressBook nts_SharedAddressBook] + 186 24 AddressBook 0x7fff96bdfe8a +[ABAddressBook nts_CreateSharedAddressBook] + 49 25 AddressBook 0x7fff96bdf1d7 +[ABAddressBook sharedAddressBook] + 69 26 NovaMind5 0x00010010e641 +[NMInformationCollector userName] + 49 (NMInformationCollector.m:36) 27 NovaMind5 0x00010010ec29 +[NMInformationCollector systemAndUserInformation] + 937 (NMInformationCollector.m:84) 28 NovaMind5 0x00010004975a -[NMApplication applicationDidFinishLaunching:] + 15802 (NMApplication.m:1476) 29 CoreFoundation 0x7fff935d8eda _CFXNotificationPost + 2554 30 Foundation 0x7fff9897fe26 -[NSNotificationCenter postNotificationName:object:userInfo:] + 64 31 AppKit 0x7fff97a1f55d -[NSApplication _postDidFinishNotification] + 292 32 AppKit 0x7fff97a0fc0a -[NSApplication finishLaunching] + 2177 33 OmniAppKit 0x0001008b201e -[OAApplication finishLaunching] + 206 (OAApplication.m:109) 34 AppKit 0x7fff97a0f04a -[NSApplication run] + 124 35 OmniAppKit 0x0001008b20cf -[OAApplication run] + 127 (OAApplication.m:118) 36 AppKit 0x7fff979b3c06 NSApplicationMain + 869 37 NovaMind5 0x00011c22 main + 34 (main.m:11) 38 NovaMind5 0x00011bf4 start + 52 TIA Gideon ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or
Widow / Orphan protection in text layout
Hi, I have inherited some code which has a subclass of NSATSTypesetter in it, and in the -willSetLineFragmentRect:forGlyphRange:usedRect:baselineOffset: method it works out whether it needs to put a page break in, and directly sets the currentTextContainer, currentTextContainerIndex, and currentTextContainerSize instance variables. This is completely undocumented and presumably a very bad way to handle the pagination, so I want to fix it. The problem is that I am not clear whether the typesetter is the place to do the pagination or whether it should be in the layout manager, and if so exactly how to handle the processing. Any advice on how best to handle the pagination would be most welcome. Here's what got handed to me (in a subclass of NSATSTypesetter): - (void)willSetLineFragmentRect:(NSRect *)lineRect forGlyphRange:(NSRange)glyphRange usedRect:(NSRect *)usedRect baselineOffset:(CGFloat *)baselineOffset { NSRange characterRange = [self characterRangeForGlyphRange:glyphRange actualGlyphRange:NULL]; NSString *string = self layoutManager] textStorage] string] substringWithRange:characterRange]; NSSize size = [[self currentTextContainer] containerSize]; // This is more like the forecast maximum y which is the line height plus the origin y. CGFloat forecastedHeight = ((*lineRect).size.height*2.0) + (*lineRect).origin.y; // If the last character of the line fragment is not a paragraph marker, and the text is on the last line, then put the text on the next page. This is so the // text is not split so that the character name is on one page and the dialog is on another etc if ([string characterAtIndex:characterRange.length-1] != NSParagraphSeparatorCharacter) { if (forecastedHeight size.height) { NSFont *font = [[[self layoutManager] textStorage] attribute:NSFontAttributeName atIndex:[self paragraphCharacterRange].location effectiveRange:NULL]; NSDictionary *attrs = [[[self layoutManager] textStorage] attributesAtIndex:[self paragraphCharacterRange].location effectiveRange:NULL]; NSString *temp = self layoutManager] textStorage] string] substringWithRange:[self paragraphCharacterRange]]; NSSize stringSize = [temp sizeWithAttributes:attrs]; lineRect-origin.y = 0.0; lineRect-size.height = stringSize.height; usedRect-origin.y = 0.0; usedRect-size.height = stringSize.height; *baselineOffset = [[self layoutManager] defaultBaselineOffsetForFont:font]; if (currentTextContainer == [[self textContainers] lastObject]) { currentTextContainerIndex = NSNotFound; currentTextContainer = nil; currentTextContainerSize = NSZeroSize; } else { unsigned indexOfOldTC = [[self textContainers] indexOfObjectIdenticalTo:currentTextContainer]; currentTextContainerIndex = indexOfOldTC+1; currentTextContainer = [[self textContainers] objectAtIndex:currentTextContainerIndex]; currentTextContainerSize = [currentTextContainer containerSize]; } } } // If the line is a character name, then we will always put it down a line below whatever section was above it. NSString *section = [self.screenwriterLayoutManager.screenwriterView sectionFromRange:[self paragraphCharacterRange]]; if (section == SWCharacterSectionIdentifier) { if (forecastedHeight size.height) { if (lineRect-origin.y 0.001) { NSFont *font = [[[self layoutManager] textStorage] attribute:NSFontAttributeName atIndex:[self paragraphCharacterRange].location effectiveRange:NULL]; NSDictionary *attrs = [[[self layoutManager] textStorage] attributesAtIndex:[self paragraphCharacterRange].location effectiveRange:NULL]; NSString *temp = self layoutManager] textStorage] string] substringWithRange:[self paragraphCharacterRange]]; NSSize stringSize = [temp sizeWithAttributes:attrs]; lineRect-origin.y = 0.0; lineRect-size.height = stringSize.height; usedRect-origin.y = 0.0; usedRect-size.height = stringSize.height; *baselineOffset = [[self layoutManager] defaultBaselineOffsetForFont:font]; if (currentTextContainer == [[self textContainers] lastObject]) { currentTextContainerIndex = NSNotFound; currentTextContainer = nil; currentTextContainerSize = NSZeroSize; } else { unsigned indexOfOldTC = [[self textContainers] indexOfObjectIdenticalTo:currentTextContainer];
Re: Widow / Orphan protection in text layout
Thanks Kyle, This is actually a bit more than inconvenience - it causes my app to be rejected from the app store. It's all very well overriding -currentTextContainer and returning my ivar, but I have no way of knowing if it is used in different parts of the typesetter, so could be inadvertently breaking something else, and the lack of access to methods of setting the currentTextContainerIndex or currentTextContainerSize also appears to be a show stopper. I have not been able to find any other relevant suggestions about controlling pagination in the list archives, apart from a thread where Aki Inoue recommended doing exactly what is being done in this code. As far as I can tell, there is no other API that will allow us to know the necessary information during typesetting and cause it to move on to the next container. Given the lack of any other way of doing this, if there are no other suggestions, I will go back to the app store approval people and ask for an exception for this, but I don't know what my chances are. My previous experiences with them have been … less than encouraging. Regards Gideon On 21/05/2013, at 2:02 AM, Kyle Sluder k...@ksluder.com wrote: The typesetter should be performing pagination, somewhere within or below -layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments: nextGlyphIndex: in the call stack. One hint that this is true is in the documentation for -[NSLayoutManager setTextContainer:forGlyphRange:], which notes that it should only be called by the typesetter during layout. As for actually keeping track of which text container you're laying into, you're right that accessing those ivars directly is bad form. If you'd like to avoid direct ivar access, add your own ivars that mimic the existing ones and override -currentTextContainer to use them. Then file a radar asking for -[NSTypesetter setCurrentTextContainerIndex:] for use by subclasses. (I haven't spent the time thinking about whether -willSetLineFragmentarect:… is the appropriate place to do pagination.) --Kyle Sluder ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Overlapping sibling views
Hi, I had to design my whole view system to work around the problems with overlapping sibling views not being guaranteed to be drawn in a specific order, but today I came across some posts that suggested that this was no longer the case. In the current 10.8 documentation it still says: Note: For performance reasons, Cocoa does not enforce clipping among sibling views or guarantee correct invalidation and drawing behavior when sibling views overlap. If you want a view to be drawn in front of another view, you should make the front view a subview (or descendant) of the rear view. But in this thread from 2009, two Apple engineers (Corbin Dunn and David Duncan) said that the documentation is out of date, and that it should work as of 10.5: http://www.cocoabuilder.com/archive/cocoa/228191-nsview-behaves-different-on-10-4-vs-10-5.html There are conflicting views expressed in http://stackoverflow.com/questions/466297/is-there-a-proper-way-to-handle-overlapping-nsview-siblings My scenario is a whole lot of sibling, potentially translucent, overlapping, layer backed views. I'm fairly sure I tested this and found it to fail in mid 2010, so this would make it 10.6. It also appears that the CocoaSlides example app uses sibling views for the slides, and that appears to show the slides in the same order every time. So, is the problem actually fixed? And if so, what version of the operating system introduced the fix? Regards Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Overlapping sibling views
So it sounds as if as long as I have all my views in the entire hierarchy layer backed, my sibling views should always draw in order. This makes me happy :) … and the documentation wrong :( - I'll report that. Regards Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Overlapping sibling views
How did you test it? Did you sort the views at all, or just leave them in the order they were instantiated? Did you try Sean's workaround? Regards Gideon On 01/05/2013, at 4:39 AM, Quincey Morris quinceymor...@rivergatesoftware.com wrote: Nope. I just tried it again, setting the layer-backed checkboxes all the way up in IB, and it still fails sometimes (about 1 time out of every 20 or 30, today). ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Automatic document duplication
I have an application where documents are created which can have other files attached to them. A user can open the file in its native application. I copy the original file to a temporary folder (using NSTemporaryDirectory() and adding the file name to it) and ask NSWorkspace to open it. If the user edits the file, I pick that up when they go back to my application and ask them if they want to update the version in their document to be the edited version. All this works fine, and has right through 10.7, and 10.8 *except* for files which are opened in Preview. As soon as you start editing them you get a message The original document can't be changed, so a duplicate with your changes has been created. If I open the exact same file in another program and edit it and save it, everything works as expected. Does anyone know why you would get that error message, and how to avoid it? I don't understand why Preview would refuse to edit that file in place - is it because it is in a temporary folder? Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Debugging a spotlight importer problem
I have a spotlight importer that works just fine when I run mdimport from the command line, but it fails with a sig11 when it runs automatically. I've tested it on two machines under 10.7 and 10.8, with the same results. Can anyone give any tips on how to debug this situation? Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Closing connections nicely when DO server crashes
Hi, I am trying to implement LinkBack in my application, and it creates a Distributed Objects connection to send the info to and fro. It all works fine, but if the server application crashes, I get a crash in my application with this backtrace: * thread #1: tid = 0x2203, 0x7fff8aed5b3e CoreFoundation`___forwarding___ + 158, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) frame #0: 0x7fff8aed5b3e CoreFoundation`___forwarding___ + 158 frame #1: 0x7fff8aed5a28 CoreFoundation`_CF_forwarding_prep_0 + 232 frame #2: 0x7fff8809b8e1 Foundation`-[NSDistantObjectTableEntry dealloc] + 41 frame #3: 0x7fff8ae5cf9a CoreFoundation`CFRelease + 170 frame #4: 0x7fff8ae84770 CoreFoundation`-[__NSArrayM removeObjectAtIndex:] + 400 frame #5: 0x7fff8aedb12f CoreFoundation`-[NSMutableArray removeObjectsInRange:] + 111 frame #6: 0x7fff8aedb09f CoreFoundation`-[NSMutableArray removeObjectsAtIndexes:] + 527 frame #7: 0x7fff880158f0 Foundation`invalidateConnection + 675 frame #8: 0x7fff88015532 Foundation`-[NSConnection invalidate] + 945 frame #9: 0x7fff880adedd Foundation`+[NSConnection _portInvalidated:] + 831 frame #10: 0x7fff8ae99b8a CoreFoundation`_CFXNotificationPost + 2554 frame #11: 0x7fff8802fa76 Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 64 frame #12: 0x7fff88051237 Foundation`_NSPortDeathNotify + 80 frame #13: 0x7fff8af4139a CoreFoundation`CFMachPortChecker_block_invoke_0 + 202 frame #14: 0x7fff912acf3d libdispatch.dylib`_dispatch_call_block_and_release + 15 frame #15: 0x7fff912a90fa libdispatch.dylib`_dispatch_client_callout + 8 frame #16: 0x7fff912ae104 libdispatch.dylib`_dispatch_main_queue_callback_4CF + 275 frame #17: 0x7fff8ae8981e CoreFoundation`__CFRunLoopRun + 1614 frame #18: 0x7fff8ae88dd2 CoreFoundation`CFRunLoopRunSpecific + 290 frame #19: 0x7fff9296f774 HIToolbox`RunCurrentEventLoopInMode + 209 frame #20: 0x7fff9296f512 HIToolbox`ReceiveNextEventCommon + 356 frame #21: 0x7fff9296f3a3 HIToolbox`BlockUntilNextEventMatchingListInMode + 62 frame #22: 0x7fff869e91d3 AppKit`_DPSNextEvent + 685 frame #23: 0x7fff869e8a92 AppKit`-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128 frame #24: 0x7fff869dfe33 AppKit`-[NSApplication run] + 517 frame #25: 0x0001007acbff OmniAppKit`-[OAApplication run] + 127 frame #26: 0x7fff86984886 AppKit`NSApplicationMain + 869 frame #27: 0x000119d2 NovaMind5`main + 34 at main.m:11 frame #28: 0x000119a4 NovaMind5`start + 52 Which in turn causes my application to crash. I have been doing similar tests in the other direction with OmniGraffle, and when I force quit my application, OmniGraffle will crash in the same way, so I'm pretty sure it's not something I'm doing in my code. If the client application crashes, everything is cleaned up nicely, but if the server application crashes, this crash results. Is there some way I can make my application robust to a situation like this? I'm not really sure where to start with this... Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
spotlight importer extract file from zip archive
Hi, I am trying to create a spotlight importer, but my files that I want to index are zip files, and NSTask will not run from the mdimporter process, since it is not blocked by the sandbox. How can I get files from my zipped documents without having to run an NSTask? Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: spotlight importer extract file from zip archive
Cool, got it working thanks. Gideon On 26/07/2012, at 12:46 PM, Jens Alfke j...@mooseyard.com wrote: On Jul 25, 2012, at 6:57 PM, Gideon King gid...@novamind.com wrote: How can I get files from my zipped documents without having to run an NSTask? Link against libz.dylib? —Jens ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Trying to track down a core animation issue
Hi, I have a problem where it appears that a core animation task is being run on something created in a background thread, but the thread is being removed before the animation has finished. I have checked through my code and don't see anything that could be doing this explicitly, so am guessing that something is happening implicitly. As recommended by the error report, I have turned on the logging, and get the following: CoreAnimation: warning, deleted thread with uncommitted CATransaction; created by: 0 QuartzCore 0x7fff8d491b95 _ZN2CA11Transaction4pushEv + 219 1 QuartzCore 0x7fff8d49176d _ZN2CA11Transaction15ensure_implicitEv + 273 2 QuartzCore 0x7fff8d498b6a _ZN2CA5Layer12begin_changeEPNS_11TransactionEjRP11objc_object + 44 3 QuartzCore 0x7fff8d498ac8 _ZN2CA5Layer12set_delegateEP11objc_object + 86 4 AppKit 0x7fff85d2df3a -[NSView _finalizeWithReferenceCounting] + 324 5 AppKit 0x7fff85d2ddce -[NSView dealloc] + 42 6 libobjc.A.dylib 0x7fff8c2792b0 _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 464 7 libdispatch.dylib 0x7fff905fa2a8 _dispatch_worker_thread2 + 410 8 libsystem_c.dylib 0x7fff8c15cceb _pthread_wqthread + 404 9 libsystem_c.dylib 0x7fff8c1471b1 start_wqthread + 13 So some view somewhere is being deallocated while it still has an animation running. But there are many views created for different things in my code, and putting a breakpoint on NSView's dealloc would be very time consuming, and putting a breakpoint on _ZN2CA11Transaction4pushEv didn't help since it is called whenever the window is activated, so I can't get to my application. I guess I could log it and continue, but that's not going to give me anything where I can identify the view. I'm looking for suggestions on how to track down which view it is that is causing the problem. Thanks. (I'm sure I must be missing something blindingly obvious on how to track this down, but right now I'm drawing a blank). Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
NSWindow styleMask and full screen
I have an application where sometimes I need to go full screen. While in full screen mode, I need to change the presentation mode so that sometimes the menubar and toolbar are autohiding, and sometimes just not shown. Then when I exit full screen, I reset the values to what they were before I started. This works fine, except that when I return from full screen, the minimize button is disabled on the window. So I thought I would record the styleMask of the window before going full screen, and then restore it afterwards. When I ask for the window's styleMask, I get a value of 4111 which according to the documentation would be an impossible value. If I just use that value for setStyleMask: later in my program, my minimize button is still disabled. I'm suspecting that Apple must be using the value for other things too, so I thought I would use: oldStyleMask = [window styleMask]; oldStyleMask = oldStyleMask (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask|NSTexturedBackgroundWindowMask); … do stuff … [window setStyleMask:oldStyleMask]; Now when I use the statement, I get a value of 15, which matches how the window looks, but setting the style mask back to that value still doesn't enable the minimize button. I looked around and found a suggestion on stack overflow http://stackoverflow.com/questions/7888308/nswindow-loses-miniaturize-button-on-lion, but the idea there would only be applicable if I was keeping the same application presentation options for the whole time I'm in full screen, which is not the case. I have the same problem on 10.6, and the proposed workaround linked off stack overflow doesn't work - presumably because I change the application presentation options. I even thought I would try to be smart and override styleMask with the following: - (NSUInteger)styleMask { return [super styleMask]|NSMiniaturizableWindowMask; } But even that wouldn't enable the miniaturize button! Does anyone know of a workaround for this? TIA Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: NSWindow styleMask and full screen
It turns out that on 10.6+ at least, just setting the button cell to enabled does the trick: NSButton *button = [window standardWindowButton:NSWindowMiniaturizeButton]; NSButtonCell *buttonCell = [button cell]; [buttonCell setEnabled:YES]; Still, it's definitely an Apple bug, and I'll file a bug report. Regards Gideon On 20/07/2012, at 12:16 PM, Lee Ann Rucker lruc...@vmware.com wrote: It's an Apple bug - I meant to file it but apparently didn't; I should do that. It's nothing to do with the styleMask; sometimes the window sets the buttonCell's temporarilyDisabled flag and doesn't restore it. From a comment in my code: * temporarilyDisabled should only be YES when the menubar is hidden, but sometimes * the window code gets confused and doesn't reset it for windows that * were changing state at the same time as the menu. ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Icon Overlay on Mac OSX
You might like to check out CTBadge - there are a couple of minor memory issues in the current release which will be picked up in Xcode's analyze function, but apart from that, it will probably point you in the right direction. http://blog.oofn.net/2006/01/08/badging-for-everyone/ Regards Gideon On 09/07/2012, at 3:34 PM, Alfian Busyro alfian.bus...@kddi-web.com wrote: Hi, I'm a newbie in Cocoa framework, XCode and also Obj-C. I'm still struggling to create an icon overlay in finder like the one in that dropbox did. ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: NSSplitView question - how to implement my own adjustViews style method
I always use RBSplitView - has all that stuff built in and more… http://brockerhoff.net/blog/tag/rbsplitview/ Seems to work fine for my needs. Regards Gideon On 03/07/2012, at 2:40 PM, Motti Shneor su...@bezeqint.net wrote: Thanks Graham (Sigh…) I was beginning to think I'm stupid or something, struggling so hard with a UI element as ordinary as a Split-View. On 3 ביול 2012, at 03:14, Graham Cox wrote: On 03/07/2012, at 12:21 AM, Motti Shneor wrote: I really need an advice here. This will sound flippant but it's not meant to be: implement your own split view. ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Problem adding subview to NSScroller subclass
Excellent, thanks Lee Ann. From the look of the code, the accessory view will be shown all the time. I guess I have a UI decision to make as to whether to have just my zoom controls showing all the time and overlay scrollers (which may look a bit funny, but gives you maximum room), or using legacy scrollers, or moving the zoom controls somewhere else, or maybe making the view translucent until you mouse over it or something... I see that Keynote has an entire bottom bar dedicated to just a single zoom control which seems rather wasteful. Regards Gideon On 08/07/2012, at 3:04 PM, Lee Ann Rucker lruc...@vmware.com wrote: You've totally hit what I hit when Lion first came out, and it was my big WWDC question that year - took two Apple engineers digging in the code to figure it out; turned out to be a bug lurking since the NeXT days that only gets triggered when you add subviews to the scrollview and use overlay scrollers. This is what we wrote at WWDC - it works on 10.6 up: ... ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Problem adding subview to NSScroller subclass
Hi all, I am creating a subclass of NSScroller so that I can add an accessory view. I have worked out the position to add it, and added it as a subview, but it is never drawn. I have overridden the rectForPart: method to adjust the scroller size, and that leaves the gap as it should. I overrode the drawSelf: method and got it to draw the frame of the accessory view, to make sure it was positioned correctly, and it drew in the right place. Any ideas what I might be missing? Has anybody successfully added a subview to an NSScroller? Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Problem adding subview to NSScroller subclass
Yes, you are correct - I was just drawing the frame of the accessory view as a sanity check, and it worked as expected. It turns out that the problem is with the 10.7+ overlay scroller drawing. If I return NO from +isCompatibleWithOverlayScrollers then it all works as expected. If I return YES, then my subview is not drawn. The subview is present as a subview of the scroll view and in the right place, but not shown. Any ideas? Regards Gideon On 08/07/2012, at 7:08 AM, Andy Lee ag...@mac.com wrote: I took that to mean he was drawing the frame of the accessory view with something like NSFrameRect(), not sending a draw message to the accessory view. Come to think of it, this answers one of my questions. Assuming the test code is something like... // Sanity-check the frame of the accessory view. [[NSColor redColor] set]; NSFrameRect([accessoryView frame]); ...it would appear the accessory view has the right frame. My only remaining question then is to confirm that the accessory view really is a subview of the NSScroller, which is easily checked with a breakpoint in the above code. When is the superview-subview relationship established? Is *that* code getting called? --Andy On Jul 7, 2012, at 4:23 PM, Kyle Sluder wrote: On Jul 7, 2012, at 1:38 AM, Gideon King gid...@novamind.com wrote: I overrode the drawSelf: method and got it to draw the frame of the accessory view, to make sure it was positioned correctly, and it drew in the right place. Wait, you told another view to draw from within a separate view's -drawRect:? That's not going to work; the coordinate systems aren't set up right. --Kyle Sluder ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Problem adding subview to NSScroller subclass
Yes, I was using that type of code before too, but it didn't work with the new scrollbar styles (drawing artifacts on resize, not automatically hiding), which is what prompted me to look at subclassing the scroller itself instead. Unfortunately it still only works with the legacy style scrollers and not overlays as per my previous message. Regards Gideon On 08/07/2012, at 11:04 AM, Graham Cox graham@bigpond.com wrote: On 07/07/2012, at 6:38 PM, Gideon King wrote: Has anybody successfully added a subview to an NSScroller? Yes, but more recently I took it out again and moved that extra view elsewhere, because on Lion/Mountain Lion, these scroll areas are handled differently and the presence of an extra view is detected and used to revert the scroller to the legacy scrollbar design, which is going to look increasingly out of place as apps adopt the new one. This extra special-casing could also be affecting whether and how your view is drawn. That said my code worked on Lion, it just used the legacy scrollbars. My subclass of NSScrollView only overrides one method - tile, and adds a property, 'placard' which is the extra view to insert. I believe this code originally was derived from someone else's example I found on the web in about 2003, so I'm not trying to claim it as my own. It does work however. --Graham ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Color Panel oddity
I believe that's what you get if you specify the NSColorPanelWheelModeMask for the picker mask. Since there is only one mode available it doesn't need to display the toolbar. Regards Gideon On 09/06/2012, at 12:12 PM, Dave DeLong davedel...@me.com wrote: Try this: http://www.apptree.net/images/colourpanel.png On Jun 8, 2012, at 7:10 PM, Kyle Sluder wrote: On Jun 8, 2012, at 5:55 PM, Graham Cox graham@bigpond.com wrote: A user is reporting this strange state of the Color Panel: ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
NSFileManager copyItemAtPath:toPath:error: error on 10.6
Hi, I am having a problem with using NSFileManager's copyItemAtPath:toPath:error: in OSX 10.6 - this does not cause a problem on 10.7. The code being executed is part of the current version of Sparkle. The following logs show items successfully copied: copy from: /Volumes/E010E195-C798-4CF5-9D87-F29B33E4481F/.com.apple.timemachine.supported to: /Users/gideon/Library/Application Support/NovaMind 5/NovaMind 5 5.3.0/.com.apple.timemachine.supported copy from: /Volumes/E010E195-C798-4CF5-9D87-F29B33E4481F/.DS_Store to: /Users/gideon/Library/Application Support/NovaMind 5/NovaMind 5 5.3.0/.DS_Store copy from: /Volumes/E010E195-C798-4CF5-9D87-F29B33E4481F/.fseventsd to: /Users/gideon/Library/Application Support/NovaMind 5/NovaMind 5 5.3.0/.fseventsd copy from: /Volumes/E010E195-C798-4CF5-9D87-F29B33E4481F/.vbt5 to:/Users/gideon/Library/Application Support/NovaMind 5/NovaMind 5 5.3.0/.vbt5 copy from: /Volumes/E010E195-C798-4CF5-9D87-F29B33E4481F/Applications to:/Users/gideon/Library/Application Support/NovaMind 5/NovaMind 5 5.3.0/Applications copy from: /Volumes/E010E195-C798-4CF5-9D87-F29B33E4481F/DMG_background.png to:/Users/gideon/Library/Application Support/NovaMind 5/NovaMind 5 5.3.0/DMG_background.png Then it gets to this one: copy from: /Volumes/E010E195-C798-4CF5-9D87-F29B33E4481F/NovaMind5.app to: /Users/gideon/Library/Application Support/NovaMind 5/NovaMind 5 5.3.0/NovaMind5.app which fails with this error: Error Domain=NSPOSIXErrorDomain Code=7 UserInfo=0x11bdc61f0 The operation couldn’t be completed. Argument list too long I have used previous versions of Sparkle with no issues, and have not changed my method of producing the disk image that is being installed. I'm not clear as to what the argument list is that could be too long. Any suggestions as to what could be going wrong? TIA Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: NSFileManager copyItemAtPath:toPath:error: error on 10.6
OK, I have looked at the user info dictionary of the error, and see the file that is causing the problem: UserInfo: { NSDestinationFilePath = /Users/gideon/Library/Application Support/NovaMind 5/NovaMind 5 5.3.0/NovaMind5.app/Contents/Resources/ruby/lib/libruby-static.a; NSFilePath = /Volumes/DEDB91B6-6EA0-4AE2-B038-94056AD36D54/NovaMind5.app/Contents/Resources/ruby/lib/libruby-static.a; NSUserStringVariant = Copy; } Using the file command, I get the following information: libruby-static.a: Mach-O universal binary with 1 architecture libruby-static.a (for architecture i386): current ar archive random library And ls -l@ tells me: -rw-r--r--@ 1 gideon staff 8359196 15 May 11:13 libruby-static.a com.apple.cs.CodeDirectory 123 com.apple.cs.CodeRequirements12 com.apple.cs.CodeSignature 4371 I have not changed anything about this file or how it is processed during builds, since the last version that worked. I see that the old version of Sparkle I was using used to use FSCopyObjectSync to copy the files, and that seemed to work, so I have just put something in so that if using 10.7 or later, it uses NSFileManager, and on 10.6 it uses FSCopyObjectSync - at least that gets me something that works quickly, but if anyone knows why this might fail when using NSFileManager's method on 10.6, I'd be keen to know... Regards Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Need help filtering mouse events in an overlay child window
Hi Michael I have had to do this same thing, and have encountered the same problem. In my case the main thing I wanted to accomplish was to get the scroll view in the main window to reflect the scroll position of my overlay window. It was not working very well, but then in my main window, I turned off scrollsDynamically then did a scrollPoint, then turned the scrollsDynamically back on again. I'm not sure if that is relevant to your situation. That made it significantly better, but it's still not the same as scrolling in the main window when I don't have the overlay window there, so if you find out any more info, I'd be keen to hear. For sending events to the main window from the overlay, I have been creating a new event from the existing event like this: NSEvent *newEvent = [NSEvent mouseEventWithType:[theEvent type] location:mapWindowPoint modifierFlags:[theEvent modifierFlags] timestamp:[theEvent timestamp] windowNumber:[parentWindow windowNumber] context:[NSGraphicsContext graphicsContextWithWindow:parentWindow] eventNumber:[theEvent eventNumber]+1 clickCount:[theEvent clickCount] pressure:[theEvent pressure]]; [NSApp postEvent:newEvent atStart:NO]; Where mapWindowPoint is the event location converted to the location in the parent window's coordinates, and incrementing the event number is just a guess at what I might be supposed to do (seems to work). I'm also curious to know whether there is any advantage or disadvantage to using the NSOperationQueue to close your window instead of using performSelector:withObject:afterDelay: Regards Gideon On 12/05/2012, at 11:35 AM, Michael Crawford wrote: I'd like to act on -mouseDown when it occurs within the bounds of an NSImageView, which is a subview of a transparent overlay child window. Some of you may be wondering why I'm trying to do this so I'll try to explain that up front. There are bugs in Snow Leopard regarding the use of Core Animation with layer-backed views and NSOutlineView. In order to avoid these bugs, which I'm told Apple will not be fixing for 10.6, I'm using a transparent overlay to do the required animation and implement something like QuickLook or a preview function. I tried the following code but it resulted in really bad latency and coordinate issues (I think) in the parent window's event handling. #pragma mark - NSEvent Handling Methods - (void)mouseDown:(NSEvent *)event { [self.parentWindow sendEvent:event]; #if 0 [super mouseDown:event]; [self.parentWindow removeChildWindow:self]; [[NSOperationQueue mainQueue] addOperationWithBlock:^{ [self close]; }]; #endif } I'm thinking that the way I'm forwarding events to the parent is wrong. So I'm looking for advice on implementing a proper mouse filter that can forward events and generate the same result as if the event was originally sent to the parent window. -Michael ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/gideon%40novamind.com This email sent to gid...@novamind.com ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Using services to email file in document based app
Hi, I would like my document based app to be able to send its files as email attachments. I notice that the Finder has the services option to send a file as an attachment, and kind of thought that something like that might have been built in to the document architecture, but apparently not. It does appear to be a standard service that is available and listed in the system preferences. I assumed that if I wanted to try this out, I should be able to do something like this in my NSDocument subclass: + (void)initialize { [NSApp registerServicesMenuSendTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, NSFileContentsPboardType, NSURLPboardType, NSFilesPromisePboardType, nil] returnTypes:nil]; } - (id)validRequestorForSendType:(NSString *)sendType returnType:(NSString *)returnType { return nil; } - (BOOL)writeSelectionToPasteboard:(NSPasteboard *)pboard types:(NSArray *)types { return NO; } (assuming that the New Email With Attachment service would take one of the pasteboard types I had specified). I then put breakpoints in the other two methods, but they were never called. I realize that there are other ways that something like this could be accomplished, but seeing as the service is there, I wanted to try to get it working that way. Can anyone enlighten me on how this is supposed to be done? Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Using services to email file in document based app
Thanks Ken, moving it to my window controller got my validRequestorForSendType called, but the services menu now shows up with just one item: Notebook Clipping Setup. So as it stands, this is my code: + (void)initialize { [NSApp registerServicesMenuSendTypes:[NSArray arrayWithObject:NSFilenamesPboardType] returnTypes:nil]; } - (id)validRequestorForSendType:(NSString *)sendType returnType:(NSString *)returnType { if ([sendType isEqualToString:NSFilenamesPboardType]) { NSDocument *d = [self document]; if ([d fileURL] ![[self window] isDocumentEdited]) { return self; } } return nil; } - (BOOL)writeSelectionToPasteboard:(NSPasteboard *)pboard types:(NSArray *)types { if ([types containsObject:NSFilenamesPboardType]) { NSDocument *d = [self document]; if ([d fileURL] ![[self window] isDocumentEdited]) { [pboard setString:[[d fileURL] path] forType:NSFilenamesPboardType]; return YES; } } return NO; } With this type registeredI see that the validRequestorForSendType is called asking for the following types: com.apple.flat-rtfd dyn.agu8y6y4grf0gn5xbrzw1gydcr7u1e3cytf2gn NeXT Rich Text Format v1.0 pasteboard type NeXT RTFD pasteboard type NSFilenamesPboardType NSStringPboardType public.rtf public.utf8-plain-text If I have a dirty document, or one that has just been created, the services menu is empty as expected. However, when I have a saved document selected, the only item that shows up is the notebook clipping setup. Seeing as the service I want to be available is specified in the mail info.plist using the NSFilenamesPboardType, I'm not sure where else the problem could lie. Anyone have any other suggestions? Thanks Gideon On 11/05/2012, at 7:17 PM, Ken Thomases wrote: That service is defined in Mail's Info.plist and it takes NSFilenamesPboardType. I then put breakpoints in the other two methods, but they were never called. The Services docs say that the latter two methods must be on an NSResponder object, like a view or window. I recognize that the document is in the responder chain for action messages, but that may not suffice for this case. The docs also say: The validRequestorForSendType:returnType: message is sent along an abridged responder chain, comprising only the responder chain for the key window and the application object. Regards, Ken ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Converting CGPathAddArcToPoint (or NSBezierPath equivalent) to a fixed number of CGPathAddCurveToPoint calls
Hi, I am using the CAShapeLayer's ability to animate a path, but the start and end path need to have the same number of segments. I have been using CGPathAddArcToPoint to add the curves to my path. That translates to CGPathAddCurveToPoint calls behind the scenes, but sometimes it adds one curve and sometimes two, which means that the curve can't be animated. I therefore need to be able to approximate the arc with the same number of CGPathAddCurveToPoint calls each time (presumably 2 or 3). Has anyone done this already either with CGPaths or NSBezierPaths? Any pointers would be most welcome. Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Any clues on what could cause this crash?
I received this crash report from a user, and have no idea where to look in my code for a cause. I'm assuming from the method names etc that it's having trouble when drawing a CALayer using OpenGL. I really do nothing strange in my code with CALayers. I have a whole bunch of CALayers in a layer hosting view, which I populate just by setting their contents to an NSImage, and some CAShapeLayers where I am using the paths. Thread 7 Crashed:: CVDisplayLink 0 com.apple.GeForceGLDriver 0x00020035941f 0x2 + 3511327 1 com.apple.GeForceGLDriver 0x0002000b2fd0 gldUpdateDispatch + 85 2 GLEngine0x00010b2104cc gleDoDrawDispatchCore + 421 3 GLEngine0x00010b1b81f8 glDrawRangeElements_IMM_Exec + 275 4 com.apple.QuartzCore0x7fff8dbfc954 CA::OGL::GLContext::draw_elements(CA::OGL::PrimitiveMode, unsigned int, unsigned short const*, CA::OGL::Vertex const*, unsigned int, unsigned int, CA::OGL::ClipPlane const*) + 392 5 com.apple.QuartzCore0x7fff8dbfc7c5 CA::OGL::Context::array_flush() + 103 6 com.apple.QuartzCore0x7fff8dc0c237 CA::OGL::emit_combine_(CA::OGL::Context, CA::OGL::TextureFunction, CA::OGL::Surface*, int, CA::OGL::Surface*, int, CA::OGL::Surface*, int, CA::Shape const*, CA::Vec4float const) + 1290 7 com.apple.QuartzCore0x7fff8dc0b806 CA::OGL::CombineNode::apply(CA::OGL::Surface**) + 130 8 com.apple.QuartzCore0x7fff8dbf9432 CA::OGL::ImagingNode::render(CA::OGL::ImagingNode::RenderClosure*) + 160 9 com.apple.QuartzCore0x7fff8dbf9359 CA::OGL::render_layers(CA::OGL::Renderer, CA::OGL::Layer*) + 130 10 com.apple.QuartzCore0x7fff8dbf9649 CA::OGL::LayerNode::apply(CA::OGL::Surface**) + 267 11 com.apple.QuartzCore0x7fff8dbf9432 CA::OGL::ImagingNode::render(CA::OGL::ImagingNode::RenderClosure*) + 160 12 com.apple.QuartzCore0x7fff8dbf9359 CA::OGL::render_layers(CA::OGL::Renderer, CA::OGL::Layer*) + 130 13 com.apple.QuartzCore0x7fff8dbe622c CA::OGL::Renderer::render(CA::Render::Update const*) + 684 14 com.apple.QuartzCore0x7fff8dcacfd3 CA::OGL::render(CA::OGL::Renderer, CA::Render::Update*) + 243 15 com.apple.QuartzCore0x7fff8dc402b1 _ZL9view_drawP7_CAViewdPK11CVTimeStampb + 4054 16 com.apple.QuartzCore0x7fff8dc3f2a2 _ZL17view_display_linkdPK11CVTimeStampPv + 134 17 com.apple.QuartzCore0x7fff8dc3f122 link_callback + 246 18 com.apple.CoreVideo 0x7fff8e44e80f CVDisplayLink::performIO(CVTimeStamp*) + 259 19 com.apple.CoreVideo 0x7fff8e44db0c CVDisplayLink::runIOThread() + 662 20 com.apple.CoreVideo 0x7fff8e44d85d _ZL13startIOThreadPv + 148 21 libsystem_c.dylib 0x7fff963058bf _pthread_start + 335 22 libsystem_c.dylib 0x7fff96308b75 thread_start + 13 Thread 7 crashed with X86 Thread State (64-bit): rax: 0x000101a0ac00 rbx: 0x0033 rcx: 0x0099 rdx: 0x0036 rdi: 0x00010001 rsi: 0xb0001064e36e rbp: 0x00010b11bbd0 rsp: 0x00010b11bbb0 r8: 0x0001019f2c00 r9: 0x0001061bb020 r10: 0x000101a0ac00 r11: 0x00c1 r12: 0x00010134af60 r13: 0xfafafafa r14: 0x00010635ba40 r15: 0x0001064e29e0 rip: 0x00020035941f rfl: 0x00010297 cr2: 0x000100c7cc1e Any ideas on where to look would be greatly appreciated. Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Problem with capturing view contents
Hi, I have a view I am trying to capture using the following code: NSBitmapImageRep *rep = [view bitmapImageRepForCachingDisplayInRect:[view bounds]]; [view cacheDisplayInRect:[view bounds] toBitmapImageRep:rep]; My view coordinates in a typical test case are as follows: 01_frame = {{0, 0}, {350, 190}}; 02_bounds = {{-98, -95}, {350, 190}}; The image rep created is the right size, but the contents are drawn up and to the right in the image rep (by 98,95 pixels). If I instead use the frame, the contents are in the right place in the image rep, but it only includes the portions of the image with positive x and y values (bottom right seeing as it's a flipped view). If I create an image that is bigger by the amount of the negative origins of the bounds, the entire thing is drawn, but then I would need to crop the image afterwards, which would be very messy and memory hungry since my views can get pretty big. I tried applying an affine transform before grabbing it, but that made no difference. So is it possible to capture views where the bounds go into the negatives, and if so, how? TIA Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Example implementation of NSAnimatablePropertyContainer?
I'd be interested in this too. In the past, I have created a subclass of NSView and just used the animation capabilities without ever inserting it in a view hierarchy, and that worked, but that was just a quick and dirty hack project - I'd like to know how to do it properly… Regards Gideon On 28/03/2012, at 12:34 AM, Kenneth Baxter wrote: I have some objects that I want to use implicit animations for, but they are not views. I understand that I should be able to implement the NSAnimatablePropertyContainer protocol and it should just work from there. Unfortunately the documentation seems pretty light on how to implement the protocol yourself, what the animator should return, etc. I have not been able to find any example code to show how you would do this. Is there an example around somewhere? Thanks Ken ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/gideon%40novamind.com This email sent to gid...@novamind.com ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
notAKeyMarker crash
Hi, I am getting occasional reports of an exception from users of my software, but they are not able to reproduce it, and nor am I. I have a sheet which has an NSCollectionView on it and a couple of buttons and a slider. The NIB also instantiates an array controller which is used as the content for the collection view. This is the exception I get: *** NSMapInsertKnownAbsent(): attempt to insert notAKeyMarker 0 CoreFoundation 0x7fff896a9fc6 __exceptionPreprocess + 198 1 libobjc.A.dylib 0x7fff855ced5e objc_exception_throw + 43 2 CoreFoundation 0x7fff896a9dfa +[NSException raise:format:arguments:] + 106 3 CoreFoundation 0x7fff896a9d84 +[NSException raise:format:] + 116 4 Foundation 0x7fff890f67bc -[NSClassicMapTable setItem:forKnownAbsentKey:] + 74 5 OmniAppKit 0x00010051f008 -[OAApplication beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:] + 184 I do not instantiate an NSClassicMapTable explicitly in my code, but am assuming that either the array controller or the collection view uses such things. I have never been able to reproduce the problem myself, either in a test environment or anywhere else either on 10/6 or 10.7 (users have reported it on both operating system versions). If anyone has any suggestions as to where to look for this, I'd be very grateful. Regards Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: notAKeyMarker crash
Ah, of course - silly me. Working on assumptions instead of using my eyes. So the relevant code is this: NSMapInsertKnownAbsent(windowsForSheets, sheet, docWindow); and seeing as windowForSheets is created with: windowsForSheets = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 0); and NSObjectMapKeyCallBacks has a nil notAKeyMarker… So if the sheet is nil, then an exception is raised. Not sure how that would be possible in my code, but at least I now understand what is going on. Regards Gideon On 06/03/2012, at 10:42 AM, Mike Abdullah wrote: -[OAApplication beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:] That's definitely not part of Cocoa! You have the source. Dig in to find the problem. On 5 Mar 2012, at 15:15, Gideon King wrote: Hi, I am getting occasional reports of an exception from users of my software, but they are not able to reproduce it, and nor am I. I have a sheet which has an NSCollectionView on it and a couple of buttons and a slider. The NIB also instantiates an array controller which is used as the content for the collection view. This is the exception I get: *** NSMapInsertKnownAbsent(): attempt to insert notAKeyMarker 0 CoreFoundation 0x7fff896a9fc6 __exceptionPreprocess + 198 1 libobjc.A.dylib 0x7fff855ced5e objc_exception_throw + 43 2 CoreFoundation 0x7fff896a9dfa +[NSException raise:format:arguments:] + 106 3 CoreFoundation 0x7fff896a9d84 +[NSException raise:format:] + 116 4 Foundation 0x7fff890f67bc -[NSClassicMapTable setItem:forKnownAbsentKey:] + 74 5 OmniAppKit 0x00010051f008 -[OAApplication beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:] + 184 I do not instantiate an NSClassicMapTable explicitly in my code, but am assuming that either the array controller or the collection view uses such things. I have never been able to reproduce the problem myself, either in a test environment or anywhere else either on 10/6 or 10.7 (users have reported it on both operating system versions). If anyone has any suggestions as to where to look for this, I'd be very grateful. Regards Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/cocoadev%40mikeabdullah.net This email sent to cocoa...@mikeabdullah.net ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: iCal Integration
I don't see anything in the API to detect it - I have encountered calendars that don't support tasks, and if I try to save a task to them, I get an error with code 1025 (CalCalendarNotEditableError), and deal with that in my code. isEditable returns YES for a calendar which only supports events, so you still have to try to save a task to it before you know it won't store tasks. I haven't come across one that can't save events yet. Do you know what error code you get back when you try to save an event to a calendar which doesn't support events? I'm assuming it's the same code? I haven't looked at the type property to see if the values there bear any relationship to what can be saved to it, but that seems like the only other property that could potentially be relevant… HTH Gideon On 23/02/2012, at 1:19 PM, Jeremy Matthews wrote: I have a simple app which, as a byproduct, creates tasks and events in iCal. Prior to 10.7, the user would choose from a popup list populated by all calendars within the [CalCalendarStore defaultstore], which worked great and created both events and tasks perfectly fine. Now, in 10.7, it seems as if a CalDAV (alal iCloud) or Exchange calendar is separated into two separate objects - one for events and one for tasks, and the result is the user is shown a list of calendars...and in many cases users appear to see duplicates, when in reality there are those two separate calendars. So now, when a user selects the calendar, they might get an event created, but not tasks, and vice-versa. Is there any known way of dealing with this, or any way to easily find out which calendar supports events vs tasks, instead of firing off a test tasks and finding out the hard way? Or perhaps, a better solution altogether? Thanks, jeremy ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Dumb question about radio buttons
Not sure about your number of items in your matrix, but you are wanting [sender selectedTag] to get the user's choice. Regards Gideon On 23/02/2012, at 11:58 PM, William Squires wrote: -(IBAction)baseChanged:(id)sender { int choice = [sender tag]; } I always get, user chose hexadecimal! :( (all the buttons generate an action, so it's not that...) ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Can't create window context…crash
Hi all, I am seeing quite a number of reports from users of my software where on the console, there are errors like the ones below, but I haven't been able to reproduce the problem here: 2012-02-21 23:49:05 +0800[3]: kCGErrorIllegalArgument: CGSDeviceCreate: Invalid window 2012-02-21 23:49:05 +0800[3]: Failed to create window context device 2012-02-21 23:49:05 +0800[3]: CGWindowContextCreate: failed to create window context delegate. 2012-02-21 23:49:05 +0800[4]: _initWithWindowNumber: error creating graphics ctxt object for ctxt:0xed23, window:0x0 2012-02-21 23:49:05 +0800[5]: Feb 21 23:49:05 nomato-iMac.local NovaMind5[5658] : Failed to create window context device 2012-02-21 23:49:05 +0800[5]: Feb 21 23:49:05 nomato-iMac.local NovaMind5[5658] : CGWindowContextCreate: failed to create window context delegate. Some people are also getting this, which I believe might be related: Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libobjc.A.dylib 0x7fff8b05de90 objc_msgSend + 16 1 libobjc.A.dylib 0x7fff8b06303c (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 434 2 com.apple.CoreFoundation 0x7fff90efbb05 _CFAutoreleasePoolPop + 37 3 com.apple.AppKit 0x7fff8d567b71 _handleWindowNeedsDisplayOrLayoutOrUpdateConstraints + 656 4 com.apple.CoreFoundation 0x7fff90f2dbd7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 5 com.apple.CoreFoundation 0x7fff90f2db36 __CFRunLoopDoObservers + 374 6 com.apple.CoreFoundation 0x7fff90f02ce9 __CFRunLoopRun + 825 7 com.apple.CoreFoundation 0x7fff90f02676 CFRunLoopRunSpecific + 230 8 com.apple.HIToolbox 0x7fff9327431f RunCurrentEventLoopInMode + 277 9 com.apple.HIToolbox 0x7fff9327b51b ReceiveNextEventCommon + 181 10 com.apple.HIToolbox 0x7fff9327b456 BlockUntilNextEventMatchingListInMode + 62 11 com.apple.AppKit 0x7fff8d52bf5d _DPSNextEvent + 659 12 com.apple.AppKit 0x7fff8d52b861 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135 13 com.apple.AppKit 0x7fff8d52819d -[NSApplication run] + 470 14 com.omnigroup.OmniAppKit 0x000100515bff -[OAApplication run] + 127 15 com.apple.AppKit 0x7fff8d7a6b88 NSApplicationMain + 867 16 com.novamind.NovaMind5 0x00011bd4 start + 52 Any ideas what to look for to try to get to the root cause of this? TIA Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: CGContextSaveGState
The documentation says it pushes it on to a stack: Pushes a copy of the current graphics state onto the graphics state stack for the context. It also says: To restore your drawing environment to a previously saved state, you can use CGContextRestoreGState. with the clear implication that you can have multiple of them. And it works in practice too… Kind of not sure why the question, since it is clearly stated in the documentation... Regards Gideon On 16/02/2012, at 5:22 AM, William Squires wrote: Does this method store the context state in a stack, or just store it in a local variable (struct) somewhere (i.e. does calling this more than once overwrite the previously saved context info?) ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
iCal syncing on multiple computers
Hi, I have some data that is synced with iCal by my application. I get the calendars, and the user selects which one to sync to, and in my data, I save the UID for the calendar we have synced with. Now the user moves to a different computer and can't sync, since the same calendar is not available on that computer. So I ask them to select another calendar to sync with. BUT, in some cases the calendar on computer 1 is synced with iCloud, and is synced to a calendar on the other computer. So in actual fact, the exact same calendar with a different UID is available on the other computer. Is there any way of me knowing that both those calendars are synced with each other on iCloud, and therefore effectively the same calendar? Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: copy isEqual nightmares
On 13/02/2012, at 11:54 AM, James Maxwell wrote: But it does beg the question: is there an easy way to test the **identity** of an object? That is, to NSLog the identity of an object, to see if (and how) it's different to a copy that returns YES to isEqual and has the same hash? I guess I could put something in -description: that would tell me (i.e., include info on the data that I'm NOT comparing in my isEqual method)... Anyway, I was just curious about that. J. You can NSLog(@%p, self); to print the address of the object. Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
NSDateFormatter, timezones and early dates
I have just come across a really unexpected thing. I have a date formatter like so: NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; [formatter setDateFormat:@-MM-dd'T'HH:mm:ss.SSSZ]; Now when I use: [formatter stringFromDate:aDate]; It works fine for dates after 1895, but for dates before that, the string is incorrect - around here it should end in +1000, but for dates before 1895, it gives +101208. Is there some way I can get this so that it gives the expected result for all dates? Thanks Gideon ___ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
willPresentError being called with NSDocumentErrorRecoveryAttempter object
Hi everyone, I'm trying to resolve a very strange problem. In my document I have implemented willPresentError:, and on Lion when someone opens a locked document and tries to edit it, an error is produced, which I forward to super, which gives people the option of unlocking, canceling, or duplicating. If they choose to duplicate, I get another call to willPresentError, but this time the supposed error is not an NSError at all, but instead an NSDocumentErrorRecoveryAttempter object. I have no idea how this could happen, and the stack trace doesn't seem to help. Any ideas where to look? #0 -[NMPersistentDocument willPresentError:] (self=0x105715850, _cmd=0x7fff8cebd8da, error=0x10d1c5ff0) at /Users/gideon/Development/svn/trunk/mac/Source/NMPersistentDocument.m:598 #1 0x7fff8c9e6780 in -[NSDocument presentError:modalForWindow:delegate:didPresentSelector:contextInfo:] () #2 0x7fff8c9ed167 in -[NSDocument _presentError:thenContinue:] () #3 0x7fff8ce60171 in __-[NSDocumentErrorRecoveryAttempter attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:]_block_invoke_3 () #4 0x7fff8c9fa6b8 in __-[NSDocument _errorForAutosavingSafetyConcern:userInfo:]_block_invoke_1 () #5 0x7fff8ce5fd3e in -[NSDocumentErrorRecoveryAttempter attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:] () #6 0x7fff8ce5fdf2 in -[NSDocumentErrorRecoveryAttempter attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:] () #7 0x7fff8c8eeb6e in __-[NSApplication(NSErrorPresentation) presentError:modalForWindow:delegate:didPresentSelector:contextInfo:]_block_invoke_3 () #8 0x7fff8c8f5be4 in -[NSApplication(NSErrorPresentation) _something:wasPresentedWithResult:soContinue:] () #9 0x7fff8c8e5e7d in -[NSAlert didEndAlert:returnCode:contextInfo:] () #10 0x7fff8c8f27d7 in -[NSApplication endSheet:returnCode:] () #11 0x0001006e30d8 in -[OAApplication endSheet:returnCode:] () #12 0x7fff8c8e5d43 in -[NSAlert buttonPressed:] () #13 0x7fff904d3a1d in -[NSObject performSelector:withObject:] () #14 0x7fff8c741710 in -[NSApplication sendAction:to:from:] () #15 0x0001006e3204 in -[OAApplication sendAction:to:from:] () #16 0x7fff8c741642 in -[NSControl sendAction:to:] () #17 0x7fff8c74156d in -[NSCell _sendActionFrom:] () #18 0x7fff8c740a30 in -[NSCell trackMouse:inRect:ofView:untilMouseUp:] () #19 0x7fff8c7c08e0 in -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] () #20 0x7fff8c73f63a in -[NSControl mouseDown:] () #21 0x7fff8c70a0e0 in -[NSWindow sendEvent:] () #22 0x7fff8c6a268f in -[NSApplication sendEvent:] () #23 0x0001006dce7f in -[OAApplication sendEvent:] () #24 0x7fff8c638682 in -[NSApplication run] () #25 0x0001006d9bff in -[OAApplication run] () #26 0x7fff8c8b780c in NSApplicationMain () #27 0x00011b82 in main (argc=5, argv=0x7fff5fbffaa8) at /Users/gideon/Development/svn/trunk/mac/Source/main.m:11 Thanks Gideon ___ 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
Re: willPresentError being called with NSDocumentErrorRecoveryAttempter object
Further information: when the user selects to duplicate, - (BOOL)readFromURL:ofType:error: is called with the error argument being an NSDocumentErrorRecoveryAttempter object. I don't know why this is happening. Would it be save for me to do something like this: if (*outError [*outError isKindOfClass:NSClassFromString(@NSDocumentErrorRecoveryAttempter)]) { *outError = nil; } ? From a practical perspective, it seems to work, but I just don't get why I'm getting the NSDocumentErrorRecoveryAttempter object passed in to my file reading method. On 17/01/2012, at 12:07 PM, Gideon King wrote: Hi everyone, I'm trying to resolve a very strange problem. In my document I have implemented willPresentError:, and on Lion when someone opens a locked document and tries to edit it, an error is produced, which I forward to super, which gives people the option of unlocking, canceling, or duplicating. If they choose to duplicate, I get another call to willPresentError, but this time the supposed error is not an NSError at all, but instead an NSDocumentErrorRecoveryAttempter object. I have no idea how this could happen, and the stack trace doesn't seem to help. Any ideas where to look? #0 -[NMPersistentDocument willPresentError:] (self=0x105715850, _cmd=0x7fff8cebd8da, error=0x10d1c5ff0) at /Users/gideon/Development/svn/trunk/mac/Source/NMPersistentDocument.m:598 #1 0x7fff8c9e6780 in -[NSDocument presentError:modalForWindow:delegate:didPresentSelector:contextInfo:] () #2 0x7fff8c9ed167 in -[NSDocument _presentError:thenContinue:] () #3 0x7fff8ce60171 in __-[NSDocumentErrorRecoveryAttempter attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:]_block_invoke_3 () #4 0x7fff8c9fa6b8 in __-[NSDocument _errorForAutosavingSafetyConcern:userInfo:]_block_invoke_1 () #5 0x7fff8ce5fd3e in -[NSDocumentErrorRecoveryAttempter attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:] () #6 0x7fff8ce5fdf2 in -[NSDocumentErrorRecoveryAttempter attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:] () #7 0x7fff8c8eeb6e in __-[NSApplication(NSErrorPresentation) presentError:modalForWindow:delegate:didPresentSelector:contextInfo:]_block_invoke_3 () #8 0x7fff8c8f5be4 in -[NSApplication(NSErrorPresentation) _something:wasPresentedWithResult:soContinue:] () #9 0x7fff8c8e5e7d in -[NSAlert didEndAlert:returnCode:contextInfo:] () #10 0x7fff8c8f27d7 in -[NSApplication endSheet:returnCode:] () #11 0x0001006e30d8 in -[OAApplication endSheet:returnCode:] () #12 0x7fff8c8e5d43 in -[NSAlert buttonPressed:] () #13 0x7fff904d3a1d in -[NSObject performSelector:withObject:] () #14 0x7fff8c741710 in -[NSApplication sendAction:to:from:] () #15 0x0001006e3204 in -[OAApplication sendAction:to:from:] () #16 0x7fff8c741642 in -[NSControl sendAction:to:] () #17 0x7fff8c74156d in -[NSCell _sendActionFrom:] () #18 0x7fff8c740a30 in -[NSCell trackMouse:inRect:ofView:untilMouseUp:] () #19 0x7fff8c7c08e0 in -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] () #20 0x7fff8c73f63a in -[NSControl mouseDown:] () #21 0x7fff8c70a0e0 in -[NSWindow sendEvent:] () #22 0x7fff8c6a268f in -[NSApplication sendEvent:] () #23 0x0001006dce7f in -[OAApplication sendEvent:] () #24 0x7fff8c638682 in -[NSApplication run] () #25 0x0001006d9bff in -[OAApplication run] () #26 0x7fff8c8b780c in NSApplicationMain () #27 0x00011b82 in main (argc=5, argv=0x7fff5fbffaa8) at /Users/gideon/Development/svn/trunk/mac/Source/main.m:11 Thanks Gideon ___ 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
Re: willPresentError being called with NSDocumentErrorRecoveryAttempter object
Ah, I see. OK, I will create my own internal NSError object pointing to nil, and if I encounter an error in any of my called methods, I'll create an NSError for ti, and if I'm going to return NO, then I'll assign it to the pointer. Thanks for the quick and helpful response Quincey. Regards Gideon On 17/01/2012, at 12:37 PM, Quincey Morris wrote: You're not. 'outError' is an output-only parameter. The value of '*outError' on entry to the method is trash. The rule is that if your implementation of 'readFromURL:ofType:error:' is going to return NO, and the 'outError' pointer is not NULL, you *must* create a new NSError object and assign it '*outError'. ___ 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
KVO willChange and didChange
Hi all, when I declare a property, something like: @property(readwrite, copy, nonatomic) NSString *foo; I will synthesize it with: @synthesize foo; But then I want to do some special processing when the value is set, so I implement my setter: - (void)setFoo:(NSString *)aFoo { [self willChangeValueForKey:@foo]; [foo autorelease]; foo = [aFoo retain]; [self didChangeValueForKey:@foo]; [self doSomeMoreProcessingThatShouldHappenAfterAllTheObserversKnowTheNewValue]; } I assumed from the documentation and examples that since I was providing my own implementation method, that I would have to include the willChange and didChange methods at appropriate points in my code, but I have just discovered that when I do: anObject.foo = @something; I get two prior notifications - one from the internals of the system, and one from my willChange call, and two notifications after the change - one from my didChange and one from the system. So I thought this must because I used @synthesize as well as providing my own method, so I implemented a getter and removed the @synthesize. The behavior didn't change. I double checked this by removing my willChange and didChange methods, and now the prior and after notifications only got sent once. One purpose of mentioning this is that given the fact that I have come across code from several places where they did what I did and had the willChange and didChange code in their setters, others may need to look back at their code and make appropriate changes. But the big thing for me is that I have a number of places throughout my application where I need to have the changes made, the didChange notification acted on by the observers, and then some other code run. I therefore wanted to use the setter, but not have to change the name of it, so that bindings would still work, so I changed my property declaration to be readonly, and declared a setFoo: method. I thought that declaring it would make it not call the willChange and didChange behind the scenes, but unfortunately, even with a readonly declaration, when I used anObject.foo = @something, it still called the prior and after KVO methods. So I thought I would explicitly call setFoo: instead of using dot notation, but that made no difference. On the off chance there was something else going on, I also turned off accessesInstanceVariablesDirectly, but that made no difference. So I thought I would just remove the property declarations altogether, and just code my accessors myself, but it still called the built in KVO methods. Therefore my conclusion is that as soon as you add a KVO observation on anything, it triggers the prior and after notifications whenever the setter is called. This of course makes sense, but still leaves me with the original problem: I need some way to have the KVO notifications called *once only*, and yet have my setters able to call other methods after the KVO notifications have been sent. It is not possible for this to be done with performSelector:withObject:afterDelay: or anything similar, since these methods need to be called immediately after the after change notification. I know I could get it to call the KVO notifications at only the right places by coding my own methods like -(void)changeFooTo:, but I do not want to change the name of my setters because that would break my bindings. Are there any recommendations on the best approach for being able to have the setter able to do what it needs with the KVO and then calling other methods, without breaking bindings? I can't believe I have misunderstood this for so long, and never noticed what was happening until now! Thanks Gideon ___ 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
Re: KVO willChange and didChange
Cool, thanks everybody. Nice that there is such a simple solution. Regards Gideon On 16/01/2012, at 4:41 PM, Gordon Henriksen wrote: Try overriding +[NSObject(NSKeyValueObserving) automaticallyNotifiesObserversForKey:] to return NO for the properties you want to handle manually. ___ 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
Forcing autosave
I have a situation where I need my document's contents on disk, even if it's a new document with no changes, so I thought I would just make sure that the document had autosaved before I complete my action on the file, and just pick up the URL of the last autosave from the document and use that. (I'm running this on Lion) I use: - (void)autosaveWithImplicitCancellability:(BOOL)autosavingIsImplicitlyCancellable completionHandler:(void (^)(NSError *errorOrNil))completionHandler Now this is fine, except that it only works if the user has made at least one change to the document. The documentation says that it invokes the - (BOOL)hasUnautosavedChanges method to determine whether to save the document. So I overrode that method so that during my operation, it will return YES. I expected this to ensure that the document would be saved, but it ignores this and doesn't autosave it. It does actually call this method during the autosave call, but seems to not take notice that I returned YES. So I tried putting a dummy undo action in just before calling autosave, and then undoing it afterwards, just to ensure that the document was dirty. That didn't work either. I put it in an undo group, but that didn't work either. I forced a checkpoint in the undo manager, but that didn't work either. So I thought I would try the document updateChangeCount: method, calling NSChangeDone before calling autosave, then NSChangeUndone afterwards. That worked! I removed all the other stuff and *only* had the updateChangeCount: calls in there, and it still autosaved. So I have a solution that works, but I'm thinking that my override of hasUnautosavedChanges should have forced the autosave. Is this a bug that it doesn't? TIA Gideon ___ 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
NSOpenPanel and finding files
Hi, I'm trying to use an open panel to open a particular type of file (.nmcset). I create an open panel and run it like this: NSOpenPanel *openPanel = [NSOpenPanel openPanel]; [openPanel setCanChooseFiles:YES]; [openPanel setCanChooseDirectories:NO]; [openPanel setAllowsMultipleSelection:NO]; [openPanel setTitle:NSLocalizedString(@Load Color Set, nil)]; [openPanel setAllowedFileTypes:[NSArray arrayWithObjects:@nmcset, nil]]; if ([openPanel runModal] == NSFileHandlingPanelOKButton) { …do stuff… } All this works fine, and all the files without that extension are disabled, but in the search field at the top of the open panel, I can't seem to find my files. I have a file called fred.nmcset in my folder. It appears not grayed out in the list, and I can select it and open it just fine. But, if I type fred or fred.nmcset or .nmcset into the search field, nothing appears in the results. It does show the options after a few seconds of what to search for and I say to search for a file name, but it still doesn't help. Other applications work just fine. I'm running on 10.7. Is there something special I need to do to get this to work? Thanks Gideon ___ 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
Re: NSOpenPanel and finding files
Thanks for the suggestion Ken. The file is found in a Spotlight search, and if I search from within the Finder. It is in a folder ~/Temp and is not hidden or otherwise non-indexed. Regards Gideon On 02/01/2012, at 4:58 PM, Ken Thomases wrote: On Jan 1, 2012, at 11:52 PM, Gideon King wrote: Hi, I'm trying to use an open panel to open a particular type of file (.nmcset). [...] the search field at the top of the open panel, I can't seem to find my files. [...] if I type fred or fred.nmcset or .nmcset into the search field, nothing appears in the results. It does show the options after a few seconds of what to search for and I say to search for a file name, but it still doesn't help. Other applications work just fine. I doubt this is specific to the open panel. I suspect you're looking at a folder which is excluded from Spotlight. Does your file show up with a file search in the Finder? In the Spotlight menu? Check the Spotlight pane of System Preferences, in particular the Privacy tab. Also, I think there are still some system directories which are excluded from Spotlight by default, although information about that seems scarce or outdated. Regards, Ken ___ 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
CGContextDrawTiledImage crash on 10.5
I'm hoping someone can remember back to 10.5 days… I am using CGContextDrawTiledImage, and it works absolutely fine on 10.6 and 10.7, but sometimes crashes on 10.5. If anyone else has seen this, and worked out what is going on, I'd love to hear. I can resize the image that I am using to tile with just fine (I had to make sure that I was always using integral rects and sizes for this to work on 10.5), but when I resize my view (changing the frame and bounds for a zoom operation), CGContextDrawTiledImage causes a crash. I have tried everything I can think of to fix this, ensuring that everything is integral etc, but to no avail. If there is no way around this, is there an equivalent method that I can use in Cocoa? Using a color pattern image would seem to get me most of the way there, but I haven't been able to figure out how to get the pattern phase setting right to be able to emulate what CGContextDrawTiledImage does. TIA Gideon ___ 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
Code signature problem
Hi, I'm having a problem with code signatures. My app has about 20 executables in it, all of which I sign using the codesign -f -s command. All of them are signed in exactly the same way, and when I run codesign --verify --verbose, it says they are all valid. When I submit the application to the app store, it says that two of the signatures are missing or invalid. One is on one of my frameworks and the other one is on a .a file. How can I work out what is going wrong with the signature on these two files, given the fact that they pass verification and are signed the same way as the ones that are accepted? Thanks Gideon ___ 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
Re: Validating dictionary strings file
I have filed a report on this. The problem originally exhibited itself in a strings file that was used for localization, and the error report gave no indication which file it was that had the problem, so I included that in the bug report too. Regards Gideon On 21/11/2011, at 5:05 PM, Joar Wingfors wrote: Please file a bug report. Xcode should generate warnings / errors for strings files, just like it can for other types of files. http://developer.apple.com/bugreporter/ j o a r ___ 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
Validating dictionary strings file
Hi, I'm trying to use NSDictionary's dictionaryWithContentsOfFile: method and am getting an error: CFPropertyListCreateFromXMLData(): Old-style plist parser: missing semicolon in dictionary. The entire file is of the format: /*some comment */ Some string = Some other string; Clearly there is some formatting error in the file but it is a rather large file and would take a very long time to manually go through and find the issue - is there some tool available that will tell me where to look in the file for the error? Thanks Gideon ___ 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
Re: Validating dictionary strings file
Thanks for the plutil tip Brian. It's not supposed to be an old style dictionary - it's just a strings file, and I have the whole thing in English and Spanish - the English one loads fine, and the Spanish one doesn't. Unfortunately seeing as plutil thinks it's supposed to be an old style dictionary file, it just tells me that there is an error at line 1. Maybe I just need to do a binary search for the problem line(s)… Regards Gideon On 21/11/2011, at 4:13 PM, Brian Krent wrote: For validation, try plutil -lint yourFile.plist in the Terminal. Also, use curly braces for dictionaries in old-style ASCII plists. ___ 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
Re: Validating dictionary strings file
Thanks for the suggestions guys - I have found the issues by a binary search process (there were some quotes in the wrong places). I'll keep those ideas in my bag of tricks for if I encounter something similar again. Regards Gideon ___ 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
Re: Implementing Full Screen for 10.7 but app should also run on 10.6
You could do something like this: #ifndef NSAppKitVersionNumber10_6 #define NSAppKitVersionNumber10_6 1038 #endif #ifndef NSWindowCollectionBehaviorFullScreenPrimary #define NSWindowCollectionBehaviorFullScreenPrimary 1 7 #endif if (floor(NSAppKitVersionNumber) NSAppKitVersionNumber10_6) { [[self window] setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; } HTH Gideon On 15/11/2011, at 1:15 AM, Koen van der Drift wrote: Another window size question, just putting it ina another thread. I'd like my application to use the full screen feature on 10.7, but the app should also run on 10.6 I tried adding NSWindowCollectionBehaviorFullScreenPrimary for my main window, but got an error since I am building agains 10.6 SDK. How do I make this work (if possible)? Thanks, - Koen. ___ ___ 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
Re: Implementing Full Screen for 10.7 but app should also run on 10.6
They have not bumped the appkit version number in 10.6 (see NSApplication.h), and in previous releases, the number was just bumped by a decimal, so the floor() call handles that. As far as I am aware, this comparison should be correct. e.g. #define NSAppKitVersionNumber10_5 949 #define NSAppKitVersionNumber10_5_2 949.27 #define NSAppKitVersionNumber10_5_3 949.33 #define NSAppKitVersionNumber10_6 1038 Regards Gideon On 15/11/2011, at 3:16 AM, Kyle Sluder wrote: On Nov 14, 2011, at 7:30 AM, Gideon King gid...@novamind.com wrote: if (floor(NSAppKitVersionNumber) NSAppKitVersionNumber10_6) { This comparison is incorrect. The AppKit version number almost always gets bumped on an OS point release. This comparison will succeed on 10.6.1 and higher. Does Apple not ship symbols for the current AppKit version in the SDK—in other words, is there an NSAppKitVersionNumber10_7 in the 10.7 SDK? --Kyle Sluder ___ 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
App store receipt checking - getting a new receipt
Hi, I have implemented app store receipt checking, and it all seemed to be going OK, but I needed to change the bundle version number and check a new version, but when I run the application, it seems to download the previously generated receipt from the app store, which of course has the old bundle version, so validation fails. Do I need to do something special to get a new receipt? I didn't see anything about this in the documentation. Thanks Gideon ___ 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
Re: Write to file Entitlement
If you are writing to somewhere inside the sandbox, you can read and write freely, but if outside, then you have to go through the save panel, which behind the scenes stretches your sandbox to include that file. Regards Gideon On 31/10/2011, at 3:27 PM, James Merkel wrote: Reading the sandboxing documents, it looks like in order to write to a file you need to use the save dialog. My app updates files without the save dialog. Will that be permitted in a sandboxed app ? Jim Merkel ___ 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/gideon%40novamind.com This email sent to gid...@novamind.com ___ 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
Re: Sandbox issues
Thanks for the reply Kyle. On 31/10/2011, at 11:21 AM, Kyle Sluder wrote: On Sun, Oct 30, 2011 at 4:46 PM, Gideon King gid...@novamind.com wrote: Further to my previous questions about sandboxing, I have now done more research and experimentation, and the more I find out about it the more questions it throws up. 1. I have a folder in the Application Support folder that my apps have been using to store and retrieve log data, but even if I add an entitlement relative to the home folder to /Library/Application Support/My Folder/ I still can't access it. I would have expected the sandbox to have a link to that folder created in the container folder, but it doesn't. I'm interested in knowing what I may have done wrong with this… Read the Migrating an App to a Sandbox section of the App Sandbox Design Guide: http://developer.apple.com/library/mac/#documentation/Security/Conceptual/AppSandboxDesignGuide/MigratingALegacyApp/MigratingALegacyApp.html#//apple_ref/doc/uid/TP40011183-CH6-SW8 Yes, I understand that, and have migrated the data that is specific to my application, but this data is shared between two applications - the main application, and the error reporting/crash catcher application. So I don't want to migrate it - I want to access it from both applications. Do not use NSTemporaryDirectory. Use -[NSFileManager URLForDirectory:inDomains:]. I can't see one that relates to the temporary folder - I had a look at all the available values for NSSearchPathDirectory. LSOpenFromURLSpec is prohibited under sandboxing. This is prohibited under sandboxing. Read Accessing Preferences of Other Apps in the App Sandbox Design Guide: http://developer.apple.com/library/mac/documentation/Security/Conceptual/AppSandboxDesignGuide/DesigningYourSandbox/DesigningYourSandbox.html#//apple_ref/doc/uid/TP40011183-CH4-SW12 File Radars describing your issues with App Sandboxing, and visit the Application Sandboxing Dev Forums: https://devforums.apple.com/community/mac/lion/appsandbox --Kyle Sluder I'll submit reports on the issues, but my conclusion at this stage is that it will be completely impossible for me to use the sandboxing system in its current implementation. I see on the developer forum that there are a number of other people expressing similar concerns. It is not clear to me where Apple is going with this as far as when Applications are going to require to be sandbox compliant (they do say in one place that it will be November, but there seem to have been so many issues raised since then that I wonder whether that really will be enforced), or what happens if it is just not possible for a specific application to work with the sandbox. Will there be some way for applications to get approval even if it doesn't work with the sandbox? Is Apple going to update the sandbox to allow for these types of scenarios? We just don't know at this stage… I'll see how far I can get with the forums and bug reports, but for the moment, this appears to stall my app store submission process. Regards Gideon___ 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
Re: Future for Mac applications
sandboxing clearly hasn't been nailed down yet. It's also worth remembering that the Mac App Store is not required either, unlike on iOS devices. If you can't or don't want to sandbox, you can distribute elsewhere. Yes, but the App store is a huge publicity opportunity and potentially very powerful sales channel, but the way sandboxing is at the moment means that only the significantly less capable applications are able to be sandboxed, and therefore be available through the app store. So the users only get the cheap junk apps on the App store. Worse for developers, worse for customers, worse for Apple. I definitely agree that sandboxing has not been nailed down yet. It probably requires another generation update before it's ready. I understand what it does and why, but at the moment, it's just too restrictive in a number of areas. Gideon___ 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
Sandbox issues
Further to my previous questions about sandboxing, I have now done more research and experimentation, and the more I find out about it the more questions it throws up. 1. I have a folder in the Application Support folder that my apps have been using to store and retrieve log data, but even if I add an entitlement relative to the home folder to /Library/Application Support/My Folder/ I still can't access it. I would have expected the sandbox to have a link to that folder created in the container folder, but it doesn't. I'm interested in knowing what I may have done wrong with this… 2. My application allows users to drag files on to the documents to create links to those files, and when they click the links, it uses NSWorkspace to open the files, which initially works, but then when the user restarts the application, and tries to open the file, it says that I don't have permission to view it. I think this is a fundamental limitation of the sandbox, and believe that there is no workaround for this. I would love to be proved wrong on this. 3. In my application, you can embed files as part of the file that is saved, and when you want to open the embedded file, it copies it to a temporary folder (using NSTemporaryDirectory() ), and uses NSWorkspace to open the file. This is being denied by the sandbox with a message deny file-issue-extension, and Quarantine resolution refused. So this gets blocked too… Is there some way around this? 4. When I try to launch my error reporting application from my main application, I get an error LSOpenFromURLSpec() returned -10827. Again, this only happens when using sandboxing - any clues? 5. I use CFPreferencesCopyAppValue to read information about the user's iPhoto preferences (so that I know where to look to load their iPhoto library), but this doesn't seem to work in the sandbox either - is there a workaround for this? All of these issues are show stoppers for me being able to use the sandbox, and with Apple declaring that all apps submitted to the app store must be sandboxed, this becomes a major issue. If any of these is not able to be resolved, then I will not be able to submit my app to the app store. If these issues are not resolved, I can think of quite a number of productivity applications that won't be able to be sandboxed for these same reasons. Any assistance with any of these issues will be greatly appreciated. Gideon ___ 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
Sandboxing question
Hi All I have an application that I am just moving to using sandboxing, and it currently (before sandboxing) writes log files to a folder in the Application Support folder, then if the program crashes, or the user wants to submit a defect report, it launches another application that picks up the log files and includes them in the report that is sent to our development team. I am planning to have both the main application and the defect reporting application sandboxed, but am wondering what the best approach is for the log files that are written by one application and read by the other. If I migrate the log folder from the Application Support folder to either of my other containers, it will not be accessible to the other application. I therefore think I need a file access temporary exception set up in both applications - would this be the best approach? If so, I will need to have it relative to the Application Support folder, but the only settings available are relative to the user's home folder, and I'm worried about hard coding a reference to /Library/Application Support in case there are localization issues - is this something I need to worry about? Is it always ~/Library/Application Support on all systems in all languages? Thanks Gideon ___ 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
Re: Core Data: Determine if managed object is deleted
Ooh, I had never noticed that - I just assumed that the method did what you would think. That may be the cause of an issue in my code. Thanks for the heads up. I would tend to try to avoid processPendingChanges if possible since it appears to be a rather expensive operation. Regards Gideon On 21/10/2011, at 8:37 AM, Jerry Krinock wrote: When I need to know whether or not a managed object is deleted, often I fall into the trap of trying -[NSManagedObject isDeleted], forgetting that its documentation states … … It may return NO at other times, particularly after the object has been deleted. … In other words, they should have named that method -isDeletedForSure, to indicate that the NO result is not reliable. Anyhow, today I fixed a problem by using this instead … BOOL isDeleted ; isDeleted = [object isDeleted] || ([object managedObjectContext] == nil) ; I'm not sure if it will work in all situations. I suppose that sending the magical -processPendingChanges would be another workaround. ___ 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
Re: Code signing issues
I had not, but now I have - it made no difference - I still got the same cryptic error message. Regards Gideon On 18/10/2011, at 11:29 AM, Graham Cox wrote: On 18/10/2011, at 12:27 PM, Gideon King wrote: • The system interprets the exit status and attempts to obtain a valid receipt. Assuming your application signing certificate is valid, the system installs a valid receipt for the application. The system may prompt you for your iTunes credentials. So have you added your app to your iTunes Connect account? --Graham ___ 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
Code signing issues
Hi, I'm trying to build App store receipt verification into my app. I went through the certificate setup process and believe I have all three keys and certificates successfully installed in my keychain. I then went into my build settings for my project to set the code signing identity. I assumed that the values there should match my Mac Developer setting in the debug build and the 3rd Party Mac Developer Application for release. This seems to be kind of implied in their naming and descriptions in the developer area, but I haven't seen any specific documentation to confirm this. Since neither of those exact settings were showing in the list to select from, I typed them in, and built it. The code signing appears to work - certainly there are no errors, but then I tried to run the application (signed with the Mac Developer cert) from the Finder. It first exits with code 173 due to their being no receipt (as expected), and then the system obviously goes to try to get the receipt, and I get a console message: store agent: Unsigned app (my application) So I thought I would try using the only identity listed in Xcode: 3rd Party Mac Developer Application, and again the build appeared to work (I did read somewhere that the cert selection just works on a prefix match), but this time, it first exits with code 173 as expected, and then asks me to log in to the app store, which I do with my development apple id, and it says This is not a Test User account. Please create a new account in the Sandbox environment. I have no idea what that message means for me to do. So I have the following questions: 1. When creating the certificates, 3 certs are created and added to the keychain - should I be able to see all three of them in Xcode? If so, what do I need to do to get them to show up there? 2. When I do a build using my Mac Developer cert, it doesn't give any errors when signing, but the Store seems to think that the app is not signed. What do I do about this? 3. When I sign with my 3rd Party Mac Developer Application, I get the message about it not being a test user account, and to create an account in the sandbox. Is this something I need to do in the App store, in my development settings, a different Apple ID, or on my computer? I'm finding it really hard to get all this working due to the lack of clear documentation and most of the previous QAs having been about the iTunes requirements which seem to be different. Any help to resolve these issues would be very much appreciated. Regards Gideon ___ 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
Re: Code signing issues
Thanks for the reply Graham. I'm using Xcode 4.2. Please see comments inline On 18/10/2011, at 9:55 AM, Graham Cox wrote: On 18/10/2011, at 10:34 AM, Gideon King wrote: So I have the following questions: 1. When creating the certificates, 3 certs are created and added to the keychain - should I be able to see all three of them in Xcode? If so, what do I need to do to get them to show up there? In the build settings, only one cert shows up, '3rd Party Mac Developer Application'. You can choose 'Other…' and type one in, but I have never needed to do this. OK, not sure why have three certs if only one ever shows up, but if always using the '3rd Party Mac Developer Application' for all your builds works for you, I'll try the same. 2. When I do a build using my Mac Developer cert, it doesn't give any errors when signing, but the Store seems to think that the app is not signed. What do I do about this? At what stage does the Store think it isn't signed? I do Archive (in Xcode 3.x this was Build Archive), then in the Organiser I click 'Validate'. The Organizer should package the app and sign the package using the '3rd Party Mac Developer Installer' cert. If you click 'Share' you can see this cert in the 'Identity' pop-up. Using this, you can create the signed package on disk and test the installation without having to attempt a submission to the Store. I haven't got my head around the whole archive thing yet (or the Organizer for that matter). Perhaps this is something I need to look into next - I started looking at the documentation before but just got confused as to the purpose of the organizer and the build and archive options. I have just been building using Command+R and running the app from the Finder. So when I do that, the first time it tries to run, it finds that there is no receipt, and launch services (or whatever it is that handles this behind the scenes) must ask the store for a receipt, but it says it can't do so because the app is not signed. 3. When I sign with my 3rd Party Mac Developer Application, I get the message about it not being a test user account, and to create an account in the sandbox. Is this something I need to do in the App store, in my development settings, a different Apple ID, or on my computer? I have no idea about this, sorry. Never seen it myself. Sounds like you might not have the installer certificate set up - it's separate and different from the app cert. You also need the WWDC cert, I'm not sure exactly where that comes into play, it needs to be in the keychain but it's never directly used at any step of the deployment procedure. Yes, I have an installer cert, and have just installed the WWDR cert, but that didn't seem to make any difference. Also, I'm worried about the CFBundleShortVersionString that is used for validation of the receipt. As every update will have a different version string, but the receipt will presumably have been created for the version that the user initially purchased, will this still work? Will they get an updated receipt when they download a new version of the app from the store? Thanks again Gideon ___ 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
Re: Code signing issues
For Mac development, it appears you need a Mac Developer cert, a 3rd Party Mac Developer Installer cert, and a 3rd Party Mac Developer Application cert. I have these in my keychain, however only 3rd Party Mac Developer Application shows up in Xcode. I can understand that the installer one doesn't since it would be used only to sign the installer in the archive operation, but I thought the Mac Developer one was supposed to show up for use when doing development builds. Regards Gideon On 18/10/2011, at 10:35 AM, Philip Vallone wrote: Hi, I develop for the iphone, but If the process is the same for a Mac App, you should have 2 certificates in Key chain 1. Mac Developer 2. Mac Distribution ___ 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
Re: Possible causes of attempted layout while textStorage is editing?
Here is the complete stack trace 2011-08-31 15:25:11 -0400[5]: ERROR - 14764064ms (NMApplication.m:81) -[NMApplication handleRunException:] - NSException Exception encountered: -[AAMainEditingLayoutManager _fillLayoutHoleForCharacterRange:desiredNumberOfLines:isSoft:] *** attempted layout while textStorage is editing. It is not valid to cause the layoutManager to do layout while the textStorage is editing (ie the textStorage has been sent a beginEditing message without a matching endEditing.) 2011-08-31 15:25:11 -0400[5]: 0 CoreFoundation 0x7fff8b3e0986 __exceptionPreprocess + 198 2011-08-31 15:25:11 -0400[5]: 1 libobjc.A.dylib 0x7fff8bb11d5e objc_exception_throw + 43 2011-08-31 15:25:11 -0400[5]: 2 CoreFoundation 0x7fff8b3e07ba +[NSException raise:format:arguments:] + 106 2011-08-31 15:25:11 -0400[5]: 3 CoreFoundation 0x7fff8b3e0744 +[NSException raise:format:] + 116 2011-08-31 15:25:11 -0400[5]: 4 AppKit 0x7fff89f1d0bc -[NSLayoutManager(NSPrivate) _fillLayoutHoleForCharacterRange:desiredNumberOfLines:isSoft:] + 432 2011-08-31 15:25:11 -0400[5]: 5 AppKit 0x7fff89f1ccce -[NSLayoutManager(NSPrivate) _fillLayoutHoleAtIndex:desiredNumberOfLines:] + 203 2011-08-31 15:25:11 -0400[5]: 6 AppKit 0x7fff89f1af46 _NSFastFillAllLayoutHolesUpToEndOfContainerForGlyphIndex + 500 2011-08-31 15:25:11 -0400[5]: 7 AppKit 0x7fff89f1ac5e -[NSLayoutManager textContainerForGlyphAtIndex:effectiveRange:] + 223 2011-08-31 15:25:11 -0400[5]: 8 AppKit 0x7fff89f1aa42 -[NSLayoutManager glyphRangeForTextContainer:] + 304 2011-08-31 15:25:11 -0400[5]: 9 NovaMind5 0x00010014453c -[AARichTextModel recalculateSize] + 1640 2011-08-31 15:25:11 -0400[5]: 10 NMFoundation 0x000100476f2f -[MAKVObservation observeValueForKeyPath:ofObject:change:context:] + 122 2011-08-31 15:25:11 -0400[5]: 11 Foundation 0x7fff8b83118a NSKeyValueNotifyObserver + 387 2011-08-31 15:25:11 -0400[5]: 12 Foundation 0x7fff8b852387 NSKeyValueDidChange + 486 2011-08-31 15:25:11 -0400[5]: 13 Foundation 0x7fff8b7fea2f -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] + 130 2011-08-31 15:25:11 -0400[5]: 14 CoreData 0x7fff8f7e7007 _PF_ManagedObject_DidChangeValueForKeyIndex + 103 2011-08-31 15:25:11 -0400[5]: 15 CoreData 0x7fff8f7e6558 _sharedIMPL_setvfk_core + 264 2011-08-31 15:25:11 -0400[5]: 16 NovaMind5 0x00010016118e -[AATopicShapeModelBase setNewWidthForMainRect:fromOldWidth:] + 2657 2011-08-31 15:25:11 -0400[5]: 17 NovaMind5 0x0001001606b4 -[AATopicShapeModelBase setNewSizeForMainRect:fromOldSize:] + 130 2011-08-31 15:25:11 -0400[5]: 18 NovaMind5 0x0001001882e2 -[AAMapView(mouse) resizeTopicNodeVisual:usingHandle:withEvent:] + 2287 2011-08-31 15:25:11 -0400[5]: 19 NovaMind5 0x000100187721 -[AAMapView(mouse) mouseDown:] + 5283 2011-08-31 15:25:11 -0400[5]: 20 AppKit 0x7fff89f4066e -[NSWindow sendEvent:] + 6280 2011-08-31 15:25:11 -0400[5]: 21 AppKit 0x7fff89ed8f19 -[NSApplication sendEvent:] + 5665 2011-08-31 15:25:11 -0400[5]: 22 OmniAppKit 0x000100574900 -[OAApplication sendEvent:] + 144 2011-08-31 15:25:11 -0400[5]: 23 AppKit 0x7fff89e6f42b -[NSApplication run] + 548 2011-08-31 15:25:11 -0400[5]: 24 OmniAppKit 0x000100571774 -[OAApplication run] + 132 2011-08-31 15:25:11 -0400[5]: 25 AppKit 0x7fff8a0ed52a NSApplicationMain + 867 2011-08-31 15:25:11 -0400[5]: 26 NovaMind5 0x00011688 start + 52 2011-08-31 15:25:11 -0400[5]: 27 ??? 0x0002 0x0 + 2 There are no other console log messages before this. Regards Gideon On 01/09/2011, at 8:02 AM, Martin Wierschin wrote: _fillLayoutHoleForChar acterRange:desiredNumberOfLines:isSoft: *** attempted layout while textStorage is editing. It is not valid to cause the layoutManager to do layout while the textStorage is editing (ie the textStorage has been sent a beginEditing message without a matching endEditing.) ... I have not called begin editing or end editing at all, and there are no unmatched begin and end editing calls in my code, and there are no other threads editing the text storage. Nothing that I can see that would trigger this. That might be, but perhaps the begin/end editing calls are made for you automatically as part of some bigger operation your code (or the user) requested. For example, it might be that Apple's implementation of -[NSTextView changeFont:] wraps its changes in begin/end editing. The offending line of code is: [layoutManager glyphRangeForTextContainer:[[layoutManager textContainers] firstObject]]; When are you requesting this layout exactly? Can you post the full backtrace for the exception? I'd ask the user to submit a recent console log to see if there have been any other errors. It could be that an earlier exception is unwinding the stack during text storage editing, leaving the storage in its invalid state. You might also make sure the user isn't running any text
Re: Possible causes of attempted layout while textStorage is editing?
Hmmm, I see that there is a place in my code where they can be editing the text view, and then they mouse down in its containing view, and that triggers an event to be posted through NSApp at the end of the event queue and an autorelease being sent to the enclosing view which would eventually result in the text view being removed, while that event could trigger a glyphRangeForTextContainer call. I guess that might leave things open to the possibility of something still being edited when I am working with the text. I think I'll try using ensureLayoutForTextContainer: and then removing the text view from its superview, so nothing else can possibly happen to the text after that (I hope...) Thanks for your help with this Jonathan. Gideon On 01/09/2011, at 8:52 PM, jonat...@mugginsoft.com wrote: Is it possible that the user is editing the textview when this code is triggered? From the looks of the trace you react directly to the mouseDown event in another view which might not give NSTextView opportunity to conclude its edit. I would schedule my layout manipulation on the runloop and see if that helps. Regards Jonathan ___ 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
Possible causes of attempted layout while textStorage is editing?
I am receiving occasional reports from customers who are seeing this error: _fillLayoutHoleForChar acterRange:desiredNumberOfLines:isSoft: *** attempted layout while textStorage is editing. It is not valid to cause the layoutManager to do layout while the textStorage is editing (ie the textStorage has been sent a beginEditing message without a matching endEditing.) 0 CoreFoundation 0x7fff822847b4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x7fff883dbf03 objc_exception_throw + 45 2 CoreFoundation 0x7fff822845d7 +[NSException raise:format:arguments:] + 103 3 CoreFoundation 0x7fff82284564 +[NSException raise:format:] + 148 4 AppKit 0x7fff8192ce00 -[NSLayoutManager(NSPrivate) _fillLayoutHoleForCharacterRange:desiredNumberOfLines:isSoft:] + 643 5 AppKit 0x7fff8192c9b0 -[NSLayoutManager(NSPrivate) _fillLayoutHoleAtIndex:desiredNumberOfLines:] + 211 6 AppKit 0x7fff8192b62f _NSFastFillAllLayoutHolesUpToEndOfContainerForGlyphIndex + 679 7 AppKit 0x7fff8192b1a5 -[NSLayoutManager textContainerForGlyphAtIndex:effectiveRange:] + 243 8 AppKit 0x7fff81840c12 -[NSLayoutManager glyphRangeForTextContainer:] + 286 The offending line of code is: [layoutManager glyphRangeForTextContainer:[[layoutManager textContainers] firstObject]]; (with the intention of causing layout so I can get the usedRectForTextContainer) ...but during this method, the only thing I have done is set the text container size to a user defined width (never less than 10) and a height of 1.0e7, and then called the glyphRangeForTextContainer method. I have not called begin editing or end editing at all, and there are no unmatched begin and end editing calls in my code, and there are no other threads editing the text storage. Nothing that I can see that would trigger this. I have not been able to reproduce the problem here. I'd be interested in any suggestions of things to look for which may be triggering this error. Thanks Gideon ___ 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
Exception getting shared font panel
I've had a report from a user of the following segv exception on 10.7.1: Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 com.apple.CoreText 0x7fff94955f89 _ZL39CTFontDescriptorsCopyAttributesInternalPK9__CFArrayPK7__CFSetjb + 270 1 com.apple.CoreText 0x7fff94955e5a CTFontDescriptorsCopyAttribute + 71 2 com.apple.CoreText 0x7fff94955a9b TCollection::CopyFontAttribute(__CFString const*, unsigned int) const + 41 3 com.apple.AppKit 0x7fff8c77c365 -[NSFontManager _availableFontFamiliesForCollectionName:] + 105 4 com.apple.AppKit 0x7fff8c77a20e -[NSFontManager _familyNamesForCollection:] + 46 5 com.apple.AppKit 0x7fff8c774a06 -[NSFontPanel numberOfRowsInTableView:] + 112 6 com.apple.AppKit 0x7fff8c6600eb -[NSTableView _uncachedNumberOfRows] + 125 7 com.apple.AppKit 0x7fff8c5faa8f -[_NSTableRowHeightStorage numberOfRows] + 63 8 com.apple.AppKit 0x7fff8c5faa4e -[NSTableView numberOfRows] + 40 9 com.apple.AppKit 0x7fff8c661ce3 -[NSTableView _verifySelectionIsOK] + 135 10 com.apple.AppKit 0x7fff8c661913 -[NSTableView _tileAndRedisplayAll] + 358 11 com.omnigroup.OmniAppKit 0x00010058fea4 -[NSTableView(OAColumnConfigurationExtensions) _configurableColumnReplacementReloadData] + 20 12 com.apple.AppKit 0x7fff8c77bad0 -[NSFontPanel _chooseCollection:] + 1087 13 com.apple.AppKit 0x7fff8c77769a -[NSFontPanel _setup] + 1650 14 com.apple.AppKit 0x7fff8c76fbee -[NSFontPanel initWithContentRect:styleMask:backing:defer:] + 765 15 com.apple.AppKit 0x7fff8c76f8ea -[NSPanel init] + 99 16 com.apple.AppKit 0x7fff8c76f76f +[NSFontPanel sharedFontPanel] + 87 Any ideas what could cause this, or whether there is anything I can do to avoid the issue? It seems to be very rare, but any crash makes my software look bad... Thanks Gideon ___ 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
Re: Exception getting shared font panel
Thanks, Peter. How did you work out which was corrupted? Was it just a matter of elimination? Binary search? On 22/08/2011, at 11:02 PM, P Teeson wrote: Does your user have a corrupted Font? I had something somewhat similar with FreeSans.ttf and LibreOffice. Took a while to track down which one it was. Peter ___ 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
Save panel exception: parentForItemsInColumn: is not supported for browsers with matrix delegates
Hi, I have the following code to run a save panel: NSSavePanel *sp = [NSSavePanel savePanel]; [sp setExtensionHidden:NO]; [sp setTitle:NSLocalizedString(@Export image to PNG file, @)]; [sp setRequiredFileType:@png]; [sp setAccessoryView:bitmapAccessoryView]; [sp beginSheetModalForWindow:[document windowForSheet] completionHandler:^(NSInteger result) { if (result == NSOKButton) { [self exportBitmapToFile:[[sp URL] path] usingBitmapImageType:NSPNGFileType]; } [self cleanupFromExportOfType:exportType]; }]; When running on Lion, some users are getting the following exception: parentForItemsInColumn: is not supported for browsers with matrix delegates The trace is as follows: 0 CoreFoundation 0x7fff8608c986 __exceptionPreprocess + 198 1 libobjc.A.dylib 0x7fff8581ed5e objc_exception_throw + 43 2 AppKit 0x7fff8b854ecd -[NSBrowser itemAtIndexPath:] + 0 3 FinderKit 0x7fff89456843 -[FI_TColumnView addColumn] + 110 4 AppKit 0x7fff8b83c665 -[NSBrowser loadColumnZero] + 103 5 FinderKit 0x7fff89459f5b -[FI_TColumnViewController openTarget] + 1228 6 FinderKit 0x7fff89498db7 -[FIFinderViewGutsController commonFinishInitialization] + 103 7 FinderKit 0x7fff89495629 -[FIFinderViewGutsController buildBrowserView:] + 167 8 FinderKit 0x7fff89495af1 -[FIFinderViewGutsController setTargetPath:withViewStyle:] + 635 9 FinderKit 0x7fff894964a4 -[FIFinderViewGutsController setViewStyle:] + 439 10 Foundation 0x7fff8a794706 _NSSetObjectValueAndNotify + 261 11 FinderKit 0x7fff8949b5b9 -[FIFinderView setViewStyle:] + 253 12 AppKit 0x7fff8ba893ae -[NSSavePanel beginSheetModalForWindow:completionHandler:] + 56 13 NovaMind5 0x000100098f80 -[NMExporter exportDocument:toFileOfType:] + 6080 I am unable to reproduce the problem here, but have had the problem reported by several people running Lion. Is there something I am doing wrong in my code? Could this be a Lion bug? Thanks Gideon ___ 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
Re: recomendations for creating a beta with date to expire
I agree, and would like to add that I have done this, and did encounter an issue where people had an expired beta and therefore couldn't use the program until they had downloaded an update, and were annoyed by that - especially if they were on the road and had no internet connection. Although I explained to them the benefits to all parties of them running the latest beta, it was still an issue. So if you're going to be doing an extended beta program, you might like to think about either having an expiry date that is always far enough in the future so that people who download a beta are never in a situation where they would have to download another version in just a few days time. And for the internet issue, maybe you could have something that would allow them to use the beta beyond the expiry for a couple of weeks if they don't have an internet connection, but require them to download the next beta, or release version if they have an internet connection. Obviously it depends on your exact situation, but I thought it worthwhile to mention my experiences of doing this sort of thing in case it is of some use to you. Regards Gideon On 15/08/2011, at 8:44 AM, Nick Zitzmann wrote: I would just use the system clock. Most people aren't going to change their clock to run something that's time-limited that has expired, especially if that would interfere with other applications, and the people who will do that probably won't buy the final product anyway. And requiring a network connection to run software that normally doesn't need a network connection, such as your proposal, is a major inconvenience for a lot of people. Restrictive DRM inconveniences people, and really restrictive DRM drives people to piracy if the pirated edition is more convenient to use than the legit version. ___ 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
What could cause a fast enumeration mutation error in updating tracking areas?
Hi, I have a problem where a few users of my program are getting the following exception: 0 CoreFoundation 0x7fff862df7b4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x7fff84b0ff03 objc_exception_throw + 45 2 CoreFoundation 0x7fff863375bf __NSFastEnumerationMutationHandler + 303 3 AppKit 0x7fff83ec8660 -[NSView trackingAreas] + 271 4 AppKit 0x7fff83f1d025 -[NSView(NSInternal) _updateTrackingAreas] + 249 5 CoreFoundation 0x7fff86259d6e CFArrayApplyFunction + 222 6 AppKit 0x7fff83f1d413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 7 CoreFoundation 0x7fff86259d6e CFArrayApplyFunction + 222 8 AppKit 0x7fff83f1d413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 9 CoreFoundation 0x7fff86259d6e CFArrayApplyFunction + 222 10 AppKit 0x7fff83f1d413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 11 CoreFoundation 0x7fff86259d6e CFArrayApplyFunction + 222 12 AppKit 0x7fff83f1d413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 13 CoreFoundation 0x7fff86259d6e CFArrayApplyFunction + 222 14 AppKit 0x7fff83f1d413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 15 CoreFoundation 0x7fff86259d6e CFArrayApplyFunction + 222 16 AppKit 0x7fff83f1d413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 17 CoreFoundation 0x7fff86259d6e CFArrayApplyFunction + 222 18 AppKit 0x7fff83f1d413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 19 AppKit 0x7fff83f1ce28 _handleInvalidCursorRectsNote + 451 20 CoreFoundation 0x7fff8629eb37 __CFRunLoopDoObservers + 519 21 CoreFoundation 0x7fff8627a464 __CFRunLoopRun + 468 22 CoreFoundation 0x7fff86279dbf CFRunLoopRunSpecific + 575 23 HIToolbox 0x7fff854f774e RunCurrentEventLoopInMode + 333 24 HIToolbox 0x7fff854f7553 ReceiveNextEventCommon + 310 25 HIToolbox 0x7fff854f740c BlockUntilNextEventMatchingListInMode + 59 26 AppKit 0x7fff83ef1eb2 _DPSNextEvent + 708 27 AppKit 0x7fff83ef1801 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 155 28 AppKit 0x7fff83eb768f -[NSApplication run] + 395 29 OmniAppKit 0x00010055c774 -[OAApplication run] + 132 30 AppKit 0x7fff83eb03b0 NSApplicationMain + 364 31 NovaMind5 0x00012018 start + 52 32 ??? 0x0002 0x0 + 2 But all the tracking areas I am adding are done in the initialization of the views or awakeFromNib, and not updated after that. I do use tracking rects and tooltip rects, and wonder whether they use tracking areas behind the scenes, and whether there are specific places in the code I need to avoid changing them. I haven't been able to reproduce the problem here, so can't catch it in the act so far. Any suggestions as to what to look for? Thanks Gideon ___ 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
Re: What could cause a fast enumeration mutation error in updating tracking areas?
Thanks for the suggestion Raleigh, but no, there are no other threads involved in any of the tracking area code, and looking at the crash report in more detail, it shows that the array that is being mutated has 27 items in it - the views I create only have one or two tracking areas that I add. I do have quite a few tracking rects but can't find a place where I would have 27 of them on a view. I went through all my code looking for where I was using tooltips, and I found one suspicious looking bit of code, where in certain circumstances my drawRect: could call a method which would lead to removeAllTooltips and addToolTipRect:owner:userData: to be called. Seeing as this looks like the most likely cause (assuming the implementation uses tracking areas behind the scenes), and it's probably not a good thing to be doing during drawRect, I'll shift the code to be called outside drawRect: and see if the error goes away. There are a few other places where tooltip rects could be updated and there could be 27 of them, but although in some cases the initiating caller may have come from another thread, it always calls back to the main thread for this operation, so I'm pretty sure we're OK there. I also thought that cursor rects may be using tracking areas behind the scenes, so checked them too, but they are all done through the resetCursorRects mechanism, so presumably that would only be called when it is safe to do so. So maybe the drawRect: one was it - I guess I'll know in a few days when I roll it out to my testers and see if I get the error again. Regards Gideon On 30/07/2011, at 2:14 AM, Raleigh Ledet wrote: Do you have another thread that is doing something with tracking areas? -raleigh On Jul 28, 2011, at 11:33 PM, Gideon King wrote: Hi, I have a problem where a few users of my program are getting the following exception: 0 CoreFoundation 0x7fff862df7b4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x7fff84b0ff03 objc_exception_throw + 45 2 CoreFoundation 0x7fff863375bf __NSFastEnumerationMutationHandler + 303 3 AppKit 0x7fff83ec8660 -[NSView trackingAreas] + 271 4 AppKit 0x7fff83f1d025 -[NSView(NSInternal) _updateTrackingAreas] + 249 But all the tracking areas I am adding are done in the initialization of the views or awakeFromNib, and not updated after that. I do use tracking rects and tooltip rects, and wonder whether they use tracking areas behind the scenes, and whether there are specific places in the code I need to avoid changing them. I haven't been able to reproduce the problem here, so can't catch it in the act so far. Any suggestions as to what to look for? Thanks Gideon ___ 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
Re: A trap with full screen in Lion
Thanks for that suggestion Martin - I hadn't thought of looking at parent window. I kind of think that is an implementation detail behind the scenes that we shouldn't have to worry about in our code, so will file a bug report about it as Corbin suggested, and hopefully it will either be made to return the same window controller as if the window hadn't been swapped out from under you, or the documentation changed to make it very clear of the existence of this issue (to me, the former solution would seem by far the best one). Regards Gideon On 30/07/2011, at 9:44 AM, Martin Wierschin wrote: I just came across a bit of an issue with the full screen mode in Lion: if you have a view and use [[self window] windowController] to get at your window controller, it will return nil in full screen mode. The window gets swapped out with an NSToolbarFullScreenWindow, which doesn't have a window controller set. Thanks for letting us know about this potential issue. I have found that [[NSApp mainWindow] windowController] returns the right thing, which is sufficient for my needs It looks like you can also get to the proper window controller via: [[[toolbarItemView window] parentWindow] windowController], which seems like a safer solution. Best, ~Martin ___ 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
A trap with full screen in Lion
I just came across a bit of an issue with the full screen mode in Lion: if you have a view and use [[self window] windowController] to get at your window controller, it will return nil in full screen mode. The window gets swapped out with an NSToolbarFullScreenWindow, which doesn't have a window controller set. I haven't checked but assume this will also apply to things like delegates etc too. And if you were relying on something in a custom NSWindow subclass, that would be gone... I have found that [[NSApp mainWindow] windowController] returns the right thing, which is sufficient for my needs at the moment, seeing as it's UI level and working on the current document. I don't know whether there are any other issues with the full window but I thought it would be interesting to bring up this issue for discussion in case there are further implications. Regards Gideon ___ 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
Re: A trap with full screen in Lion
Sorry - missed an important bit of info - this applies for a view that is in the toolbar. So far as I am aware, it doesn't apply to views in your main window (at least my views in my main window still appear to always return the right thing). On 29/07/2011, at 12:38 PM, Gideon King wrote: I just came across a bit of an issue with the full screen mode in Lion: if you have a view and use [[self window] windowController] to get at your window controller, it will return nil in full screen mode. The window gets swapped out with an NSToolbarFullScreenWindow, which doesn't have a window controller set. I haven't checked but assume this will also apply to things like delegates etc too. And if you were relying on something in a custom NSWindow subclass, that would be gone... I have found that [[NSApp mainWindow] windowController] returns the right thing, which is sufficient for my needs at the moment, seeing as it's UI level and working on the current document. I don't know whether there are any other issues with the full window but I thought it would be interesting to bring up this issue for discussion in case there are further implications. Regards Gideon ___ 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
NSView trackingAreas and fast enumeration mutation
Hi All, I'm not sure how to track down this issue. A few users of my application have reported the following crash. 0 CoreFoundation 0x7fff8045e7b4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x7fff8354cf03 objc_exception_throw + 45 2 CoreFoundation 0x7fff804b65bf __NSFastEnumerationMutationHandler + 303 3 AppKit 0x7fff853df660 -[NSView trackingAreas] + 271 4 AppKit 0x7fff85434025 -[NSView(NSInternal) _updateTrackingAreas] + 249 5 CoreFoundation 0x7fff803d8d6e CFArrayApplyFunction + 222 6 AppKit 0x7fff85434413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 7 CoreFoundation 0x7fff803d8d6e CFArrayApplyFunction + 222 8 AppKit 0x7fff85434413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 9 CoreFoundation 0x7fff803d8d6e CFArrayApplyFunction + 222 10 AppKit 0x7fff85434413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 11 CoreFoundation 0x7fff803d8d6e CFArrayApplyFunction + 222 12 AppKit 0x7fff85434413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 13 CoreFoundation 0x7fff803d8d6e CFArrayApplyFunction + 222 14 AppKit 0x7fff85434413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 15 CoreFoundation 0x7fff803d8d6e CFArrayApplyFunction + 222 16 AppKit 0x7fff85434413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 17 CoreFoundation 0x7fff803d8d6e CFArrayApplyFunction + 222 18 AppKit 0x7fff85434413 -[NSView(NSInternal) _updateTrackingAreas] + 1255 19 AppKit 0x7fff85433e28 _handleInvalidCursorRectsNote + 451 20 CoreFoundation 0x7fff8041db37 __CFRunLoopDoObservers + 519 21 CoreFoundation 0x7fff803f9464 __CFRunLoopRun + 468 22 CoreFoundation 0x7fff803f8dbf CFRunLoopRunSpecific + 575 23 HIToolbox 0x7fff876f17ee RunCurrentEventLoopInMode + 333 24 HIToolbox 0x7fff876f15f3 ReceiveNextEventCommon + 310 25 HIToolbox 0x7fff876f14ac BlockUntilNextEventMatchingListInMode + 59 26 AppKit 0x7fff85408eb2 _DPSNextEvent + 708 27 AppKit 0x7fff85408801 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 155 28 AppKit 0x7fff853ce68f -[NSApplication run] + 395 29 OmniAppKit 0x00010056f774 -[OAApplication run] + 132 30 AppKit 0x7fff853c73b0 NSApplicationMain + 364 31 NovaMind5 0x00011888 start + 52 So it appears that while it is running the trackingAreas method of NSView, I must be adding or removing a tracking area. I looked in my code and found: - I have some views that call addTrackingArea in initWithFrame: - I have a controller that creates a view and then calls addTrackingArea on that view. - I have an NSControl subclass that is instantiated in a nib and calls addTrackingArea in its awakeFromNib. I never call removeTrackingArea or updateTrackingAreas in my code, and have not overridden any of the tracking area related methods in my views. I have not been able to reproduce the problem in a test environment, so don't have anything to set a breakpoint on. I'm wondering is any of the tracking rect or cursor rect methods might be using tracking areas behind the scenes, and maybe there is some time when I can't add, remove or invalidate them? I have looked through my code for anything suspicious there, and haven't found anything, but then I'm not exactly sure what I'm looking for. The crashes I have seen so far have all been on Snow Leopard, but given the youth of Lion I can't rule out it being present there too. Any debugging suggestions would be very welcome. Regards Gideon ___ 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
Re: Why are these objects still faults?
Interesting idea. The structure is that I have a grandparent with just a single attribute, a parent which has parent and children (self referential) relationships, and a couple of one way to-one self referential relationships on the topic node object itself, so there are a few things going on there ...but the relationship to view is a simple to-one relationship with an inverse, so I would have thought it would be easy to fetch. Also I did a check on the topic relationship (to-one out and to-many in) which was supposed to be pre-fetched too, and they were all faults too. Regards Gideon On 19/07/2011, at 11:05 PM, Heath Borders wrote: Is your topic node self-referential? Maybe CoreData doesn't prefetch circular references. ___ 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
Why are these objects still faults?
Hi, I'm doing a fetch of some objects like this: entity = [NSEntityDescription entityForName:kNMTopicNodeEntityKey inManagedObjectContext:[self managedObjectContext]]; request = [[NSFetchRequest alloc] init]; [request setEntity:entity]; [request setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@topic,@view, nil]]; results = [[self managedObjectContext] executeFetchRequest:request error:error]; if (results) { log4Debug(@Loaded %d topic nodes, [results count]) } [request release]; The log tells me id loaded my 2,000 topics. Then later, I do the following: // This is an array of topic nodes - the things that I have just fetched NSArray *allTopics = [map.rootTopicNode allDescendantTopicNodesIncludingSelf]; NSSortDescriptor *sd = nil; if (floor(NSAppKitVersionNumber) NSAppKitVersionNumber10_5) { sd = [NSSortDescriptor sortDescriptorWithKey:@view.zIndex ascending:YES]; } else { sd = [[[NSSortDescriptor alloc] initWithKey:@view.zIndex ascending:YES] autorelease]; } for (NMTopicNodeMO *node in [allTopics sortedArrayUsingDescriptors:[NSArray arrayWithObject:sd]]) { Do stuff } But this was running really slowly, so I commented out the above couple of lines, and did the following check: for (NMTopicNodeMO *ttn in allTopics) { if ([ttn isFault]) { log4Debug(@Node is a fault); } if ([ttn.view isFault]) { log4Debug(@View is fault); } } ...and it told me that the view was a fault for every topic node (but none of the topic nodes were faults)! But I told it to pre-fetch the view relationship. Any ideas why it wouldn't work? TIA Gideon ___ 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