Take the control borders into account by overriding DoGetBestClientSize()
instead of DoGetBestSize().
Also invalidate the default best size computed before we have any valid image
when setting the initial image in Create().
Closes #4099.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71380
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
virtual bool CanApplyThemeBorder() const { return false; }
protected:
- virtual wxSize DoGetBestSize() const;
+ virtual wxSize DoGetBestClientSize() const;
// ctor/dtor helpers
void Init() { m_isIcon = true; m_image = NULL; m_currentHandle = 0; }
wxDELETE(m_image);
}
-wxSize wxStaticBitmap::DoGetBestSize() const
+wxSize wxStaticBitmap::DoGetBestClientSize() const
{
+ wxSize size;
if ( ImageIsOk() )
{
- wxSize best(m_image->GetWidth(), m_image->GetHeight());
- CacheBestSize(best);
- return best;
+ size = m_image->GetSize();
+ }
+ else // No image yet
+ {
+ // this is completely arbitrary
+ size.x =
+ size.y = 16;
}
- // this is completely arbitrary
- return wxSize(16, 16);
+ return size;
}
#ifndef __WXWINCE__
{
wxGDIImage* convertedImage = ConvertImage( *image );
SetImageNoCopy( convertedImage );
- InvalidateBestSize();
}
void wxStaticBitmap::SetImageNoCopy( wxGDIImage* image)
{
Free();
+ InvalidateBestSize();
m_isIcon = image->IsKindOf( CLASSINFO(wxIcon) );
// the image has already been copied