}


void scim_bridge_client_imcontext_focus_out (GtkIMContext *context)
{
    scim_bridge_pdebugln (8, "scim_bridge_client_imcontext_focus_out ()");

    ScimBridgeClientIMContext *imcontext = SCIM_BRIDGE_CLIENT_IMCONTEXT (context);
    focused_widget = NULL;

    focused_imcontext = imcontext;
    if (imcontext->preedit_shown) {
        if (imcontext->enabled) {
            scim_bridge_client_imcontext_set_preedit_shown (imcontext, FALSE);
            scim_bridge_client_imcontext_update_preedit (imcontext);
        } else {
            gtk_im_context_reset (GTK_IM_CONTEXT (fallback_imcontext));
        }
    }
    if (scim_bridge_client_is_messenger_opened () && imcontext != NULL) {
        if (scim_bridge_client_change_focus (imcontext, FALSE)) {
            scim_bridge_perrorln ("An IOException occurred at scim_bridge_client_imcontext_focus_out ()");
        }
    }
    if (key_snooper_used) {
        gtk_key_snooper_remove (key_snooper_id);
        key_snooper_id = 0;
        key_snooper_used = FALSE;
    }
예제 #2
0
static VALUE
rg_s_key_snooper_remove(VALUE self, VALUE id)
{
    gtk_key_snooper_remove(NUM2UINT(id));
    G_REMOVE_RELATIVE(self, id__snooper_callbacks__, id);
    return Qnil;
}
예제 #3
0
static void
fcitx_im_context_class_fini (FcitxIMContextClass *klass)
{
    if (_key_snooper_id != 0) {
        gtk_key_snooper_remove (_key_snooper_id);
        _key_snooper_id = 0;
    }
}
void scim_bridge_client_imcontext_static_finalize ()
{
    if (key_snooper_used) {
        gtk_key_snooper_remove (key_snooper_id);
        key_snooper_id = 0;
        key_snooper_used = FALSE;
    }

    focused_imcontext = NULL;
}
void scim_bridge_client_imcontext_static_finalize ()
{
    g_signal_handlers_disconnect_by_func (fallback_imcontext, &fallback_commit_handler, NULL);
    g_object_unref (fallback_imcontext);
    if (key_snooper_used) {
        gtk_key_snooper_remove (key_snooper_id);
        key_snooper_id = 0;
        key_snooper_used = FALSE;
    }

    fallback_imcontext = NULL;
    focused_imcontext = NULL;
}
static void
mai_util_remove_key_event_listener (guint remove_listener)
{
    if (!key_listener_list) {
        // atk-bridge is initialized with gail (e.g. yelp)
        // try gail_remove_key_event_listener
        return gail_remove_key_event_listener(remove_listener);
    }

    g_hash_table_remove(key_listener_list, GUINT_TO_POINTER (remove_listener));
    if (g_hash_table_size(key_listener_list) == 0) {
        gtk_key_snooper_remove(key_snooper_id);
    }
}