Fix setting frame icon when using non-standard icon sizes in wxMSW.
Set the closest (and larger, if possible) icon if the icon of exactly the system icon size is not available. This fixes setting the icons when using custom DPI settings under MSW as the standard icon size may be different from the standard 32*32 in this case. This also improves wxIconBundle::GetIcon() to make its behaviour when the icon with exactly the given size is not found more flexible as a side effect. Closes #13891. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70455 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -28,6 +28,23 @@ WX_DECLARE_EXPORTED_OBJARRAY(wxIcon, wxIconArray);
|
||||
class WXDLLIMPEXP_CORE wxIconBundle : public wxGDIObject
|
||||
{
|
||||
public:
|
||||
// Flags that determine what happens if GetIcon() doesn't find the icon of
|
||||
// exactly the requested size.
|
||||
enum
|
||||
{
|
||||
// Return invalid icon if exact size is not found.
|
||||
FALLBACK_NONE = 0,
|
||||
|
||||
// Return the icon of the system icon size if exact size is not found.
|
||||
// May be combined with other non-NONE enum elements to determine what
|
||||
// happens if the system icon size is not found neither.
|
||||
FALLBACK_SYSTEM = 1,
|
||||
|
||||
// Return the icon of closest larger size or, if there is no icon of
|
||||
// larger size in the bundle, the closest icon of smaller size.
|
||||
FALLBACK_NEAREST_LARGER = 2
|
||||
};
|
||||
|
||||
// default constructor
|
||||
wxIconBundle();
|
||||
|
||||
@@ -60,13 +77,13 @@ public:
|
||||
void AddIcon(const wxIcon& icon);
|
||||
|
||||
// returns the icon with the given size; if no such icon exists,
|
||||
// returns the icon with size wxSYS_ICON_[XY]; if no such icon exists,
|
||||
// returns the first icon in the bundle
|
||||
wxIcon GetIcon(const wxSize& size) const;
|
||||
// behavior is specified by the flags.
|
||||
wxIcon GetIcon(const wxSize& size, int flags = FALLBACK_SYSTEM) const;
|
||||
|
||||
// equivalent to GetIcon(wxSize(size, size))
|
||||
wxIcon GetIcon(wxCoord size = wxDefaultCoord) const
|
||||
{ return GetIcon(wxSize(size, size)); }
|
||||
wxIcon GetIcon(wxCoord size = wxDefaultCoord,
|
||||
int flags = FALLBACK_SYSTEM) const
|
||||
{ return GetIcon(wxSize(size, size), flags); }
|
||||
|
||||
// returns the icon exactly of the specified size or wxNullIcon if no icon
|
||||
// of exactly given size are available
|
||||
|
Reference in New Issue
Block a user