changeset 208:5349a0735fda

Hopefully fixed value_changed signal handler on GTK.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 01 Feb 2003 09:46:15 +0000
parents 767fca804cea
children 85f25e8c1b1e
files gtk/dw.c
diffstat 1 files changed, 9 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/gtk/dw.c	Sat Feb 01 09:15:29 2003 +0000
+++ b/gtk/dw.c	Sat Feb 01 09:46:15 2003 +0000
@@ -579,24 +579,27 @@
 
 gint _value_changed_event(GtkAdjustment *adjustment, gpointer data)
 {
-	GtkWidget *slider = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(adjustment), "slider");
 	SignalHandler *work = (SignalHandler *)data;
 
-	if(slider && work)
+	if(work)
 	{
 		int (*valuechangedfunc)(HWND, int, void *) = work->func;
 		int max = _round_value(adjustment->upper);
 		int val = _round_value(adjustment->value);
-		static int lastval = -1;
-		static GtkWidget *lastwidget = 0;
-
-		if(lastval != val || lastwidget != slider)
+		GtkWidget *slider = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(adjustment), "slider");
+		GtkWidget *scrollbar = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(adjustment), "scrollbar");
+
+		if(slider)
 		{
 			if(GTK_IS_VSCALE(slider))
 				valuechangedfunc(work->window, (max - val) - 1,  work->data);
 			else
 				valuechangedfunc(work->window, val,  work->data);
 		}
+		else if(scrollbar)
+		{
+			valuechangedfunc(work->window, val,  work->data);
+		}
 	}
 	return FALSE;
 }