diff options
Diffstat (limited to 'clutter/clutter/clutter-main.c')
-rw-r--r-- | clutter/clutter/clutter-main.c | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c index be9f74441..e758e170a 100644 --- a/clutter/clutter/clutter-main.c +++ b/clutter/clutter/clutter-main.c @@ -51,6 +51,7 @@ #include <stdlib.h> #include <glib/gi18n-lib.h> +#include <hb-glib.h> #include "clutter-actor-private.h" #include "clutter-backend-private.h" @@ -221,20 +222,28 @@ clutter_get_text_direction (void) } else { - /* - * Translate to default:RTL if you want your widgets - * to be RTL, otherwise translate to default:LTR. - * Do *not* translate it to "predefinito:LTR", if it - * it isn't default:LTR or default:RTL it will not work - */ - const char *e = _("default:LTR"); - - if (strcmp (e, "default:RTL") == 0) - dir = CLUTTER_TEXT_DIRECTION_RTL; - else if (strcmp (e, "default:LTR") == 0) - dir = CLUTTER_TEXT_DIRECTION_LTR; - else - g_warning ("Whoever translated default:LTR did so wrongly."); + PangoLanguage *language; + const PangoScript *scripts; + int n_scripts, i; + + language = pango_language_get_default (); + scripts = pango_language_get_scripts (language, &n_scripts); + + for (i = 0; i < n_scripts; i++) + { + hb_script_t script; + hb_direction_t text_dir; + + script = hb_glib_script_to_script ((GUnicodeScript) scripts[i]); + text_dir = hb_script_get_horizontal_direction (script); + + if (text_dir == HB_DIRECTION_LTR) + dir = CLUTTER_TEXT_DIRECTION_LTR; + else if (text_dir == HB_DIRECTION_RTL) + dir = CLUTTER_TEXT_DIRECTION_RTL; + else + continue; + } } CLUTTER_NOTE (MISC, "Text direction: %s", |