From 5b892e2b638de69fbd83ab5979972be6bbea0ede Mon Sep 17 00:00:00 2001 From: Chinh Nguyen Date: Thu, 26 Oct 2017 08:19:49 +1100 Subject: Backport: Bug [#1979]. Fix Cocoa hang when Scintilla loaded from SMB share on macOS 10.13. Backport of changeset 6406:c8b0846ddcc2. --- cocoa/InfoBar.mm | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'cocoa') diff --git a/cocoa/InfoBar.mm b/cocoa/InfoBar.mm index 9f8b37d74..c7061e6f7 100644 --- a/cocoa/InfoBar.mm +++ b/cocoa/InfoBar.mm @@ -88,6 +88,10 @@ NSBundle* bundle = [NSBundle bundleForClass: [InfoBar class]]; NSString* path = [bundle pathForResource: @"info_bar_bg" ofType: @"tiff" inDirectory: nil]; + // macOS 10.13 introduced bug where pathForResource: fails on SMB share + if (path == nil) { + path = [[bundle bundlePath] stringByAppendingPathComponent: @"Resources/info_bar_bg.tiff"]; + } mBackground = [[NSImage alloc] initWithContentsOfFile: path]; if (![mBackground isValid]) NSLog(@"Background image for info bar is invalid."); @@ -242,11 +246,13 @@ static float BarFontSize = 10.0; { // Since the background is seamless, we don't need to take care for the proper offset. // Simply tile the background over the invalid rectangle. - NSPoint target = {rect.origin.x, 0}; - while (target.x < rect.origin.x + rect.size.width) - { - [mBackground drawAtPoint: target fromRect: NSZeroRect operation: NSCompositeCopy fraction: 1]; - target.x += mBackground.size.width; + if (mBackground.size.width != 0) { + NSPoint target = {rect.origin.x, 0}; + while (target.x < rect.origin.x + rect.size.width) + { + [mBackground drawAtPoint: target fromRect: NSZeroRect operation: NSCompositeCopy fraction: 1]; + target.x += mBackground.size.width; + } } // Draw separator lines between items. -- cgit v1.2.3