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:
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
class WXDLLIMPEXP_CORE wxTopLevelWindowGTK : public wxTopLevelWindowBase
|
class WXDLLIMPEXP_CORE wxTopLevelWindowGTK : public wxTopLevelWindowBase
|
||||||
{
|
{
|
||||||
|
typedef wxTopLevelWindowBase base_type;
|
||||||
public:
|
public:
|
||||||
// construction
|
// construction
|
||||||
wxTopLevelWindowGTK() { Init(); }
|
wxTopLevelWindowGTK() { Init(); }
|
||||||
@@ -137,6 +138,7 @@ protected:
|
|||||||
|
|
||||||
virtual void DoSetClientSize(int width, int height);
|
virtual void DoSetClientSize(int width, int height);
|
||||||
virtual void DoGetClientSize(int *width, int *height) const;
|
virtual void DoGetClientSize(int *width, int *height) const;
|
||||||
|
virtual wxSize DoGetBestSize() const;
|
||||||
|
|
||||||
// string shown in the title bar
|
// string shown in the title bar
|
||||||
wxString m_title;
|
wxString m_title;
|
||||||
|
@@ -887,7 +887,7 @@ bool wxTopLevelWindowGTK::Show( bool show )
|
|||||||
HandleWindowEvent(event);
|
HandleWindowEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool change = wxTopLevelWindowBase::Show(show);
|
bool change = base_type::Show(show);
|
||||||
|
|
||||||
if (change && !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)
|
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
|
// Since client size is being explicitly set, don't change it later
|
||||||
// Has to be done after calling base because it calls SetSize,
|
// 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;
|
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
|
void wxTopLevelWindowGTK::DoGetClientSize( int *width, int *height ) const
|
||||||
{
|
{
|
||||||
wxASSERT_MSG(m_widget, wxT("invalid frame"));
|
wxASSERT_MSG(m_widget, wxT("invalid frame"));
|
||||||
@@ -1035,7 +1046,7 @@ void wxTopLevelWindowGTK::DoSetSizeHints( int minW, int minH,
|
|||||||
int maxW, int maxH,
|
int maxW, int maxH,
|
||||||
int incW, int incH )
|
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 minSize = GetMinSize();
|
||||||
const wxSize maxSize = GetMaxSize();
|
const wxSize maxSize = GetMaxSize();
|
||||||
@@ -1177,7 +1188,7 @@ void wxTopLevelWindowGTK::SetIcons( const wxIconBundle &icons )
|
|||||||
{
|
{
|
||||||
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
|
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
|
// 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
|
// another TLW is realized before this one, and it has this one as it's
|
||||||
|
Reference in New Issue
Block a user