Add support for wxLIST_AUTOSIZE_USEHEADER to InsertColumn().
Use the fixed default width in InsertColumn() by default for compatibility but allow more useful behaviour in it by supporting wxLIST_AUTOSIZE_USEHEADER as well. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70284 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
c23edb1b71
commit
0fb731b8bf
@ -424,7 +424,7 @@ public:
|
||||
long InsertColumn(long col,
|
||||
const wxString& heading,
|
||||
int format = wxLIST_FORMAT_LEFT,
|
||||
int width = -1);
|
||||
int width = wxLIST_AUTOSIZE);
|
||||
|
||||
// Delete the given or all columns.
|
||||
virtual bool DeleteColumn(int col) = 0;
|
||||
|
@ -661,16 +661,48 @@ public:
|
||||
bool InReportView() const;
|
||||
|
||||
/**
|
||||
For report view mode (only), inserts a column. For more details, see SetItem().
|
||||
For report view mode (only), inserts a column.
|
||||
|
||||
For more details, see SetItem(). Also see InsertColumn(long, const
|
||||
wxString&, int, int) overload for a usually more convenient
|
||||
alternative to this method and the description of how the item width
|
||||
is interpreted by this method.
|
||||
*/
|
||||
long InsertColumn(long col, wxListItem& info);
|
||||
long InsertColumn(long col, const wxListItem& info);
|
||||
|
||||
/**
|
||||
For report view mode (only), inserts a column. For more details, see SetItem().
|
||||
For report view mode (only), inserts a column.
|
||||
|
||||
Insert a new column in the list control in report view mode at the
|
||||
given position specifying its most common attributes.
|
||||
|
||||
Notice that to set the image for the column you need to use
|
||||
Insert(long, const wxListItem&) overload and specify ::wxLIST_MASK_IMAGE
|
||||
in the item mask.
|
||||
|
||||
@param col
|
||||
The index where the column should be inserted. Valid indices are
|
||||
from 0 up to GetColumnCount() inclusive and the latter can be used
|
||||
to append the new column after the last existing one.
|
||||
@param heading
|
||||
The string specifying the column heading.
|
||||
@param format
|
||||
The flags specifying the control heading text alignment.
|
||||
@param width
|
||||
If positive, the width of the column in pixels. Otherwise it can be
|
||||
@c wxLIST_AUTOSIZE to choose the default size for the column or @c
|
||||
wxLIST_AUTOSIZE_USEHEADER to fit the column width to @a heading or
|
||||
to extend to fill all the remaining space for the last column.
|
||||
Notice that in case of @c wxLIST_AUTOSIZE fixed width is used as
|
||||
there are no items in this column to use for determining its best
|
||||
size yet. If you want to fit the column to its contents, use
|
||||
SetColumnWidth() after adding the items with values in this column.
|
||||
@return
|
||||
The index of the inserted column or -1 if adding it failed.
|
||||
*/
|
||||
long InsertColumn(long col, const wxString& heading,
|
||||
int format = wxLIST_FORMAT_LEFT,
|
||||
int width = -1);
|
||||
int width = wxLIST_AUTOSIZE);
|
||||
|
||||
/**
|
||||
Inserts an item, returning the index of the new item if successful, -1 otherwise.
|
||||
|
@ -153,7 +153,9 @@ wxListCtrlBase::InsertColumn(long col,
|
||||
wxListItem item;
|
||||
item.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT;
|
||||
item.m_text = heading;
|
||||
if ( width > -1 )
|
||||
if ( width >= 0
|
||||
|| width == wxLIST_AUTOSIZE
|
||||
|| width == wxLIST_AUTOSIZE_USEHEADER )
|
||||
{
|
||||
item.m_mask |= wxLIST_MASK_WIDTH;
|
||||
item.m_width = width;
|
||||
|
@ -1735,7 +1735,14 @@ long wxListCtrl::DoInsertColumn(long col, const wxListItem& item)
|
||||
LV_COLUMN lvCol;
|
||||
wxConvertToMSWListCol(GetHwnd(), col, item, lvCol);
|
||||
|
||||
if ( !(lvCol.mask & LVCF_WIDTH) )
|
||||
// LVSCW_AUTOSIZE_USEHEADER is not supported when inserting new column,
|
||||
// we'll deal with it below instead. Plain LVSCW_AUTOSIZE is not supported
|
||||
// neither but it doesn't need any special handling as we use fixed value
|
||||
// for it here, both because we can't do anything else (there are no items
|
||||
// with values in this column to compute the size from yet) and for
|
||||
// compatibility as wxLIST_AUTOSIZE == -1 and -1 as InsertColumn() width
|
||||
// parameter used to mean "arbitrary fixed width".
|
||||
if ( !(lvCol.mask & LVCF_WIDTH) || lvCol.cx < 0 )
|
||||
{
|
||||
// always give some width to the new column: this one is compatible
|
||||
// with the generic version
|
||||
@ -1744,14 +1751,20 @@ long wxListCtrl::DoInsertColumn(long col, const wxListItem& item)
|
||||
}
|
||||
|
||||
long n = ListView_InsertColumn(GetHwnd(), col, &lvCol);
|
||||
if ( n != -1 )
|
||||
{
|
||||
m_colCount++;
|
||||
}
|
||||
else // failed to insert?
|
||||
if ( n == -1 )
|
||||
{
|
||||
wxLogDebug(wxT("Failed to insert the column '%s' into listview!"),
|
||||
lvCol.pszText);
|
||||
return -1;
|
||||
}
|
||||
|
||||
m_colCount++;
|
||||
|
||||
// Now adjust the new column size.
|
||||
if ( (item.GetMask() & wxLIST_MASK_WIDTH) &&
|
||||
(item.GetWidth() == wxLIST_AUTOSIZE_USEHEADER) )
|
||||
{
|
||||
SetColumnWidth(n, wxLIST_AUTOSIZE_USEHEADER);
|
||||
}
|
||||
|
||||
return n;
|
||||
|
Loading…
Reference in New Issue
Block a user