summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRui Matos <tiagomatos@gmail.com>2017-08-28 18:24:21 +0200
committerRui Matos <tiagomatos@gmail.com>2017-08-28 18:58:05 +0200
commitbbccf274881e00bda9f8faa2fb4bcb82afa7525e (patch)
tree6844ea88b1717302aad5007febac0d78dd64ae4b
parenta4a243cee4cef10b32fafc9d646cd5d2b7d75ec7 (diff)
downloadgnome-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.c44
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);