diff options
-rw-r--r-- | cocoa/PlatCocoa.mm | 73 |
1 files changed, 19 insertions, 54 deletions
diff --git a/cocoa/PlatCocoa.mm b/cocoa/PlatCocoa.mm index 4cdf6716d..a0532efc3 100644 --- a/cocoa/PlatCocoa.mm +++ b/cocoa/PlatCocoa.mm @@ -1524,13 +1524,10 @@ public: } }; -// Map from icon type to an NSImage* -typedef std::map<NSInteger, NSImage*> ImageMap; - class ListBoxImpl : public ListBox, IListBox { private: - ImageMap images; + NSMutableDictionary *images; int lineHeight; bool unicodeMode; int desiredVisibleRows; @@ -1552,6 +1549,7 @@ private: public: ListBoxImpl() : + images(nil), lineHeight(10), unicodeMode(false), desiredVisibleRows(5), @@ -1567,8 +1565,11 @@ public: doubleClickAction(nullptr), doubleClickActionData(nullptr) { + images = [[NSMutableDictionary alloc] init]; + } + ~ListBoxImpl() override { + [images release]; } - ~ListBoxImpl() override {} // ListBox methods void SetFont(Font& font) override; @@ -1751,19 +1752,15 @@ void ListBoxImpl::Append(char* s, int type) maxItemWidth = width; [colText setWidth: maxItemWidth]; } - ImageMap::iterator it = images.find(type); - if (it != images.end()) + NSImage *img = images[@(type)]; + if (img) { - NSImage* img = it->second; - if (img) + XYPOSITION widthIcon = static_cast<XYPOSITION>(img.size.width); + if (widthIcon > maxIconWidth) { - XYPOSITION widthIcon = static_cast<XYPOSITION>(img.size.width); - if (widthIcon > maxIconWidth) - { - [colIcon setHidden: NO]; - maxIconWidth = widthIcon; - [colIcon setWidth: maxIconWidth]; - } + [colIcon setHidden: NO]; + maxIconWidth = widthIcon; + [colIcon setWidth: maxIconWidth]; } } } @@ -1846,17 +1843,8 @@ void ListBoxImpl::RegisterImage(int type, const char* xpm_data) { XPM xpm(xpm_data); NSImage* img = ImageFromXPM(&xpm); - [img retain]; - ImageMap::iterator it=images.find(type); - if (it == images.end()) - { - images[type] = img; - } - else - { - [it->second release]; - it->second = img; - } + [images setObject:img forKey:@(type)]; + [img release]; } void ListBoxImpl::RegisterRGBAImage(int type, int width, int height, const unsigned char *pixelsImage) @@ -1864,27 +1852,13 @@ void ListBoxImpl::RegisterRGBAImage(int type, int width, int height, const unsig CGImageRef imageRef = ImageCreateFromRGBA(width, height, pixelsImage, false); NSImage *img = [[NSImage alloc] initWithCGImage:imageRef size: NSZeroSize]; CGImageRelease(imageRef); - ImageMap::iterator it=images.find(type); - if (it == images.end()) - { - images[type] = img; - } - else - { - [it->second release]; - it->second = img; - } + [images setObject:img forKey:@(type)]; + [img release]; } void ListBoxImpl::ClearRegisteredImages() { - for (ImageMap::iterator it=images.begin(); - it != images.end(); ++it) - { - [it->second release]; - it->second = nil; - } - images.clear(); + [images removeAllObjects]; } int ListBoxImpl::Rows() @@ -1894,16 +1868,7 @@ int ListBoxImpl::Rows() NSImage* ListBoxImpl::ImageForRow(NSInteger row) { - ImageMap::iterator it = images.find(ld.GetType(row)); - if (it != images.end()) - { - NSImage* img = it->second; - return img; - } - else - { - return nil; - } + return images[@(ld.GetType(row))]; } NSString* ListBoxImpl::TextForRow(NSInteger row) |