comparison gtk/dw.c @ 1866:f3ae396b3585

Fixed problems with the item select signal on trees in GTK2. Also changed to using g_rec_mutext instead of the now deprecated static version.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 18 Mar 2013 09:47:55 +0000
parents c836603d3f14
children a3e356948426
comparison
equal deleted inserted replaced
1865:43c6ecfc598a 1866:f3ae396b3585
2082 # endif 2082 # endif
2083 } 2083 }
2084 } 2084 }
2085 #endif 2085 #endif
2086 2086
2087 static GStaticRecMutex _dw_gdk_lock; 2087 static GRecMutex _dw_gdk_lock;
2088 2088
2089 static void _dw_gdk_lock_enter(void) 2089 static void _dw_gdk_lock_enter(void)
2090 { 2090 {
2091 g_static_rec_mutex_lock(&_dw_gdk_lock); 2091 g_rec_mutex_lock(&_dw_gdk_lock);
2092 } 2092 }
2093 2093
2094 static void _dw_gdk_lock_leave(void) 2094 static void _dw_gdk_lock_leave(void)
2095 { 2095 {
2096 g_static_rec_mutex_unlock(&_dw_gdk_lock); 2096 g_rec_mutex_unlock(&_dw_gdk_lock);
2097 } 2097 }
2098 2098
2099 /* 2099 /*
2100 * Initializes the Dynamic Windows engine. 2100 * Initializes the Dynamic Windows engine.
2101 * Parameters: 2101 * Parameters:
2155 gtk_set_locale(); 2155 gtk_set_locale();
2156 #if !GLIB_CHECK_VERSION(2,32,0) 2156 #if !GLIB_CHECK_VERSION(2,32,0)
2157 g_thread_init(NULL); 2157 g_thread_init(NULL);
2158 #endif 2158 #endif
2159 #if GTK_MAJOR_VERSION > 1 2159 #if GTK_MAJOR_VERSION > 1
2160 g_static_rec_mutex_init(&_dw_gdk_lock); 2160 g_rec_mutex_init(&_dw_gdk_lock);
2161 2161
2162 gdk_threads_set_lock_functions(G_CALLBACK(_dw_gdk_lock_enter), G_CALLBACK(_dw_gdk_lock_leave)); 2162 gdk_threads_set_lock_functions(G_CALLBACK(_dw_gdk_lock_enter), G_CALLBACK(_dw_gdk_lock_leave));
2163 2163
2164 gdk_threads_init(); 2164 gdk_threads_init();
2165 #endif 2165 #endif
13578 else if (GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_CONTEXT) == 0) 13578 else if (GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_CONTEXT) == 0)
13579 { 13579 {
13580 thisfunc = _findsigfunc("tree-context"); 13580 thisfunc = _findsigfunc("tree-context");
13581 13581
13582 sigid = _set_signal_handler(thiswindow, window, sigfunc, data, thisfunc); 13582 sigid = _set_signal_handler(thiswindow, window, sigfunc, data, thisfunc);
13583 params[0] = GINT_TO_POINTER(sigid);
13584 params[2] = (void *)thiswindow;
13583 cid = g_signal_connect_data(G_OBJECT(thiswindow), "button_press_event", G_CALLBACK(thisfunc), params, _dw_signal_disconnect, 0); 13585 cid = g_signal_connect_data(G_OBJECT(thiswindow), "button_press_event", G_CALLBACK(thisfunc), params, _dw_signal_disconnect, 0);
13584 _set_signal_handler_id(thiswindow, sigid, cid); 13586 _set_signal_handler_id(thiswindow, sigid, cid);
13585 13587
13586 #if 0 13588 #if 0
13587 sigid = _set_signal_handler(window, window, sigfunc, data, thisfunc); 13589 sigid = _set_signal_handler(window, window, sigfunc, data, thisfunc);
13599 thiswindow = (GtkWidget *)gtk_tree_view_get_selection(GTK_TREE_VIEW(thiswindow)); 13601 thiswindow = (GtkWidget *)gtk_tree_view_get_selection(GTK_TREE_VIEW(thiswindow));
13600 thisname = "changed"; 13602 thisname = "changed";
13601 13603
13602 sigid = _set_signal_handler(treeview, window, sigfunc, data, thisfunc); 13604 sigid = _set_signal_handler(treeview, window, sigfunc, data, thisfunc);
13603 params[0] = GINT_TO_POINTER(sigid); 13605 params[0] = GINT_TO_POINTER(sigid);
13604 params[2] = (void *)thiswindow; 13606 params[2] = (void *)treeview;
13605 cid = g_signal_connect_data(G_OBJECT(thiswindow), thisname, (GCallback)thisfunc, params, _dw_signal_disconnect, 0); 13607 cid = g_signal_connect_data(G_OBJECT(thiswindow), thisname, (GCallback)thisfunc, params, _dw_signal_disconnect, 0);
13606 _set_signal_handler_id(treeview, sigid, cid); 13608 _set_signal_handler_id(treeview, sigid, cid);
13607 DW_MUTEX_UNLOCK; 13609 DW_MUTEX_UNLOCK;
13608 return; 13610 return;
13609 } 13611 }