diff --git a/Frameworks/document/src/OakDocument.mm b/Frameworks/document/src/OakDocument.mm index a8385f75..fd336582 100644 --- a/Frameworks/document/src/OakDocument.mm +++ b/Frameworks/document/src/OakDocument.mm @@ -5,6 +5,7 @@ #import "Printing.h" #import "watch.h" #import "merge.h" +#import #import #import #import @@ -175,7 +176,9 @@ NSString* OakDocumentBookmarkIdentifier = @"bookmark"; NSHashTable* _documentEditors; scm::status::type _scmStatus; - OakFileIconImage* _icon; + NSImage* _icon; + BOOL _iconIsModified; + BOOL _iconIsOnDisk; NSString* _cachedDisplayName; std::unique_ptr _buffer; @@ -1109,18 +1112,12 @@ NSString* OakDocumentBookmarkIdentifier = @"bookmark"; - (NSImage*)icon { // Ideally we would nil the icon in setModified: or setOnDisk: but we don’t implement these - if(_icon && (_icon.isModified != self.isDocumentEdited || _icon.exists != self.isOnDisk)) - _icon = nil; - - if(!_icon) + if(!_icon || (_iconIsModified != self.isDocumentEdited || _iconIsOnDisk != self.isOnDisk)) { self.observeSCMStatus = YES; - - _icon = [[OakFileIconImage alloc] initWithSize:NSMakeSize(16, 16)]; - _icon.path = _virtualPath ?: _path; - _icon.scmStatus = _scmStatus; - _icon.modified = self.isDocumentEdited; - _icon.exists = self.isOnDisk; + _icon = CreateIconImageForURL([NSURL fileURLWithPath:(_virtualPath ?: _path) isDirectory:NO], self.isDocumentEdited, !self.isOnDisk, NO, NO, _scmStatus); + _iconIsModified = self.isDocumentEdited; + _iconIsOnDisk = self.isOnDisk; } return _icon; } diff --git a/Frameworks/document/target b/Frameworks/document/target index bf9979af..fc309147 100644 --- a/Frameworks/document/target +++ b/Frameworks/document/target @@ -1,5 +1,5 @@ TESTS = tests/t_*.{mm,cc} SOURCES = src/*.{mm,cc} EXPORT = src/OakDocument.h src/OakDocumentController.h src/OakDocumentEditor.h -LINK += BundlesManager OakAppKit OakFoundation OakSystem authorization buffer cf command editor encoding file io layout ns plist regexp scope selection settings text theme undo +LINK += BundlesManager FileBrowser OakAppKit OakFoundation OakSystem authorization buffer cf command editor encoding file io layout ns plist regexp scope selection settings text theme undo FRAMEWORKS = ApplicationServices