Re-add support for icons to Mac wxDataViewCheckIconTextRenderer
Icons were not supported any longer since the switch to the native
implementation in 235e61c311
.
Restore them now by using text attachments (thanks to Scott B for the
idea). The vertical alignment is still not right, but it's better than
nothing.
See #17473.
This commit is contained in:
@@ -3426,7 +3426,46 @@ bool wxDataViewCheckIconTextRenderer::MacRender()
|
||||
break;
|
||||
}
|
||||
[cell setIntValue:nativecbvalue];
|
||||
[cell setTitle:wxCFStringRef(checkIconText.GetText()).AsNSString()];
|
||||
|
||||
const wxCFStringRef textString(checkIconText.GetText());
|
||||
|
||||
const wxIcon& icon = checkIconText.GetIcon();
|
||||
if ( icon.IsOk() )
|
||||
{
|
||||
NSTextAttachmentCell* const attachmentCell =
|
||||
[[NSTextAttachmentCell alloc] initImageCell: icon.GetNSImage()];
|
||||
NSTextAttachment* const attachment = [NSTextAttachment new];
|
||||
[attachment setAttachmentCell: attachmentCell];
|
||||
|
||||
// Note: this string is released by the autorelease pool and must not
|
||||
// be released manually below.
|
||||
NSAttributedString* const iconString =
|
||||
[NSAttributedString attributedStringWithAttachment: attachment];
|
||||
|
||||
NSAttributedString* const separatorString =
|
||||
[[NSAttributedString alloc] initWithString: @" "];
|
||||
|
||||
NSAttributedString* const textAttrString =
|
||||
[[NSAttributedString alloc] initWithString: textString.AsNSString()];
|
||||
|
||||
NSMutableAttributedString* const fullString =
|
||||
[NSMutableAttributedString new];
|
||||
[fullString appendAttributedString: iconString];
|
||||
[fullString appendAttributedString: separatorString];
|
||||
[fullString appendAttributedString: textAttrString];
|
||||
|
||||
[cell setAttributedTitle: fullString];
|
||||
|
||||
[fullString release];
|
||||
[separatorString release];
|
||||
[textAttrString release];
|
||||
[attachment release];
|
||||
[attachmentCell release];
|
||||
}
|
||||
else
|
||||
{
|
||||
[cell setTitle: textString.AsNSString()];
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user