summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2009-02-24 16:38:47 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2009-02-24 16:38:47 +0800
commitadd104e86d0c4c53d5eea3f5b4dcc9db95b0f604 (patch)
tree2ab7c2fa68a868da418828ddfaf18dfa2beacbec
parent388debd8ad1fdaefd2ad42c872f9d7c5577fb73c (diff)
downloadibus-add104e86d0c4c53d5eea3f5b4dcc9db95b0f604.tar.gz
ibus-add104e86d0c4c53d5eea3f5b4dcc9db95b0f604.tar.xz
ibus-add104e86d0c4c53d5eea3f5b4dcc9db95b0f604.zip
Sort the default preload engines by priority.
-rw-r--r--bus/ibusimpl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
index 91db048..09e5c40 100644
--- a/bus/ibusimpl.c
+++ b/bus/ibusimpl.c
@@ -229,6 +229,13 @@ bus_ibus_impl_set_preload_engines (BusIBusImpl *ibus,
ibus->engine_list = engine_list;
}
+static gint
+_engine_desc_cmp (IBusEngineDesc *desc1,
+ IBusEngineDesc *desc2)
+{
+ return - ((gint) desc1->priority) + ((gint) desc2->priority);
+}
+
static void
bus_ibus_impl_set_default_preload_engines (BusIBusImpl *ibus)
{
@@ -265,6 +272,8 @@ bus_ibus_impl_set_default_preload_engines (BusIBusImpl *ibus)
engines = bus_registry_get_engines_by_language (ibus->registry, lang);
}
}
+
+ engines = g_list_sort (engines, (GCompareFunc) _engine_desc_cmp);
g_free (lang);
g_value_init (&value, G_TYPE_VALUE_ARRAY);