ignore iconized state when computing client size for GetBestSize(), fixes #11803
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63750 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
8c6a2d5ccd
commit
3c7620f666
@ -16,6 +16,7 @@
|
||||
|
||||
class WXDLLIMPEXP_CORE wxTopLevelWindowGTK : public wxTopLevelWindowBase
|
||||
{
|
||||
typedef wxTopLevelWindowBase base_type;
|
||||
public:
|
||||
// construction
|
||||
wxTopLevelWindowGTK() { Init(); }
|
||||
@ -137,6 +138,7 @@ protected:
|
||||
|
||||
virtual void DoSetClientSize(int width, int height);
|
||||
virtual void DoGetClientSize(int *width, int *height) const;
|
||||
virtual wxSize DoGetBestSize() const;
|
||||
|
||||
// string shown in the title bar
|
||||
wxString m_title;
|
||||
|
@ -887,7 +887,7 @@ bool wxTopLevelWindowGTK::Show( bool show )
|
||||
HandleWindowEvent(event);
|
||||
}
|
||||
|
||||
bool change = wxTopLevelWindowBase::Show(show);
|
||||
bool change = base_type::Show(show);
|
||||
|
||||
if (change && !show)
|
||||
{
|
||||
@ -1004,7 +1004,7 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si
|
||||
|
||||
void wxTopLevelWindowGTK::DoSetClientSize(int width, int height)
|
||||
{
|
||||
wxTopLevelWindowBase::DoSetClientSize(width, height);
|
||||
base_type::DoSetClientSize(width, height);
|
||||
|
||||
// Since client size is being explicitly set, don't change it later
|
||||
// Has to be done after calling base because it calls SetSize,
|
||||
@ -1012,6 +1012,17 @@ void wxTopLevelWindowGTK::DoSetClientSize(int width, int height)
|
||||
m_deferShowAllowed = false;
|
||||
}
|
||||
|
||||
wxSize wxTopLevelWindowGTK::DoGetBestSize() const
|
||||
{
|
||||
// temporarily turn off m_isIconized,
|
||||
// so we get an accurate client size from DoGetClientSize
|
||||
const bool save = m_isIconized;
|
||||
const_cast<wxTopLevelWindowGTK*>(this)->m_isIconized = false;
|
||||
const wxSize size = base_type::DoGetBestSize();
|
||||
const_cast<wxTopLevelWindowGTK*>(this)->m_isIconized = save;
|
||||
return size;
|
||||
}
|
||||
|
||||
void wxTopLevelWindowGTK::DoGetClientSize( int *width, int *height ) const
|
||||
{
|
||||
wxASSERT_MSG(m_widget, wxT("invalid frame"));
|
||||
@ -1035,7 +1046,7 @@ void wxTopLevelWindowGTK::DoSetSizeHints( int minW, int minH,
|
||||
int maxW, int maxH,
|
||||
int incW, int incH )
|
||||
{
|
||||
wxTopLevelWindowBase::DoSetSizeHints( minW, minH, maxW, maxH, incW, incH );
|
||||
base_type::DoSetSizeHints(minW, minH, maxW, maxH, incW, incH);
|
||||
|
||||
const wxSize minSize = GetMinSize();
|
||||
const wxSize maxSize = GetMaxSize();
|
||||
@ -1177,7 +1188,7 @@ void wxTopLevelWindowGTK::SetIcons( const wxIconBundle &icons )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
|
||||
|
||||
wxTopLevelWindowBase::SetIcons( icons );
|
||||
base_type::SetIcons(icons);
|
||||
|
||||
// Setting icons before window is realized can cause a GTK assertion if
|
||||
// another TLW is realized before this one, and it has this one as it's
|
||||
|
Loading…
Reference in New Issue
Block a user