fix deferred show when SetSize() is called after SetClientSize()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58956 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -148,6 +148,7 @@ private:
|
|||||||
bool m_grabbed;
|
bool m_grabbed;
|
||||||
|
|
||||||
bool m_updateDecorSize;
|
bool m_updateDecorSize;
|
||||||
|
bool m_deferShowAllowed;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _WX_GTK_TOPLEVEL_H_
|
#endif // _WX_GTK_TOPLEVEL_H_
|
||||||
|
@@ -442,6 +442,7 @@ void wxTopLevelWindowGTK::Init()
|
|||||||
m_gdkFunc = 0;
|
m_gdkFunc = 0;
|
||||||
m_grabbed = false;
|
m_grabbed = false;
|
||||||
m_deferShow = true;
|
m_deferShow = true;
|
||||||
|
m_deferShowAllowed = true;
|
||||||
m_updateDecorSize = true;
|
m_updateDecorSize = true;
|
||||||
|
|
||||||
m_urgency_hint = -2;
|
m_urgency_hint = -2;
|
||||||
@@ -780,7 +781,7 @@ bool wxTopLevelWindowGTK::Show( bool show )
|
|||||||
{
|
{
|
||||||
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
|
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
|
||||||
|
|
||||||
bool deferShow = show && !m_isShown && m_deferShow;
|
bool deferShow = show && !m_isShown && m_deferShow && m_deferShowAllowed;
|
||||||
if (deferShow)
|
if (deferShow)
|
||||||
{
|
{
|
||||||
deferShow = false;
|
deferShow = false;
|
||||||
@@ -896,6 +897,8 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si
|
|||||||
{
|
{
|
||||||
wxCHECK_RET( m_widget, wxT("invalid frame") );
|
wxCHECK_RET( m_widget, wxT("invalid frame") );
|
||||||
|
|
||||||
|
m_deferShowAllowed = true;
|
||||||
|
|
||||||
// deal with the position first
|
// deal with the position first
|
||||||
int old_x = m_x;
|
int old_x = m_x;
|
||||||
int old_y = m_y;
|
int old_y = m_y;
|
||||||
@@ -940,9 +943,9 @@ 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)
|
||||||
{
|
{
|
||||||
if (m_deferShow && !m_isShown)
|
// Since client size is being explicitly set, don't change it later
|
||||||
// Since client size is being explicitly set, don't change it later
|
m_deferShowAllowed = false;
|
||||||
m_deferShow = false;
|
|
||||||
wxTopLevelWindowBase::DoSetClientSize(width, height);
|
wxTopLevelWindowBase::DoSetClientSize(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user