diff gtk/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 928daa73de8d
children d77b8cf25f04
line wrap: on
line diff
--- a/gtk/dw.c	Sat Dec 24 12:28:29 2011 +0000
+++ b/gtk/dw.c	Sat Dec 24 13:18:03 2011 +0000
@@ -1808,8 +1808,12 @@
    GtkWidget *spinbutton = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(adjustment), "_dw_spinbutton");
    GtkWidget *scrollbar = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(adjustment), "_dw_scrollbar");
 
+   if(gtk_object_get_data(GTK_OBJECT(adjustment), "_dw_suppress_value_changed_event"))
+      return FALSE;
+
    if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
-   if (slider)
+
+   if (slider || spinbutton || scrollbar)
    {
       SignalHandler work = _get_signal_handler((GtkWidget *)adjustment, data);
 
@@ -1817,39 +1821,12 @@
       {
          int (*valuechangedfunc)(HWND, int, void *) = work.func;
 
-         if(GTK_IS_VSCALE(slider))
+         if(slider && GTK_IS_VSCALE(slider))
             valuechangedfunc(work.window, (max - val) - 1,  work.data);
          else
             valuechangedfunc(work.window, val,  work.data);
       }
    }
-   else if (spinbutton)
-   {
-      SignalHandler work = _get_signal_handler((GtkWidget *)adjustment, data);
-
-      if (work.window)
-      {
-         int (*valuechangedfunc)(HWND, int, void *) = work.func;
-
-         valuechangedfunc(work.window, val,  work.data);
-      }
-   }
-   else if (scrollbar)
-   {
-      gint suppress;
-      suppress = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(adjustment), "_dw_suppress_value_changed_event"));
-      if (!suppress )
-      {
-         SignalHandler work = _get_signal_handler((GtkWidget *)adjustment, data);
-
-         if (work.window)
-         {
-            int (*valuechangedfunc)(HWND, int, void *) = work.func;
-
-            valuechangedfunc(work.window, val,  work.data);
-         }
-      }
-   }
    return FALSE;
 }