static gboolean spun_cb_idle( gpointer spin ) { gboolean keep_waiting = TRUE; GObject * o = G_OBJECT( spin ); struct spin_idle_data * data = g_object_get_data( o, IDLE_DATA ); /* has the user stopped making changes? */ if( g_timer_elapsed( data->last_change, NULL ) > 0.33f ) { /* update the core */ const char * key = g_object_get_data( o, PREF_KEY ); if (data->isDouble) { const double value = gtk_spin_button_get_value( GTK_SPIN_BUTTON( spin ) ); tr_core_set_pref_double( TR_CORE( data->core ), key, value ); } else { const int value = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( spin ) ); tr_core_set_pref_int( TR_CORE( data->core ), key, value ); } /* cleanup */ g_object_set_data( o, IDLE_DATA, NULL ); keep_waiting = FALSE; g_object_unref( G_OBJECT( o ) ); } return keep_waiting; }
static void level_combo_changed_cb( GtkComboBox * combo_box, gpointer gdata ) { struct MsgData * data = gdata; const int level = gtr_combo_box_get_active_enum( combo_box ); tr_setMessageLevel( level ); tr_core_set_pref_int( data->core, TR_PREFS_KEY_MSGLEVEL, level ); data->maxLevel = level; gtk_tree_model_filter_refilter( GTK_TREE_MODEL_FILTER( data->filter ) ); }