Mercurial > dwindows
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) {