]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dataview.cpp
add popup sample to the workspace (fixes #10162)
[wxWidgets.git] / src / gtk / dataview.cpp
index 282c0637e972365053f44f55a5f4de8378dc6286..32bdc03dc4f838d915905af5485ba2581c397885 100644 (file)
@@ -2515,26 +2515,23 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column),
 
 }
 
-IMPLEMENT_CLASS(wxDataViewColumn, wxDataViewColumnBase)
-
 #include <wx/listimpl.cpp>
 WX_DEFINE_LIST(wxDataViewColumnList)
 
 wxDataViewColumn::wxDataViewColumn( const wxString &title, wxDataViewRenderer *cell,
                                     unsigned int model_column, int width,
-                                    wxAlignment align, int flags ) :
-    wxDataViewColumnBase( title, cell, model_column, width, align, flags )
+                                    wxAlignment align, int flags )
+    : wxDataViewColumnBase( cell, model_column )
 {
     Init( align, flags, width );
 
-    gtk_tree_view_column_set_clickable( GTK_TREE_VIEW_COLUMN(m_column), TRUE );
     SetTitle( title );
 }
 
 wxDataViewColumn::wxDataViewColumn( const wxBitmap &bitmap, wxDataViewRenderer *cell,
                                     unsigned int model_column, int width,
-                                    wxAlignment align, int flags ) :
-    wxDataViewColumnBase( bitmap, cell, model_column, width, align, flags )
+                                    wxAlignment align, int flags )
+    : wxDataViewColumnBase( bitmap, cell, model_column )
 {
     Init( align, flags, width );
 
@@ -2570,10 +2567,6 @@ void wxDataViewColumn::Init(wxAlignment align, int flags, int width)
         wxGtkTreeCellDataFunc, (gpointer) GetRenderer(), NULL );
 }
 
-wxDataViewColumn::~wxDataViewColumn()
-{
-}
-
 void wxDataViewColumn::OnInternalIdle()
 {
     if (m_isConnected)
@@ -2693,7 +2686,7 @@ void wxDataViewColumn::SetSortable( bool sortable )
 {
     GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN(m_column);
 
-    if (sortable)
+    if ( sortable )
     {
         gtk_tree_view_column_set_sort_column_id( column, GetModelColumn() );
     }
@@ -2701,13 +2694,28 @@ void wxDataViewColumn::SetSortable( bool sortable )
     {
         gtk_tree_view_column_set_sort_column_id( column, -1 );
         gtk_tree_view_column_set_sort_indicator( column, FALSE );
+        gtk_tree_view_column_set_clickable( column, FALSE );
     }
 }
 
 bool wxDataViewColumn::IsSortable() const
 {
     GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN(m_column);
-    return (gtk_tree_view_column_get_sort_column_id( column ) != -1);
+    return gtk_tree_view_column_get_clickable( column );
+}
+
+void wxDataViewColumn::SetAsSortKey( bool WXUNUSED(sort) )
+{
+    // it might not make sense to have this function in wxHeaderColumn at
+    // all in fact, changing of the sort order should only be done using the
+    // associated control API
+    wxFAIL_MSG( "not implemented" );
+}
+
+bool wxDataViewColumn::IsSortKey() const
+{
+    GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN(m_column);
+    return gtk_tree_view_column_get_sort_indicator( column );
 }
 
 bool wxDataViewColumn::IsResizeable() const
@@ -4005,6 +4013,17 @@ void wxDataViewCtrl::Collapse( const wxDataViewItem & item )
     gtk_tree_path_free( path );
 }
 
+bool wxDataViewCtrl::IsExpanded( const wxDataViewItem & item ) const
+{
+    GtkTreeIter iter;
+    iter.user_data = item.GetID();
+    GtkTreePath *path = m_internal->get_path( &iter );
+    bool res = gtk_tree_view_row_expanded( GTK_TREE_VIEW(m_treeview), path );
+    gtk_tree_path_free( path );
+    
+    return res;
+}
+
 wxDataViewItem wxDataViewCtrl::GetSelection() const
 {
     GtkTreeSelection *selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(m_treeview) );
@@ -4168,8 +4187,10 @@ void wxDataViewCtrl::UnselectAll()
 }
 
 void wxDataViewCtrl::EnsureVisible(const wxDataViewItem& item,
-                                   const wxDataViewColumn *WXUNUSED(column))
+                                   const wxDataViewColumn *column)
 {
+    wxDataViewCtrlBase::EnsureVisible(item,column);
+
     GtkTreeIter iter;
     iter.user_data = (gpointer) item.GetID();
     GtkTreePath *path = m_internal->get_path( &iter );