From: Vadim Zeitlin Date: Mon, 31 Aug 2009 21:28:25 +0000 (+0000) Subject: Correctly determine best wxPropertyGrid width. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/890defb4f3a0012a296c69949bf5f93075743e8f?ds=inline Correctly determine best wxPropertyGrid width. Improve wxPropertyGrid::DoGetBestSize() to correctly determine the window width by using the sum of columns widths. Also correct wxPropertyGridPageState::GetColumnFitWidth() to account for the bitmaps. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61796 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp index 45fd19645c..6f8ad97379 100644 --- a/src/propgrid/propgrid.cpp +++ b/src/propgrid/propgrid.cpp @@ -1130,7 +1130,15 @@ wxSize wxPropertyGrid::DoGetBestSize() const 10 ); - const wxSize sz = wxSize(60, lineHeight*numLines + 40); + wxClientDC dc(const_cast(this)); + int width = m_marginWidth; + for ( unsigned int i = 0; i < m_pState->m_colWidths.size(); i++ ) + { + width += m_pState->GetColumnFitWidth(dc, m_pState->DoGetRoot(), i, true); + } + + const wxSize sz = wxSize(width, lineHeight*numLines + 40); + CacheBestSize(sz); return sz; } diff --git a/src/propgrid/propgridpagestate.cpp b/src/propgrid/propgridpagestate.cpp index 8f5d8a0325..d95efe3fb9 100644 --- a/src/propgrid/propgridpagestate.cpp +++ b/src/propgrid/propgridpagestate.cpp @@ -768,8 +768,10 @@ int wxPropertyGridPageState::GetColumnFitWidth(wxClientDC& dc, if ( col == 0 ) w += ( ((int)p->m_depth-1) * pg->m_subgroup_extramargin ); - // - // TODO: Add bitmap support. + // account for the bitmap + if ( col == 1 ) + w += p->GetImageOffset(pg->GetImageRect(p, -1).GetWidth()); + w += (wxPG_XBEFORETEXT*2);