]> git.saurik.com Git - wxWidgets.git/commitdiff
Add scrollbars, fix crash, leak less memory.
authorRobert Roebling <robert@roebling.de>
Sat, 25 Feb 2006 14:07:06 +0000 (14:07 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 25 Feb 2006 14:07:06 +0000 (14:07 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37731 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/dataview.h
src/gtk/dataview.cpp

index 1dd168ddb71db62936b2c4d65692c885d94af807..5cf7e587e1b4d09cdf91a2bca9a62cea8a89716e 100644 (file)
@@ -179,7 +179,11 @@ public:
            const wxValidator& validator = wxDefaultValidator );
 
     virtual bool AssociateModel( wxDataViewListModel *model );
-    virtual bool AppendColumn( wxDataViewColumn *col );    
+    virtual bool AppendColumn( wxDataViewColumn *col );
+    
+private:
+    friend class wxDataViewCtrlDC;
+    GtkWidget       *m_treeview;
     
 private:
     DECLARE_DYNAMIC_CLASS(wxDataViewCtrl)
index 6f7ba407611042f02392f4f0dd00c75f7f2e37d3..98b677b1e3a815d43c7e8093e808ab5db6a755c3 100644 (file)
@@ -343,7 +343,7 @@ wxgtk_list_store_iter_next (GtkTreeModel  *tree_model,
     if (n == -1)
         return FALSE;
         
-    if (n >= (int) list_store->model->GetNumberOfRows())
+    if (n >= (int) list_store->model->GetNumberOfRows()-1)
         return FALSE;
         
     iter->user_data = (gpointer) ++n;
@@ -908,7 +908,7 @@ class wxDataViewCtrlDC: public wxWindowDC
 public:
     wxDataViewCtrlDC( wxDataViewCtrl *window )
     {
-        GtkWidget *widget = window->GetHandle();
+        GtkWidget *widget = window->m_treeview;
         // Set later
         m_window = NULL;
         
@@ -1143,8 +1143,16 @@ bool wxDataViewCtrl::Create(wxWindow *parent, wxWindowID id,
         wxFAIL_MSG( wxT("wxDataViewCtrl creation failed") );
         return FALSE;
     }
+
+    m_widget = gtk_scrolled_window_new (NULL, NULL);
+    gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (m_widget), GTK_SHADOW_IN);
+
+    m_treeview = gtk_tree_view_new();
+    gtk_container_add (GTK_CONTAINER (m_widget), m_treeview);
     
-    m_widget = gtk_tree_view_new();
+    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (m_widget),
+        GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+    gtk_widget_show (m_treeview);
     
     m_parent->DoAddChild( this );
 
@@ -1166,7 +1174,8 @@ bool wxDataViewCtrl::AssociateModel( wxDataViewListModel *model )
 
     model->SetNotifier( notifier );    
 
-    gtk_tree_view_set_model( GTK_TREE_VIEW(m_widget), GTK_TREE_MODEL(gtk_store) );
+    gtk_tree_view_set_model( GTK_TREE_VIEW(m_treeview), GTK_TREE_MODEL(gtk_store) );
+    g_object_unref( gtk_store );
     
     return true;
 }
@@ -1178,7 +1187,7 @@ bool wxDataViewCtrl::AppendColumn( wxDataViewColumn *col )
         
     GtkTreeViewColumn *column = (GtkTreeViewColumn *)col->GetGtkHandle();
 
-    gtk_tree_view_append_column( GTK_TREE_VIEW(m_widget), column );
+    gtk_tree_view_append_column( GTK_TREE_VIEW(m_treeview), column );
 
     return true;
 }