diff options
| -rw-r--r-- | gtk/PlatGTK.cxx | 15 | 
1 files changed, 13 insertions, 2 deletions
| diff --git a/gtk/PlatGTK.cxx b/gtk/PlatGTK.cxx index eaecb8de0..daf0f790d 100644 --- a/gtk/PlatGTK.cxx +++ b/gtk/PlatGTK.cxx @@ -1816,6 +1816,11 @@ ListBox *ListBox::Allocate() {  }  #if GTK_MAJOR_VERSION < 2 +static void UnselectionAC(GtkWidget *, gint, gint, +                        GdkEventButton *, gpointer p) { +	int *pi = reinterpret_cast<int *>(p); +	*pi = -1; +}  static void SelectionAC(GtkWidget *, gint row, gint,                          GdkEventButton *, gpointer p) {  	int *pi = reinterpret_cast<int *>(p); @@ -1855,6 +1860,8 @@ void ListBoxX::Create(Window &, int, int, bool) {  	gtk_container_add(GTK_CONTAINER(PWidget(scroller)), PWidget(list));  	gtk_clist_set_column_auto_resize(GTK_CLIST(PWidget(list)), 0, TRUE);  	gtk_clist_set_selection_mode(GTK_CLIST(PWidget(list)), GTK_SELECTION_BROWSE); +	gtk_signal_connect(GTK_OBJECT(PWidget(list)), "unselect_row", +	                   GTK_SIGNAL_FUNC(UnselectionAC), ¤t);  	gtk_signal_connect(GTK_OBJECT(PWidget(list)), "select_row",  	                   GTK_SIGNAL_FUNC(SelectionAC), ¤t);  	gtk_signal_connect(GTK_OBJECT(PWidget(list)), "button_press_event", @@ -2089,8 +2096,12 @@ int ListBoxX::Length() {  void ListBoxX::Select(int n) {  #if GTK_MAJOR_VERSION < 2 -	gtk_clist_select_row(GTK_CLIST(list), n, 0); -	gtk_clist_moveto(GTK_CLIST(list), n, 0, 0.5, 0.5); +	if (n == -1) { +		gtk_clist_unselect_row(GTK_CLIST(list), current, 0); +	} else { +		gtk_clist_select_row(GTK_CLIST(list), n, 0); +		gtk_clist_moveto(GTK_CLIST(list), n, 0, 0.5, 0.5); +	}  #else  	if (n < 0)  		return; | 
