diff options
author | Rui Matos <tiagomatos@gmail.com> | 2017-08-28 18:24:21 +0200 |
---|---|---|
committer | Rui Matos <tiagomatos@gmail.com> | 2017-08-28 18:58:05 +0200 |
commit | bbccf274881e00bda9f8faa2fb4bcb82afa7525e (patch) | |
tree | 6844ea88b1717302aad5007febac0d78dd64ae4b | |
parent | a4a243cee4cef10b32fafc9d646cd5d2b7d75ec7 (diff) | |
download | gnome-control-center-bbccf274881e00bda9f8faa2fb4bcb82afa7525e.tar.gz |
display: Simplify scale filtering
This is prone to miss intermediate values that users might actually
want to use so, for now, just show the 5 first scales.
-rw-r--r-- | panels/display/cc-display-panel.c | 44 |
1 files changed, 8 insertions, 36 deletions
diff --git a/panels/display/cc-display-panel.c b/panels/display/cc-display-panel.c index d0bfd4775..277c39d94 100644 --- a/panels/display/cc-display-panel.c +++ b/panels/display/cc-display-panel.c @@ -1116,54 +1116,26 @@ make_label_for_scale (double scale) #define MAX_N_SCALES 5 static void -get_display_scales (CcDisplayMonitor *output, - double *scales) -{ - CcDisplayMode *mode; - const double *all_scales; - double preferred; - double increment; - guint n, i, j; - - mode = cc_display_monitor_get_mode (output); - if (!mode) - return; - - all_scales = cc_display_mode_get_supported_scales (mode); - n = n_supported_scales (mode); - if (n <= MAX_N_SCALES) - { - memcpy (scales, all_scales, n * sizeof (double)); - return; - } - - preferred = cc_display_mode_get_preferred_scale (mode); - increment = (all_scales[n - 1] - all_scales[0]) / (double) (MAX_N_SCALES - 1); - - scales[0] = all_scales[0]; - - for (i = j = 1; i < n && j < MAX_N_SCALES; i++) - if (all_scales[i] >= scales[0] + increment*j || all_scales[i] == preferred) - scales[j++] = all_scales[i]; -} - -static void setup_scale_buttons (GtkWidget *bbox, CcDisplayMonitor *output) { CcDisplayPanel *panel; GtkRadioButton *group; - double scales[MAX_N_SCALES + 1] = { 0 }; - double *scale; + CcDisplayMode *mode; + const double *scales, *scale; + guint i; panel = g_object_get_data (G_OBJECT (bbox), "panel"); gtk_container_foreach (GTK_CONTAINER (bbox), (GtkCallback) gtk_widget_destroy, NULL); - get_display_scales (output, scales); + mode = cc_display_monitor_get_mode (output); + if (!mode) + return; + scales = cc_display_mode_get_supported_scales (mode); group = NULL; - for (scale = scales; *scale != 0.0; scale++) + for (scale = scales, i = 0; *scale != 0.0 && i < MAX_N_SCALES; scale++, i++) { GtkWidget *button = gtk_radio_button_new_from_widget (group); |