# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1300671231 0 # Node ID fda93b441c4d5ebb40719b8436389209b6769ba0 # Parent d67d2f626c3363f3c3ab8c999f27e55741513e1c Lots of listbox/combobox/container fixes. Things are starting to come together. diff -r d67d2f626c33 -r fda93b441c4d gtk3/dw.c --- a/gtk3/dw.c Sun Mar 20 23:40:34 2011 +0000 +++ b/gtk3/dw.c Mon Mar 21 01:33:51 2011 +0000 @@ -142,6 +142,11 @@ #define DEFAULT_SIZE_HEIGHT 6 #define DEFAULT_TITLEBAR_HEIGHT 22 +#define _DW_TREE_TYPE_CONTAINER 1 +#define _DW_TREE_TYPE_TREE 2 +#define _DW_TREE_TYPE_LISTBOX 3 +#define _DW_TREE_TYPE_COMBOBOX 4 + /* Signal forwarder prototypes */ static gint _button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data); static gint _button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer data); @@ -1447,7 +1452,7 @@ int (*exposefunc)(HWND, DWExpose *, void *) = work.func; exp.x = exp.y = 0; - exp.width = egtk_widget_get_allocated_width(widget); + exp.width = gtk_widget_get_allocated_width(widget); exp.height = gtk_widget_get_allocated_height(widget); retval = exposefunc(work.window, &exp, work.data); } @@ -1520,10 +1525,19 @@ GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)); GtkTreeIter iter; - if(sel && gtk_tree_selection_get_selected(sel, NULL, &iter)) + if(sel && gtk_tree_selection_get_mode(sel) != GTK_SELECTION_MULTIPLE && + gtk_tree_selection_get_selected(sel, NULL, &iter)) { GtkTreeModel *store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(widget)); - gtk_tree_model_get(store, &iter, 0, &text, 2, &itemdata, -1); + + if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE)) + { + gtk_tree_model_get(store, &iter, 0, &text, 2, &itemdata, -1); + } + else + { + gtk_tree_model_get(store, &iter, 0, &text, -1); + } } } @@ -3516,11 +3530,6 @@ return tree; } -#define _DW_TREE_TYPE_CONTAINER 1 -#define _DW_TREE_TYPE_TREE 2 -#define _DW_TREE_TYPE_LISTBOX 3 -#define _DW_TREE_TYPE_COMBOBOX 4 - /* * Create a container object to be packed. * Parameters: @@ -3568,6 +3577,7 @@ store = gtk_tree_store_new(4, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_POINTER, G_TYPE_POINTER); tree = _tree_setup(tmp, GTK_TREE_MODEL(store)); g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", (gpointer)_DW_TREE_TYPE_TREE); + g_object_set_data(G_OBJECT(tree), "_dw_tree_type", (gpointer)_DW_TREE_TYPE_TREE); col = gtk_tree_view_column_new(); rend = gtk_cell_renderer_pixbuf_new(); @@ -3725,9 +3735,7 @@ { GtkWidget *tmp; GtkListStore *store; - GtkCellRenderer *renderer; - int sigid, _locked_by_me = FALSE; - gint cid; + int _locked_by_me = FALSE; DW_MUTEX_LOCK; store = gtk_list_store_new(1, G_TYPE_STRING); @@ -4046,6 +4054,7 @@ store = gtk_list_store_new(1, G_TYPE_STRING); tree = _tree_setup(tmp, GTK_TREE_MODEL(store)); g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", (gpointer)_DW_TREE_TYPE_LISTBOX); + g_object_set_data(G_OBJECT(tree), "_dw_tree_type", (gpointer)_DW_TREE_TYPE_LISTBOX); col = gtk_tree_view_column_new(); rend = gtk_cell_renderer_text_new(); @@ -5338,40 +5347,50 @@ int z; GtkWidget *tree; GtkListStore *store; - GtkTreeViewColumn *col; + GtkTreeViewColumn *col, *expander = NULL; GtkCellRenderer *rend; GtkTreeSelection *sel; int _locked_by_me = FALSE; - GType *array = calloc(count, sizeof(gint)); - - DW_MUTEX_LOCK; + GType *array = calloc(count + 2, sizeof(gint)); + unsigned long *newflags = calloc(count, sizeof(unsigned long)); + + memcpy(newflags, flags, count * sizeof(unsigned long)); + + DW_MUTEX_LOCK; + /* Save some of the info so it is easily accessible */ + g_object_set_data(G_OBJECT(handle), "_dw_cont_col_flags", (gpointer)newflags); + g_object_set_data(G_OBJECT(handle), "_dw_cont_columns", GINT_TO_POINTER(count)); + + /* First param is row title/data */ + array[0] = G_TYPE_POINTER; /* First loop... create array to create the store */ for(z=0;z