// headers
// ----------------------------------------------------------------------------
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "listctrl.h"
#pragma implementation "listctrlbase.h"
#endif
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_FOCUSED)
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_CACHE_HINT)
+#if wxUSE_EXTENDED_RTTI
+WX_DEFINE_FLAGS( wxListCtrlStyle )
+
+WX_BEGIN_FLAGS( wxListCtrlStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ WX_FLAGS_MEMBER(wxBORDER_SIMPLE)
+ WX_FLAGS_MEMBER(wxBORDER_SUNKEN)
+ WX_FLAGS_MEMBER(wxBORDER_DOUBLE)
+ WX_FLAGS_MEMBER(wxBORDER_RAISED)
+ WX_FLAGS_MEMBER(wxBORDER_STATIC)
+ WX_FLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ WX_FLAGS_MEMBER(wxSIMPLE_BORDER)
+ WX_FLAGS_MEMBER(wxSUNKEN_BORDER)
+ WX_FLAGS_MEMBER(wxDOUBLE_BORDER)
+ WX_FLAGS_MEMBER(wxRAISED_BORDER)
+ WX_FLAGS_MEMBER(wxSTATIC_BORDER)
+ WX_FLAGS_MEMBER(wxNO_BORDER)
+
+ // standard window styles
+ WX_FLAGS_MEMBER(wxTAB_TRAVERSAL)
+ WX_FLAGS_MEMBER(wxCLIP_CHILDREN)
+ WX_FLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ WX_FLAGS_MEMBER(wxWANTS_CHARS)
+ WX_FLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE)
+ WX_FLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ WX_FLAGS_MEMBER(wxVSCROLL)
+ WX_FLAGS_MEMBER(wxHSCROLL)
+
+ WX_FLAGS_MEMBER(wxLC_LIST)
+ WX_FLAGS_MEMBER(wxLC_REPORT)
+ WX_FLAGS_MEMBER(wxLC_ICON)
+ WX_FLAGS_MEMBER(wxLC_SMALL_ICON)
+ WX_FLAGS_MEMBER(wxLC_ALIGN_TOP)
+ WX_FLAGS_MEMBER(wxLC_ALIGN_LEFT)
+ WX_FLAGS_MEMBER(wxLC_AUTOARRANGE)
+ WX_FLAGS_MEMBER(wxLC_USER_TEXT)
+ WX_FLAGS_MEMBER(wxLC_EDIT_LABELS)
+ WX_FLAGS_MEMBER(wxLC_NO_HEADER)
+ WX_FLAGS_MEMBER(wxLC_SINGLE_SEL)
+ WX_FLAGS_MEMBER(wxLC_SORT_ASCENDING)
+ WX_FLAGS_MEMBER(wxLC_SORT_DESCENDING)
+ WX_FLAGS_MEMBER(wxLC_VIRTUAL)
+
+WX_END_FLAGS( wxListCtrlStyle )
+
+IMPLEMENT_DYNAMIC_CLASS_XTI(wxListCtrl, wxControl,"wx/listctrl.h")
+
+WX_BEGIN_PROPERTIES_TABLE(wxListCtrl)
+ WX_PROPERTY_FLAGS( WindowStyle , wxListCtrlStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+WX_END_PROPERTIES_TABLE()
+
+WX_BEGIN_HANDLERS_TABLE(wxListCtrl)
+WX_END_HANDLERS_TABLE()
+
+WX_CONSTRUCTOR_5( wxListCtrl , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle )
+
+/*
+ TODO : Expose more information of a list's layout etc. via appropriate objects (à la NotebookPageInfo)
+*/
+#else
IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxControl)
+#endif
+
IMPLEMENT_DYNAMIC_CLASS(wxListView, wxListCtrl)
IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject)
lvCol.cx = 80;
}
- // when we insert a column which can contain an image, we must specify this
- // flag right now as doing it later in SetColumn() has no effect
- //
- // we use LVCFMT_BITMAP_ON_RIGHT by default because without it there is no
- // way to dynamically set/clear the bitmap as the column without a bitmap
- // on the left looks ugly (there is a hole)
- //
- // unfortunately with my version of comctl32.dll (5.80), the left column
- // image is always on the left and it seems that it's a "feature" - I
- // didn't find any way to work around it in any case
- if ( lvCol.mask & LVCF_IMAGE )
- {
- lvCol.mask |= LVCF_FMT;
- lvCol.fmt |= LVCFMT_BITMAP_ON_RIGHT;
- }
-
- bool success = ListView_InsertColumn(GetHwnd(), col, &lvCol) != -1;
- if ( success )
+ long n = ListView_InsertColumn(GetHwnd(), col, &lvCol);
+ if ( n != -1 )
{
m_colCount++;
}
- else
+ else // failed to insert?
{
wxLogDebug(wxT("Failed to insert the column '%s' into listview!"),
lvCol.pszText);
}
- return success;
+ return n;
}
long wxListCtrl::InsertColumn(long col,
{
if ( wxTheApp->GetComCtl32Version() >= 470 )
{
- lvCol.mask |= LVCF_IMAGE;
+ lvCol.mask |= LVCF_IMAGE | LVCF_FMT;
+
+ // we use LVCFMT_BITMAP_ON_RIGHT because thei mages on the right
+ // seem to be generally nicer than on the left and the generic
+ // version only draws them on the right (we don't have a flag to
+ // specify the image location anyhow)
+ //
+ // we don't use LVCFMT_COL_HAS_IMAGES because it doesn't seem to
+ // make any difference in my tests -- but maybe we should?
+ lvCol.fmt |= LVCFMT_BITMAP_ON_RIGHT | LVCFMT_IMAGE;
+
lvCol.iImage = item.m_image;
}
//else: it doesn't support item images anyhow
}
#endif // wxUSE_LISTCTRL
+