comparison gtk/dw.c @ 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 b9283fd56d69
children 0e98514a3905
comparison
equal deleted inserted replaced
207:767fca804cea 208:5349a0735fda
577 return newval; 577 return newval;
578 } 578 }
579 579
580 gint _value_changed_event(GtkAdjustment *adjustment, gpointer data) 580 gint _value_changed_event(GtkAdjustment *adjustment, gpointer data)
581 { 581 {
582 GtkWidget *slider = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(adjustment), "slider");
583 SignalHandler *work = (SignalHandler *)data; 582 SignalHandler *work = (SignalHandler *)data;
584 583
585 if(slider && work) 584 if(work)
586 { 585 {
587 int (*valuechangedfunc)(HWND, int, void *) = work->func; 586 int (*valuechangedfunc)(HWND, int, void *) = work->func;
588 int max = _round_value(adjustment->upper); 587 int max = _round_value(adjustment->upper);
589 int val = _round_value(adjustment->value); 588 int val = _round_value(adjustment->value);
590 static int lastval = -1; 589 GtkWidget *slider = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(adjustment), "slider");
591 static GtkWidget *lastwidget = 0; 590 GtkWidget *scrollbar = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(adjustment), "scrollbar");
592 591
593 if(lastval != val || lastwidget != slider) 592 if(slider)
594 { 593 {
595 if(GTK_IS_VSCALE(slider)) 594 if(GTK_IS_VSCALE(slider))
596 valuechangedfunc(work->window, (max - val) - 1, work->data); 595 valuechangedfunc(work->window, (max - val) - 1, work->data);
597 else 596 else
598 valuechangedfunc(work->window, val, work->data); 597 valuechangedfunc(work->window, val, work->data);
598 }
599 else if(scrollbar)
600 {
601 valuechangedfunc(work->window, val, work->data);
599 } 602 }
600 } 603 }
601 return FALSE; 604 return FALSE;
602 } 605 }
603 606