diff src/view_file_icon.c @ 966:c24a297efbef

marks in iconview made clickable
author nadvornik
date Sat, 16 Aug 2008 23:37:26 +0000
parents ba1d3c4bc0cd
children eb5dbdff14f6
line wrap: on
line diff
--- a/src/view_file_icon.c	Sat Aug 16 20:57:40 2008 +0000
+++ b/src/view_file_icon.c	Sat Aug 16 23:37:26 2008 +0000
@@ -369,6 +369,35 @@
 	return NULL;
 }
 
+static void vficon_mark_toggled_cb(GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
+{
+	ViewFile *vf = data;
+	GtkTreeModel *store;
+	GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
+	GtkTreeIter row;
+	gint column;
+	GList *list;
+	guint toggled_mark;
+
+	store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
+	if (!path || !gtk_tree_model_get_iter(store, &row, path))
+    		return;
+
+	gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &list, -1);
+
+	column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cell), "column_number"));
+	g_object_get(G_OBJECT(cell), "toggled_mark", &toggled_mark, NULL);
+
+	IconData *id = g_list_nth_data(list, column);
+	
+	if (id)
+		{
+		FileData *fd = id->fd;
+		file_data_set_mark(fd, toggled_mark, !file_data_get_mark(fd, toggled_mark));
+		}
+}
+
+
 /*
  *-------------------------------------------------------------------
  * tooltip type window
@@ -1380,7 +1409,7 @@
 			break;
 		}
 
-	return TRUE;
+	return FALSE;
 }
 
 gint vficon_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
@@ -2283,7 +2312,7 @@
 
 			g_object_set(cell,	"pixbuf", id->fd->thumb_pixbuf,
 						"text", name_sidecars,
-						"marks", id->fd->marks,
+						"marks", file_data_get_marks(id->fd),
 						"show_marks", vf->marks_enabled,
 						"cell-background-gdk", &color_bg,
 						"cell-background-set", TRUE,
@@ -2327,6 +2356,7 @@
 					 "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL);
 
 	g_object_set_data(G_OBJECT(column), "column_number", GINT_TO_POINTER(n));
+	g_object_set_data(G_OBJECT(renderer), "column_number", GINT_TO_POINTER(n));
 
 	cd = g_new0(ColumnData, 1);
 	cd->vf = vf;
@@ -2334,6 +2364,8 @@
 	gtk_tree_view_column_set_cell_data_func(column, renderer, vficon_cell_data_cb, cd, g_free);
 
 	gtk_tree_view_append_column(GTK_TREE_VIEW(vf->listview), column);
+	
+	g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(vficon_mark_toggled_cb), vf);
 }
 
 /*