changeset 139:ccf210251c99

Implemented GTK 2.0 tree delete etc. just signal handlers left.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 22 Oct 2002 01:59:52 +0000
parents d22b50184e3b
children e0e73b4372a6
files gtk/dw.c
diffstat 1 files changed, 93 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/gtk/dw.c	Tue Oct 22 01:25:51 2002 +0000
+++ b/gtk/dw.c	Tue Oct 22 01:59:52 2002 +0000
@@ -3196,7 +3196,7 @@
 {
 #if GTK_MAJOR_VERSION > 1
 	GtkWidget *tree;
-	GtkTreeIter *iter;
+	GtkTreeIter iter;
 	GtkTreeStore *store;
 	GdkPixbuf *pixbuf;
 	HWND retval = 0;
@@ -3210,12 +3210,12 @@
 		&& GTK_IS_TREE_VIEW(tree) &&
 		(store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
 	{
-		iter = malloc(sizeof(GtkTreeIter));    
 		pixbuf = _find_pixbuf(icon);
 
-		gtk_tree_store_insert_after(store, iter, (GtkTreeIter *)parent, (GtkTreeIter *)item);
-		gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, -1);
-		retval = (HWND)iter;    
+		gtk_tree_store_insert_after(store, &iter, (GtkTreeIter *)parent, (GtkTreeIter *)item);
+		gtk_tree_store_set (store, &iter, 0, title, 1, pixbuf, -1);
+		g_object_unref(pixbuf);
+		retval = (HWND)gtk_tree_iter_copy(&iter);    
 	}
 	DW_MUTEX_UNLOCK;
   
@@ -3320,7 +3320,7 @@
 {
 #if GTK_MAJOR_VERSION > 1
 	GtkWidget *tree;
-	GtkTreeIter *iter;
+	GtkTreeIter iter;
 	GtkTreeStore *store;
 	GdkPixbuf *pixbuf;
 	HWND retval = 0;
@@ -3334,13 +3334,12 @@
 		&& GTK_IS_TREE_VIEW(tree) &&
 		(store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
 	{
-		iter = malloc(sizeof(GtkTreeIter));
-    
 		pixbuf = _find_pixbuf(icon);
 
-		gtk_tree_store_append (store, iter, (GtkTreeIter *)parent);
-		gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, -1);
-		retval = (HWND)iter;
+		gtk_tree_store_append (store, &iter, (GtkTreeIter *)parent);
+		gtk_tree_store_set (store, &iter, 0, title, 1, pixbuf, -1);
+		g_object_unref(pixbuf);
+		retval = (HWND)gtk_tree_iter_copy(&iter);
 	}
 	DW_MUTEX_UNLOCK;
 
@@ -3451,7 +3450,8 @@
 	{
 		pixbuf = _find_pixbuf(icon);
     
-		gtk_tree_store_set (store, (GtkTreeIter *)item, 0, title, 1, pixbuf, -1);
+		gtk_tree_store_set(store, (GtkTreeIter *)item, 0, title, 1, pixbuf, -1);
+		g_object_unref(pixbuf);
 	}
 	DW_MUTEX_UNLOCK;
 #else
@@ -3518,6 +3518,23 @@
 void dw_tree_item_select(HWND handle, HWND item)
 {
 #if GTK_MAJOR_VERSION > 1
+	GtkWidget *tree;
+	GtkTreeStore *store;
+	int _locked_by_me = FALSE;
+
+	if(!handle)
+		return;
+
+	DW_MUTEX_LOCK;
+	if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
+		&& GTK_IS_TREE_VIEW(tree) &&
+		(store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
+	{    
+		GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
+		gtk_tree_view_set_cursor(GTK_TREE_VIEW(tree), path, NULL, FALSE);
+		gtk_tree_path_free(path);
+	}
+	DW_MUTEX_UNLOCK;
 #else
 	GtkWidget *lastselect, *tree;
 	int _locked_by_me = FALSE;
@@ -3545,6 +3562,20 @@
 {
 #if GTK_MAJOR_VERSION > 1
 	GtkWidget *tree;
+	GtkTreeStore *store;
+	int _locked_by_me = FALSE;
+
+	if(!handle)
+		return;
+
+	DW_MUTEX_LOCK;
+	if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
+		&& GTK_IS_TREE_VIEW(tree) &&
+		(store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
+			gtk_tree_store_clear(store);
+	DW_MUTEX_UNLOCK;
+#else
+	GtkWidget *tree;
 	int _locked_by_me = FALSE;
 
 	if(!handle)
@@ -3572,6 +3603,23 @@
 void dw_tree_expand(HWND handle, HWND item)
 {
 #if GTK_MAJOR_VERSION > 1
+	GtkWidget *tree;
+	GtkTreeStore *store;
+	int _locked_by_me = FALSE;
+
+	if(!handle)
+		return;
+
+	DW_MUTEX_LOCK;
+	if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
+		&& GTK_IS_TREE_VIEW(tree) &&
+		(store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
+	{
+		GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
+		gtk_tree_view_expand_row(GTK_TREE_VIEW(tree), path, FALSE);
+		gtk_tree_path_free(path);
+	}
+	DW_MUTEX_UNLOCK;
 #else
 	int _locked_by_me = FALSE;
 
@@ -3594,6 +3642,23 @@
 void dw_tree_collapse(HWND handle, HWND item)
 {
 #if GTK_MAJOR_VERSION > 1
+	GtkWidget *tree;
+	GtkTreeStore *store;
+	int _locked_by_me = FALSE;
+
+	if(!handle)
+		return;
+
+	DW_MUTEX_LOCK;
+	if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
+		&& GTK_IS_TREE_VIEW(tree) &&
+		(store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
+	{
+		GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
+		gtk_tree_view_collapse_row(GTK_TREE_VIEW(tree), path);
+		gtk_tree_path_free(path);
+	}
+	DW_MUTEX_UNLOCK;
 #else
 	int _locked_by_me = FALSE;
 
@@ -3616,6 +3681,22 @@
 void dw_tree_delete(HWND handle, HWND item)
 {
 #if GTK_MAJOR_VERSION > 1
+	GtkWidget *tree;
+	GtkTreeStore *store;
+	int _locked_by_me = FALSE;
+
+	if(!handle)
+		return;
+
+	DW_MUTEX_LOCK;
+	if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
+		&& GTK_IS_TREE_VIEW(tree) &&
+		(store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
+	{
+		gtk_tree_store_remove(store, (GtkTreeIter *)item);
+		gtk_tree_iter_free((GtkTreeIter *)item);
+	}
+	DW_MUTEX_UNLOCK;
 #else
 	GtkWidget *tree, *lastselect, *parenttree;
 	int _locked_by_me = FALSE;