Mercurial > dwindows
comparison gtk3/dw.c @ 786:0e251c2f5d08
Implemented the column click event handler...
Need to think about column numbers since I added an Icon column with the tree view reimplementation.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 22 Mar 2011 01:26:36 +0000 |
parents | a86c54519de0 |
children | 098458f3bdfb |
comparison
equal
deleted
inserted
replaced
785:a86c54519de0 | 786:0e251c2f5d08 |
---|---|
163 static gint _tree_context_event(GtkWidget *widget, GdkEventButton *event, gpointer data); | 163 static gint _tree_context_event(GtkWidget *widget, GdkEventButton *event, gpointer data); |
164 static gint _value_changed_event(GtkAdjustment *adjustment, gpointer user_data); | 164 static gint _value_changed_event(GtkAdjustment *adjustment, gpointer user_data); |
165 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data); | 165 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data); |
166 static gint _tree_expand_event(GtkTreeView *treeview, GtkTreeIter *arg1, GtkTreePath *arg2, gpointer data); | 166 static gint _tree_expand_event(GtkTreeView *treeview, GtkTreeIter *arg1, GtkTreePath *arg2, gpointer data); |
167 static gint _switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data); | 167 static gint _switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data); |
168 static gint _column_click_event(GtkWidget *widget, gint column_num, gpointer data); | 168 static gint _column_click_event(GtkWidget *widget, gpointer data); |
169 | 169 |
170 /* Embedable Mozilla functions*/ | 170 /* Embedable Mozilla functions*/ |
171 #ifdef USE_GTKMOZEMBED | 171 #ifdef USE_GTKMOZEMBED |
172 void (*_gtk_moz_embed_go_back)(GtkMozEmbed *) = NULL; | 172 void (*_gtk_moz_embed_go_back)(GtkMozEmbed *) = NULL; |
173 void (*_gtk_moz_embed_go_forward)(GtkMozEmbed *) = NULL; | 173 void (*_gtk_moz_embed_go_forward)(GtkMozEmbed *) = NULL; |
1756 retval = switchpagefunc(work.window, _get_logical_page(GTK_WIDGET(notebook), page_num), work.data); | 1756 retval = switchpagefunc(work.window, _get_logical_page(GTK_WIDGET(notebook), page_num), work.data); |
1757 } | 1757 } |
1758 return retval; | 1758 return retval; |
1759 } | 1759 } |
1760 | 1760 |
1761 static gint _column_click_event(GtkWidget *widget, gint column_num, gpointer data) | 1761 static gint _column_click_event(GtkWidget *widget, gpointer data) |
1762 { | 1762 { |
1763 SignalHandler work = _get_signal_handler(widget, data); | 1763 GtkWidget *tree = data; |
1764 gpointer handlerdata = g_object_get_data(G_OBJECT(tree), "_dw_column_click_id"); | |
1765 SignalHandler work = _get_signal_handler(tree, handlerdata); | |
1764 int retval = FALSE; | 1766 int retval = FALSE; |
1765 | 1767 |
1766 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__); | 1768 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__); |
1767 if(work.window) | 1769 if(work.window) |
1768 { | 1770 { |
1771 int column_num = (int)g_object_get_data(G_OBJECT(widget), "_dw_column"); | |
1769 int (*clickcolumnfunc)(HWND, int, void *) = work.func; | 1772 int (*clickcolumnfunc)(HWND, int, void *) = work.func; |
1770 retval = clickcolumnfunc(work.window, column_num, work.data); | 1773 retval = clickcolumnfunc(work.window, column_num, work.data); |
1771 } | 1774 } |
1772 return retval; | 1775 return retval; |
1773 } | 1776 } |
5461 rend = gtk_cell_renderer_text_new(); | 5464 rend = gtk_cell_renderer_text_new(); |
5462 gtk_tree_view_column_pack_start(col, rend, TRUE); | 5465 gtk_tree_view_column_pack_start(col, rend, TRUE); |
5463 gtk_tree_view_column_add_attribute(col, rend, "text", z+1); | 5466 gtk_tree_view_column_add_attribute(col, rend, "text", z+1); |
5464 gtk_tree_view_column_set_resizable(col, TRUE); | 5467 gtk_tree_view_column_set_resizable(col, TRUE); |
5465 } | 5468 } |
5469 g_object_set_data(G_OBJECT(col), "_dw_column", GINT_TO_POINTER(z)); | |
5470 g_signal_connect(G_OBJECT(col), "clicked", G_CALLBACK(_column_click_event), (gpointer)tree); | |
5466 gtk_tree_view_column_set_title(col, titles[z]); | 5471 gtk_tree_view_column_set_title(col, titles[z]); |
5467 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col); | 5472 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col); |
5468 } | 5473 } |
5469 /* Finish up */ | 5474 /* Finish up */ |
5470 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), TRUE); | 5475 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), TRUE); |
5932 */ | 5937 */ |
5933 int dw_container_get_column_type(HWND handle, int column) | 5938 int dw_container_get_column_type(HWND handle, int column) |
5934 { | 5939 { |
5935 char numbuf[20]; | 5940 char numbuf[20]; |
5936 int flag, rc = 0; | 5941 int flag, rc = 0; |
5937 GtkWidget *cont; | 5942 GtkWidget *cont = handle; |
5938 int _locked_by_me = FALSE; | 5943 int _locked_by_me = FALSE; |
5939 | 5944 |
5940 DW_MUTEX_LOCK; | 5945 DW_MUTEX_LOCK; |
5941 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"); | 5946 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"); |
5942 if(!cont) | 5947 if(!cont) |
10335 _set_signal_handler_id(thiswindow, sigid, cid); | 10340 _set_signal_handler_id(thiswindow, sigid, cid); |
10336 | 10341 |
10337 thisname = "button_press_event"; | 10342 thisname = "button_press_event"; |
10338 thisfunc = _findsigfunc(DW_SIGNAL_ITEM_ENTER); | 10343 thisfunc = _findsigfunc(DW_SIGNAL_ITEM_ENTER); |
10339 } | 10344 } |
10345 else if (GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_COLUMN_CLICK) == 0) | |
10346 { | |
10347 /* We don't actually need a signal handler here... just need to assign the handler ID | |
10348 * Since the handlers for the columns were already created in _dw_container_setup() | |
10349 */ | |
10350 sigid = _set_signal_handler(thiswindow, window, sigfunc, data, _column_click_event); | |
10351 g_object_set_data(G_OBJECT(thiswindow), "_dw_column_click_id", GINT_TO_POINTER(sigid)); | |
10352 DW_MUTEX_UNLOCK; | |
10353 return; | |
10354 } | |
10340 #if 0 | 10355 #if 0 |
10341 else if (GTK_IS_CLIST(thiswindow) && strcmp(signame, DW_SIGNAL_COLUMN_CLICK) == 0) | |
10342 { | |
10343 thisname = "click-column"; | |
10344 } | |
10345 else if (strcmp(signame, DW_SIGNAL_SET_FOCUS) == 0) | 10356 else if (strcmp(signame, DW_SIGNAL_SET_FOCUS) == 0) |
10346 { | 10357 { |
10347 thisname = "focus-in-event"; | 10358 thisname = "focus-in-event"; |
10348 if (GTK_IS_COMBO_BOX(thiswindow)) | 10359 if (GTK_IS_COMBO_BOX(thiswindow)) |
10349 thiswindow = GTK_COMBO_BOX(thiswindow)->entry; | 10360 thiswindow = GTK_COMBO_BOX(thiswindow)->entry; |
10350 } | 10361 } |
10351 #endif | |
10352 #if 0 | |
10353 else if (strcmp(signame, DW_SIGNAL_LOSE_FOCUS) == 0) | 10362 else if (strcmp(signame, DW_SIGNAL_LOSE_FOCUS) == 0) |
10354 { | 10363 { |
10355 thisname = "focus-out-event"; | 10364 thisname = "focus-out-event"; |
10356 if(GTK_IS_COMBO_BOX(thiswindow)) | 10365 if(GTK_IS_COMBO_BOX(thiswindow)) |
10357 thiswindow = GTK_COMBO_BOX(thiswindow)->entry; | 10366 thiswindow = GTK_COMBO_BOX(thiswindow)->entry; |