From: Krzysztof KosiƄski Date: Sat, 13 Mar 2010 02:48:03 +0000 (+0100) Subject: Try harder to fix the tablet configuration problem X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=5027356a4ac2c30c10d70f8f82ea5dea705a36f8;p=inkscape.git Try harder to fix the tablet configuration problem --- diff --git a/src/dialogs/input.cpp b/src/dialogs/input.cpp index f2ef8afe0..a8892bde4 100644 --- a/src/dialogs/input.cpp +++ b/src/dialogs/input.cpp @@ -69,15 +69,30 @@ static gchar const *axis_use_strings[GDK_AXIS_LAST] = { static Glib::ustring sanitized_device_path(gchar const *str) { - // LP #334800: device names on Windows sometimes contain funny junk like - // \x03, \xf2, etc. We need to get rid of this to properly access the settings. - gchar *escaped = g_strescape(str, NULL); + // LP #334800: tablet device names on Windows sometimes contain funny junk like + // \x03, \xf2, etc. Moreover this junk changes between runs. + // If the tablet name contains unprintable or non-ASCII characters, + // we use some default name. + // This might break if someone has two tablets with broken names, but it's + // not possible to do anything 100% correct then. + bool broken = false; + if (!str || *str == 0) { + broken = true; + } else { + for (gchar const *s = str; *s; ++s) { + if (*s < 0x20 || *s >= 0x7f) { + broken = true; + break; + } + } + } - for (gchar *s = escaped; *s; ++s) { - if (*s == '/') *s = '_'; + Glib::ustring device_path = "/devices/"; + if (broken) { + device_path += "Tablet"; + } else { + device_path += str; } - Glib::ustring device_path = Glib::ustring("/devices/") + escaped; - g_free(escaped); return device_path; }