X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bd2e08d06528b2014a4acf878e91fee4696d0666..150ac0dae391f9b8a59894351432e5a1de3b55f7:/src/gtk/control.cpp diff --git a/src/gtk/control.cpp b/src/gtk/control.cpp index c2959403d6..06ca9c1de7 100644 --- a/src/gtk/control.cpp +++ b/src/gtk/control.cpp @@ -60,13 +60,18 @@ wxSize wxControl::DoGetBestSize() const // Do not return any arbitrary default value... wxASSERT_MSG( m_widget, wxT("DoGetBestSize called before creation") ); - GtkRequisition req; - req.width = 2; - req.height = 2; - (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_widget) )->size_request ) - (m_widget, &req ); - - wxSize best(req.width, req.height); + wxSize best; + if (m_wxwindow) + { + // this is not a native control, size_request is likely to be (0,0) + best = wxControlBase::DoGetBestSize(); + } + else + { + GtkRequisition req; + GTK_WIDGET_GET_CLASS(m_widget)->size_request(m_widget, &req); + best.Set(req.width, req.height); + } CacheBestSize(best); return best; } @@ -297,7 +302,7 @@ void wxControl::OnInternalIdle() GTKUpdateCursor(); } - if ( wxUpdateUIEvent::CanUpdate(this) ) + if ( wxUpdateUIEvent::CanUpdate(this) && IsShownOnScreen() ) UpdateWindowUI(wxUPDATE_UI_FROMIDLE); }