[gnome-settings-daemon] media-keys: Fix up DPI shortcut keys



commit 79e0f5e508376635e15974a486812314642e5f66
Author: Bastien Nocera <hadess hadess net>
Date:   Mon Feb 28 16:24:08 2011 +0000

    media-keys: Fix up DPI shortcut keys
    
    Seems like I don't know how to code in C. Add 0.75 scale factor.

 plugins/media-keys/gsd-media-keys-manager.c |   36 ++++++++++++++++++++------
 1 files changed, 27 insertions(+), 9 deletions(-)
---
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 44f73d3..8868dd8 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -1151,7 +1151,17 @@ do_text_size_action (GsdMediaKeysManager *manager,
 		     MediaKeyType         type)
 {
 	GSettings *font_settings;
-	gdouble x_dpi, u_dpi, factor;
+	gdouble x_dpi, u_dpi;
+	gdouble factor, best, distance;
+	guint i;
+
+	/* Same values used in the Seeing tab of the Universal Access panel */
+	static gdouble factors[] = {
+		0.75,
+		1.0,
+		1.25,
+		1.5
+	};
 
 	font_settings = g_settings_new (SETTINGS_XSETTINGS_DIR);
 
@@ -1166,15 +1176,23 @@ do_text_size_action (GsdMediaKeysManager *manager,
 	/* Increasing text size means increasing the DPI */
 	factor += (type == INCREASE_TEXT_KEY ? 0.25 : -0.25);
 
-	/* Same values used in the Seeing tab of the Universal Access panel */
-	if (fabs (factor - 1.0)  < 1e6 ||
-	    factor < 1.0) {
-		g_settings_reset (font_settings, "dpi");
-	} else if (factor > 1.0 && factor <= 1.25) {
-		g_settings_set_double (font_settings, "dpi", 1.25);
-	} else {
-		g_settings_set_double (font_settings, "dpi", 1.5);
+	/* Try to find a matching value */
+	distance = 1e6;
+	best = 1.0;
+	for (i = 0; i < G_N_ELEMENTS(factors); i++) {
+		gdouble d;
+		d = fabs (factor - factors[i]);
+		if (d < distance) {
+			best = factors[i];
+			distance = d;
+		}
 	}
+
+	if (best == 1.0)
+		g_settings_reset (font_settings, "dpi");
+	else
+		g_settings_set_double (font_settings, "dpi", best);
+
 	g_object_unref (font_settings);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]