Add scrollbars if the columns exceed the horizontal space for the control, also, have SetColumnWidth store the value in the column's wxListItem.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43335 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Kevin Ollivier 2006-11-12 04:08:13 +00:00
parent f9bf356bd1
commit f0ed40adbf

View File

@ -728,6 +728,23 @@ void wxListCtrl::DoSetSize( int x, int y, int width, int height, int sizeFlags )
if (m_genericImpl)
m_genericImpl->SetSize(0, 0, width, height, sizeFlags);
// determine if we need a horizontal scrollbar, and add it if so
if (m_dbImpl)
{
int totalWidth = 0;
for (int column = 0; column < GetColumnCount(); column++)
{
totalWidth += m_dbImpl->GetColumnWidth( column );
}
Boolean vertScrollBar;
GetDataBrowserHasScrollBars( m_dbImpl->GetControlRef(), NULL, &vertScrollBar );
if (totalWidth > width)
SetDataBrowserHasScrollBars( m_dbImpl->GetControlRef(), true, vertScrollBar );
else
SetDataBrowserHasScrollBars( m_dbImpl->GetControlRef(), false, vertScrollBar );
}
}
wxSize wxListCtrl::DoGetBestSize() const
@ -819,6 +836,7 @@ bool wxListCtrl::SetColumn(int col, wxListItem& item)
if (m_dbImpl)
{
long mask = item.GetMask();
if ( col >= (int)m_colsInfo.GetCount() )
{
wxListItem* listItem = new wxListItem(item);
@ -828,7 +846,7 @@ bool wxListCtrl::SetColumn(int col, wxListItem& item)
{
wxListItem listItem;
GetColumn( col, listItem );
long mask = item.GetMask();
if (mask & wxLIST_MASK_TEXT)
listItem.SetText(item.GetText());
if (mask & wxLIST_MASK_DATA)
@ -842,6 +860,9 @@ bool wxListCtrl::SetColumn(int col, wxListItem& item)
if (mask & wxLIST_MASK_WIDTH)
listItem.SetWidth(item.GetWidth());
}
if (mask & wxLIST_MASK_WIDTH)
SetColumnWidth( col, item.GetWidth() )
// change the appearance in the databrowser.
DataBrowserListViewHeaderDesc columnDesc;
@ -927,10 +948,22 @@ bool wxListCtrl::SetColumnWidth(int col, int width)
{
for (int column = 0; column < GetColumnCount(); column++)
{
wxListItem colInfo;
GetColumn(col, colInfo);
colInfo.SetWidth(width);
SetColumn(col, colInfo);
m_dbImpl->SetColumnWidth(col, mywidth);
}
}
else{
else
{
wxListItem colInfo;
GetColumn(col, colInfo);
colInfo.SetWidth(width);
SetColumn(col, colInfo);
m_dbImpl->SetColumnWidth(col, mywidth);
}
return true;