/* from/to/value have changed ... update the widgets. */ static void tslider_real_changed( Tslider *tslider ) { GtkAdjustment *adj = tslider->adj; GtkWidget *entry = tslider->entry; #ifdef DEBUG printf( "tslider_real_changed: %p, val = %g\n", tslider, tslider->value ); #endif /*DEBUG*/ if( tslider->auto_link ) tslider->svalue = tslider_value_to_slider( tslider, tslider->value ); gtk_signal_handler_block_by_data( GTK_OBJECT( adj ), tslider ); gtk_signal_handler_block_by_data( GTK_OBJECT( entry ), tslider ); /* Some libc's hate out-of-bounds precision, so clip, just in case. */ set_gentry( tslider->entry, "%.*f", IM_CLIP( 0, tslider->digits, 100 ), tslider->value ); gtk_scale_set_digits( GTK_SCALE( tslider->slider ), tslider->digits ); if( !DEQ( tslider->from, tslider->last_from ) || !DEQ( tslider->to, tslider->last_to ) ) { double range = tslider->to - tslider->from; adj->step_increment = range / 100; adj->page_increment = range / 10; adj->page_size = range / 10; adj->lower = tslider->from; adj->upper = tslider->to + adj->page_size; tslider->last_to = tslider->to; tslider->last_from = tslider->from; gtk_adjustment_changed( adj ); } if( !DEQ( tslider->svalue, tslider->last_svalue ) ) { adj->value = tslider->svalue; tslider->last_svalue = tslider->svalue; gtk_adjustment_value_changed( adj ); } gtk_signal_handler_unblock_by_data( GTK_OBJECT( adj ), tslider ); gtk_signal_handler_unblock_by_data( GTK_OBJECT( entry ), tslider ); }
static void gradient_select_list_item_update (GtkWidget *widget, gint row, gint column, GdkEventButton *event, gpointer data) { GradientSelect *gsp; GSList *list; gsp = (GradientSelect *) data; list = g_slist_nth (gradients_list, row); gtk_signal_handler_block_by_data (GTK_OBJECT (gsp->context), gsp); /* gimp_context_set_gradient (gsp->context, (gradient_t *) list->data); */ gtk_signal_handler_unblock_by_data (GTK_OBJECT (gsp->context), gsp); gsp->dnd_gradient = (gradient_t *) list->data; /* if (gsp->callback_name) gradient_change_callbacks (gsp, FALSE); */ }
static void entry_notify_func(GConfClient* client, guint cnxn_id, GConfEntry *gconf_entry, gpointer user_data) { GtkWidget* entry = user_data; g_return_if_fail(GTK_IS_ENTRY(entry)); gtk_signal_handler_block_by_data(GTK_OBJECT(entry), client); gtk_entry_set_text(GTK_ENTRY(entry), gconf_value_get_string(gconf_entry->value)); gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), client); }
static void gradient_select_select (GradientSelect *gsp, gradient_t *gradient) { gint index; index = gradient_list_get_gradient_index (gradients_list, gradient); if (index != -1) { gtk_signal_handler_block_by_data (GTK_OBJECT (gsp->clist), gsp); gtk_clist_select_row (GTK_CLIST (gsp->clist), index, -1); gtk_clist_moveto (GTK_CLIST (gsp->clist), index, 0, 0.5, 0.0); gtk_signal_handler_unblock_by_data (GTK_OBJECT (gsp->clist), gsp); } }