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;