On 02/04/2013 22:53, Steven Blatnick wrote:
I've started writing some plugins for geany on github, but I'm running into a problem. C is not my language of expertise, so I thought I would see if I'm just doing something stupid.
*The Problem:*
The basic problem is that I have a struct I'm using to pass information around like an object, but the information isn't staying with the struct when retrieving it from a TreeView.
I think the problem is this line: list = gtk_tree_store_new(1, G_TYPE_STRING);
later:
Tool *tool ... gtk_tree_store_set(list, &row, 0, tool, -1);
You should probably be using G_TYPE_POINTER instead of G_TYPE_STRING.
See: http://en.wikibooks.org/wiki/GTK%2B_By_Example/Tree_View/Tree_Models
"G_TYPE_STRING - stores a string in the store (makes a copy of the original string) G_TYPE_POINTER - stores a pointer value (does not copy any data into the store, just stores the pointer value!)"
Also, one of the things I love about Geany is how little memory it uses, so feel free to give me pointers on when I need to free up memory, because I don't want my code to leak.
Well, I didn't study your code for long, but: Tool *tool = g_slice_new(Tool);
Somehow you need to g_slice_free(Tool, tool) for each call to g_slice_new. Maybe by iterating the tree store when you've finished using it.