void connect_cb(FcitxClient *client, void *user_data) { fcitx_client_set_capacity(client, CAPACITY_CLIENT_SIDE_UI); fcitx_client_focus_in(client); fcitx_client_enable_ic(client); }
void _fcitx_im_context_set_capacity(FcitxIMContext* fcitxcontext, gboolean force) { if (fcitx_client_is_valid(fcitxcontext->client)) { FcitxCapacityFlags flags = fcitxcontext->capacity & ~(CAPACITY_PREEDIT | CAPACITY_FORMATTED_PREEDIT | CAPACITY_PASSWORD); if (fcitxcontext->use_preedit) flags |= CAPACITY_PREEDIT | CAPACITY_FORMATTED_PREEDIT; if (fcitxcontext->client_window != NULL) { GtkWidget *widget; gdk_window_get_user_data (fcitxcontext->client_window, (gpointer *)&widget); if (GTK_IS_ENTRY (widget) && !gtk_entry_get_visibility (GTK_ENTRY (widget))) { flags |= CAPACITY_PASSWORD; } } gboolean update = FALSE; if (G_UNLIKELY(fcitxcontext->capacity != flags)) { fcitxcontext->capacity = flags; update = TRUE; } if (G_UNLIKELY(update || force)) fcitx_client_set_capacity(fcitxcontext->client, fcitxcontext->capacity); } }