X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c93c8b188d778ccbb899df7a5eee60bf3b63aeeb..b96ad10292136c937f71d46ecd7339e59e084c76:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index e8cfa29862..985fa5d7e9 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -50,7 +50,7 @@ #include "wx/renderer.h" #ifdef __WXMAC__ - #include "wx/mac/private.h" + #include "wx/osx/private.h" #endif @@ -243,7 +243,7 @@ private: // wxListLineData (internal) //----------------------------------------------------------------------------- -WX_DECLARE_EXPORTED_LIST(wxListItemData, wxListItemDataList); +WX_DECLARE_LIST(wxListItemData, wxListItemDataList); #include "wx/listimpl.cpp" WX_DEFINE_LIST(wxListItemDataList) @@ -375,7 +375,7 @@ private: int width); }; -WX_DECLARE_EXPORTED_OBJARRAY(wxListLineData, wxListLineDataArray); +WX_DECLARE_OBJARRAY(wxListLineData, wxListLineDataArray); #include "wx/arrimpl.cpp" WX_DEFINE_OBJARRAY(wxListLineDataArray) @@ -432,7 +432,6 @@ private: // it wasn't vetoed, i.e. if we should proceed bool SendListEvent(wxEventType type, const wxPoint& pos); - DECLARE_DYNAMIC_CLASS(wxListHeaderWindow) DECLARE_EVENT_TABLE() }; @@ -488,11 +487,11 @@ private: // wxListMainWindow (internal) //----------------------------------------------------------------------------- -WX_DECLARE_EXPORTED_LIST(wxListHeaderData, wxListHeaderDataList); +WX_DECLARE_LIST(wxListHeaderData, wxListHeaderDataList); #include "wx/listimpl.cpp" WX_DEFINE_LIST(wxListHeaderDataList) -class wxListMainWindow : public wxScrolledWindow +class wxListMainWindow : public wxScrolledCanvas { public: wxListMainWindow(); @@ -598,10 +597,6 @@ public: m_textctrlWrapper = NULL; } - // we don't draw anything while we're frozen so we must refresh ourselves - // when we're thawed to make sure the changes are displayed correctly - virtual void DoThaw() { Refresh(); } - void OnRenameTimer(); bool OnRenameAccept(size_t itemEdit, const wxString& value); void OnRenameCancelled(size_t itemEdit); @@ -705,7 +700,7 @@ public: // override base class virtual to reset m_lineHeight when the font changes virtual bool SetFont(const wxFont& font) { - if ( !wxScrolledWindow::SetFont(font) ) + if ( !wxScrolledCanvas::SetFont(font) ) return false; m_lineHeight = 0; @@ -853,7 +848,6 @@ private: wxListTextCtrlWrapper *m_textctrlWrapper; - DECLARE_DYNAMIC_CLASS(wxListMainWindow) DECLARE_EVENT_TABLE() friend class wxGenericListCtrl; @@ -1446,7 +1440,7 @@ bool wxListLineData::SetAttributes(wxDC *dc, if ( highlighted ) dc->SetBrush( *m_owner->GetHighlightBrush() ); else - dc->SetBrush(wxBrush(attr->GetBackgroundColour(), wxSOLID)); + dc->SetBrush(wxBrush(attr->GetBackgroundColour(), wxBRUSHSTYLE_SOLID)); dc->SetPen( *wxTRANSPARENT_PEN ); @@ -1569,6 +1563,9 @@ void wxListLineData::DrawInReportMode( wxDC *dc, int xOld = x; x += width; + const int wText = width - 8; + wxDCClipper clipper(*dc, xOld, rect.y, wText, rect.height); + if ( item->HasImage() ) { int ix, iy; @@ -1582,7 +1579,7 @@ void wxListLineData::DrawInReportMode( wxDC *dc, } if ( item->HasText() ) - DrawTextFormatted(dc, item->GetText(), col, xOld, yMid, width - 8); + DrawTextFormatted(dc, item->GetText(), col, xOld, yMid, wText); } } @@ -1687,8 +1684,6 @@ void wxListLineData::ReverseHighlight( void ) // wxListHeaderWindow //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxListHeaderWindow,wxWindow) - BEGIN_EVENT_TABLE(wxListHeaderWindow,wxWindow) EVT_PAINT (wxListHeaderWindow::OnPaint) EVT_MOUSE_EVENTS (wxListHeaderWindow::OnMouse) @@ -1791,7 +1786,7 @@ void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) GetClientSize( &w, &h ); m_owner->CalcUnscrolledPosition(w, 0, &w, NULL); - dc.SetBackgroundMode(wxTRANSPARENT); + dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT); dc.SetTextForeground(GetForegroundColour()); int x = HEADER_OFFSET_X; @@ -2136,11 +2131,11 @@ wxListTextCtrlWrapper::wxListTextCtrlWrapper(wxListMainWindow *owner, void wxListTextCtrlWrapper::EndEdit(bool discardChanges) { m_aboutToFinish = true; - + if ( discardChanges ) { m_owner->OnRenameCancelled(m_itemEdited); - + Finish( true ); } else @@ -2159,9 +2154,9 @@ void wxListTextCtrlWrapper::Finish( bool setfocus ) m_owner->ResetTextControl( m_text ); wxPendingDelete.Append( this ); - + if (setfocus) - m_owner->SetFocusIgnoringChildren(); + m_owner->SetFocus(); } bool wxListTextCtrlWrapper::AcceptChanges() @@ -2216,7 +2211,7 @@ void wxListTextCtrlWrapper::OnKeyUp( wxKeyEvent &event ) sx = mySize.x; m_text->SetSize(sx, wxDefaultCoord); } - + event.Skip(); } @@ -2238,9 +2233,7 @@ void wxListTextCtrlWrapper::OnKillFocus( wxFocusEvent &event ) // wxListMainWindow //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxListMainWindow,wxScrolledWindow) - -BEGIN_EVENT_TABLE(wxListMainWindow,wxScrolledWindow) +BEGIN_EVENT_TABLE(wxListMainWindow,wxScrolledCanvas) EVT_PAINT (wxListMainWindow::OnPaint) EVT_MOUSE_EVENTS (wxListMainWindow::OnMouse) EVT_CHAR (wxListMainWindow::OnChar) @@ -2296,7 +2289,7 @@ wxListMainWindow::wxListMainWindow( wxWindow *parent, const wxSize& size, long style, const wxString &name ) - : wxScrolledWindow( parent, id, pos, size, + : wxScrolledCanvas( parent, id, pos, size, style | wxHSCROLL | wxVSCROLL, name ) { Init(); @@ -2307,7 +2300,7 @@ wxListMainWindow::wxListMainWindow( wxWindow *parent, ( wxSYS_COLOUR_HIGHLIGHT ), - wxSOLID + wxBRUSHSTYLE_SOLID ); m_highlightUnfocusedBrush = new wxBrush @@ -2316,7 +2309,7 @@ wxListMainWindow::wxListMainWindow( wxWindow *parent, ( wxSYS_COLOUR_BTNSHADOW ), - wxSOLID + wxBRUSHSTYLE_SOLID ); SetScrollbars( 0, 0, 0, 0, 0, 0 ); @@ -2704,7 +2697,7 @@ void wxListMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) // done (a Windows requirement). wxPaintDC dc( this ); - if ( IsEmpty() || IsFrozen() ) + if ( IsEmpty() ) { // nothing to draw or not the moment to draw it return; @@ -2765,7 +2758,7 @@ void wxListMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) if ( HasFlag(wxLC_HRULES) ) { - wxPen pen(GetRuleColour(), 1, wxSOLID); + wxPen pen(GetRuleColour(), 1, wxPENSTYLE_SOLID); wxSize clientSize = GetClientSize(); size_t i = visibleFrom; @@ -2791,7 +2784,7 @@ void wxListMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) // Draw vertical rules if required if ( HasFlag(wxLC_VRULES) && !IsEmpty() ) { - wxPen pen(GetRuleColour(), 1, wxSOLID); + wxPen pen(GetRuleColour(), 1, wxPENSTYLE_SOLID); wxRect firstItemRect, lastItemRect; GetItemRect(visibleFrom, firstItemRect); @@ -2995,7 +2988,7 @@ void wxListMainWindow::OnMouse( wxMouseEvent &event ) #endif // __WXMAC__ if ( event.LeftDown() ) - SetFocusIgnoringChildren(); + SetFocus(); event.SetEventObject( GetParent() ); if ( GetParent()->GetEventHandler()->ProcessEvent( event) ) @@ -3456,16 +3449,8 @@ void wxListMainWindow::OnChar( wxKeyEvent &event ) ke.SetEventObject( parent ); if (parent->GetEventHandler()->ProcessEvent( ke )) return; - if (event.GetKeyCode() == WXK_TAB) - { - wxNavigationKeyEvent nevent; - nevent.SetWindowChange( event.ControlDown() ); - nevent.SetDirection( !event.ShiftDown() ); - nevent.SetEventObject( GetParent()->GetParent() ); - nevent.SetCurrentFocus( m_parent ); - if (GetParent()->GetParent()->GetEventHandler()->ProcessEvent( nevent )) - return; - } + if ( HandleAsNavigationKey(event) ) + return; // no item -> nothing to do if (!HasCurrent()) @@ -4204,9 +4189,9 @@ void wxListMainWindow::RecalculatePositions(bool noRefresh) const size_t count = GetItemCount(); int iconSpacing; - if ( HasFlag(wxLC_ICON) ) + if ( HasFlag(wxLC_ICON) && m_normal_image_list ) iconSpacing = m_normal_spacing; - else if ( HasFlag(wxLC_SMALL_ICON) ) + else if ( HasFlag(wxLC_SMALL_ICON) && m_small_image_list ) iconSpacing = m_small_spacing; else iconSpacing = 0; @@ -4869,7 +4854,7 @@ void wxListMainWindow::OnScroll(wxScrollWinEvent& event) { // FIXME #if ( defined(__WXGTK__) || defined(__WXMAC__) ) && !defined(__WXUNIVERSAL__) - wxScrolledWindow::OnScroll(event); + wxScrolledCanvas::OnScroll(event); #else HandleOnScroll( event ); #endif @@ -5906,14 +5891,4 @@ void wxGenericListCtrl::Refresh(bool eraseBackground, const wxRect *rect) } } -void wxGenericListCtrl::DoFreeze() -{ - m_mainWin->Freeze(); -} - -void wxGenericListCtrl::DoThaw() -{ - m_mainWin->Thaw(); -} - #endif // wxUSE_LISTCTRL