diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index a96e53db6b..4c932cfd1c 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -166,6 +166,11 @@ private: void UpdateDisplay(); void UpdateWidth(); + // Return the effective value corresponding to the given width, handling + // its negative values such as wxCOL_WIDTH_DEFAULT. + int DoGetEffectiveWidth(int width) const; + + wxString m_title; int m_width, m_manuallySetWidth, diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 9a290ab86c..bce892416b 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -188,9 +188,9 @@ void wxDataViewColumn::Init(int width, wxAlignment align, int flags) m_sortAscending = true; } -int wxDataViewColumn::GetWidth() const +int wxDataViewColumn::DoGetEffectiveWidth(int width) const { - switch ( m_width ) + switch ( width ) { case wxCOL_WIDTH_DEFAULT: return wxWindow::FromDIP(wxDVC_DEFAULT_WIDTH, m_owner); @@ -200,10 +200,15 @@ int wxDataViewColumn::GetWidth() const return m_owner->GetBestColumnWidth(m_owner->GetColumnIndex(this)); default: - return m_width; + return width; } } +int wxDataViewColumn::GetWidth() const +{ + return DoGetEffectiveWidth(m_width); +} + void wxDataViewColumn::WXOnResize(int width) { m_width =