- Added wxFilePickerCtrl::SetInitialDirectory().
- Added wxDataViewItemAttr::SetBackgroundColour() and implemented it in generic
wxDataViewCtrl (Andrew Xu).
+- Fix item alignment in icon view in the generic wxListCtrl.
MSW:
if ( withText )
{
- m_listCtrl->InsertItem(i, wxString::Format(wxT("Label %d"), i),
- image);
+ // Make labels of different widths to test the layout.
+ wxString label;
+ if ( !(i % 5) )
+ label.Printf("Longer label %d", i);
+ else
+ label.Printf("Label %d", i);
+
+ m_listCtrl->InsertItem(i, label, image);
}
else
{
int x = EXTRA_BORDER_X;
int y = EXTRA_BORDER_Y;
+
+ // Note that "row" here is vertical, i.e. what is called
+ // "column" in many other places in wxWidgets.
int maxWidthInThisRow = 0;
m_linesPerPage = 0;
if (currentlyVisibleLines > m_linesPerPage)
m_linesPerPage = currentlyVisibleLines;
- if ( y + sizeLine.y >= clientHeight )
+ // Have we reached the end of the row either because no
+ // more items would fit or because there are simply no more
+ // items?
+ if ( y + sizeLine.y >= clientHeight
+ || i == count - 1)
{
+ // Adjust all items in this row to have the same
+ // width to ensure that they all align horizontally.
+ size_t firstRowLine = i - currentlyVisibleLines + 1;
+ for (size_t j = firstRowLine; j <= i; j++)
+ {
+ GetLine(j)->m_gi->ExtendWidth(maxWidthInThisRow);
+ }
+
currentlyVisibleLines = 0;
y = EXTRA_BORDER_Y;
maxWidthInThisRow += MARGIN_BETWEEN_ROWS;
maxWidthInThisRow = 0;
}
- // We have reached the last item.
- if ( i == count - 1 )
- entireWidth += maxWidthInThisRow;
-
if ( (tries == 0) &&
(entireWidth + SCROLL_UNIT_X > clientWidth) )
{