static void mb_im_context_focus_out (GtkIMContext *context) { protocol_send_event (MBKeyboardRemoteHide); if (GTK_IM_CONTEXT_CLASS (parent_class)->focus_out) GTK_IM_CONTEXT_CLASS (parent_class)->focus_out (context); }
static void gtk_im_context_wayland_reset (GtkIMContext *context) { reset_preedit (GTK_IM_CONTEXT_WAYLAND (context)); GTK_IM_CONTEXT_CLASS (parent_class)->reset (context); }
static gboolean gtk_im_context_wayland_filter_keypress (GtkIMContext *context, GdkEventKey *key) { /* This is done by the compositor */ return GTK_IM_CONTEXT_CLASS (parent_class)->filter_keypress (context, key); }
static void mb_im_context_class_init (MbIMContextClass *klass) { GtkIMContextClass *context_class = GTK_IM_CONTEXT_CLASS (klass); parent_class = g_type_class_peek_parent (klass); context_class->focus_in = mb_im_context_focus_in; context_class->focus_out = mb_im_context_focus_out; }
static void im_context_multipress_class_init (GtkImContextMultipressClass *klass) { GtkIMContextClass *im_context_class; /* Set this so we can use it later: */ im_context_multipress_parent_class = g_type_class_peek_parent (klass); /* Specify our vfunc implementations: */ im_context_class = GTK_IM_CONTEXT_CLASS (klass); im_context_class->filter_keypress = &vfunc_filter_keypress; im_context_class->reset = &vfunc_reset; im_context_class->get_preedit_string = &vfunc_get_preedit_string; G_OBJECT_CLASS (klass)->finalize = &im_context_multipress_finalize; }
void scim_bridge_client_imcontext_class_initialize (ScimBridgeClientIMContextClass *klass, gpointer *klass_data) { root_klass = (GObjectClass *) g_type_class_peek_parent (klass); GtkIMContextClass *gtk_im_klass = GTK_IM_CONTEXT_CLASS (klass); gtk_im_klass->set_client_window = scim_bridge_client_imcontext_set_client_window; gtk_im_klass->filter_keypress = scim_bridge_client_imcontext_filter_key_event; gtk_im_klass->reset = scim_bridge_client_imcontext_reset; gtk_im_klass->get_preedit_string = scim_bridge_client_imcontext_get_preedit_string; gtk_im_klass->focus_in = scim_bridge_client_imcontext_focus_in; gtk_im_klass->focus_out = scim_bridge_client_imcontext_focus_out; gtk_im_klass->set_cursor_location = scim_bridge_client_imcontext_set_cursor_location; gtk_im_klass->set_use_preedit = scim_bridge_client_imcontext_set_preedit_enabled; GObjectClass *gobject_klass = G_OBJECT_CLASS (klass); gobject_klass->finalize = scim_bridge_client_imcontext_finalize; }
static void gtk_im_context_wayland_class_init (GtkIMContextWaylandClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkIMContextClass *im_context_class = GTK_IM_CONTEXT_CLASS (klass); object_class->finalize = gtk_im_context_wayland_finalize; im_context_class->set_client_window = gtk_im_context_wayland_set_client_window; im_context_class->get_preedit_string = gtk_im_context_wayland_get_preedit_string; im_context_class->filter_keypress = gtk_im_context_wayland_filter_keypress; im_context_class->focus_in = gtk_im_context_wayland_focus_in; im_context_class->focus_out = gtk_im_context_wayland_focus_out; im_context_class->reset = gtk_im_context_wayland_reset; im_context_class->set_cursor_location = gtk_im_context_wayland_set_cursor_location; im_context_class->set_use_preedit = gtk_im_context_wayland_set_use_preedit; im_context_class->set_surrounding = gtk_im_context_wayland_set_surrounding; im_context_class->get_surrounding = gtk_im_context_wayland_get_surrounding; parent_class = g_type_class_peek_parent (klass); }
static void gtk_im_context_wayland_get_preedit_string (GtkIMContext *context, gchar **str, PangoAttrList **attrs, gint *cursor_pos) { GtkIMContextWayland *context_wayland = GTK_IM_CONTEXT_WAYLAND (context); gchar *preedit_str; if (attrs) *attrs = NULL; GTK_IM_CONTEXT_CLASS (parent_class)->get_preedit_string (context, str, attrs, cursor_pos); /* If the parent implementation returns a len>0 string, go with it */ if (str && *str) { if (**str) return; g_free (*str); } preedit_str = context_wayland->preedit.text ? context_wayland->preedit.text : ""; if (str) *str = g_strdup (preedit_str); if (cursor_pos) *cursor_pos = context_wayland->preedit.cursor_idx; if (attrs) { if (!*attrs) *attrs = pango_attr_list_new (); pango_attr_list_insert (*attrs, pango_attr_underline_new (PANGO_UNDERLINE_SINGLE)); } }
static void fcitx_im_context_class_init(FcitxIMContextClass *klass) { GtkIMContextClass *im_context_class = GTK_IM_CONTEXT_CLASS(klass); GObjectClass *gobject_class = G_OBJECT_CLASS(klass); parent_class = (GtkIMContextClass *) g_type_class_peek_parent (klass); im_context_class->set_client_window = fcitx_im_context_set_client_window; im_context_class->filter_keypress = fcitx_im_context_filter_keypress; im_context_class->reset = fcitx_im_context_reset; im_context_class->get_preedit_string = fcitx_im_context_get_preedit_string; im_context_class->focus_in = fcitx_im_context_focus_in; im_context_class->focus_out = fcitx_im_context_focus_out; im_context_class->set_cursor_location = fcitx_im_context_set_cursor_location; im_context_class->set_use_preedit = fcitx_im_context_set_use_preedit; im_context_class->set_surrounding = fcitx_im_context_set_surrounding; gobject_class->finalize = fcitx_im_context_finalize; _signal_commit_id = g_signal_lookup("commit", G_TYPE_FROM_CLASS(klass)); g_assert(_signal_commit_id != 0); _signal_preedit_changed_id = g_signal_lookup("preedit-changed", G_TYPE_FROM_CLASS(klass)); g_assert(_signal_preedit_changed_id != 0); _signal_preedit_start_id = g_signal_lookup("preedit-start", G_TYPE_FROM_CLASS(klass)); g_assert(_signal_preedit_start_id != 0); _signal_preedit_end_id = g_signal_lookup("preedit-end", G_TYPE_FROM_CLASS(klass)); g_assert(_signal_preedit_end_id != 0); _signal_delete_surrounding_id = g_signal_lookup("delete-surrounding", G_TYPE_FROM_CLASS(klass)); g_assert(_signal_delete_surrounding_id != 0); _signal_retrieve_surrounding_id = g_signal_lookup("retrieve-surrounding", G_TYPE_FROM_CLASS(klass)); g_assert(_signal_retrieve_surrounding_id != 0); _use_key_snooper = !_get_boolean_env ("IBUS_DISABLE_SNOOPER", !(_ENABLE_SNOOPER)) && !_get_boolean_env("FCITX_DISABLE_SNOOPER", !(_ENABLE_SNOOPER)); /* env IBUS_DISABLE_SNOOPER does not exist */ if (_use_key_snooper) { /* disable snooper if app is in _no_snooper_apps */ const gchar * prgname = g_get_prgname (); if (g_getenv ("IBUS_NO_SNOOPER_APPS")) { _no_snooper_apps = g_getenv ("IBUS_NO_SNOOPER_APPS"); } if (g_getenv ("FCITX_NO_SNOOPER_APPS")) { _no_snooper_apps = g_getenv ("FCITX_NO_SNOOPER_APPS"); } gchar **p; gchar ** apps = g_strsplit (_no_snooper_apps, ",", 0); for (p = apps; *p != NULL; p++) { if (g_regex_match_simple (*p, prgname, 0, 0)) { _use_key_snooper = FALSE; break; } } g_strfreev (apps); } /* make ibus fix benefits us */ _use_sync_mode = _get_boolean_env("IBUS_ENABLE_SYNC_MODE", FALSE) || _get_boolean_env("FCITX_ENABLE_SYNC_MODE", FALSE); /* always install snooper */ if (_key_snooper_id == 0) _key_snooper_id = gtk_key_snooper_install (_key_snooper_cb, NULL); }