supporting retina, see #15887
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@76739 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -355,18 +355,32 @@ bool wxTaskBarIconCustomStatusItemImpl::SetIcon(const wxIcon& icon, const wxStri
|
|||||||
m_icon.CopyFromIcon(icon);
|
m_icon.CopyFromIcon(icon);
|
||||||
|
|
||||||
// status item doesn't scale automatically
|
// status item doesn't scale automatically
|
||||||
|
// first scale to optimal pixel resolution
|
||||||
|
|
||||||
int dimension = m_icon.GetHeight();
|
int dimension = wxMax( m_icon.GetHeight(), m_icon.GetWidth() );
|
||||||
if ( m_icon.GetWidth() > dimension )
|
int target_dimension = 16 * wxOSXGetMainScreenContentScaleFactor();
|
||||||
dimension = m_icon.GetWidth();
|
if ( dimension > target_dimension )
|
||||||
if ( dimension > 16 )
|
|
||||||
{
|
{
|
||||||
wxImage img = m_icon.ConvertToImage();
|
wxImage img = m_icon.ConvertToImage();
|
||||||
int factor = (dimension+15)/16;
|
int factor = (dimension+(target_dimension-1))/target_dimension;
|
||||||
m_icon = img.ShrinkBy(factor, factor);
|
m_icon = img.ShrinkBy(factor, factor);
|
||||||
}
|
}
|
||||||
|
|
||||||
[m_statusItem setImage:m_icon.GetNSImage()];
|
NSImage* nsimage = m_icon.GetNSImage();
|
||||||
|
NSSize size = [nsimage size];
|
||||||
|
|
||||||
|
// then scale to optimal point resolution
|
||||||
|
|
||||||
|
dimension = wxMax(size.width,size.height);
|
||||||
|
if ( dimension > 16 )
|
||||||
|
{
|
||||||
|
int factor = (dimension+15)/16;
|
||||||
|
size.width /= factor;
|
||||||
|
size.height /= factor;
|
||||||
|
[nsimage setSize:size];
|
||||||
|
}
|
||||||
|
[m_statusItem setImage:nsimage];
|
||||||
|
|
||||||
wxCFStringRef cfTooltip(tooltip);
|
wxCFStringRef cfTooltip(tooltip);
|
||||||
[m_statusItem setToolTip:cfTooltip.AsNSString()];
|
[m_statusItem setToolTip:cfTooltip.AsNSString()];
|
||||||
return true;
|
return true;
|
||||||
|
Reference in New Issue
Block a user