static void test_xim_load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data) { KeyEventFixture* fixture = (KeyEventFixture*)data; WebKitLoadStatus status = webkit_web_view_get_load_status(webView); if (status != WEBKIT_LOAD_FINISHED) return; GtkIMContext* imContext = 0; g_object_get(webView, "im-context", &imContext, NULL); g_assert(imContext); gchar* originalId = g_strdup(gtk_im_multicontext_get_context_id(GTK_IM_MULTICONTEXT(imContext))); gtk_im_multicontext_set_context_id(GTK_IM_MULTICONTEXT(imContext), "xim"); // Test that commits that happen outside of key events // change the text field immediately. This closely replicates // the behavior of SCIM. fixture->info->text = g_strdup("debian"); if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), gdk_unicode_to_keyval('d'), 0)) g_assert_not_reached(); if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), gdk_unicode_to_keyval('e'), 0)) g_assert_not_reached(); if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), gdk_unicode_to_keyval('b'), 0)) g_assert_not_reached(); if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), gdk_unicode_to_keyval('i'), 0)) g_assert_not_reached(); if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), gdk_unicode_to_keyval('a'), 0)) g_assert_not_reached(); if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), gdk_unicode_to_keyval('n'), 0)) g_assert_not_reached(); gtk_im_multicontext_set_context_id(GTK_IM_MULTICONTEXT(imContext), originalId); g_free(originalId); g_object_unref(imContext); g_idle_add(verify_contents, fixture); }
void gKey::setActiveControl(gControl *control) { if (_im_control) { if (!_no_input_method) { #if DEBUG_IM fprintf(stderr, "gtk_im_context_focus_out\n"); #endif gtk_im_context_set_client_window (_im_context, 0); gtk_im_context_focus_out(_im_context); } _im_control = NULL; _no_input_method = false; } if (control) { _im_control = control; _no_input_method = control->noInputMethod(); if (!_no_input_method) { gtk_im_context_set_client_window (_im_context, _im_window); //gtk_widget_get_window(_im_control->widget)); gtk_im_context_focus_in(_im_context); gtk_im_context_reset(_im_context); #if DEBUG_IM fprintf(stderr, "gtk_im_context_focus_in: %s\n", gtk_im_multicontext_get_context_id(GTK_IM_MULTICONTEXT(_im_context))); if (control->getClass() == Type_gTextBox) { char *method; g_object_get(GTK_ENTRY(control->widget), "im-module", &method, (char *)NULL); fprintf(stderr, "GtkEntry im-module: %s\n", method); } #endif //_im_state_required = -1; } //memset(_key_code, 0, sizeof(uint) * MAX_CODE); } }