+G_GNUC_UNUSED static GtkIMModule *
+add_builtin_module (const gchar *module_name,
+ const GtkIMContextInfo **contexts,
+ int n_contexts)
+{
+ GtkIMModule *module = g_object_new (GTK_TYPE_IM_MODULE, NULL);
+ GSList *infos = NULL;
+ int i;
+
+ for (i = 0; i < n_contexts; i++)
+ {
+ GtkIMContextInfo *info = g_new (GtkIMContextInfo, 1);
+ info->context_id = g_strdup (contexts[i]->context_id);
+ info->context_name = g_strdup (contexts[i]->context_name);
+ info->domain = g_strdup (contexts[i]->domain);
+ info->domain_dirname = g_strdup (contexts[i]->domain_dirname);
+#ifdef G_OS_WIN32
+ correct_localedir_prefix ((char **) &info->domain_dirname);
+#endif
+ info->default_locales = g_strdup (contexts[i]->default_locales);
+ infos = g_slist_prepend (infos, info);
+ }
+
+ module->builtin = TRUE;
+ g_type_module_set_name (G_TYPE_MODULE (module), module_name);
+ add_module (module, infos);
+
+ return module;
+}
+