Mercurial > dwindows
diff gtk/dw.c @ 75:c629838d9805
Updated to latest DW, and updated the Makefile to install the header files
along with the libraries.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 13 Mar 2002 17:35:36 +0000 |
parents | ab77a22a2a36 |
children | ce0f5528bab0 |
line wrap: on
line diff
--- a/gtk/dw.c Mon Feb 18 19:10:28 2002 +0000 +++ b/gtk/dw.c Wed Mar 13 17:35:36 2002 +0000 @@ -60,14 +60,14 @@ GtkWidget *last_window = NULL; -int _dw_file_active = 0, _dw_ignore_click = 0; +int _dw_file_active = 0, _dw_ignore_click = 0, _dw_unselecting = 0; pthread_t _dw_thread = (pthread_t)-1; -int _dw_mutex_locked = FALSE; +int _dw_mutex_locked[DW_THREAD_LIMIT]; /* Use default border size for the default enlightenment theme */ int _dw_border_width = 12, _dw_border_height = 28; -#define DW_MUTEX_LOCK { if(pthread_self() != _dw_thread && _dw_mutex_locked == FALSE) { gdk_threads_enter(); _dw_mutex_locked = TRUE; _locked_by_me = TRUE; } } -#define DW_MUTEX_UNLOCK { if(pthread_self() != _dw_thread && _locked_by_me == TRUE) { gdk_threads_leave(); _dw_mutex_locked = FALSE; _locked_by_me = FALSE; } } +#define DW_MUTEX_LOCK { int index = _find_thread_index(dw_thread_id()); if(pthread_self() != _dw_thread && _dw_mutex_locked[index] == FALSE) { gdk_threads_enter(); _dw_mutex_locked[index] = TRUE; _locked_by_me = TRUE; } } +#define DW_MUTEX_UNLOCK { if(pthread_self() != _dw_thread && _locked_by_me == TRUE) { gdk_threads_leave(); _dw_mutex_locked[_find_thread_index(dw_thread_id())] = FALSE; _locked_by_me = FALSE; } } #define DEFAULT_SIZE_WIDTH 12 #define DEFAULT_SIZE_HEIGHT 6 @@ -464,8 +464,14 @@ void _unselect_row(GtkWidget *widget, gint row, gint column, GdkEventButton *event, gpointer data) { - GList *tmp = (GList *)gtk_object_get_data(GTK_OBJECT(widget), "selectlist"); - char *rowdata = gtk_clist_get_row_data(GTK_CLIST(widget), row); + GList *tmp; + char *rowdata; + + if(_dw_unselecting) + return; + + tmp = (GList *)gtk_object_get_data(GTK_OBJECT(widget), "selectlist"); + rowdata = gtk_clist_get_row_data(GTK_CLIST(widget), row); if(rowdata) { @@ -3358,7 +3364,10 @@ g_list_free(list); gtk_object_set_data(GTK_OBJECT(clist), "selectlist", NULL); + + _dw_unselecting = 1; gtk_clist_unselect_all(GTK_CLIST(clist)); + _dw_unselecting = 0; } /* @@ -3712,7 +3721,7 @@ list = (GList *)gtk_object_get_data(GTK_OBJECT(clist), "selectlist"); gtk_object_set_data(GTK_OBJECT(clist), "selectlist", NULL); gtk_object_set_data(GTK_OBJECT(clist), "querylist", (gpointer)list); - gtk_clist_unselect_all(GTK_CLIST(clist)); + _dw_unselect(clist); if(list) { @@ -4754,7 +4763,7 @@ { if(style & DW_CCS_EXTENDSEL) { - gtk_clist_set_selection_mode(GTK_CLIST(handle2), GTK_SELECTION_MULTIPLE); + gtk_clist_set_selection_mode(GTK_CLIST(handle2), GTK_SELECTION_EXTENDED); gtk_object_set_data(GTK_OBJECT(handle2), "multi", (gpointer)1); } if(style & DW_CCS_SINGLESEL)