A more complete fix for the generic control border issue, a fix for getting/setting wxListItemAttr info for the native control, fixes for HitTest considering the column the 0 item, and for GetItemRect being one off in virtual mode. Also a fix for the function call when using a custom sort routine.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43299 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
80a06ad284
commit
d2af7584c0
@ -390,11 +390,12 @@ wxListCtrlTextCtrlWrapper::wxListCtrlTextCtrlWrapper(wxListCtrl *owner,
|
||||
m_aboutToFinish = false;
|
||||
|
||||
wxRect rectLabel;
|
||||
int offset = 8;
|
||||
owner->GetItemRect(itemEdit, rectLabel);
|
||||
|
||||
m_text->Create(owner, wxID_ANY, m_startValue,
|
||||
wxPoint(rectLabel.x+8,rectLabel.y),
|
||||
wxSize(rectLabel.width,rectLabel.height));
|
||||
wxPoint(rectLabel.x+offset,rectLabel.y),
|
||||
wxSize(rectLabel.width-offset,rectLabel.height));
|
||||
m_text->SetFocus();
|
||||
|
||||
m_text->PushEventHandler(this);
|
||||
@ -627,7 +628,13 @@ bool wxListCtrl::Create(wxWindow *parent,
|
||||
{
|
||||
m_macIsUserPane = true;
|
||||
|
||||
if ( !wxWindow::Create(parent, id, pos, size, style | wxNO_BORDER, name) )
|
||||
long paneStyle = style;
|
||||
paneStyle &= ~wxSIMPLE_BORDER;
|
||||
paneStyle &= ~wxDOUBLE_BORDER;
|
||||
paneStyle &= ~wxSUNKEN_BORDER;
|
||||
paneStyle &= ~wxRAISED_BORDER;
|
||||
paneStyle &= ~wxSTATIC_BORDER;
|
||||
if ( !wxWindow::Create(parent, id, pos, size, paneStyle | wxNO_BORDER, name) )
|
||||
return false;
|
||||
|
||||
// since the generic control is a child, make sure we position it at 0, 0
|
||||
@ -1041,10 +1048,10 @@ bool wxListCtrl::SetItemState(long item, long state, long stateMask)
|
||||
return m_genericImpl->SetItemState(item, state, stateMask);
|
||||
|
||||
wxListItem info;
|
||||
info.m_itemId = item;
|
||||
info.m_mask = wxLIST_MASK_STATE;
|
||||
info.m_stateMask = stateMask;
|
||||
info.m_state = state;
|
||||
info.m_itemId = item;
|
||||
return SetItem(info);
|
||||
}
|
||||
|
||||
@ -1168,7 +1175,7 @@ bool wxListCtrl::GetItemRect(long item, wxRect& rect, int code) const
|
||||
id = (DataBrowserItemID) thisItem;
|
||||
}
|
||||
else
|
||||
id = item;
|
||||
id = item+1;
|
||||
|
||||
GetDataBrowserItemPartBounds( m_dbImpl->GetControlRef(), id, col, part, &bounds );
|
||||
|
||||
@ -1680,6 +1687,9 @@ wxListCtrl::HitTest(const wxPoint& point, int& flags, long *ptrSubItem) const
|
||||
if ( !(GetWindowStyleFlag() & wxLC_NO_HEADER) )
|
||||
y -= colHeaderHeight;
|
||||
|
||||
if ( y < 0 )
|
||||
return -1;
|
||||
|
||||
int row = y / rowHeight;
|
||||
DataBrowserItemID id;
|
||||
m_dbImpl->GetItemID( (DataBrowserTableViewRowIndex) row, &id );
|
||||
@ -2659,12 +2669,9 @@ Boolean wxMacDataBrowserListCtrlControl::CompareItems(DataBrowserItemID itemOneI
|
||||
wxString itemText;
|
||||
wxString otherItemText;
|
||||
int colId = sortProperty - kMinColumnId;
|
||||
long itemNum = 0;
|
||||
long otherItemNum = 0;
|
||||
|
||||
wxListCtrl* list = wxDynamicCast( GetPeer() , wxListCtrl );
|
||||
|
||||
// means we need to
|
||||
if (colId >= 0)
|
||||
{
|
||||
if (!m_isVirtual)
|
||||
@ -2672,11 +2679,12 @@ Boolean wxMacDataBrowserListCtrlControl::CompareItems(DataBrowserItemID itemOneI
|
||||
wxMacListCtrlItem* item = (wxMacListCtrlItem*)itemOneID;
|
||||
wxMacListCtrlItem* otherItem = (wxMacListCtrlItem*)itemTwoID;
|
||||
wxListCtrlCompare func = list->GetCompareFunc();
|
||||
if (func != NULL && item->HasColumnInfo(colId) && otherItem->HasColumnInfo(colId))
|
||||
return func(item->GetColumnInfo(colId)->GetData(), otherItem->GetColumnInfo(colId)->GetData(), list->GetCompareFuncData()) >= 0;
|
||||
long item1 = GetLineFromItem(item);
|
||||
long item2 = GetLineFromItem(otherItem);
|
||||
|
||||
if (func != NULL && item->HasColumnInfo(colId) && otherItem->HasColumnInfo(colId))
|
||||
return func(item1, item2, list->GetCompareFuncData()) >= 0;
|
||||
|
||||
itemNum = item->GetOrder();
|
||||
otherItemNum = otherItem->GetOrder();
|
||||
if (item->HasColumnInfo(colId))
|
||||
itemText = item->GetColumnInfo(colId)->GetText();
|
||||
if (otherItem->HasColumnInfo(colId))
|
||||
@ -2684,8 +2692,9 @@ Boolean wxMacDataBrowserListCtrlControl::CompareItems(DataBrowserItemID itemOneI
|
||||
}
|
||||
else
|
||||
{
|
||||
itemNum = (long)itemOneID;
|
||||
otherItemNum = (long)itemTwoID;
|
||||
|
||||
long itemNum = (long)itemOneID;
|
||||
long otherItemNum = (long)itemTwoID;
|
||||
itemText = list->OnGetItemText( itemNum-1, colId );
|
||||
otherItemText = list->OnGetItemText( otherItemNum-1, colId );
|
||||
|
||||
@ -2751,29 +2760,36 @@ void wxMacDataBrowserListCtrlControl::MacGetColumnInfo( unsigned int row, unsign
|
||||
//if (item)
|
||||
{
|
||||
wxMacListCtrlItem* listItem = dynamic_cast<wxMacListCtrlItem*>(dataItem);
|
||||
|
||||
if (!listItem->HasColumnInfo( column ))
|
||||
return;
|
||||
|
||||
wxListItem* oldItem = listItem->GetColumnInfo( column );
|
||||
|
||||
long mask = item.GetMask();
|
||||
if ( !mask )
|
||||
// by default, get everything for backwards compatibility
|
||||
mask = -1;
|
||||
if (oldItem)
|
||||
{
|
||||
long mask = item.GetMask();
|
||||
if ( !mask )
|
||||
// by default, get everything for backwards compatibility
|
||||
mask = -1;
|
||||
|
||||
if ( mask & wxLIST_MASK_TEXT )
|
||||
item.SetText(oldItem->GetText());
|
||||
if ( mask & wxLIST_MASK_IMAGE )
|
||||
item.SetImage(oldItem->GetImage());
|
||||
if ( mask & wxLIST_MASK_DATA )
|
||||
item.SetData(oldItem->GetData());
|
||||
if ( mask & wxLIST_MASK_STATE )
|
||||
item.SetState(oldItem->GetState());
|
||||
if ( mask & wxLIST_MASK_WIDTH )
|
||||
item.SetWidth(oldItem->GetWidth());
|
||||
if ( mask & wxLIST_MASK_FORMAT )
|
||||
item.SetAlign(oldItem->GetAlign());
|
||||
if ( mask & wxLIST_MASK_TEXT )
|
||||
item.SetText(oldItem->GetText());
|
||||
if ( mask & wxLIST_MASK_IMAGE )
|
||||
item.SetImage(oldItem->GetImage());
|
||||
if ( mask & wxLIST_MASK_DATA )
|
||||
item.SetData(oldItem->GetData());
|
||||
if ( mask & wxLIST_MASK_STATE )
|
||||
item.SetState(oldItem->GetState());
|
||||
if ( mask & wxLIST_MASK_WIDTH )
|
||||
item.SetWidth(oldItem->GetWidth());
|
||||
if ( mask & wxLIST_MASK_FORMAT )
|
||||
item.SetAlign(oldItem->GetAlign());
|
||||
|
||||
item.SetTextColour(oldItem->GetTextColour());
|
||||
item.SetBackgroundColour(oldItem->GetBackgroundColour());
|
||||
item.SetFont(oldItem->GetFont());
|
||||
item.SetTextColour(oldItem->GetTextColour());
|
||||
item.SetBackgroundColour(oldItem->GetBackgroundColour());
|
||||
item.SetFont(oldItem->GetFont());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2858,9 +2874,17 @@ void wxMacListCtrlItem::SetColumnInfo( unsigned int column, wxListItem* item )
|
||||
if (mask & wxLIST_MASK_WIDTH)
|
||||
listItem->SetWidth(item->GetWidth());
|
||||
|
||||
listItem->SetTextColour(item->GetTextColour());
|
||||
listItem->SetBackgroundColour(item->GetBackgroundColour());
|
||||
listItem->SetFont(item->GetFont());
|
||||
if ( item->HasAttributes() )
|
||||
{
|
||||
if ( listItem->HasAttributes() )
|
||||
listItem->GetAttributes()->AssignFrom(*item->GetAttributes());
|
||||
else
|
||||
{
|
||||
listItem->SetTextColour(item->GetTextColour());
|
||||
listItem->SetBackgroundColour(item->GetBackgroundColour());
|
||||
listItem->SetFont(item->GetFont());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user