void SetDataViewSortColumn( wxDataViewColumn *column ) { m_dataview_sort_column = column; }
wxDataViewColumn *GetDataViewSortColumn() { return m_dataview_sort_column; }
- bool IsSorted() { return (m_sort_column >= 0); }
+ bool IsSorted() const { return m_sort_column >= 0; }
+
+ // Should we be sorted either because we have a configured sort column or
+ // because we have a default sort order?
+ bool ShouldBeSorted() const
+ {
+ return IsSorted() || GetDataViewModel()->HasDefaultCompare();
+ }
+
// accessors
wxDataViewModel* GetDataViewModel() { return m_wx_model; }
m_children.Add( id );
- if (m_internal->IsSorted() || m_internal->GetDataViewModel()->HasDefaultCompare())
+ if (m_internal->ShouldBeSorted())
{
gs_internal = m_internal;
m_children.Sort( &wxGtkTreeModelChildCmp );
void InsertNode( wxGtkTreeModelNode* child, unsigned pos )
{
- if (m_internal->IsSorted() || m_internal->GetDataViewModel()->HasDefaultCompare())
+ if (m_internal->ShouldBeSorted())
{
AddNode(child);
return;
{
m_children.Insert( id, pos );
- if (m_internal->IsSorted() || m_internal->GetDataViewModel()->HasDefaultCompare())
+ if (m_internal->ShouldBeSorted())
{
gs_internal = m_internal;
m_children.Sort( &wxGtkTreeModelChildCmp );
m_value << value;
SetTextValue(m_value.GetText());
- SetPixbufProp(m_rendererIcon, m_value.GetIcon().GetPixbuf());
+
+ const wxIcon& icon = m_value.GetIcon();
+ SetPixbufProp(m_rendererIcon, icon.IsOk() ? icon.GetPixbuf() : NULL);
return true;
}
event.SetItem( item );
event.SetModel( m_wx_model );
event.SetDataFormat(gtk_selection_data_get_target(selection_data));
+ event.SetDataSize(gtk_selection_data_get_length(selection_data));
if (!m_owner->HandleWindowEvent( event ))
return FALSE;
// gtk_tree_view_get_path_at_pos() is the wrong function. It doesn't mind the header but returns column.
// See http://mail.gnome.org/archives/gtkmm-list/2005-January/msg00080.html
// So we have to use both of them.
- // Friedrich Haase 2010-9-20
+ item = wxDataViewItem(0);
+ column = NULL;
wxGtkTreePath path, pathScratch;
GtkTreeViewColumn* GtkColumn = NULL;
GtkTreeViewDropPosition pos = GTK_TREE_VIEW_DROP_INTO_OR_AFTER;
gint cell_y = 0;
// cannot directly call GtkGetTreeView(), HitTest is const and so is this pointer
- wxDataViewCtrl* ctrl = (wxDataViewCtrl*)this; // ugly workaround, ctrl is NOT const
- GtkTreeView* treeView = GTK_TREE_VIEW(ctrl->GtkGetTreeView());
+ wxDataViewCtrl* self = const_cast<wxDataViewCtrl *>(this); // ugly workaround, self is NOT const
+ GtkTreeView* treeView = GTK_TREE_VIEW(self->GtkGetTreeView());
// is there possibly a better suited function to get the column?
gtk_tree_view_get_path_at_pos( // and this is the wrong call but it delivers the column