Mercurial > dwindows
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. |