comparison gtk3/dw.c @ 1486:5cfbf2715eec

Code simplification on GTK2 and ported the fix to GTK3. If we need to add the fix to spinbuttons and sliders we need only set the data in those functions now.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 24 Dec 2011 13:18:03 +0000
parents dd584f431f9f
children d77b8cf25f04
comparison
equal deleted inserted replaced
1485:928daa73de8d 1486:5cfbf2715eec
1656 int val = _round_value(gtk_adjustment_get_value(adjustment)); 1656 int val = _round_value(gtk_adjustment_get_value(adjustment));
1657 GtkWidget *slider = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_slider"); 1657 GtkWidget *slider = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_slider");
1658 GtkWidget *spinbutton = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_spinbutton"); 1658 GtkWidget *spinbutton = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_spinbutton");
1659 GtkWidget *scrollbar = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_scrollbar"); 1659 GtkWidget *scrollbar = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_scrollbar");
1660 1660
1661 if (slider) 1661 if(g_object_get_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event"))
1662 return FALSE;
1663
1664 if (slider || spinbutton || scrollbar)
1662 { 1665 {
1663 SignalHandler work = _get_signal_handler((GtkWidget *)adjustment, data); 1666 SignalHandler work = _get_signal_handler((GtkWidget *)adjustment, data);
1664 1667
1665 if (work.window) 1668 if (work.window)
1666 { 1669 {
1667 int (*valuechangedfunc)(HWND, int, void *) = work.func; 1670 int (*valuechangedfunc)(HWND, int, void *) = work.func;
1668 1671
1669 if(GTK_IS_VSCALE(slider)) 1672 if(slider && GTK_IS_VSCALE(slider))
1670 valuechangedfunc(work.window, (max - val) - 1, work.data); 1673 valuechangedfunc(work.window, (max - val) - 1, work.data);
1671 else 1674 else
1672 valuechangedfunc(work.window, val, work.data); 1675 valuechangedfunc(work.window, val, work.data);
1673 }
1674 }
1675 else if (scrollbar || spinbutton)
1676 {
1677 SignalHandler work = _get_signal_handler((GtkWidget *)adjustment, data);
1678
1679 if (work.window)
1680 {
1681 int (*valuechangedfunc)(HWND, int, void *) = work.func;
1682
1683 valuechangedfunc(work.window, val, work.data);
1684 } 1676 }
1685 } 1677 }
1686 return FALSE; 1678 return FALSE;
1687 } 1679 }
1688 1680
4939 return; 4931 return;
4940 4932
4941 DW_MUTEX_LOCK; 4933 DW_MUTEX_LOCK;
4942 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment"); 4934 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
4943 if(adjustment) 4935 if(adjustment)
4936 {
4937 g_object_set_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event", GINT_TO_POINTER(1));
4944 gtk_adjustment_set_value(adjustment, (gfloat)position); 4938 gtk_adjustment_set_value(adjustment, (gfloat)position);
4939 g_object_set_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event", GINT_TO_POINTER(0));
4940 }
4945 DW_MUTEX_UNLOCK; 4941 DW_MUTEX_UNLOCK;
4946 } 4942 }
4947 4943
4948 /* 4944 /*
4949 * Sets the scrollbar range. 4945 * Sets the scrollbar range.