From: Kevin Ollivier Date: Fri, 22 Sep 2006 17:37:01 +0000 (+0000) Subject: Fixing SetColumnWidth and selection handling, attempt at fixing ClearAll(), and initi... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/54638f9e668f5732427a4e0c1f073f085467058b Fixing SetColumnWidth and selection handling, attempt at fixing ClearAll(), and initial impl. for EditLabel / EndEditLabel. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41373 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/carbon/listctrl_mac.cpp b/src/mac/carbon/listctrl_mac.cpp index 31dfaa7fa8..bc6232271d 100644 --- a/src/mac/carbon/listctrl_mac.cpp +++ b/src/mac/carbon/listctrl_mac.cpp @@ -382,10 +382,21 @@ bool wxListCtrl::SetColumnWidth(int col, int width) // to the entire window width; investigate why // this is. - //if (m_dbImpl){ - // m_dbImpl->SetColumnWidth(col+1, width); - // return true; - //} + if (m_dbImpl){ + int mywidth = width; + if (width == wxLIST_AUTOSIZE || width == wxLIST_AUTOSIZE_USEHEADER) + mywidth = 150; + + if (col == -1){ + for (int column = 0; column < GetColumnCount(); column++){ + m_dbImpl->SetColumnWidth(col, mywidth); + } + } + else{ + m_dbImpl->SetColumnWidth(col, mywidth); + } + return true; + } return false; } @@ -927,9 +938,10 @@ void wxListCtrl::ClearAll() return; } - DeleteAllItems(); - if ( m_colCount > 0 ) + if (m_dbImpl){ + DeleteAllItems(); DeleteAllColumns(); + } } wxTextCtrl* wxListCtrl::EditLabel(long item, wxClassInfo* textControlClass) @@ -937,6 +949,10 @@ wxTextCtrl* wxListCtrl::EditLabel(long item, wxClassInfo* textControlClass) if (m_genericImpl) return m_genericImpl->EditLabel(item, textControlClass); + if (m_dbImpl){ + wxMacDataItem* id = m_dbImpl->GetItemFromLine(item); + verify_noerr( SetDataBrowserEditItem(m_dbImpl->GetControlRef(), (DataBrowserItemID)id, kMinColumnId) ); + } return NULL; } @@ -945,10 +961,11 @@ bool wxListCtrl::EndEditLabel(bool cancel) { // TODO: generic impl. doesn't have this method - is it needed for us? if (m_genericImpl) - return false; // m_genericImpl->EndEditLabel(cancel); + return true; // m_genericImpl->EndEditLabel(cancel); - bool b = true; - return b; + if (m_dbImpl) + verify_noerr( SetDataBrowserEditItem(m_dbImpl->GetControlRef(), kDataBrowserNoItem, kMinColumnId) ); + return true; } // Ensures this item is visible @@ -1282,6 +1299,7 @@ void wxMacListCtrlItem::Notification(wxMacDataItemBrowserControl *owner , wxListEvent event( wxEVT_COMMAND_LIST_ITEM_SELECTED, list->GetId() ); bool isSingle = list->GetWindowStyle() | wxLC_SINGLE_SEL; + event.SetEventObject( list ); event.m_itemIndex = owner->GetLineFromItem( this ) ; if ( !list->IsVirtual() ) @@ -1345,7 +1363,7 @@ wxMacDataBrowserListCtrlControl::wxMacDataBrowserListCtrlControl( wxWindow *peer } else { - options |= kDataBrowserAlwaysExtendSelection | kDataBrowserCmdTogglesSelection; + options |= kDataBrowserCmdTogglesSelection; } err = SetSelectionFlags( options ); @@ -1354,8 +1372,10 @@ wxMacDataBrowserListCtrlControl::wxMacDataBrowserListCtrlControl( wxWindow *peer if ( style & wxLC_LIST ){ InsertColumn(0, kDataBrowserIconAndTextType, wxEmptyString, -1, -1); verify_noerr( AutoSizeColumns() ); - verify_noerr( SetHeaderButtonHeight( 0 ) ); } + + if ( style & wxLC_LIST || style & wxLC_NO_HEADER ) + verify_noerr( SetHeaderButtonHeight( 0 ) ); SetDataBrowserSortProperty( m_controlRef , kMinColumnId ); if ( style & wxLC_SORT_ASCENDING ) @@ -1376,6 +1396,12 @@ wxMacDataBrowserListCtrlControl::wxMacDataBrowserListCtrlControl( wxWindow *peer SetDataBrowserSortProperty( m_controlRef , kMinColumnId); SetDataBrowserSortOrder( m_controlRef , kDataBrowserOrderIncreasing); } + + if ( style & wxLC_VRULES ){ +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 + verify_noerr( DataBrowserChangeAttributes(m_controlRef, kDataBrowserAttributeListViewDrawColumnDividers, kDataBrowserAttributeNone) ); +#endif + } verify_noerr( AutoSizeColumns() ); verify_noerr( SetHiliteStyle(kDataBrowserTableViewFillHilite ) );