changeset 1578:36f0cfda3be3

Fix value_changed code for GTK3... thought this used to work... but it seems to have partially broken. Now it should work.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 23 Jan 2012 23:40:11 +0000
parents fdafbc654e9d
children 245e6bf51317
files gtk3/dw.c
diffstat 1 files changed, 18 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/gtk3/dw.c	Mon Jan 23 22:44:08 2012 +0000
+++ b/gtk3/dw.c	Mon Jan 23 23:40:11 2012 +0000
@@ -147,7 +147,7 @@
 static gint _expose_event(GtkWidget *widget, cairo_t *cr, gpointer data);
 static gint _set_focus_event(GtkWindow *window, GtkWidget *widget, gpointer data);
 static gint _tree_context_event(GtkWidget *widget, GdkEventButton *event, gpointer data);
-static gint _value_changed_event(GtkAdjustment *adjustment, gpointer user_data);
+static gint _value_changed_event(GtkWidget *widget, gpointer user_data);
 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data);
 static gint _tree_expand_event(GtkTreeView *treeview, GtkTreeIter *arg1, GtkTreePath *arg2, gpointer data);
 static gint _switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data);
@@ -1649,20 +1649,28 @@
    return newval;
 }
 
-static gint _value_changed_event(GtkAdjustment *adjustment, gpointer data)
-{
-   int max = _round_value(gtk_adjustment_get_upper(adjustment));
-   int val = _round_value(gtk_adjustment_get_value(adjustment));
-   GtkWidget *slider = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_slider");
-   GtkWidget *spinbutton = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_spinbutton");
-   GtkWidget *scrollbar = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_scrollbar");
-
+static gint _value_changed_event(GtkWidget *widget, gpointer data)
+{
+   GtkWidget *slider, *spinbutton, *scrollbar;
+   GtkAdjustment *adjustment = (GtkAdjustment *)widget;
+   int max, val;
+   
+   if(!GTK_IS_ADJUSTMENT(adjustment))
+      adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(widget), "_dw_adjustment");
+      
+   slider = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_slider");
+   spinbutton = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_spinbutton");
+   scrollbar = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_scrollbar");
+   
+   max = _round_value(gtk_adjustment_get_upper(adjustment));
+   val = _round_value(gtk_adjustment_get_value(adjustment));
+   
    if(g_object_get_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event"))
       return FALSE;
 
    if (slider || spinbutton || scrollbar)
    {
-      SignalHandler work = _get_signal_handler((GtkWidget *)adjustment, data);
+      SignalHandler work = _get_signal_handler(widget, data);
 
       if (work.window)
       {