X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a73a80a9879a1781a230fa40749f16975b0670e4..931d6a47c32a5b4c283243cb553ce71ee2b535d5:/src/common/datavcmn.cpp diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index 69301bc8a1..2cad362531 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -3,7 +3,6 @@ // Purpose: wxDataViewCtrl base classes and common parts // Author: Robert Roebling // Created: 2006/02/20 -// RCS-ID: $Id$ // Copyright: (c) 2006, Robert Roebling // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -650,7 +649,7 @@ bool wxDataViewRendererBase::StartEditing( const wxDataViewItem &item, wxRect la wxDataViewCtrl* dv_ctrl = GetOwner()->GetOwner(); // Before doing anything we send an event asking if editing of this item is really wanted. - wxDataViewEvent start_event( wxEVT_COMMAND_DATAVIEW_ITEM_START_EDITING, dv_ctrl->GetId() ); + wxDataViewEvent start_event( wxEVT_DATAVIEW_ITEM_START_EDITING, dv_ctrl->GetId() ); start_event.SetDataViewColumn( GetOwner() ); start_event.SetModel( dv_ctrl->GetModel() ); start_event.SetItem( item ); @@ -683,7 +682,7 @@ bool wxDataViewRendererBase::StartEditing( const wxDataViewItem &item, wxRect la #endif // Now we should send Editing Started event - wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, dv_ctrl->GetId() ); + wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EDITING_STARTED, dv_ctrl->GetId() ); event.SetDataViewColumn( GetOwner() ); event.SetModel( dv_ctrl->GetModel() ); event.SetItem( item ); @@ -737,7 +736,7 @@ bool wxDataViewRendererBase::FinishEditing() unsigned int col = GetOwner()->GetModelColumn(); // Now we should send Editing Done event - wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, dv_ctrl->GetId() ); + wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EDITING_DONE, dv_ctrl->GetId() ); event.SetDataViewColumn( GetOwner() ); event.SetModel( dv_ctrl->GetModel() ); event.SetItem( m_item ); @@ -772,6 +771,20 @@ void wxDataViewRendererBase::PrepareForItem(const wxDataViewModel *model, } +int wxDataViewRendererBase::GetEffectiveAlignment() const +{ + int alignment = GetAlignment(); + + if ( alignment == wxDVR_DEFAULT_ALIGNMENT ) + { + // if we don't have an explicit alignment ourselves, use that of the + // column in horizontal direction and default vertical alignment + alignment = GetOwner()->GetAlignment() | wxALIGN_CENTRE_VERTICAL; + } + + return alignment; +} + // ---------------------------------------------------------------------------- // wxDataViewCustomRendererBase // ---------------------------------------------------------------------------- @@ -808,40 +821,38 @@ wxDataViewCustomRendererBase::WXCallRender(wxRect rectCell, wxDC *dc, int state) // adjust the rectangle ourselves to account for the alignment wxRect rectItem = rectCell; - const int align = GetAlignment(); - if ( align != wxDVR_DEFAULT_ALIGNMENT ) - { - const wxSize size = GetSize(); + const int align = GetEffectiveAlignment(); - // take alignment into account only if there is enough space, otherwise - // show as much contents as possible - // - // notice that many existing renderers (e.g. wxDataViewSpinRenderer) - // return hard-coded size which can be more than they need and if we - // trusted their GetSize() we'd draw the text out of cell bounds - // entirely + const wxSize size = GetSize(); - if ( size.x >= 0 && size.x < rectCell.width ) - { - if ( align & wxALIGN_CENTER_HORIZONTAL ) - rectItem.x += (rectCell.width - size.x)/2; - else if ( align & wxALIGN_RIGHT ) - rectItem.x += rectCell.width - size.x; - // else: wxALIGN_LEFT is the default + // take alignment into account only if there is enough space, otherwise + // show as much contents as possible + // + // notice that many existing renderers (e.g. wxDataViewSpinRenderer) + // return hard-coded size which can be more than they need and if we + // trusted their GetSize() we'd draw the text out of cell bounds + // entirely - rectItem.width = size.x; - } + if ( size.x >= 0 && size.x < rectCell.width ) + { + if ( align & wxALIGN_CENTER_HORIZONTAL ) + rectItem.x += (rectCell.width - size.x)/2; + else if ( align & wxALIGN_RIGHT ) + rectItem.x += rectCell.width - size.x; + // else: wxALIGN_LEFT is the default - if ( size.y >= 0 && size.y < rectCell.height ) - { - if ( align & wxALIGN_CENTER_VERTICAL ) - rectItem.y += (rectCell.height - size.y)/2; - else if ( align & wxALIGN_BOTTOM ) - rectItem.y += rectCell.height - size.y; - // else: wxALIGN_TOP is the default + rectItem.width = size.x; + } - rectItem.height = size.y; - } + if ( size.y >= 0 && size.y < rectCell.height ) + { + if ( align & wxALIGN_CENTER_VERTICAL ) + rectItem.y += (rectCell.height - size.y)/2; + else if ( align & wxALIGN_BOTTOM ) + rectItem.y += rectCell.height - size.y; + // else: wxALIGN_TOP is the default + + rectItem.height = size.y; } @@ -910,16 +921,8 @@ wxDataViewCustomRendererBase::RenderText(const wxString& text, } // get the alignment to use - int align = GetAlignment(); - if ( align == wxDVR_DEFAULT_ALIGNMENT ) - { - // if we don't have an explicit alignment ourselves, use that of the - // column in horizontal direction and default vertical alignment - align = GetOwner()->GetAlignment() | wxALIGN_CENTRE_VERTICAL; - } - dc->DrawLabel(ellipsizedText.empty() ? text : ellipsizedText, - rectText, align); + rectText, GetEffectiveAlignment()); } //----------------------------------------------------------------------------- @@ -1396,30 +1399,30 @@ void wxDataViewCtrlBase::StartEditor(const wxDataViewItem& item, unsigned int co IMPLEMENT_DYNAMIC_CLASS(wxDataViewEvent,wxNotifyEvent) -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_SELECTION_CHANGED, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_START_EDITING, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_ACTIVATED, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_COLLAPSING, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_COLLAPSED, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_EXPANDING, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_EXPANDED, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_EDITING_STARTED, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_START_EDITING, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_EDITING_DONE, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_COLUMN_REORDERED, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_COLUMN_HEADER_CLICK, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_COLUMN_SORTED, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_COLUMN_REORDERED, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_CACHE_HINT, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_CACHE_HINT, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_BEGIN_DRAG, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE, wxDataViewEvent ); -wxDEFINE_EVENT( wxEVT_COMMAND_DATAVIEW_ITEM_DROP, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_BEGIN_DRAG, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE, wxDataViewEvent ); +wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_DROP, wxDataViewEvent );