diff --git a/gtk/gtkimmodule.c b/gtk/gtkimmodule.c
index 0f45847..5e35498 100644
--- a/gtk/gtkimmodule.c
+++ b/gtk/gtkimmodule.c
@@ -646,12 +646,14 @@ lookup_immodule (gchar **immodules_list)
       if (g_strcmp0 (*immodules_list, SIMPLE_ID) == 0)
         return SIMPLE_ID;
       else
-       {
-         GtkIMModule *module;
-         module = g_hash_table_lookup (contexts_hash, *immodules_list);
-         if (module)
-           return module->contexts[0]->context_id;
-       }
+	{
+	  gboolean found;
+	  gchar *context_id;
+	  found = g_hash_table_lookup_extended (contexts_hash, *immodules_list,
+						&context_id, NULL);
+	  if (found)
+	    return context_id;
+	}
       immodules_list++;
     }
 
