diff --git a/src/gtkdial.c b/src/gtkdial.c index f9c66a2..d20b764 100644 --- a/src/gtkdial.c +++ b/src/gtkdial.c @@ -477,13 +477,18 @@ GtkWidget *gtk_dial_new(GtkAdjustment *adjustment) { ); } -GtkWidget *gtk_dial_new_with_range(double min, double max, double step) { +GtkWidget *gtk_dial_new_with_range( + double min, + double max, + double step, + double page +) { GtkAdjustment *adj; int digits; g_return_val_if_fail(min < max, NULL); - adj = gtk_adjustment_new(min, min, max, step, 10 * step, 0); + adj = gtk_adjustment_new(min, min, max, step, page, 0); if (step == 0.0) { digits = -1; diff --git a/src/gtkdial.h b/src/gtkdial.h index 0ed83bd..3d2067b 100644 --- a/src/gtkdial.h +++ b/src/gtkdial.h @@ -43,7 +43,12 @@ GType gtk_dial_get_type(void) G_GNUC_CONST; GtkWidget *gtk_dial_new(GtkAdjustment *adjustment); -GtkWidget *gtk_dial_new_with_range(double min, double max, double step); +GtkWidget *gtk_dial_new_with_range( + double min, + double max, + double step, + double page +); void gtk_dial_set_has_origin(GtkDial *dial, gboolean has_origin); gboolean gtk_dial_get_has_origin(GtkDial *dial); diff --git a/src/widget-gain.c b/src/widget-gain.c index bd4136f..40f40b6 100644 --- a/src/widget-gain.c +++ b/src/widget-gain.c @@ -63,11 +63,16 @@ GtkWidget *make_gain_alsa_elem(struct alsa_elem *elem, int zero_is_off) { data->vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_widget_set_hexpand(data->vbox, TRUE); - data->dial = gtk_dial_new_with_range(elem->min_val, elem->max_val, 1); - data->scale = (float)(elem->max_dB - elem->min_dB) / (elem->max_val - elem->min_val); + data->dial = gtk_dial_new_with_range( + elem->min_val, + elem->max_val, + 1, + 3 / data->scale + ); + // calculate 0dB value int zero_db_value = (int)((0 - elem->min_dB) / data->scale + elem->min_val); diff --git a/src/window-levels.c b/src/window-levels.c index 2c277cc..5062015 100644 --- a/src/window-levels.c +++ b/src/window-levels.c @@ -95,7 +95,7 @@ GtkWidget *create_levels_controls(struct alsa_card *card) { count_labels[j] = add_count_label(grid, j); // create the meter widget and attach to the grid - GtkWidget *meter = gtk_dial_new_with_range(-80, 0, 0); + GtkWidget *meter = gtk_dial_new_with_range(-80, 0, 0, 0); gtk_widget_set_sensitive(meter, FALSE); card->meters[meter_num++] = meter; gtk_grid_attach(GTK_GRID(grid), meter, j + 1, i + 1, 1, 1);