/* emojier.c generated by valac 0.40.8, the Vala compiler * generated from emojier.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright (c) 2017-2018 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define TYPE_IBUS_EMOJIER (ibus_emojier_get_type ()) #define IBUS_EMOJIER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IBUS_EMOJIER, IBusEmojier)) #define IBUS_EMOJIER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IBUS_EMOJIER, IBusEmojierClass)) #define IS_IBUS_EMOJIER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IBUS_EMOJIER)) #define IS_IBUS_EMOJIER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IBUS_EMOJIER)) #define IBUS_EMOJIER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IBUS_EMOJIER, IBusEmojierClass)) typedef struct _IBusEmojier IBusEmojier; typedef struct _IBusEmojierClass IBusEmojierClass; typedef struct _IBusEmojierPrivate IBusEmojierPrivate; #define TYPE_THEMED_RGBA (themed_rgba_get_type ()) #define THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THEMED_RGBA, ThemedRGBA)) #define THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THEMED_RGBA, ThemedRGBAClass)) #define IS_THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THEMED_RGBA)) #define IS_THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THEMED_RGBA)) #define THEMED_RGBA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THEMED_RGBA, ThemedRGBAClass)) typedef struct _ThemedRGBA ThemedRGBA; typedef struct _ThemedRGBAClass ThemedRGBAClass; #define IBUS_EMOJIER_TYPE_EENTRY (ibus_emojier_eentry_get_type ()) #define IBUS_EMOJIER_EENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EENTRY, IBusEmojierEEntry)) #define IBUS_EMOJIER_EENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EENTRY, IBusEmojierEEntryClass)) #define IBUS_EMOJIER_IS_EENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EENTRY)) #define IBUS_EMOJIER_IS_EENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EENTRY)) #define IBUS_EMOJIER_EENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EENTRY, IBusEmojierEEntryClass)) typedef struct _IBusEmojierEEntry IBusEmojierEEntry; typedef struct _IBusEmojierEEntryClass IBusEmojierEEntryClass; #define IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW (ibus_emojier_escrolled_window_get_type ()) #define IBUS_EMOJIER_ESCROLLED_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, IBusEmojierEScrolledWindow)) #define IBUS_EMOJIER_ESCROLLED_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, IBusEmojierEScrolledWindowClass)) #define IBUS_EMOJIER_IS_ESCROLLED_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW)) #define IBUS_EMOJIER_IS_ESCROLLED_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW)) #define IBUS_EMOJIER_ESCROLLED_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, IBusEmojierEScrolledWindowClass)) typedef struct _IBusEmojierEScrolledWindow IBusEmojierEScrolledWindow; typedef struct _IBusEmojierEScrolledWindowClass IBusEmojierEScrolledWindowClass; #define IBUS_EMOJIER_TYPE_ELIST_BOX (ibus_emojier_elist_box_get_type ()) #define IBUS_EMOJIER_ELIST_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_ELIST_BOX, IBusEmojierEListBox)) #define IBUS_EMOJIER_ELIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_ELIST_BOX, IBusEmojierEListBoxClass)) #define IBUS_EMOJIER_IS_ELIST_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_ELIST_BOX)) #define IBUS_EMOJIER_IS_ELIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_ELIST_BOX)) #define IBUS_EMOJIER_ELIST_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_ELIST_BOX, IBusEmojierEListBoxClass)) typedef struct _IBusEmojierEListBox IBusEmojierEListBox; typedef struct _IBusEmojierEListBoxClass IBusEmojierEListBoxClass; enum { IBUS_EMOJIER_0_PROPERTY, IBUS_EMOJIER_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_properties[IBUS_EMOJIER_NUM_PROPERTIES]; #define IBUS_EMOJIER_TYPE_TRAVEL_DIRECTION (ibus_emojier_travel_direction_get_type ()) #define IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT (ibus_emojier_load_progress_object_get_type ()) #define IBUS_EMOJIER_LOAD_PROGRESS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, IBusEmojierLoadProgressObject)) #define IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, IBusEmojierLoadProgressObjectClass)) #define IBUS_EMOJIER_IS_LOAD_PROGRESS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT)) #define IBUS_EMOJIER_IS_LOAD_PROGRESS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT)) #define IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, IBusEmojierLoadProgressObjectClass)) typedef struct _IBusEmojierLoadProgressObject IBusEmojierLoadProgressObject; typedef struct _IBusEmojierLoadProgressObjectClass IBusEmojierLoadProgressObjectClass; #define _themed_rgba_unref0(var) ((var == NULL) ? NULL : (var = (themed_rgba_unref (var), NULL))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _g_main_loop_unref0(var) ((var == NULL) ? NULL : (var = (g_main_loop_unref (var), NULL))) #define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) #define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define IBUS_EMOJIER_TYPE_EBOX_ROW (ibus_emojier_ebox_row_get_type ()) #define IBUS_EMOJIER_EBOX_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow)) #define IBUS_EMOJIER_EBOX_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRowClass)) #define IBUS_EMOJIER_IS_EBOX_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EBOX_ROW)) #define IBUS_EMOJIER_IS_EBOX_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EBOX_ROW)) #define IBUS_EMOJIER_EBOX_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRowClass)) typedef struct _IBusEmojierEBoxRow IBusEmojierEBoxRow; typedef struct _IBusEmojierEBoxRowClass IBusEmojierEBoxRowClass; #define IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX (ibus_emojier_epadded_label_box_get_type ()) #define IBUS_EMOJIER_EPADDED_LABEL_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, IBusEmojierEPaddedLabelBox)) #define IBUS_EMOJIER_EPADDED_LABEL_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, IBusEmojierEPaddedLabelBoxClass)) #define IBUS_EMOJIER_IS_EPADDED_LABEL_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX)) #define IBUS_EMOJIER_IS_EPADDED_LABEL_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX)) #define IBUS_EMOJIER_EPADDED_LABEL_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, IBusEmojierEPaddedLabelBoxClass)) typedef struct _IBusEmojierEPaddedLabelBox IBusEmojierEPaddedLabelBox; typedef struct _IBusEmojierEPaddedLabelBoxClass IBusEmojierEPaddedLabelBoxClass; typedef struct _Block1Data Block1Data; #define _pango_attr_list_unref0(var) ((var == NULL) ? NULL : (var = (pango_attr_list_unref (var), NULL))) #define IBUS_EMOJIER_TYPE_EGRID (ibus_emojier_egrid_get_type ()) #define IBUS_EMOJIER_EGRID(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EGRID, IBusEmojierEGrid)) #define IBUS_EMOJIER_EGRID_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EGRID, IBusEmojierEGridClass)) #define IBUS_EMOJIER_IS_EGRID(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EGRID)) #define IBUS_EMOJIER_IS_EGRID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EGRID)) #define IBUS_EMOJIER_EGRID_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EGRID, IBusEmojierEGridClass)) typedef struct _IBusEmojierEGrid IBusEmojierEGrid; typedef struct _IBusEmojierEGridClass IBusEmojierEGridClass; typedef struct _Block2Data Block2Data; #define IBUS_EMOJIER_TYPE_EWHITE_LABEL (ibus_emojier_ewhite_label_get_type ()) #define IBUS_EMOJIER_EWHITE_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabel)) #define IBUS_EMOJIER_EWHITE_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabelClass)) #define IBUS_EMOJIER_IS_EWHITE_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EWHITE_LABEL)) #define IBUS_EMOJIER_IS_EWHITE_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EWHITE_LABEL)) #define IBUS_EMOJIER_EWHITE_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabelClass)) typedef struct _IBusEmojierEWhiteLabel IBusEmojierEWhiteLabel; typedef struct _IBusEmojierEWhiteLabelClass IBusEmojierEWhiteLabelClass; #define IBUS_EMOJIER_TYPE_ESELECTED_LABEL (ibus_emojier_eselected_label_get_type ()) #define IBUS_EMOJIER_ESELECTED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_ESELECTED_LABEL, IBusEmojierESelectedLabel)) #define IBUS_EMOJIER_ESELECTED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_ESELECTED_LABEL, IBusEmojierESelectedLabelClass)) #define IBUS_EMOJIER_IS_ESELECTED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_ESELECTED_LABEL)) #define IBUS_EMOJIER_IS_ESELECTED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_ESELECTED_LABEL)) #define IBUS_EMOJIER_ESELECTED_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_ESELECTED_LABEL, IBusEmojierESelectedLabelClass)) typedef struct _IBusEmojierESelectedLabel IBusEmojierESelectedLabel; typedef struct _IBusEmojierESelectedLabelClass IBusEmojierESelectedLabelClass; #define IBUS_EMOJIER_TYPE_EGOLD_LABEL (ibus_emojier_egold_label_get_type ()) #define IBUS_EMOJIER_EGOLD_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EGOLD_LABEL, IBusEmojierEGoldLabel)) #define IBUS_EMOJIER_EGOLD_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EGOLD_LABEL, IBusEmojierEGoldLabelClass)) #define IBUS_EMOJIER_IS_EGOLD_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EGOLD_LABEL)) #define IBUS_EMOJIER_IS_EGOLD_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EGOLD_LABEL)) #define IBUS_EMOJIER_EGOLD_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EGOLD_LABEL, IBusEmojierEGoldLabelClass)) typedef struct _IBusEmojierEGoldLabel IBusEmojierEGoldLabel; typedef struct _IBusEmojierEGoldLabelClass IBusEmojierEGoldLabelClass; #define __vala_GdkEventMotion_free0(var) ((var == NULL) ? NULL : (var = (_vala_GdkEventMotion_free (var), NULL))) #define __vala_PangoFontDescription_free0(var) ((var == NULL) ? NULL : (var = (_vala_PangoFontDescription_free (var), NULL))) typedef struct _IBusEmojierEEntryPrivate IBusEmojierEEntryPrivate; enum { IBUS_EMOJIER_EENTRY_0_PROPERTY, IBUS_EMOJIER_EENTRY_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_eentry_properties[IBUS_EMOJIER_EENTRY_NUM_PROPERTIES]; typedef struct _IBusEmojierEListBoxPrivate IBusEmojierEListBoxPrivate; enum { IBUS_EMOJIER_ELIST_BOX_0_PROPERTY, IBUS_EMOJIER_ELIST_BOX_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_elist_box_properties[IBUS_EMOJIER_ELIST_BOX_NUM_PROPERTIES]; typedef struct _IBusEmojierEBoxRowPrivate IBusEmojierEBoxRowPrivate; enum { IBUS_EMOJIER_EBOX_ROW_0_PROPERTY, IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY, IBUS_EMOJIER_EBOX_ROW_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_ebox_row_properties[IBUS_EMOJIER_EBOX_ROW_NUM_PROPERTIES]; typedef struct _IBusEmojierEScrolledWindowPrivate IBusEmojierEScrolledWindowPrivate; enum { IBUS_EMOJIER_ESCROLLED_WINDOW_0_PROPERTY, IBUS_EMOJIER_ESCROLLED_WINDOW_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_escrolled_window_properties[IBUS_EMOJIER_ESCROLLED_WINDOW_NUM_PROPERTIES]; typedef struct _IBusEmojierEGridPrivate IBusEmojierEGridPrivate; enum { IBUS_EMOJIER_EGRID_0_PROPERTY, IBUS_EMOJIER_EGRID_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_egrid_properties[IBUS_EMOJIER_EGRID_NUM_PROPERTIES]; typedef struct _IBusEmojierEWhiteLabelPrivate IBusEmojierEWhiteLabelPrivate; enum { IBUS_EMOJIER_EWHITE_LABEL_0_PROPERTY, IBUS_EMOJIER_EWHITE_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_ewhite_label_properties[IBUS_EMOJIER_EWHITE_LABEL_NUM_PROPERTIES]; typedef struct _IBusEmojierESelectedLabelPrivate IBusEmojierESelectedLabelPrivate; enum { IBUS_EMOJIER_ESELECTED_LABEL_0_PROPERTY, IBUS_EMOJIER_ESELECTED_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_eselected_label_properties[IBUS_EMOJIER_ESELECTED_LABEL_NUM_PROPERTIES]; typedef struct _IBusEmojierEGoldLabelPrivate IBusEmojierEGoldLabelPrivate; enum { IBUS_EMOJIER_EGOLD_LABEL_0_PROPERTY, IBUS_EMOJIER_EGOLD_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_egold_label_properties[IBUS_EMOJIER_EGOLD_LABEL_NUM_PROPERTIES]; #define IBUS_EMOJIER_TYPE_EPADDED_LABEL (ibus_emojier_epadded_label_get_type ()) #define IBUS_EMOJIER_EPADDED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL, IBusEmojierEPaddedLabel)) #define IBUS_EMOJIER_EPADDED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL, IBusEmojierEPaddedLabelClass)) #define IBUS_EMOJIER_IS_EPADDED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL)) #define IBUS_EMOJIER_IS_EPADDED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL)) #define IBUS_EMOJIER_EPADDED_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL, IBusEmojierEPaddedLabelClass)) typedef struct _IBusEmojierEPaddedLabel IBusEmojierEPaddedLabel; typedef struct _IBusEmojierEPaddedLabelClass IBusEmojierEPaddedLabelClass; typedef struct _IBusEmojierEPaddedLabelPrivate IBusEmojierEPaddedLabelPrivate; enum { IBUS_EMOJIER_EPADDED_LABEL_0_PROPERTY, IBUS_EMOJIER_EPADDED_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_epadded_label_properties[IBUS_EMOJIER_EPADDED_LABEL_NUM_PROPERTIES]; typedef struct _IBusEmojierEPaddedLabelBoxPrivate IBusEmojierEPaddedLabelBoxPrivate; enum { IBUS_EMOJIER_EPADDED_LABEL_BOX_0_PROPERTY, IBUS_EMOJIER_EPADDED_LABEL_BOX_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_epadded_label_box_properties[IBUS_EMOJIER_EPADDED_LABEL_BOX_NUM_PROPERTIES]; #define TYPE_ICON_WIDGET (icon_widget_get_type ()) #define ICON_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ICON_WIDGET, IconWidget)) #define ICON_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ICON_WIDGET, IconWidgetClass)) #define IS_ICON_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ICON_WIDGET)) #define IS_ICON_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ICON_WIDGET)) #define ICON_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ICON_WIDGET, IconWidgetClass)) typedef struct _IconWidget IconWidget; typedef struct _IconWidgetClass IconWidgetClass; typedef struct _IBusEmojierLoadProgressObjectPrivate IBusEmojierLoadProgressObjectPrivate; enum { IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_0_PROPERTY, IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_load_progress_object_properties[IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_PROPERTIES]; enum { IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_DESERIALIZE_UNICODE_SIGNAL, IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_SIGNALS }; static guint ibus_emojier_load_progress_object_signals[IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_SIGNALS] = {0}; enum { IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL, IBUS_EMOJIER_NUM_SIGNALS }; static guint ibus_emojier_signals[IBUS_EMOJIER_NUM_SIGNALS] = {0}; #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); #define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } #define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } #define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); struct _IBusEmojier { GtkApplicationWindow parent_instance; IBusEmojierPrivate * priv; }; struct _IBusEmojierClass { GtkApplicationWindowClass parent_class; }; struct _IBusEmojierPrivate { ThemedRGBA* m_rgba; GtkBox* m_vbox; IBusEmojierEEntry* m_entry; gchar* m_annotation; gchar* m_backward; gint m_backward_index; IBusEmojierEScrolledWindow* m_scrolled_window; IBusEmojierEListBox* m_list_box; gboolean m_is_running; gchar* m_input_context_path; GMainLoop* m_loop; gchar* m_result; gboolean m_candidate_panel_is_visible; gboolean m_candidate_panel_mode; gint m_category_active_index; IBusLookupTable* m_lookup_table; GtkLabel** m_candidates; gint m_candidates_length1; gint _m_candidates_size_; gboolean m_enter_notify_enable; guint m_entry_notify_show_id; guint m_entry_notify_disable_id; GtkProgressBar* m_unicode_progress_bar; guint m_unicode_progress_id; GtkLabel* m_unicode_percent_label; gdouble m_unicode_percent; GdkRectangle m_cursor_location; gboolean m_is_up_side_down; guint m_redraw_window_id; }; typedef enum { IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD } IBusEmojierTravelDirection; struct _Block1Data { int _ref_count_; IBusEmojier* self; GtkButton* warning_button; }; struct _Block2Data { int _ref_count_; IBusEmojier* self; guint index; }; struct _IBusEmojierEEntry { GtkSearchEntry parent_instance; IBusEmojierEEntryPrivate * priv; }; struct _IBusEmojierEEntryClass { GtkSearchEntryClass parent_class; }; struct _IBusEmojierEListBox { GtkListBox parent_instance; IBusEmojierEListBoxPrivate * priv; }; struct _IBusEmojierEListBoxClass { GtkListBoxClass parent_class; }; struct _IBusEmojierEBoxRow { GtkListBoxRow parent_instance; IBusEmojierEBoxRowPrivate * priv; }; struct _IBusEmojierEBoxRowClass { GtkListBoxRowClass parent_class; }; struct _IBusEmojierEBoxRowPrivate { gchar* _text; }; struct _IBusEmojierEScrolledWindow { GtkScrolledWindow parent_instance; IBusEmojierEScrolledWindowPrivate * priv; }; struct _IBusEmojierEScrolledWindowClass { GtkScrolledWindowClass parent_class; }; struct _IBusEmojierEGrid { GtkGrid parent_instance; IBusEmojierEGridPrivate * priv; }; struct _IBusEmojierEGridClass { GtkGridClass parent_class; }; struct _IBusEmojierEWhiteLabel { GtkLabel parent_instance; IBusEmojierEWhiteLabelPrivate * priv; }; struct _IBusEmojierEWhiteLabelClass { GtkLabelClass parent_class; }; struct _IBusEmojierEWhiteLabelPrivate { gint m_minimum_width; gint m_natural_width; gint m_minimum_height; gint m_natural_height; }; struct _IBusEmojierESelectedLabel { IBusEmojierEWhiteLabel parent_instance; IBusEmojierESelectedLabelPrivate * priv; }; struct _IBusEmojierESelectedLabelClass { IBusEmojierEWhiteLabelClass parent_class; }; struct _IBusEmojierEGoldLabel { IBusEmojierEWhiteLabel parent_instance; IBusEmojierEGoldLabelPrivate * priv; }; struct _IBusEmojierEGoldLabelClass { IBusEmojierEWhiteLabelClass parent_class; }; struct _IBusEmojierEPaddedLabel { GtkLabel parent_instance; IBusEmojierEPaddedLabelPrivate * priv; }; struct _IBusEmojierEPaddedLabelClass { GtkLabelClass parent_class; }; struct _IBusEmojierEPaddedLabelBox { GtkBox parent_instance; IBusEmojierEPaddedLabelBoxPrivate * priv; }; struct _IBusEmojierEPaddedLabelBoxClass { GtkBoxClass parent_class; }; struct _IBusEmojierLoadProgressObject { GObject parent_instance; IBusEmojierLoadProgressObjectPrivate * priv; }; struct _IBusEmojierLoadProgressObjectClass { GObjectClass parent_class; }; static gpointer ibus_emojier_parent_class = NULL; static gchar* ibus_emojier_m_current_lang_id; static gchar* ibus_emojier_m_current_lang_id = NULL; static gchar* ibus_emojier_m_emoji_font_family; static gchar* ibus_emojier_m_emoji_font_family = NULL; static gint ibus_emojier_m_emoji_font_size; static gint ibus_emojier_m_emoji_font_size = 0; static gboolean ibus_emojier_m_emoji_font_changed; static gboolean ibus_emojier_m_emoji_font_changed = FALSE; static gchar** ibus_emojier_m_favorites; static gint ibus_emojier_m_favorites_length1; static gchar** ibus_emojier_m_favorites = NULL; static gint ibus_emojier_m_favorites_length1 = 0; static gint _ibus_emojier_m_favorites_size_ = 0; static gchar** ibus_emojier_m_favorite_annotations; static gint ibus_emojier_m_favorite_annotations_length1; static gchar** ibus_emojier_m_favorite_annotations = NULL; static gint ibus_emojier_m_favorite_annotations_length1 = 0; static gint _ibus_emojier_m_favorite_annotations_size_ = 0; static gint ibus_emojier_m_emoji_max_seq_len; static gint ibus_emojier_m_emoji_max_seq_len = 0; static gboolean ibus_emojier_m_has_partial_match; static gboolean ibus_emojier_m_has_partial_match = FALSE; static guint ibus_emojier_m_partial_match_length; static guint ibus_emojier_m_partial_match_length = 0U; static guint ibus_emojier_m_partial_match_condition; static guint ibus_emojier_m_partial_match_condition = 0U; static gboolean ibus_emojier_m_show_emoji_variant; static gboolean ibus_emojier_m_show_emoji_variant = FALSE; static gint ibus_emojier_m_default_window_width; static gint ibus_emojier_m_default_window_width = 0; static gint ibus_emojier_m_default_window_height; static gint ibus_emojier_m_default_window_height = 0; static GHashTable* ibus_emojier_m_annotation_to_emojis_dict; static GHashTable* ibus_emojier_m_annotation_to_emojis_dict = NULL; static GHashTable* ibus_emojier_m_emoji_to_data_dict; static GHashTable* ibus_emojier_m_emoji_to_data_dict = NULL; static GHashTable* ibus_emojier_m_category_to_emojis_dict; static GHashTable* ibus_emojier_m_category_to_emojis_dict = NULL; static GHashTable* ibus_emojier_m_emoji_to_emoji_variants_dict; static GHashTable* ibus_emojier_m_emoji_to_emoji_variants_dict = NULL; static GHashTable* ibus_emojier_m_unicode_to_data_dict; static GHashTable* ibus_emojier_m_unicode_to_data_dict = NULL; static GHashTable* ibus_emojier_m_name_to_unicodes_dict; static GHashTable* ibus_emojier_m_name_to_unicodes_dict = NULL; static GSList* ibus_emojier_m_unicode_block_list; static GSList* ibus_emojier_m_unicode_block_list = NULL; static gboolean ibus_emojier_m_show_unicode; static gboolean ibus_emojier_m_show_unicode = FALSE; static IBusEmojierLoadProgressObject* ibus_emojier_m_unicode_progress_object; static IBusEmojierLoadProgressObject* ibus_emojier_m_unicode_progress_object = NULL; static gboolean ibus_emojier_m_loaded_unicode; static gboolean ibus_emojier_m_loaded_unicode = FALSE; static gchar* ibus_emojier_m_warning_message; static gchar* ibus_emojier_m_warning_message = NULL; extern gdouble ibus_emojier_m_mouse_x; gdouble ibus_emojier_m_mouse_x = 0.0; extern gdouble ibus_emojier_m_mouse_y; gdouble ibus_emojier_m_mouse_y = 0.0; static gpointer ibus_emojier_eentry_parent_class = NULL; static gpointer ibus_emojier_elist_box_parent_class = NULL; static gpointer ibus_emojier_ebox_row_parent_class = NULL; static gpointer ibus_emojier_escrolled_window_parent_class = NULL; static gpointer ibus_emojier_egrid_parent_class = NULL; static gpointer ibus_emojier_ewhite_label_parent_class = NULL; static gpointer ibus_emojier_eselected_label_parent_class = NULL; static gpointer ibus_emojier_egold_label_parent_class = NULL; static gpointer ibus_emojier_epadded_label_parent_class = NULL; static gpointer ibus_emojier_epadded_label_box_parent_class = NULL; static gpointer ibus_emojier_load_progress_object_parent_class = NULL; GType ibus_emojier_get_type (void) G_GNUC_CONST; gpointer themed_rgba_ref (gpointer instance); void themed_rgba_unref (gpointer instance); GParamSpec* param_spec_themed_rgba (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_themed_rgba (GValue* value, gpointer v_object); void value_take_themed_rgba (GValue* value, gpointer v_object); gpointer value_get_themed_rgba (const GValue* value); GType themed_rgba_get_type (void) G_GNUC_CONST; static GType ibus_emojier_eentry_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; static GType ibus_emojier_escrolled_window_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; static GType ibus_emojier_elist_box_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; #define IBUS_EMOJIER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_IBUS_EMOJIER, IBusEmojierPrivate)) static GType ibus_emojier_travel_direction_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; static GType ibus_emojier_load_progress_object_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; #define IBUS_EMOJIER_BUTTON_CLOSE_BUTTON ((guint) 1000) #define IBUS_EMOJIER_EMOJI_GRID_PAGE ((guint) 10) #define IBUS_EMOJIER_EMOJI_CATEGORY_FAVORITES N_ ("Favorites") #define IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS N_ ("Others") #define IBUS_EMOJIER_EMOJI_CATEGORY_UNICODE N_ ("Open Unicode choice") IBusEmojier* ibus_emojier_new (void); IBusEmojier* ibus_emojier_construct (GType object_type); static void ibus_emojier_check_action_variant_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter); static void _ibus_emojier_check_action_variant_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self); static void ibus_emojier_action_close_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter); static void _ibus_emojier_action_close_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self); static void ibus_emojier_set_css_data (IBusEmojier* self); static IBusEmojierEEntry* ibus_emojier_eentry_new (void); static IBusEmojierEEntry* ibus_emojier_eentry_construct (GType object_type); static void __lambda7_ (IBusEmojier* self); static void ibus_emojier_update_candidate_window (IBusEmojier* self); static void ___lambda7__gtk_editable_changed (GtkEditable* _sender, gpointer self); static void __lambda8_ (IBusEmojier* self, GtkEntryIconPosition icon_pos, GdkEventButton* event); static void ibus_emojier_hide_candidate_panel (IBusEmojier* self); static void ___lambda8__gtk_entry_icon_release (GtkEntry* _sender, GtkEntryIconPosition icon_pos, GdkEventButton* event, gpointer self); static void __lambda10_ (IBusEmojier* self); static void ___lambda10__gtk_widget_hide (GtkWidget* _sender, gpointer self); static void __lambda11_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a); static void ibus_emojier_adjust_window_position (IBusEmojier* self); static void ___lambda11__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self); static void __lambda26_ (IBusEmojier* self, guint i, guint b, guint s); static void ibus_emojier_candidate_panel_select_index (IBusEmojier* self, guint index, guint button); static void ___lambda26__ibus_emojier_candidate_clicked (IBusEmojier* _sender, guint index, guint button, guint state, gpointer self); static void ibus_emojier_reload_emoji_dict (void); static GObject* ibus_emojier_get_load_progress_object (void); static void ibus_emojier_init_emoji_dict (void); static void ibus_emojier_make_emoji_dict (const gchar* lang); void ibus_emojier_update_favorite_emoji_dict (void); static void _g_free0_ (gpointer var); static inline void _g_slist_free__g_free0_ (GSList* self); static void __g_slist_free__g_free0_0_ (gpointer var); static void _g_object_unref0_ (gpointer var); static void _g_slist_free0_ (gpointer var); static inline void _g_slist_free__g_object_unref0_ (GSList* self); static void ibus_emojier_update_emoji_to_data_dict (IBusEmojiData* data, const gchar* lang); static void ibus_emojier_update_annotation_to_emojis_dict (IBusEmojiData* data); static void ibus_emojier_update_category_to_emojis_dict (IBusEmojiData* data, const gchar* lang); static gpointer _g_strdup_gcopy_func (gconstpointer src, gpointer self); static gchar* ibus_emojier_utf8_code_point (const gchar* str); static gchar* ibus_emojier_utf8_entity (const gchar* str); static void ibus_emojier_update_annotations_with_description (IBusEmojiData* data, const gchar* description); static void ibus_emojier_make_unicode_block_dict (void); static void ibus_emojier_make_unicode_name_dict (GObject* source_object); static void ibus_emojier_make_unicode_name_dict_finish (GSList* unicode_list); static void ibus_emojier_update_unicode_to_data_dict (IBusUnicodeData* data); static void ibus_emojier_update_name_to_unicodes_dict (IBusUnicodeData* data); ThemedRGBA* themed_rgba_new (GtkWidget* widget); ThemedRGBA* themed_rgba_construct (GType object_type, GtkWidget* widget); GdkRGBA* themed_rgba_get_normal_bg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_fg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_bg (ThemedRGBA* self); static void ibus_emojier_set_fixed_size (IBusEmojier* self); static void ibus_emojier_remove_all_children (IBusEmojier* self); static void ibus_emojier_clamp_page (IBusEmojier* self); static void ibus_emojier_show_category_list (IBusEmojier* self); static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_new (GtkAdjustment* hadjustment, GtkAdjustment* vadjustment); static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_construct (GType object_type, GtkAdjustment* hadjustment, GtkAdjustment* vadjustment); static IBusEmojierEListBox* ibus_emojier_elist_box_new (void); static IBusEmojierEListBox* ibus_emojier_elist_box_construct (GType object_type); static void __lambda25_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow); static GType ibus_emojier_ebox_row_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; static void ibus_emojier_show_emoji_for_category (IBusEmojier* self, const gchar* category); static const gchar* ibus_emojier_ebox_row_get_text (IBusEmojierEBoxRow* self); static void ___lambda25__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self); static IBusEmojierEBoxRow* ibus_emojier_ebox_row_new (const gchar* text); static IBusEmojierEBoxRow* ibus_emojier_ebox_row_construct (GType object_type, const gchar* text); static GType ibus_emojier_epadded_label_box_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_new (const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption); static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_construct (GType object_type, const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption); static void ibus_emojier_update_unicode_blocks (IBusEmojier* self); static void ibus_emojier_show_emoji_variants (IBusEmojier* self, GSList* emojis); static void ibus_emojier_show_unicode_blocks (IBusEmojier* self); static gboolean __lambda22_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e); static gboolean ___lambda22__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void __lambda23_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow); static void ibus_emojier_show_unicode_for_block (IBusEmojier* self, const gchar* block_name); static void ibus_emojier_show_candidate_panel (IBusEmojier* self); static void ___lambda23__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self); static void __lambda24_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a); static void ___lambda24__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self); static void ibus_emojier_show_arrow_buttons (IBusEmojier* self); static Block1Data* block1_data_ref (Block1Data* _data1_); static void block1_data_unref (void * _userdata_); static void __lambda17_ (IBusEmojier* self); static void ___lambda17__gtk_button_clicked (GtkButton* _sender, gpointer self); static void __lambda18_ (IBusEmojier* self); static void ___lambda18__gtk_button_clicked (GtkButton* _sender, gpointer self); IBusText* ibus_emojier_get_title_text (IBusEmojier* self); PangoAttrList* get_pango_attr_list_from_ibus_text (IBusText* text); static void ___lambda19_ (Block1Data* _data1_); static void ____lambda19__gtk_button_clicked (GtkButton* _sender, gpointer self); static void ibus_emojier_show_unicode_progress_bar (IBusEmojier* self); static void __lambda20_ (IBusEmojier* self, guint i, guint n); static void ___lambda20__ibus_emojier_load_progress_object_deserialize_unicode (IBusEmojierLoadProgressObject* _sender, guint done, guint total, gpointer self); static gboolean __lambda21_ (IBusEmojier* self); static gboolean ___lambda21__gsource_func (gpointer self); static gchar* ibus_emojier_check_unicode_point (const gchar* annotation); static GSList* ibus_emojier_lookup_emojis_from_annotation (const gchar* annotation); static void ibus_emojier_update_category_list (IBusEmojier* self); static void ibus_emojier_reset_window_mode (IBusEmojier* self); static gint __lambda9_ (const gchar* a, const gchar* b); static gint ___lambda9__gcompare_func (gconstpointer a, gconstpointer b); static void ibus_emojier_show_code_point_description (IBusEmojier* self, const gchar* text); static gboolean ___lambda13_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e); static gboolean ____lambda13__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static GType ibus_emojier_egrid_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; static IBusEmojierEGrid* ibus_emojier_egrid_new (void); static IBusEmojierEGrid* ibus_emojier_egrid_construct (GType object_type); static Block2Data* block2_data_ref (Block2Data* _data2_); static void block2_data_unref (void * _userdata_); static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_new (const gchar* text); static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_construct (GType object_type, const gchar* text); static GType ibus_emojier_ewhite_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; static GType ibus_emojier_eselected_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; static IBusEmojierEGoldLabel* ibus_emojier_egold_label_new (const gchar* text); static IBusEmojierEGoldLabel* ibus_emojier_egold_label_construct (GType object_type, const gchar* text); static GType ibus_emojier_egold_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_new (const gchar* text); static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_construct (GType object_type, const gchar* text); static gboolean _____lambda14_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e); static gboolean ______lambda14__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static gboolean _____lambda15_ (Block2Data* _data2_, GdkEventMotion* e); static GdkEventMotion* _vala_GdkEventMotion_copy (GdkEventMotion* self); static void _vala_GdkEventMotion_free (GdkEventMotion* self); static gboolean __lambda16_ (IBusEmojier* self); static gboolean ___lambda16__gsource_func (gpointer self); static gboolean ______lambda15__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self); static void _vala_array_add2 (GtkLabel** * array, int* length, int* size, GtkLabel* value); static void ibus_emojier_show_description (IBusEmojier* self); static void ibus_emojier_show_emoji_description (IBusEmojier* self, IBusEmojiData* data, const gchar* text); static void ibus_emojier_show_unicode_description (IBusEmojier* self, IBusUnicodeData* data, const gchar* text); static void ibus_emojier_enter_notify_disable_with_timer (IBusEmojier* self); static gboolean __lambda27_ (IBusEmojier* self); static gboolean ___lambda27__gsource_func (gpointer self); static void ibus_emojier_candidate_panel_cursor_down (IBusEmojier* self); static void ibus_emojier_candidate_panel_cursor_up (IBusEmojier* self); static gint ibus_emojier_get_page_num (IBusEmojier* self); static gboolean ibus_emojier_category_list_cursor_move (IBusEmojier* self, guint keyval); gboolean ibus_emojier_has_variants (IBusEmojier* self, guint index); gboolean ibus_emojier_key_press_cursor_horizontal (IBusEmojier* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_cursor_vertical (IBusEmojier* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_cursor_home_end (IBusEmojier* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_escape (IBusEmojier* self); gboolean ibus_emojier_key_press_enter (IBusEmojier* self); static void ibus_emojier_entry_enter_keyval (IBusEmojier* self, guint keyval); static void ibus_emojier_get_monitor_geometry (IBusEmojier* self, GdkRectangle* result); static gboolean ___lambda12_ (IBusEmojier* self); static gboolean ____lambda12__gsource_func (gpointer self); void ibus_emojier_set_annotation (IBusEmojier* self, const gchar* annotation); IBusLookupTable* ibus_emojier_get_one_dimension_lookup_table (IBusEmojier* self); guint ibus_emojier_get_number_of_candidates (IBusEmojier* self); guint ibus_emojier_get_cursor_pos (IBusEmojier* self); void ibus_emojier_set_cursor_pos (IBusEmojier* self, guint cursor_pos); gchar* ibus_emojier_get_current_candidate (IBusEmojier* self); static void ibus_emojier_real_show_all (GtkWidget* base); static void ibus_emojier_real_hide (GtkWidget* base); static gboolean ibus_emojier_real_key_press_event (GtkWidget* base, GdkEventKey* event); gboolean ibus_emojier_is_running (IBusEmojier* self); gchar* ibus_emojier_get_input_context_path (IBusEmojier* self); void ibus_emojier_set_input_context_path (IBusEmojier* self, const gchar* input_context_path); gchar* ibus_emojier_get_selected_string (IBusEmojier* self); void ibus_emojier_reset (IBusEmojier* self); void ibus_emojier_present_centralize (IBusEmojier* self, GdkEvent* event); void ibus_emojier_set_cursor_location (IBusEmojier* self, gint x, gint y, gint width, gint height); static gboolean _cairo_rectangle_int_equal (const cairo_rectangle_int_t * s1, const cairo_rectangle_int_t * s2); gboolean ibus_emojier_is_candidate_panel_mode (IBusEmojier* self); gboolean ibus_emojier_has_loaded_emoji_dict (void); void ibus_emojier_set_annotation_lang (const gchar* lang); gchar* ibus_emojier_get_annotation_lang (void); void ibus_emojier_set_emoji_font (const gchar* emoji_font); static void _vala_PangoFontDescription_free (PangoFontDescription* self); void ibus_emojier_set_partial_match (gboolean has_partial_match); void ibus_emojier_set_partial_match_length (gint length); void ibus_emojier_set_partial_match_condition (gint condition); void ibus_emojier_set_favorites (gchar** unowned_favorites, int unowned_favorites_length1, gchar** unowned_favorite_annotations, int unowned_favorite_annotations_length1); static void _vala_array_add3 (gchar** * array, int* length, int* size, gchar* value); static void _vala_array_add4 (gchar** * array, int* length, int* size, gchar* value); static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_new (void); static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_construct (GType object_type); void ibus_emojier_load_unicode_dict (void); static void g_cclosure_user_marshal_VOID__UINT_UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); static gboolean __lambda5_ (IBusEmojierEListBox* self, GdkEventMotion* e); static gboolean ___lambda5__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self); static gboolean __lambda6_ (IBusEmojierEListBox* self, GdkEventCrossing* e); static gboolean ___lambda6__gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self); #define IBUS_EMOJIER_EBOX_ROW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRowPrivate)) static void ibus_emojier_ebox_row_set_text (IBusEmojierEBoxRow* self, const gchar* value); static void ibus_emojier_ebox_row_finalize (GObject * obj); static void _vala_ibus_emojier_ebox_row_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); static void _vala_ibus_emojier_ebox_row_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); #define IBUS_EMOJIER_EWHITE_LABEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabelPrivate)) static void ibus_emojier_ewhite_label_real_get_preferred_width (GtkWidget* base, gint* minimum_width, gint* natural_width); static void ibus_emojier_ewhite_label_real_get_preferred_height (GtkWidget* base, gint* minimum_height, gint* natural_height); static void ibus_emojier_ewhite_label_finalize (GObject * obj); static GType ibus_emojier_epadded_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_new (const gchar* text, GtkAlign align); static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_construct (GType object_type, const gchar* text, GtkAlign align); GType icon_widget_get_type (void) G_GNUC_CONST; IconWidget* icon_widget_new (const gchar* icon_name_or_path, GtkIconSize size); IconWidget* icon_widget_construct (GType object_type, const gchar* icon_name_or_path, GtkIconSize size); static void g_cclosure_user_marshal_VOID__UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); static void ibus_emojier_finalize (GObject * obj); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); static gint _vala_array_length (gpointer array); static const gunichar IBUS_EMOJIER_EMOJI_VARIANT_LIST[6] = {(gunichar) 0x1f3fb, (gunichar) 0x1f3fc, (gunichar) 0x1f3fd, (gunichar) 0x1f3fe, (gunichar) 0x1f3ff, (gunichar) 0x200d}; static GType ibus_emojier_travel_direction_get_type (void) { static volatile gsize ibus_emojier_travel_direction_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_travel_direction_type_id__volatile)) { static const GEnumValue values[] = {{IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, "IBUS_EMOJIER_TRAVEL_DIRECTION_NONE", "none"}, {IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD, "IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD", "backward"}, {0, NULL, NULL}}; GType ibus_emojier_travel_direction_type_id; ibus_emojier_travel_direction_type_id = g_enum_register_static ("IBusEmojierTravelDirection", values); g_once_init_leave (&ibus_emojier_travel_direction_type_id__volatile, ibus_emojier_travel_direction_type_id); } return ibus_emojier_travel_direction_type_id__volatile; } static void _ibus_emojier_check_action_variant_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self) { ibus_emojier_check_action_variant_cb ((IBusEmojier*) self, _sender, parameter); } static void _ibus_emojier_action_close_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self) { ibus_emojier_action_close_cb ((IBusEmojier*) self, _sender, parameter); } static void __lambda7_ (IBusEmojier* self) { ibus_emojier_update_candidate_window (self); } static void ___lambda7__gtk_editable_changed (GtkEditable* _sender, gpointer self) { __lambda7_ ((IBusEmojier*) self); } static void __lambda8_ (IBusEmojier* self, GtkEntryIconPosition icon_pos, GdkEventButton* event) { g_return_if_fail (event != NULL); ibus_emojier_hide_candidate_panel (self); } static void ___lambda8__gtk_entry_icon_release (GtkEntry* _sender, GtkEntryIconPosition icon_pos, GdkEventButton* event, gpointer self) { __lambda8_ ((IBusEmojier*) self, icon_pos, event); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void __lambda10_ (IBusEmojier* self) { gboolean _tmp0_ = FALSE; GMainLoop* _tmp1_; _tmp1_ = self->priv->m_loop; if (_tmp1_ != NULL) { GMainLoop* _tmp2_; _tmp2_ = self->priv->m_loop; _tmp0_ = g_main_loop_is_running (_tmp2_); } else { _tmp0_ = FALSE; } if (_tmp0_) { GMainLoop* _tmp3_; _tmp3_ = self->priv->m_loop; g_main_loop_quit (_tmp3_); } } static void ___lambda10__gtk_widget_hide (GtkWidget* _sender, gpointer self) { __lambda10_ ((IBusEmojier*) self); } static void __lambda11_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a) { g_return_if_fail (w != NULL); g_return_if_fail (a != NULL); ibus_emojier_adjust_window_position (self); } static void ___lambda11__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) { __lambda11_ ((IBusEmojier*) self, _sender, allocation); } static void __lambda26_ (IBusEmojier* self, guint i, guint b, guint s) { const gchar* _tmp0_; _tmp0_ = self->priv->m_input_context_path; if (g_strcmp0 (_tmp0_, "") != 0) { ibus_emojier_candidate_panel_select_index (self, i, b); } } static void ___lambda26__ibus_emojier_candidate_clicked (IBusEmojier* _sender, guint index, guint button, guint state, gpointer self) { __lambda26_ ((IBusEmojier*) self, index, button, state); } IBusEmojier* ibus_emojier_construct (GType object_type) { IBusEmojier * self = NULL; GSimpleAction* action = NULL; gboolean _tmp0_; GVariant* _tmp1_; GVariant* _tmp2_; GSimpleAction* _tmp3_; GSimpleAction* _tmp4_; GSimpleAction* _tmp5_; GSimpleAction* _tmp6_; GSimpleAction* _tmp7_; GSimpleAction* _tmp8_; GSimpleAction* _tmp9_; const gchar* _tmp10_; const gchar* _tmp12_; gint _tmp14_; gchar** _tmp15_; gint _tmp15__length1; gchar** _tmp17_; gint _tmp17__length1; GtkBox* _tmp19_; GtkBox* _tmp20_; IBusEmojierEEntry* _tmp21_; IBusEmojierEEntry* _tmp22_; IBusEmojierEEntry* _tmp23_; IBusEmojierEEntry* _tmp24_; AtkObject* obj = NULL; IBusEmojierEEntry* _tmp25_; AtkObject* _tmp26_; AtkObject* _tmp27_; AtkObject* _tmp28_; IBusLookupTable* _tmp29_; IBusLookupTable* _tmp30_; GHashTable* _tmp31_; GObject* _tmp32_; GObject* _tmp33_; self = (IBusEmojier*) g_object_new (object_type, "type", GTK_WINDOW_POPUP, NULL); _tmp0_ = ibus_emojier_m_show_emoji_variant; _tmp1_ = g_variant_new_boolean (_tmp0_); g_variant_ref_sink (_tmp1_); _tmp2_ = _tmp1_; _tmp3_ = g_simple_action_new_stateful ("variant", NULL, _tmp2_); _tmp4_ = _tmp3_; _g_variant_unref0 (_tmp2_); action = _tmp4_; _tmp5_ = action; g_signal_connect_object (_tmp5_, "activate", (GCallback) _ibus_emojier_check_action_variant_cb_g_simple_action_activate, self, 0); _tmp6_ = action; g_action_map_add_action ((GActionMap*) self, (GAction*) _tmp6_); _tmp7_ = g_simple_action_new ("close", NULL); _g_object_unref0 (action); action = _tmp7_; _tmp8_ = action; g_signal_connect_object (_tmp8_, "activate", (GCallback) _ibus_emojier_action_close_cb_g_simple_action_activate, self, 0); _tmp9_ = action; g_action_map_add_action ((GActionMap*) self, (GAction*) _tmp9_); _tmp10_ = ibus_emojier_m_current_lang_id; if (_tmp10_ == NULL) { gchar* _tmp11_; _tmp11_ = g_strdup ("en"); _g_free0 (ibus_emojier_m_current_lang_id); ibus_emojier_m_current_lang_id = _tmp11_; } _tmp12_ = ibus_emojier_m_emoji_font_family; if (_tmp12_ == NULL) { gchar* _tmp13_; _tmp13_ = g_strdup ("Monospace"); _g_free0 (ibus_emojier_m_emoji_font_family); ibus_emojier_m_emoji_font_family = _tmp13_; ibus_emojier_m_emoji_font_changed = TRUE; } _tmp14_ = ibus_emojier_m_emoji_font_size; if (_tmp14_ == 0) { ibus_emojier_m_emoji_font_size = 16; ibus_emojier_m_emoji_font_changed = TRUE; } _tmp15_ = ibus_emojier_m_favorites; _tmp15__length1 = ibus_emojier_m_favorites_length1; if (_tmp15_ == NULL) { gchar** _tmp16_; _tmp16_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorites = (_vala_array_free (ibus_emojier_m_favorites, ibus_emojier_m_favorites_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorites = _tmp16_; ibus_emojier_m_favorites_length1 = 0; _ibus_emojier_m_favorites_size_ = ibus_emojier_m_favorites_length1; } _tmp17_ = ibus_emojier_m_favorite_annotations; _tmp17__length1 = ibus_emojier_m_favorite_annotations_length1; if (_tmp17_ == NULL) { gchar** _tmp18_; _tmp18_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorite_annotations = (_vala_array_free (ibus_emojier_m_favorite_annotations, ibus_emojier_m_favorite_annotations_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorite_annotations = _tmp18_; ibus_emojier_m_favorite_annotations_length1 = 0; _ibus_emojier_m_favorite_annotations_size_ = ibus_emojier_m_favorite_annotations_length1; } ibus_emojier_set_css_data (self); _tmp19_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp19_); _g_object_unref0 (self->priv->m_vbox); self->priv->m_vbox = _tmp19_; _tmp20_ = self->priv->m_vbox; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp20_); _tmp21_ = ibus_emojier_eentry_new (); g_object_ref_sink (_tmp21_); _g_object_unref0 (self->priv->m_entry); self->priv->m_entry = _tmp21_; _tmp22_ = self->priv->m_entry; gtk_entry_set_placeholder_text ((GtkEntry*) _tmp22_, _ ("Type annotation or choose emoji")); _tmp23_ = self->priv->m_entry; g_signal_connect_object ((GtkEditable*) _tmp23_, "changed", (GCallback) ___lambda7__gtk_editable_changed, self, 0); _tmp24_ = self->priv->m_entry; g_signal_connect_object ((GtkEntry*) _tmp24_, "icon-release", (GCallback) ___lambda8__gtk_entry_icon_release, self, 0); _tmp25_ = self->priv->m_entry; _tmp26_ = gtk_widget_get_accessible ((GtkWidget*) _tmp25_); _tmp27_ = _g_object_ref0 (_tmp26_); obj = _tmp27_; _tmp28_ = obj; atk_object_set_role (_tmp28_, ATK_ROLE_STATUSBAR); _tmp29_ = ibus_lookup_table_new ((guint) 1, (guint) 0, TRUE, TRUE); g_object_ref_sink (_tmp29_); _g_object_unref0 (self->priv->m_lookup_table); self->priv->m_lookup_table = _tmp29_; _tmp30_ = self->priv->m_lookup_table; ibus_lookup_table_set_page_size (_tmp30_, IBUS_EMOJIER_EMOJI_GRID_PAGE * IBUS_EMOJIER_EMOJI_GRID_PAGE); g_signal_connect_object ((GtkWidget*) self, "hide", (GCallback) ___lambda10__gtk_widget_hide, self, 0); g_signal_connect_object ((GtkWidget*) self, "size-allocate", (GCallback) ___lambda11__gtk_widget_size_allocate, self, 0); g_signal_connect_object (self, "candidate-clicked", (GCallback) ___lambda26__ibus_emojier_candidate_clicked, self, 0); _tmp31_ = ibus_emojier_m_annotation_to_emojis_dict; if (_tmp31_ == NULL) { ibus_emojier_reload_emoji_dict (); } _tmp32_ = ibus_emojier_get_load_progress_object (); _tmp33_ = _tmp32_; _g_object_unref0 (_tmp33_); _g_object_unref0 (obj); _g_object_unref0 (action); return self; } IBusEmojier* ibus_emojier_new (void) { return ibus_emojier_construct (TYPE_IBUS_EMOJIER); } static void ibus_emojier_reload_emoji_dict (void) { const gchar* _tmp0_; ibus_emojier_init_emoji_dict (); ibus_emojier_make_emoji_dict ("en"); _tmp0_ = ibus_emojier_m_current_lang_id; if (g_strcmp0 (_tmp0_, "en") != 0) { gchar** lang_ids = NULL; const gchar* _tmp1_; gchar** _tmp2_; gchar** _tmp3_; gint lang_ids_length1; gint _lang_ids_size_; gchar** _tmp4_; gint _tmp4__length1; const gchar* _tmp9_; _tmp1_ = ibus_emojier_m_current_lang_id; _tmp3_ = _tmp2_ = g_strsplit (_tmp1_, "_", 0); lang_ids = _tmp3_; lang_ids_length1 = _vala_array_length (_tmp2_); _lang_ids_size_ = lang_ids_length1; _tmp4_ = lang_ids; _tmp4__length1 = lang_ids_length1; if (_tmp4__length1 > 1) { gchar* sub_id = NULL; gchar** _tmp5_; gint _tmp5__length1; const gchar* _tmp6_; gchar* _tmp7_; const gchar* _tmp8_; _tmp5_ = lang_ids; _tmp5__length1 = lang_ids_length1; _tmp6_ = _tmp5_[0]; _tmp7_ = g_strdup (_tmp6_); sub_id = _tmp7_; _tmp8_ = sub_id; ibus_emojier_make_emoji_dict (_tmp8_); _g_free0 (sub_id); } _tmp9_ = ibus_emojier_m_current_lang_id; ibus_emojier_make_emoji_dict (_tmp9_); lang_ids = (_vala_array_free (lang_ids, lang_ids_length1, (GDestroyNotify) g_free), NULL); } ibus_emojier_update_favorite_emoji_dict (); } static void _g_free0_ (gpointer var) { var = (g_free (var), NULL); } static inline void _g_slist_free__g_free0_ (GSList* self) { g_slist_free_full (self, (GDestroyNotify) _g_free0_); } static void __g_slist_free__g_free0_0_ (gpointer var) { (var == NULL) ? NULL : (var = (_g_slist_free__g_free0_ (var), NULL)); } static void _g_object_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); } static void _g_slist_free0_ (gpointer var) { (var == NULL) ? NULL : (var = (g_slist_free (var), NULL)); } static void ibus_emojier_init_emoji_dict (void) { GHashFunc _tmp0_; GEqualFunc _tmp1_; GHashTable* _tmp2_; GHashFunc _tmp3_; GEqualFunc _tmp4_; GHashTable* _tmp5_; GHashFunc _tmp6_; GEqualFunc _tmp7_; GHashTable* _tmp8_; GHashFunc _tmp9_; GEqualFunc _tmp10_; GHashTable* _tmp11_; GHashFunc _tmp12_; GEqualFunc _tmp13_; GHashTable* _tmp14_; GHashFunc _tmp15_; GEqualFunc _tmp16_; GHashTable* _tmp17_; _tmp0_ = g_str_hash; _tmp1_ = g_str_equal; _tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, __g_slist_free__g_free0_0_); _g_hash_table_unref0 (ibus_emojier_m_annotation_to_emojis_dict); ibus_emojier_m_annotation_to_emojis_dict = _tmp2_; _tmp3_ = g_str_hash; _tmp4_ = g_str_equal; _tmp5_ = g_hash_table_new_full (_tmp3_, _tmp4_, _g_free0_, _g_object_unref0_); _g_hash_table_unref0 (ibus_emojier_m_emoji_to_data_dict); ibus_emojier_m_emoji_to_data_dict = _tmp5_; _tmp6_ = g_str_hash; _tmp7_ = g_str_equal; _tmp8_ = g_hash_table_new_full (_tmp6_, _tmp7_, _g_free0_, __g_slist_free__g_free0_0_); _g_hash_table_unref0 (ibus_emojier_m_category_to_emojis_dict); ibus_emojier_m_category_to_emojis_dict = _tmp8_; _tmp9_ = g_str_hash; _tmp10_ = g_str_equal; _tmp11_ = g_hash_table_new_full (_tmp9_, _tmp10_, _g_free0_, __g_slist_free__g_free0_0_); _g_hash_table_unref0 (ibus_emojier_m_emoji_to_emoji_variants_dict); ibus_emojier_m_emoji_to_emoji_variants_dict = _tmp11_; _tmp12_ = g_direct_hash; _tmp13_ = g_direct_equal; _tmp14_ = g_hash_table_new_full (_tmp12_, _tmp13_, NULL, _g_object_unref0_); _g_hash_table_unref0 (ibus_emojier_m_unicode_to_data_dict); ibus_emojier_m_unicode_to_data_dict = _tmp14_; _tmp15_ = g_str_hash; _tmp16_ = g_str_equal; _tmp17_ = g_hash_table_new_full (_tmp15_, _tmp16_, _g_free0_, _g_slist_free0_); _g_hash_table_unref0 (ibus_emojier_m_name_to_unicodes_dict); ibus_emojier_m_name_to_unicodes_dict = _tmp17_; } static inline void _g_slist_free__g_object_unref0_ (GSList* self) { g_slist_free_full (self, (GDestroyNotify) _g_object_unref0_); } static void ibus_emojier_make_emoji_dict (const gchar* lang) { GSList* emoji_list = NULL; gchar* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; GSList* _tmp4_; GSList* _tmp5_; GSList* _tmp6_; GSList* _tmp7_; GList* annotations = NULL; GHashTable* _tmp12_; GList* _tmp13_; GList* _tmp14_; g_return_if_fail (lang != NULL); _tmp0_ = g_strconcat (PKGDATADIR "/dicts/emoji-", lang, NULL); _tmp1_ = _tmp0_; _tmp2_ = g_strconcat (_tmp1_, ".dict", NULL); _tmp3_ = _tmp2_; _tmp4_ = ibus_emoji_data_load (_tmp3_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); _g_free0 (_tmp1_); emoji_list = _tmp5_; _tmp6_ = emoji_list; if (_tmp6_ == NULL) { (emoji_list == NULL) ? NULL : (emoji_list = (_g_slist_free__g_object_unref0_ (emoji_list), NULL)); return; } _tmp7_ = emoji_list; { GSList* data_collection = NULL; GSList* data_it = NULL; data_collection = _tmp7_; for (data_it = data_collection; data_it != NULL; data_it = data_it->next) { IBusEmojiData* _tmp8_; IBusEmojiData* data = NULL; _tmp8_ = _g_object_ref0 ((IBusEmojiData*) data_it->data); data = _tmp8_; { IBusEmojiData* _tmp9_; IBusEmojiData* _tmp10_; IBusEmojiData* _tmp11_; _tmp9_ = data; ibus_emojier_update_emoji_to_data_dict (_tmp9_, lang); _tmp10_ = data; ibus_emojier_update_annotation_to_emojis_dict (_tmp10_); _tmp11_ = data; ibus_emojier_update_category_to_emojis_dict (_tmp11_, lang); _g_object_unref0 (data); } } } _tmp12_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp13_ = g_hash_table_get_keys (_tmp12_); annotations = _tmp13_; _tmp14_ = annotations; { GList* annotation_collection = NULL; GList* annotation_it = NULL; annotation_collection = _tmp14_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { const gchar* annotation = NULL; annotation = (const gchar*) annotation_it->data; { gint _tmp15_; const gchar* _tmp16_; gint _tmp17_; gint _tmp18_; _tmp15_ = ibus_emojier_m_emoji_max_seq_len; _tmp16_ = annotation; _tmp17_ = strlen (_tmp16_); _tmp18_ = _tmp17_; if (_tmp15_ < _tmp18_) { const gchar* _tmp19_; gint _tmp20_; gint _tmp21_; _tmp19_ = annotation; _tmp20_ = strlen (_tmp19_); _tmp21_ = _tmp20_; ibus_emojier_m_emoji_max_seq_len = _tmp21_; } } } } (annotations == NULL) ? NULL : (annotations = (g_list_free (annotations), NULL)); (emoji_list == NULL) ? NULL : (emoji_list = (_g_slist_free__g_object_unref0_ (emoji_list), NULL)); } static gpointer _g_strdup_gcopy_func (gconstpointer src, gpointer self) { gpointer result; result = g_strdup ((const gchar*) src); return result; } static void ibus_emojier_update_annotation_to_emojis_dict (IBusEmojiData* data) { gchar* emoji = NULL; const gchar* _tmp0_; gchar* _tmp1_; GSList* annotations = NULL; GSList* _tmp2_; GSList* _tmp3_; g_return_if_fail (data != NULL); _tmp0_ = ibus_emoji_data_get_emoji (data); _tmp1_ = g_strdup (_tmp0_); emoji = _tmp1_; _tmp2_ = ibus_emoji_data_get_annotations (data); annotations = _tmp2_; _tmp3_ = annotations; { GSList* annotation_collection = NULL; GSList* annotation_it = NULL; annotation_collection = _tmp3_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { gchar* _tmp4_; gchar* annotation = NULL; _tmp4_ = g_strdup ((const gchar*) annotation_it->data); annotation = _tmp4_; { gboolean has_emoji = FALSE; GSList* hits = NULL; GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_; GSList* _tmp8_; GSList* _tmp9_; gboolean _tmp13_; has_emoji = FALSE; _tmp5_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp6_ = annotation; _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); _tmp8_ = g_slist_copy_deep ((GSList*) _tmp7_, _g_strdup_gcopy_func, NULL); hits = _tmp8_; _tmp9_ = hits; { GSList* hit_emoji_collection = NULL; GSList* hit_emoji_it = NULL; hit_emoji_collection = _tmp9_; for (hit_emoji_it = hit_emoji_collection; hit_emoji_it != NULL; hit_emoji_it = hit_emoji_it->next) { gchar* _tmp10_; gchar* hit_emoji = NULL; _tmp10_ = g_strdup ((const gchar*) hit_emoji_it->data); hit_emoji = _tmp10_; { const gchar* _tmp11_; const gchar* _tmp12_; _tmp11_ = hit_emoji; _tmp12_ = emoji; if (g_strcmp0 (_tmp11_, _tmp12_) == 0) { has_emoji = TRUE; _g_free0 (hit_emoji); break; } _g_free0 (hit_emoji); } } } _tmp13_ = has_emoji; if (!_tmp13_) { const gchar* _tmp14_; gchar* _tmp15_; GHashTable* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_; GSList* _tmp19_; GSList* _tmp20_; _tmp14_ = emoji; _tmp15_ = g_strdup (_tmp14_); hits = g_slist_append (hits, _tmp15_); _tmp16_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp17_ = annotation; _tmp18_ = g_strdup (_tmp17_); _tmp19_ = hits; _tmp20_ = g_slist_copy_deep (_tmp19_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp16_, _tmp18_, _tmp20_); } (hits == NULL) ? NULL : (hits = (_g_slist_free__g_free0_ (hits), NULL)); _g_free0 (annotation); } } } _g_free0 (emoji); } static gunichar string_get_char (const gchar* self, glong index) { gunichar result = 0U; g_return_val_if_fail (self != NULL, 0U); result = g_utf8_get_char (((gchar*) self) + index); return result; } static gchar* ibus_emojier_utf8_code_point (const gchar* str) { gchar* result = NULL; GString* buff = NULL; GString* _tmp0_; gint length = 0; gint _tmp1_; GString* _tmp22_; const gchar* _tmp23_; gchar* _tmp24_; g_return_val_if_fail (str != NULL, NULL); _tmp0_ = g_string_new (""); buff = _tmp0_; length = g_utf8_strlen (str, (gssize) -1); _tmp1_ = length; if (_tmp1_ == 0) { GString* _tmp2_; gchar* _tmp3_; gchar* _tmp4_; GString* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_; _tmp2_ = buff; _tmp3_ = g_strdup_printf ("U+%04X", (guint) 0); _tmp4_ = _tmp3_; g_string_append (_tmp2_, _tmp4_); _g_free0 (_tmp4_); _tmp5_ = buff; _tmp6_ = _tmp5_->str; _tmp7_ = g_strdup (_tmp6_); result = _tmp7_; _g_string_free0 (buff); return result; } { gint i = 0; i = 0; { gboolean _tmp8_ = FALSE; _tmp8_ = TRUE; while (TRUE) { gint _tmp10_; gint _tmp11_; gunichar ch = 0U; gint _tmp12_; const gchar* _tmp21_; if (!_tmp8_) { gint _tmp9_; _tmp9_ = i; i = _tmp9_ + 1; } _tmp8_ = FALSE; _tmp10_ = i; _tmp11_ = length; if (!(_tmp10_ < _tmp11_)) { break; } ch = string_get_char (str, (glong) 0); _tmp12_ = i; if (_tmp12_ == 0) { GString* _tmp13_; gunichar _tmp14_; gchar* _tmp15_; gchar* _tmp16_; _tmp13_ = buff; _tmp14_ = ch; _tmp15_ = g_strdup_printf ("U+%04X", (guint) _tmp14_); _tmp16_ = _tmp15_; g_string_append (_tmp13_, _tmp16_); _g_free0 (_tmp16_); } else { GString* _tmp17_; gunichar _tmp18_; gchar* _tmp19_; gchar* _tmp20_; _tmp17_ = buff; _tmp18_ = ch; _tmp19_ = g_strdup_printf (" %04X", (guint) _tmp18_); _tmp20_ = _tmp19_; g_string_append (_tmp17_, _tmp20_); _g_free0 (_tmp20_); } _tmp21_ = g_utf8_next_char (str); str = _tmp21_; } } } _tmp22_ = buff; _tmp23_ = _tmp22_->str; _tmp24_ = g_strdup (_tmp23_); result = _tmp24_; _g_string_free0 (buff); return result; } static gchar* ibus_emojier_utf8_entity (const gchar* str) { gchar* result = NULL; GString* buff = NULL; GString* _tmp0_; gint length = 0; GString* _tmp12_; const gchar* _tmp13_; gchar* _tmp14_; g_return_val_if_fail (str != NULL, NULL); _tmp0_ = g_string_new (""); buff = _tmp0_; length = g_utf8_strlen (str, (gssize) -1); { gint i = 0; i = 0; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { gint _tmp3_; gint _tmp4_; gunichar ch = 0U; gunichar _tmp5_; const gchar* _tmp11_; if (!_tmp1_) { gint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; _tmp3_ = i; _tmp4_ = length; if (!(_tmp3_ < _tmp4_)) { break; } ch = string_get_char (str, (glong) 0); _tmp5_ = ch; switch (_tmp5_) { case '<': { GString* _tmp6_; _tmp6_ = buff; g_string_append (_tmp6_, "<"); break; } case '>': { GString* _tmp7_; _tmp7_ = buff; g_string_append (_tmp7_, ">"); break; } case '&': { GString* _tmp8_; _tmp8_ = buff; g_string_append (_tmp8_, "&"); break; } default: { GString* _tmp9_; gunichar _tmp10_; _tmp9_ = buff; _tmp10_ = ch; g_string_append_unichar (_tmp9_, _tmp10_); break; } } _tmp11_ = g_utf8_next_char (str); str = _tmp11_; } } } _tmp12_ = buff; _tmp13_ = _tmp12_->str; _tmp14_ = g_strdup (_tmp13_); result = _tmp14_; _g_string_free0 (buff); return result; } static gint string_index_of (const gchar* self, const gchar* needle, gint start_index) { gint result = 0; gchar* _result_ = NULL; gchar* _tmp0_; gchar* _tmp1_; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (needle != NULL, 0); _tmp0_ = strstr (((gchar*) self) + start_index, (gchar*) needle); _result_ = _tmp0_; _tmp1_ = _result_; if (_tmp1_ != NULL) { gchar* _tmp2_; _tmp2_ = _result_; result = (gint) (_tmp2_ - ((gchar*) self)); return result; } else { result = -1; return result; } } static glong string_strnlen (gchar* str, glong maxlen) { glong result = 0L; gchar* end = NULL; gchar* _tmp0_; gchar* _tmp1_; _tmp0_ = memchr (str, 0, (gsize) maxlen); end = _tmp0_; _tmp1_ = end; if (_tmp1_ == NULL) { result = maxlen; return result; } else { gchar* _tmp2_; _tmp2_ = end; result = (glong) (_tmp2_ - str); return result; } } static gchar* string_substring (const gchar* self, glong offset, glong len) { gchar* result = NULL; glong string_length = 0L; gboolean _tmp0_ = FALSE; glong _tmp6_; gchar* _tmp7_; g_return_val_if_fail (self != NULL, NULL); if (offset >= ((glong) 0)) { _tmp0_ = len >= ((glong) 0); } else { _tmp0_ = FALSE; } if (_tmp0_) { string_length = string_strnlen ((gchar*) self, offset + len); } else { gint _tmp1_; gint _tmp2_; _tmp1_ = strlen (self); _tmp2_ = _tmp1_; string_length = (glong) _tmp2_; } if (offset < ((glong) 0)) { glong _tmp3_; _tmp3_ = string_length; offset = _tmp3_ + offset; g_return_val_if_fail (offset >= ((glong) 0), NULL); } else { glong _tmp4_; _tmp4_ = string_length; g_return_val_if_fail (offset <= _tmp4_, NULL); } if (len < ((glong) 0)) { glong _tmp5_; _tmp5_ = string_length; len = _tmp5_ - offset; } _tmp6_ = string_length; g_return_val_if_fail ((offset + len) <= _tmp6_, NULL); _tmp7_ = g_strndup (((gchar*) self) + offset, (gsize) len); result = _tmp7_; return result; } static void ibus_emojier_update_annotations_with_description (IBusEmojiData* data, const gchar* description) { GSList* annotations = NULL; GSList* _tmp0_; GSList* _tmp1_; gboolean update_annotations = FALSE; gchar* former = NULL; gchar* later = NULL; gint index = 0; gint _tmp2_; gchar** words = NULL; const gchar* _tmp14_; gchar** _tmp15_; gchar** _tmp16_; gint words_length1; gint _words_size_; gboolean _tmp17_ = FALSE; gchar** _tmp18_; gint _tmp18__length1; gboolean _tmp25_; g_return_if_fail (data != NULL); g_return_if_fail (description != NULL); _tmp0_ = ibus_emoji_data_get_annotations (data); _tmp1_ = g_slist_copy_deep (_tmp0_, _g_strdup_gcopy_func, NULL); annotations = _tmp1_; update_annotations = FALSE; former = NULL; later = NULL; index = string_index_of (description, ": ", 0); _tmp2_ = index; if (_tmp2_ > 0) { gint _tmp3_; gchar* _tmp4_; GSList* _tmp5_; const gchar* _tmp6_; GCompareFunc _tmp7_; GSList* _tmp8_; gint _tmp11_; gchar* _tmp12_; _tmp3_ = index; _tmp4_ = string_substring (description, (glong) 0, (glong) _tmp3_); _g_free0 (former); former = _tmp4_; _tmp5_ = annotations; _tmp6_ = former; _tmp7_ = g_strcmp0; _tmp8_ = g_slist_find_custom (_tmp5_, _tmp6_, _tmp7_); if (_tmp8_ == NULL) { const gchar* _tmp9_; gchar* _tmp10_; _tmp9_ = former; _tmp10_ = g_strdup (_tmp9_); annotations = g_slist_append (annotations, _tmp10_); update_annotations = TRUE; } _tmp11_ = index; _tmp12_ = string_substring (description, (glong) (_tmp11_ + 2), (glong) -1); _g_free0 (later); later = _tmp12_; } else { gchar* _tmp13_; _tmp13_ = g_strdup (description); _g_free0 (later); later = _tmp13_; } _tmp14_ = later; _tmp16_ = _tmp15_ = g_strsplit (_tmp14_, " ", 0); words = _tmp16_; words_length1 = _vala_array_length (_tmp15_); _words_size_ = words_length1; _tmp18_ = words; _tmp18__length1 = words_length1; if (_tmp18__length1 < 3) { GSList* _tmp19_; const gchar* _tmp20_; GCompareFunc _tmp21_; GSList* _tmp22_; _tmp19_ = annotations; _tmp20_ = later; _tmp21_ = g_strcmp0; _tmp22_ = g_slist_find_custom (_tmp19_, _tmp20_, _tmp21_); _tmp17_ = _tmp22_ == NULL; } else { _tmp17_ = FALSE; } if (_tmp17_) { const gchar* _tmp23_; gchar* _tmp24_; _tmp23_ = later; _tmp24_ = g_strdup (_tmp23_); annotations = g_slist_append (annotations, _tmp24_); update_annotations = TRUE; } _tmp25_ = update_annotations; if (_tmp25_) { GSList* _tmp26_; GSList* _tmp27_; _tmp26_ = annotations; _tmp27_ = g_slist_copy_deep (_tmp26_, _g_strdup_gcopy_func, NULL); ibus_emoji_data_set_annotations (data, _tmp27_); } words = (_vala_array_free (words, words_length1, (GDestroyNotify) g_free), NULL); _g_free0 (later); _g_free0 (former); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); } static void ibus_emojier_update_emoji_to_data_dict (IBusEmojiData* data, const gchar* lang) { gchar* emoji = NULL; const gchar* _tmp0_; gchar* _tmp1_; g_return_if_fail (data != NULL); g_return_if_fail (lang != NULL); _tmp0_ = ibus_emoji_data_get_emoji (data); _tmp1_ = g_strdup (_tmp0_); emoji = _tmp1_; if (g_strcmp0 (lang, "en") == 0) { gchar* description = NULL; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; GHashTable* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_; IBusEmojiData* _tmp8_; _tmp2_ = ibus_emoji_data_get_description (data); _tmp3_ = g_utf8_strdown (_tmp2_, (gssize) -1); description = _tmp3_; _tmp4_ = description; ibus_emojier_update_annotations_with_description (data, _tmp4_); _tmp5_ = ibus_emojier_m_emoji_to_data_dict; _tmp6_ = emoji; _tmp7_ = g_strdup (_tmp6_); _tmp8_ = _g_object_ref0 (data); g_hash_table_replace (_tmp5_, _tmp7_, _tmp8_); _g_free0 (description); } else { IBusEmojiData* en_data = NULL; GHashTable* _tmp9_; const gchar* _tmp10_; gconstpointer _tmp11_; IBusEmojiData* _tmp12_; gchar* trans_description = NULL; const gchar* _tmp17_; gchar* _tmp18_; IBusEmojiData* _tmp19_; const gchar* _tmp20_; const gchar* _tmp21_; gchar* _tmp22_; const gchar* _tmp23_; GSList* annotations = NULL; GSList* _tmp24_; GSList* en_annotations = NULL; IBusEmojiData* _tmp25_; GSList* _tmp26_; GSList* _tmp27_; IBusEmojiData* _tmp35_; GSList* _tmp36_; GSList* _tmp37_; en_data = NULL; _tmp9_ = ibus_emojier_m_emoji_to_data_dict; _tmp10_ = emoji; _tmp11_ = g_hash_table_lookup (_tmp9_, _tmp10_); en_data = (IBusEmojiData*) _tmp11_; _tmp12_ = en_data; if (_tmp12_ == NULL) { GHashTable* _tmp13_; const gchar* _tmp14_; gchar* _tmp15_; IBusEmojiData* _tmp16_; _tmp13_ = ibus_emojier_m_emoji_to_data_dict; _tmp14_ = emoji; _tmp15_ = g_strdup (_tmp14_); _tmp16_ = _g_object_ref0 (data); g_hash_table_insert (_tmp13_, _tmp15_, _tmp16_); _g_free0 (emoji); return; } _tmp17_ = ibus_emoji_data_get_description (data); _tmp18_ = g_strdup (_tmp17_); trans_description = _tmp18_; _tmp19_ = en_data; _tmp20_ = trans_description; ibus_emoji_data_set_description (_tmp19_, _tmp20_); _tmp21_ = trans_description; _tmp22_ = g_utf8_strdown (_tmp21_, (gssize) -1); _g_free0 (trans_description); trans_description = _tmp22_; _tmp23_ = trans_description; ibus_emojier_update_annotations_with_description (data, _tmp23_); _tmp24_ = ibus_emoji_data_get_annotations (data); annotations = _tmp24_; _tmp25_ = en_data; _tmp26_ = ibus_emoji_data_get_annotations (_tmp25_); en_annotations = _tmp26_; _tmp27_ = en_annotations; { GSList* annotation_collection = NULL; GSList* annotation_it = NULL; annotation_collection = _tmp27_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { gchar* _tmp28_; gchar* annotation = NULL; _tmp28_ = g_strdup ((const gchar*) annotation_it->data); annotation = _tmp28_; { GSList* _tmp29_; const gchar* _tmp30_; GCompareFunc _tmp31_; GSList* _tmp32_; _tmp29_ = annotations; _tmp30_ = annotation; _tmp31_ = g_strcmp0; _tmp32_ = g_slist_find_custom (_tmp29_, _tmp30_, _tmp31_); if (_tmp32_ == NULL) { const gchar* _tmp33_; gchar* _tmp34_; _tmp33_ = annotation; _tmp34_ = g_strdup (_tmp33_); annotations = g_slist_append (annotations, _tmp34_); } _g_free0 (annotation); } } } _tmp35_ = en_data; _tmp36_ = annotations; _tmp37_ = g_slist_copy_deep (_tmp36_, _g_strdup_gcopy_func, NULL); ibus_emoji_data_set_annotations (_tmp35_, _tmp37_); _g_free0 (trans_description); } _g_free0 (emoji); } static gint string_index_of_char (const gchar* self, gunichar c, gint start_index) { gint result = 0; gchar* _result_ = NULL; gchar* _tmp0_; gchar* _tmp1_; g_return_val_if_fail (self != NULL, 0); _tmp0_ = g_utf8_strchr (((gchar*) self) + start_index, (gssize) -1, c); _result_ = _tmp0_; _tmp1_ = _result_; if (_tmp1_ != NULL) { gchar* _tmp2_; _tmp2_ = _result_; result = (gint) (_tmp2_ - ((gchar*) self)); return result; } else { result = -1; return result; } } static gchar* g_unichar_to_string (gunichar self) { gchar* result = NULL; gchar* str = NULL; gchar* _tmp0_; const gchar* _tmp1_; _tmp0_ = g_new0 (gchar, 7); str = (gchar*) _tmp0_; _tmp1_ = str; g_unichar_to_utf8 (self, _tmp1_); result = str; return result; } static void ibus_emojier_update_category_to_emojis_dict (IBusEmojiData* data, const gchar* lang) { gchar* emoji = NULL; const gchar* _tmp0_; gchar* _tmp1_; gchar* category = NULL; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; g_return_if_fail (data != NULL); g_return_if_fail (lang != NULL); _tmp0_ = ibus_emoji_data_get_emoji (data); _tmp1_ = g_strdup (_tmp0_); emoji = _tmp1_; _tmp2_ = ibus_emoji_data_get_category (data); _tmp3_ = g_strdup (_tmp2_); category = _tmp3_; _tmp4_ = category; if (g_strcmp0 (_tmp4_, "") == 0) { gchar* _tmp5_; _tmp5_ = g_strdup (IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS); _g_free0 (category); category = _tmp5_; } if (g_strcmp0 (lang, "en") == 0) { gboolean has_variant = FALSE; gboolean _tmp8_; gboolean has_emoji = FALSE; GSList* hits = NULL; GHashTable* _tmp41_; const gchar* _tmp42_; gconstpointer _tmp43_; GSList* _tmp44_; GSList* _tmp45_; gboolean _tmp49_; has_variant = FALSE; { gunichar* ch_collection = NULL; gint ch_collection_length1 = 0; gint _ch_collection_size_ = 0; gint ch_it = 0; ch_collection = IBUS_EMOJIER_EMOJI_VARIANT_LIST; ch_collection_length1 = G_N_ELEMENTS (IBUS_EMOJIER_EMOJI_VARIANT_LIST); for (ch_it = 0; ch_it < G_N_ELEMENTS (IBUS_EMOJIER_EMOJI_VARIANT_LIST); ch_it = ch_it + 1) { gunichar ch = 0U; ch = ch_collection[ch_it]; { const gchar* _tmp6_; gunichar _tmp7_; _tmp6_ = emoji; _tmp7_ = ch; if (string_index_of_char (_tmp6_, _tmp7_, 0) >= 0) { has_variant = TRUE; break; } } } } _tmp8_ = has_variant; if (_tmp8_) { gunichar base_ch = 0U; const gchar* _tmp9_; gchar* base_emoji = NULL; gunichar _tmp10_; gchar* _tmp11_; GString* buff = NULL; GString* _tmp12_; GString* _tmp13_; gunichar _tmp14_; GString* _tmp15_; GHashTable* _tmp16_; GString* _tmp17_; const gchar* _tmp18_; gconstpointer _tmp19_; GSList* variants = NULL; GHashTable* _tmp23_; const gchar* _tmp24_; gconstpointer _tmp25_; GSList* _tmp26_; GSList* _tmp27_; const gchar* _tmp28_; GCompareFunc _tmp29_; GSList* _tmp30_; _tmp9_ = emoji; base_ch = string_get_char (_tmp9_, (glong) 0); _tmp10_ = base_ch; _tmp11_ = g_unichar_to_string (_tmp10_); base_emoji = _tmp11_; _tmp12_ = g_string_new (""); buff = _tmp12_; _tmp13_ = buff; _tmp14_ = base_ch; g_string_append_unichar (_tmp13_, _tmp14_); _tmp15_ = buff; g_string_append_unichar (_tmp15_, (gunichar) 0xfe0f); _tmp16_ = ibus_emojier_m_emoji_to_data_dict; _tmp17_ = buff; _tmp18_ = _tmp17_->str; _tmp19_ = g_hash_table_lookup (_tmp16_, _tmp18_); if (((IBusEmojiData*) _tmp19_) != NULL) { GString* _tmp20_; const gchar* _tmp21_; gchar* _tmp22_; _tmp20_ = buff; _tmp21_ = _tmp20_->str; _tmp22_ = g_strdup (_tmp21_); _g_free0 (base_emoji); base_emoji = _tmp22_; } _tmp23_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp24_ = base_emoji; _tmp25_ = g_hash_table_lookup (_tmp23_, _tmp24_); _tmp26_ = g_slist_copy_deep ((GSList*) _tmp25_, _g_strdup_gcopy_func, NULL); variants = _tmp26_; _tmp27_ = variants; _tmp28_ = emoji; _tmp29_ = g_strcmp0; _tmp30_ = g_slist_find_custom (_tmp27_, _tmp28_, _tmp29_); if (_tmp30_ == NULL) { GSList* _tmp31_; const gchar* _tmp34_; gchar* _tmp35_; GHashTable* _tmp36_; const gchar* _tmp37_; gchar* _tmp38_; GSList* _tmp39_; GSList* _tmp40_; _tmp31_ = variants; if (_tmp31_ == NULL) { const gchar* _tmp32_; gchar* _tmp33_; _tmp32_ = base_emoji; _tmp33_ = g_strdup (_tmp32_); variants = g_slist_append (variants, _tmp33_); } _tmp34_ = emoji; _tmp35_ = g_strdup (_tmp34_); variants = g_slist_append (variants, _tmp35_); _tmp36_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp37_ = base_emoji; _tmp38_ = g_strdup (_tmp37_); _tmp39_ = variants; _tmp40_ = g_slist_copy_deep (_tmp39_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp36_, _tmp38_, _tmp40_); } (variants == NULL) ? NULL : (variants = (_g_slist_free__g_free0_ (variants), NULL)); _g_string_free0 (buff); _g_free0 (base_emoji); _g_free0 (category); _g_free0 (emoji); return; } has_emoji = FALSE; _tmp41_ = ibus_emojier_m_category_to_emojis_dict; _tmp42_ = category; _tmp43_ = g_hash_table_lookup (_tmp41_, _tmp42_); _tmp44_ = g_slist_copy_deep ((GSList*) _tmp43_, _g_strdup_gcopy_func, NULL); hits = _tmp44_; _tmp45_ = hits; { GSList* hit_emoji_collection = NULL; GSList* hit_emoji_it = NULL; hit_emoji_collection = _tmp45_; for (hit_emoji_it = hit_emoji_collection; hit_emoji_it != NULL; hit_emoji_it = hit_emoji_it->next) { gchar* _tmp46_; gchar* hit_emoji = NULL; _tmp46_ = g_strdup ((const gchar*) hit_emoji_it->data); hit_emoji = _tmp46_; { const gchar* _tmp47_; const gchar* _tmp48_; _tmp47_ = hit_emoji; _tmp48_ = emoji; if (g_strcmp0 (_tmp47_, _tmp48_) == 0) { has_emoji = TRUE; _g_free0 (hit_emoji); break; } _g_free0 (hit_emoji); } } } _tmp49_ = has_emoji; if (!_tmp49_) { const gchar* _tmp50_; gchar* _tmp51_; GHashTable* _tmp52_; const gchar* _tmp53_; gchar* _tmp54_; GSList* _tmp55_; GSList* _tmp56_; _tmp50_ = emoji; _tmp51_ = g_strdup (_tmp50_); hits = g_slist_append (hits, _tmp51_); _tmp52_ = ibus_emojier_m_category_to_emojis_dict; _tmp53_ = category; _tmp54_ = g_strdup (_tmp53_); _tmp55_ = hits; _tmp56_ = g_slist_copy_deep (_tmp55_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp52_, _tmp54_, _tmp56_); } (hits == NULL) ? NULL : (hits = (_g_slist_free__g_free0_ (hits), NULL)); } _g_free0 (category); _g_free0 (emoji); } static void ibus_emojier_make_unicode_block_dict (void) { GSList* _tmp0_; GSList* _tmp1_; _tmp0_ = ibus_unicode_block_load (PKGDATADIR "/dicts/unicode-blocks.dict"); (ibus_emojier_m_unicode_block_list == NULL) ? NULL : (ibus_emojier_m_unicode_block_list = (_g_slist_free__g_object_unref0_ (ibus_emojier_m_unicode_block_list), NULL)); ibus_emojier_m_unicode_block_list = _tmp0_; _tmp1_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp1_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { const gchar* name = NULL; IBusUnicodeBlock* _tmp2_; const gchar* _tmp3_; gint _tmp4_; const gchar* _tmp5_; gint _tmp6_; gint _tmp7_; _tmp2_ = block; _tmp3_ = ibus_unicode_block_get_name (_tmp2_); name = _tmp3_; _tmp4_ = ibus_emojier_m_emoji_max_seq_len; _tmp5_ = name; _tmp6_ = strlen (_tmp5_); _tmp7_ = _tmp6_; if (_tmp4_ < _tmp7_) { const gchar* _tmp8_; gint _tmp9_; gint _tmp10_; _tmp8_ = name; _tmp9_ = strlen (_tmp8_); _tmp10_ = _tmp9_; ibus_emojier_m_emoji_max_seq_len = _tmp10_; } } } } } static void ibus_emojier_make_unicode_name_dict (GObject* source_object) { g_return_if_fail (source_object != NULL); ibus_unicode_data_load_async (PKGDATADIR "/dicts/unicode-names.dict", source_object, NULL, (IBusUnicodeDataLoadAsyncFinish) ibus_emojier_make_unicode_name_dict_finish, NULL); } static void ibus_emojier_make_unicode_name_dict_finish (GSList* unicode_list) { GList* names = NULL; GHashTable* _tmp3_; GList* _tmp4_; GList* _tmp5_; if (unicode_list == NULL) { return; } { GSList* data_collection = NULL; GSList* data_it = NULL; data_collection = unicode_list; for (data_it = data_collection; data_it != NULL; data_it = data_it->next) { IBusUnicodeData* _tmp0_; IBusUnicodeData* data = NULL; _tmp0_ = _g_object_ref0 ((IBusUnicodeData*) data_it->data); data = _tmp0_; { IBusUnicodeData* _tmp1_; IBusUnicodeData* _tmp2_; _tmp1_ = data; ibus_emojier_update_unicode_to_data_dict (_tmp1_); _tmp2_ = data; ibus_emojier_update_name_to_unicodes_dict (_tmp2_); _g_object_unref0 (data); } } } _tmp3_ = ibus_emojier_m_name_to_unicodes_dict; _tmp4_ = g_hash_table_get_keys (_tmp3_); names = _tmp4_; _tmp5_ = names; { GList* name_collection = NULL; GList* name_it = NULL; name_collection = _tmp5_; for (name_it = name_collection; name_it != NULL; name_it = name_it->next) { const gchar* name = NULL; name = (const gchar*) name_it->data; { gint _tmp6_; const gchar* _tmp7_; gint _tmp8_; gint _tmp9_; _tmp6_ = ibus_emojier_m_emoji_max_seq_len; _tmp7_ = name; _tmp8_ = strlen (_tmp7_); _tmp9_ = _tmp8_; if (_tmp6_ < _tmp9_) { const gchar* _tmp10_; gint _tmp11_; gint _tmp12_; _tmp10_ = name; _tmp11_ = strlen (_tmp10_); _tmp12_ = _tmp11_; ibus_emojier_m_emoji_max_seq_len = _tmp12_; } } } } ibus_emojier_m_loaded_unicode = TRUE; (names == NULL) ? NULL : (names = (g_list_free (names), NULL)); } static void ibus_emojier_update_unicode_to_data_dict (IBusUnicodeData* data) { gunichar code = 0U; GHashTable* _tmp0_; IBusUnicodeData* _tmp1_; g_return_if_fail (data != NULL); code = ibus_unicode_data_get_code (data); _tmp0_ = ibus_emojier_m_unicode_to_data_dict; _tmp1_ = _g_object_ref0 (data); g_hash_table_replace (_tmp0_, (gpointer) ((gintptr) code), _tmp1_); } static void ibus_emojier_update_name_to_unicodes_dict (IBusUnicodeData* data) { gunichar code = 0U; gchar** names = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_; gchar** _tmp4_; gint names_length1; gint _names_size_; gchar** _tmp5_; gint _tmp5__length1; g_return_if_fail (data != NULL); code = ibus_unicode_data_get_code (data); _tmp0_ = ibus_unicode_data_get_name (data); _tmp1_ = g_utf8_strdown (_tmp0_, (gssize) -1); _tmp2_ = ibus_unicode_data_get_alias (data); _tmp3_ = g_utf8_strdown (_tmp2_, (gssize) -1); _tmp4_ = g_new0 (gchar*, 2 + 1); _tmp4_[0] = _tmp1_; _tmp4_[1] = _tmp3_; names = _tmp4_; names_length1 = 2; _names_size_ = names_length1; _tmp5_ = names; _tmp5__length1 = names_length1; { gchar** name_collection = NULL; gint name_collection_length1 = 0; gint _name_collection_size_ = 0; gint name_it = 0; name_collection = _tmp5_; name_collection_length1 = _tmp5__length1; for (name_it = 0; name_it < _tmp5__length1; name_it = name_it + 1) { const gchar* name = NULL; name = name_collection[name_it]; { const gchar* _tmp6_; gboolean has_code = FALSE; GSList* hits = NULL; GHashTable* _tmp7_; const gchar* _tmp8_; gconstpointer _tmp9_; GSList* _tmp10_; GSList* _tmp11_; gboolean _tmp14_; _tmp6_ = name; if (g_strcmp0 (_tmp6_, "") == 0) { continue; } has_code = FALSE; _tmp7_ = ibus_emojier_m_name_to_unicodes_dict; _tmp8_ = name; _tmp9_ = g_hash_table_lookup (_tmp7_, _tmp8_); _tmp10_ = g_slist_copy ((GSList*) _tmp9_); hits = _tmp10_; _tmp11_ = hits; { GSList* hit_code_collection = NULL; GSList* hit_code_it = NULL; hit_code_collection = _tmp11_; for (hit_code_it = hit_code_collection; hit_code_it != NULL; hit_code_it = hit_code_it->next) { gunichar hit_code = 0U; hit_code = (gunichar) ((gintptr) hit_code_it->data); { gunichar _tmp12_; gunichar _tmp13_; _tmp12_ = hit_code; _tmp13_ = code; if (_tmp12_ == _tmp13_) { has_code = TRUE; break; } } } } _tmp14_ = has_code; if (!_tmp14_) { gunichar _tmp15_; GHashTable* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_; GSList* _tmp19_; GSList* _tmp20_; _tmp15_ = code; hits = g_slist_append (hits, (gpointer) ((gintptr) _tmp15_)); _tmp16_ = ibus_emojier_m_name_to_unicodes_dict; _tmp17_ = name; _tmp18_ = g_strdup (_tmp17_); _tmp19_ = hits; _tmp20_ = g_slist_copy (_tmp19_); g_hash_table_replace (_tmp16_, _tmp18_, _tmp20_); } (hits == NULL) ? NULL : (hits = (g_slist_free (hits), NULL)); } } } names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); } static void ibus_emojier_set_css_data (IBusEmojier* self) { GdkDisplay* display = NULL; GdkDisplay* _tmp0_; GdkDisplay* _tmp1_; GdkScreen* _tmp2_ = NULL; GdkDisplay* _tmp3_; GdkScreen* screen = NULL; GdkScreen* _tmp6_; GdkScreen* _tmp7_; gchar* backup_locale = NULL; const gchar* _tmp8_; gchar* _tmp9_; const gchar* _tmp10_; ThemedRGBA* _tmp13_; guint bg_red = 0U; ThemedRGBA* _tmp15_; GdkRGBA* _tmp16_; GdkRGBA* _tmp17_; gdouble _tmp18_; guint bg_green = 0U; ThemedRGBA* _tmp19_; GdkRGBA* _tmp20_; GdkRGBA* _tmp21_; gdouble _tmp22_; guint bg_blue = 0U; ThemedRGBA* _tmp23_; GdkRGBA* _tmp24_; GdkRGBA* _tmp25_; gdouble _tmp26_; gdouble bg_alpha = 0.0; ThemedRGBA* _tmp27_; GdkRGBA* _tmp28_; GdkRGBA* _tmp29_; gdouble _tmp30_; gchar* data = NULL; guint _tmp31_; guint _tmp32_; guint _tmp33_; gdouble _tmp34_; gchar* _tmp35_; gchar* _tmp36_; gchar* _tmp37_; gchar* _tmp38_; const gchar* _tmp39_; gint _tmp40_; gchar* _tmp41_; gchar* _tmp42_; gchar* _tmp43_; gchar* _tmp44_; gchar* _tmp45_; gchar* _tmp46_; guint fg_red = 0U; ThemedRGBA* _tmp47_; GdkRGBA* _tmp48_; GdkRGBA* _tmp49_; gdouble _tmp50_; guint fg_green = 0U; ThemedRGBA* _tmp51_; GdkRGBA* _tmp52_; GdkRGBA* _tmp53_; gdouble _tmp54_; guint fg_blue = 0U; ThemedRGBA* _tmp55_; GdkRGBA* _tmp56_; GdkRGBA* _tmp57_; gdouble _tmp58_; gdouble fg_alpha = 0.0; ThemedRGBA* _tmp59_; GdkRGBA* _tmp60_; GdkRGBA* _tmp61_; gdouble _tmp62_; ThemedRGBA* _tmp63_; GdkRGBA* _tmp64_; GdkRGBA* _tmp65_; gdouble _tmp66_; ThemedRGBA* _tmp67_; GdkRGBA* _tmp68_; GdkRGBA* _tmp69_; gdouble _tmp70_; ThemedRGBA* _tmp71_; GdkRGBA* _tmp72_; GdkRGBA* _tmp73_; gdouble _tmp74_; ThemedRGBA* _tmp75_; GdkRGBA* _tmp76_; GdkRGBA* _tmp77_; gdouble _tmp78_; const gchar* _tmp79_; guint _tmp80_; guint _tmp81_; guint _tmp82_; gdouble _tmp83_; gchar* _tmp84_; gchar* _tmp85_; gchar* _tmp86_; gchar* _tmp87_; const gchar* _tmp88_; gint _tmp89_; gchar* _tmp90_; gchar* _tmp91_; gchar* _tmp92_; gchar* _tmp93_; gchar* _tmp94_; gchar* _tmp95_; guint _tmp96_; guint _tmp97_; guint _tmp98_; gdouble _tmp99_; gchar* _tmp100_; gchar* _tmp101_; gchar* _tmp102_; gchar* _tmp103_; gchar* _tmp104_; gchar* _tmp105_; gchar* _tmp106_; const gchar* _tmp107_; guint _tmp108_; guint _tmp109_; guint _tmp110_; gdouble _tmp111_; gchar* _tmp112_; gchar* _tmp113_; gchar* _tmp114_; gchar* _tmp115_; const gchar* _tmp116_; gint _tmp117_; gchar* _tmp118_; gchar* _tmp119_; gchar* _tmp120_; gchar* _tmp121_; gchar* _tmp122_; gchar* _tmp123_; gchar* _tmp124_; gchar* _tmp125_; gchar* _tmp126_; GtkCssProvider* css_provider = NULL; GtkCssProvider* _tmp127_; const gchar* _tmp132_; GdkScreen* _tmp134_; GtkCssProvider* _tmp135_; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = gdk_display_get_default (); _tmp1_ = _g_object_ref0 (_tmp0_); display = _tmp1_; _tmp3_ = display; if (_tmp3_ != NULL) { GdkDisplay* _tmp4_; GdkScreen* _tmp5_; _tmp4_ = display; _tmp5_ = gdk_display_get_default_screen (_tmp4_); _tmp2_ = _tmp5_; } else { _tmp2_ = NULL; } _tmp6_ = _g_object_ref0 (_tmp2_); screen = _tmp6_; _tmp7_ = screen; if (_tmp7_ == NULL) { g_warning ("emojier.vala:737: Could not open display."); _g_object_unref0 (screen); _g_object_unref0 (display); return; } _tmp8_ = setlocale (LC_NUMERIC, NULL); _tmp9_ = g_strdup (_tmp8_); backup_locale = _tmp9_; _tmp10_ = setlocale (LC_NUMERIC, "en_US.UTF-8"); if (_tmp10_ == NULL) { const gchar* _tmp11_; _tmp11_ = setlocale (LC_NUMERIC, "C.UTF-8"); if (_tmp11_ == NULL) { const gchar* _tmp12_; _tmp12_ = setlocale (LC_NUMERIC, "C"); if (_tmp12_ == NULL) { g_warning ("emojier.vala:746: %s", "You don't install either en_US.UTF-8 or C.UTF-8 " "or C locale"); } } } _tmp13_ = self->priv->m_rgba; if (_tmp13_ == NULL) { ThemedRGBA* _tmp14_; _tmp14_ = themed_rgba_new ((GtkWidget*) self); _themed_rgba_unref0 (self->priv->m_rgba); self->priv->m_rgba = _tmp14_; } _tmp15_ = self->priv->m_rgba; _tmp16_ = themed_rgba_get_normal_bg (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = (*_tmp17_).red; bg_red = (guint) (_tmp18_ * 255); _tmp19_ = self->priv->m_rgba; _tmp20_ = themed_rgba_get_normal_bg (_tmp19_); _tmp21_ = _tmp20_; _tmp22_ = (*_tmp21_).green; bg_green = (guint) (_tmp22_ * 255); _tmp23_ = self->priv->m_rgba; _tmp24_ = themed_rgba_get_normal_bg (_tmp23_); _tmp25_ = _tmp24_; _tmp26_ = (*_tmp25_).blue; bg_blue = (guint) (_tmp26_ * 255); _tmp27_ = self->priv->m_rgba; _tmp28_ = themed_rgba_get_normal_bg (_tmp27_); _tmp29_ = _tmp28_; _tmp30_ = (*_tmp29_).alpha; bg_alpha = _tmp30_; _tmp31_ = bg_red; _tmp32_ = bg_green; _tmp33_ = bg_blue; _tmp34_ = bg_alpha; _tmp35_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", _tmp31_, _tmp32_, _tmp33_, _tmp34_); _tmp36_ = _tmp35_; _tmp37_ = g_strconcat ("#IBusEmojierWhiteLabel { background-color: ", _tmp36_, NULL); _tmp38_ = _tmp37_; _tmp39_ = ibus_emojier_m_emoji_font_family; _tmp40_ = ibus_emojier_m_emoji_font_size; _tmp41_ = g_strdup_printf ("font-family: %s; font-size: %dpt; ", _tmp39_, _tmp40_); _tmp42_ = _tmp41_; _tmp43_ = g_strconcat (_tmp38_, _tmp42_, NULL); _tmp44_ = _tmp43_; _tmp45_ = g_strconcat (_tmp44_, "border-width: 4px; border-radius: 3px; } ", NULL); _tmp46_ = _tmp45_; _g_free0 (_tmp44_); _g_free0 (_tmp42_); _g_free0 (_tmp38_); _g_free0 (_tmp36_); data = _tmp46_; _tmp47_ = self->priv->m_rgba; _tmp48_ = themed_rgba_get_selected_fg (_tmp47_); _tmp49_ = _tmp48_; _tmp50_ = (*_tmp49_).red; fg_red = (guint) (_tmp50_ * 255); _tmp51_ = self->priv->m_rgba; _tmp52_ = themed_rgba_get_selected_fg (_tmp51_); _tmp53_ = _tmp52_; _tmp54_ = (*_tmp53_).green; fg_green = (guint) (_tmp54_ * 255); _tmp55_ = self->priv->m_rgba; _tmp56_ = themed_rgba_get_selected_fg (_tmp55_); _tmp57_ = _tmp56_; _tmp58_ = (*_tmp57_).blue; fg_blue = (guint) (_tmp58_ * 255); _tmp59_ = self->priv->m_rgba; _tmp60_ = themed_rgba_get_selected_fg (_tmp59_); _tmp61_ = _tmp60_; _tmp62_ = (*_tmp61_).alpha; fg_alpha = _tmp62_; _tmp63_ = self->priv->m_rgba; _tmp64_ = themed_rgba_get_selected_bg (_tmp63_); _tmp65_ = _tmp64_; _tmp66_ = (*_tmp65_).red; bg_red = (guint) (_tmp66_ * 255); _tmp67_ = self->priv->m_rgba; _tmp68_ = themed_rgba_get_selected_bg (_tmp67_); _tmp69_ = _tmp68_; _tmp70_ = (*_tmp69_).green; bg_green = (guint) (_tmp70_ * 255); _tmp71_ = self->priv->m_rgba; _tmp72_ = themed_rgba_get_selected_bg (_tmp71_); _tmp73_ = _tmp72_; _tmp74_ = (*_tmp73_).blue; bg_blue = (guint) (_tmp74_ * 255); _tmp75_ = self->priv->m_rgba; _tmp76_ = themed_rgba_get_selected_bg (_tmp75_); _tmp77_ = _tmp76_; _tmp78_ = (*_tmp77_).alpha; bg_alpha = _tmp78_; _tmp79_ = data; _tmp80_ = fg_red; _tmp81_ = fg_green; _tmp82_ = fg_blue; _tmp83_ = fg_alpha; _tmp84_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", _tmp80_, _tmp81_, _tmp82_, _tmp83_); _tmp85_ = _tmp84_; _tmp86_ = g_strconcat ("#IBusEmojierSelectedLabel { color: ", _tmp85_, NULL); _tmp87_ = _tmp86_; _tmp88_ = ibus_emojier_m_emoji_font_family; _tmp89_ = ibus_emojier_m_emoji_font_size; _tmp90_ = g_strdup_printf ("font-family: %s; font-size: %dpt; ", _tmp88_, _tmp89_); _tmp91_ = _tmp90_; _tmp92_ = g_strconcat (_tmp87_, _tmp91_, NULL); _tmp93_ = _tmp92_; _tmp94_ = g_strconcat (_tmp93_, "background-color: ", NULL); _tmp95_ = _tmp94_; _tmp96_ = bg_red; _tmp97_ = bg_green; _tmp98_ = bg_blue; _tmp99_ = bg_alpha; _tmp100_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", _tmp96_, _tmp97_, _tmp98_, _tmp99_); _tmp101_ = _tmp100_; _tmp102_ = g_strconcat (_tmp95_, _tmp101_, NULL); _tmp103_ = _tmp102_; _tmp104_ = g_strconcat (_tmp103_, "border-width: 4px; border-radius: 3px; }", NULL); _tmp105_ = _tmp104_; _tmp106_ = g_strconcat (_tmp79_, _tmp105_, NULL); _g_free0 (data); data = _tmp106_; _g_free0 (_tmp105_); _g_free0 (_tmp103_); _g_free0 (_tmp101_); _g_free0 (_tmp95_); _g_free0 (_tmp93_); _g_free0 (_tmp91_); _g_free0 (_tmp87_); _g_free0 (_tmp85_); _tmp107_ = data; _tmp108_ = fg_red; _tmp109_ = fg_green; _tmp110_ = fg_blue; _tmp111_ = fg_alpha; _tmp112_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", _tmp108_, _tmp109_, _tmp110_, _tmp111_); _tmp113_ = _tmp112_; _tmp114_ = g_strconcat ("#IBusEmojierGoldLabel { color: ", _tmp113_, NULL); _tmp115_ = _tmp114_; _tmp116_ = ibus_emojier_m_emoji_font_family; _tmp117_ = ibus_emojier_m_emoji_font_size; _tmp118_ = g_strdup_printf ("font-family: %s; font-size: %dpt; ", _tmp116_, _tmp117_); _tmp119_ = _tmp118_; _tmp120_ = g_strconcat (_tmp115_, _tmp119_, NULL); _tmp121_ = _tmp120_; _tmp122_ = g_strconcat (_tmp121_, "background-color: #b09c5f; ", NULL); _tmp123_ = _tmp122_; _tmp124_ = g_strconcat (_tmp123_, "border-width: 4px; border-radius: 3px; }", NULL); _tmp125_ = _tmp124_; _tmp126_ = g_strconcat (_tmp107_, _tmp125_, NULL); _g_free0 (data); data = _tmp126_; _g_free0 (_tmp125_); _g_free0 (_tmp123_); _g_free0 (_tmp121_); _g_free0 (_tmp119_); _g_free0 (_tmp115_); _g_free0 (_tmp113_); _tmp127_ = gtk_css_provider_new (); css_provider = _tmp127_; { GtkCssProvider* _tmp128_; const gchar* _tmp129_; _tmp128_ = css_provider; _tmp129_ = data; gtk_css_provider_load_from_data (_tmp128_, _tmp129_, (gssize) -1, &_inner_error_); if (G_UNLIKELY (_inner_error_ != NULL)) { goto __catch1_g_error; } } goto __finally1; __catch1_g_error: { GError* e = NULL; GError* _tmp130_; const gchar* _tmp131_; e = _inner_error_; _inner_error_ = NULL; _tmp130_ = e; _tmp131_ = _tmp130_->message; g_warning ("emojier.vala:794: Failed css_provider_from_data: %s", _tmp131_); _g_error_free0 (e); _g_object_unref0 (css_provider); _g_free0 (data); _g_free0 (backup_locale); _g_object_unref0 (screen); _g_object_unref0 (display); return; } __finally1: if (G_UNLIKELY (_inner_error_ != NULL)) { _g_object_unref0 (css_provider); _g_free0 (data); _g_free0 (backup_locale); _g_object_unref0 (screen); _g_object_unref0 (display); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _tmp132_ = backup_locale; if (_tmp132_ != NULL) { const gchar* _tmp133_; _tmp133_ = backup_locale; setlocale (LC_NUMERIC, _tmp133_); } else { setlocale (LC_NUMERIC, ""); } _tmp134_ = screen; _tmp135_ = css_provider; gtk_style_context_add_provider_for_screen (_tmp134_, (GtkStyleProvider*) _tmp135_, (guint) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); _g_object_unref0 (css_provider); _g_free0 (data); _g_free0 (backup_locale); _g_object_unref0 (screen); _g_object_unref0 (display); } static void ibus_emojier_set_fixed_size (IBusEmojier* self) { g_return_if_fail (self != NULL); gtk_window_resize ((GtkWindow*) self, 20, 1); } static void ibus_emojier_remove_all_children (IBusEmojier* self) { IBusEmojierEListBox* _tmp0_; GtkBox* _tmp5_; GList* _tmp6_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_list_box; if (_tmp0_ != NULL) { IBusEmojierEListBox* _tmp1_; GList* _tmp2_; _tmp1_ = self->priv->m_list_box; _tmp2_ = gtk_container_get_children ((GtkContainer*) _tmp1_); { GList* w_collection = NULL; GList* w_it = NULL; w_collection = _tmp2_; for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { GtkWidget* _tmp3_; GtkWidget* w = NULL; _tmp3_ = _g_object_ref0 ((GtkWidget*) w_it->data); w = _tmp3_; { GtkWidget* _tmp4_; _tmp4_ = w; gtk_widget_destroy (_tmp4_); _g_object_unref0 (w); } } (w_collection == NULL) ? NULL : (w_collection = (g_list_free (w_collection), NULL)); } _g_object_unref0 (self->priv->m_list_box); self->priv->m_list_box = NULL; } _tmp5_ = self->priv->m_vbox; _tmp6_ = gtk_container_get_children ((GtkContainer*) _tmp5_); { GList* w_collection = NULL; GList* w_it = NULL; w_collection = _tmp6_; for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { GtkWidget* _tmp7_; GtkWidget* w = NULL; _tmp7_ = _g_object_ref0 ((GtkWidget*) w_it->data); w = _tmp7_; { gboolean _tmp8_ = FALSE; GtkWidget* _tmp9_; const gchar* _tmp10_; const gchar* _tmp11_; GtkWidget* _tmp15_; _tmp9_ = w; _tmp10_ = gtk_widget_get_name (_tmp9_); _tmp11_ = _tmp10_; if (g_strcmp0 (_tmp11_, "IBusEmojierEntry") == 0) { _tmp8_ = TRUE; } else { GtkWidget* _tmp12_; const gchar* _tmp13_; const gchar* _tmp14_; _tmp12_ = w; _tmp13_ = gtk_widget_get_name (_tmp12_); _tmp14_ = _tmp13_; _tmp8_ = g_strcmp0 (_tmp14_, "IBusEmojierTitleLabelBox") == 0; } if (_tmp8_) { _g_object_unref0 (w); continue; } _tmp15_ = w; gtk_widget_destroy (_tmp15_); _g_object_unref0 (w); } } (w_collection == NULL) ? NULL : (w_collection = (g_list_free (w_collection), NULL)); } } static void ibus_emojier_clamp_page (IBusEmojier* self) { GtkListBoxRow* row = NULL; gint _tmp0_; GtkAllocation alloc = {0}; GtkAllocation _tmp10_ = {0}; GtkListBoxRow* _tmp11_; GtkAllocation _tmp12_ = {0}; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp13_; GtkAdjustment* _tmp14_; GtkAdjustment* _tmp15_; GtkAllocation _tmp16_; gint _tmp17_; GtkAllocation _tmp18_; gint _tmp19_; GtkAllocation _tmp20_; gint _tmp21_; gint _tmp22_; IBusLookupTable* _tmp23_; gint _tmp24_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_category_active_index; if (_tmp0_ >= 0) { IBusEmojierEListBox* _tmp1_; gint _tmp2_; GtkListBoxRow* _tmp3_; GtkListBoxRow* _tmp4_; IBusEmojierEListBox* _tmp5_; GtkListBoxRow* _tmp6_; _tmp1_ = self->priv->m_list_box; _tmp2_ = self->priv->m_category_active_index; _tmp3_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp1_, _tmp2_); _tmp4_ = _g_object_ref0 (_tmp3_); _g_object_unref0 (row); row = _tmp4_; _tmp5_ = self->priv->m_list_box; _tmp6_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp5_, _tmp6_); } else { IBusEmojierEListBox* _tmp7_; GtkListBoxRow* _tmp8_; GtkListBoxRow* _tmp9_; _tmp7_ = self->priv->m_list_box; _tmp8_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp7_, 0); _tmp9_ = _g_object_ref0 (_tmp8_); _g_object_unref0 (row); row = _tmp9_; } _tmp10_.x = 0; _tmp10_.y = 0; _tmp10_.width = 0; _tmp10_.height = 0; alloc = _tmp10_; _tmp11_ = row; gtk_widget_get_allocation ((GtkWidget*) _tmp11_, &_tmp12_); alloc = _tmp12_; _tmp13_ = self->priv->m_scrolled_window; _tmp14_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp13_); _tmp15_ = _g_object_ref0 (_tmp14_); adjustment = _tmp15_; _tmp16_ = alloc; _tmp17_ = _tmp16_.y; _tmp18_ = alloc; _tmp19_ = _tmp18_.y; _tmp20_ = alloc; _tmp21_ = _tmp20_.height; gtk_adjustment_clamp_page (adjustment, (gdouble) _tmp17_, (gdouble) (_tmp19_ + _tmp21_)); _tmp22_ = self->priv->m_category_active_index; g_return_val_if_fail (_tmp22_ >= 0, FALSE); _tmp23_ = self->priv->m_lookup_table; _tmp24_ = self->priv->m_category_active_index; ibus_lookup_table_set_cursor_pos (_tmp23_, (guint) _tmp24_); _g_object_unref0 (adjustment); _g_object_unref0 (row); } static void __lambda25_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow) { IBusEmojierEBoxRow* row = NULL; IBusEmojierEBoxRow* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; g_return_if_fail (box != NULL); g_return_if_fail (gtkrow != NULL); self->priv->m_category_active_index = gtk_list_box_row_get_index (gtkrow); _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (gtkrow, IBUS_EMOJIER_TYPE_EBOX_ROW) ? ((IBusEmojierEBoxRow*) gtkrow) : NULL); row = _tmp0_; _tmp1_ = ibus_emojier_ebox_row_get_text (row); _tmp2_ = _tmp1_; ibus_emojier_show_emoji_for_category (self, _tmp2_); gtk_widget_show_all ((GtkWidget*) self); _g_object_unref0 (row); } static void ___lambda25__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self) { __lambda25_ ((IBusEmojier*) self, _sender, row); } static void ibus_emojier_show_category_list (IBusEmojier* self) { gboolean _tmp0_ = FALSE; gint _tmp1_; gint _tmp9_; IBusEmojierEScrolledWindow* _tmp10_; GtkBox* _tmp11_; IBusEmojierEScrolledWindow* _tmp12_; GtkViewport* viewport = NULL; GtkViewport* _tmp13_; IBusEmojierEScrolledWindow* _tmp14_; GtkViewport* _tmp15_; IBusEmojierEListBox* _tmp16_; GtkViewport* _tmp17_; IBusEmojierEListBox* _tmp18_; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp19_; GtkAdjustment* _tmp20_; GtkAdjustment* _tmp21_; IBusEmojierEListBox* _tmp22_; GtkAdjustment* _tmp23_; IBusEmojierEListBox* _tmp24_; guint ncandidates = 0U; IBusLookupTable* _tmp25_; IBusEmojierEScrolledWindow* _tmp47_; gint _tmp48_; IBusEmojierEListBox* _tmp50_; IBusEmojierEListBox* _tmp51_; g_return_if_fail (self != NULL); _tmp1_ = self->priv->m_category_active_index; if (_tmp1_ >= 0) { IBusEmojierEListBox* _tmp2_; _tmp2_ = self->priv->m_list_box; _tmp0_ = _tmp2_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp3_; gint _tmp4_; GtkListBoxRow* _tmp5_; GtkListBoxRow* _tmp6_; IBusEmojierEListBox* _tmp7_; GtkListBoxRow* _tmp8_; _tmp3_ = self->priv->m_list_box; _tmp4_ = self->priv->m_category_active_index; _tmp5_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp3_, _tmp4_); _tmp6_ = _g_object_ref0 (_tmp5_); row = _tmp6_; _tmp7_ = self->priv->m_list_box; _tmp8_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp7_, _tmp8_); _g_object_unref0 (row); return; } _tmp9_ = self->priv->m_category_active_index; if (_tmp9_ < 0) { self->priv->m_category_active_index = 0; } ibus_emojier_remove_all_children (self); _tmp10_ = ibus_emojier_escrolled_window_new (NULL, NULL); g_object_ref_sink (_tmp10_); _g_object_unref0 (self->priv->m_scrolled_window); self->priv->m_scrolled_window = _tmp10_; ibus_emojier_set_fixed_size (self); _tmp11_ = self->priv->m_vbox; _tmp12_ = self->priv->m_scrolled_window; gtk_container_add ((GtkContainer*) _tmp11_, (GtkWidget*) _tmp12_); _tmp13_ = (GtkViewport*) gtk_viewport_new (NULL, NULL); g_object_ref_sink (_tmp13_); viewport = _tmp13_; _tmp14_ = self->priv->m_scrolled_window; _tmp15_ = viewport; gtk_container_add ((GtkContainer*) _tmp14_, (GtkWidget*) _tmp15_); _tmp16_ = ibus_emojier_elist_box_new (); g_object_ref_sink (_tmp16_); _g_object_unref0 (self->priv->m_list_box); self->priv->m_list_box = _tmp16_; _tmp17_ = viewport; _tmp18_ = self->priv->m_list_box; gtk_container_add ((GtkContainer*) _tmp17_, (GtkWidget*) _tmp18_); _tmp19_ = self->priv->m_scrolled_window; _tmp20_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp19_); _tmp21_ = _g_object_ref0 (_tmp20_); adjustment = _tmp21_; _tmp22_ = self->priv->m_list_box; _tmp23_ = adjustment; gtk_list_box_set_adjustment ((GtkListBox*) _tmp22_, _tmp23_); _tmp24_ = self->priv->m_list_box; g_signal_connect_object ((GtkListBox*) _tmp24_, "row-activated", (GCallback) ___lambda25__gtk_list_box_row_activated, self, 0); _tmp25_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp25_); { guint i = 0U; i = (guint) 0; { gboolean _tmp26_ = FALSE; _tmp26_ = TRUE; while (TRUE) { guint _tmp28_; guint _tmp29_; gchar* category = NULL; IBusLookupTable* _tmp30_; guint _tmp31_; IBusText* _tmp32_; const gchar* _tmp33_; gchar* _tmp34_; IBusEmojierEBoxRow* row = NULL; const gchar* _tmp35_; IBusEmojierEBoxRow* _tmp36_; IBusEmojierEPaddedLabelBox* widget = NULL; const gchar* _tmp37_; IBusEmojierEPaddedLabelBox* _tmp38_; IBusEmojierEBoxRow* _tmp39_; IBusEmojierEPaddedLabelBox* _tmp40_; IBusEmojierEListBox* _tmp41_; IBusEmojierEBoxRow* _tmp42_; guint _tmp43_; gint _tmp44_; if (!_tmp26_) { guint _tmp27_; _tmp27_ = i; i = _tmp27_ + 1; } _tmp26_ = FALSE; _tmp28_ = i; _tmp29_ = ncandidates; if (!(_tmp28_ < _tmp29_)) { break; } _tmp30_ = self->priv->m_lookup_table; _tmp31_ = i; _tmp32_ = ibus_lookup_table_get_candidate (_tmp30_, _tmp31_); _tmp33_ = _tmp32_->text; _tmp34_ = g_strdup (_tmp33_); category = _tmp34_; _tmp35_ = category; _tmp36_ = ibus_emojier_ebox_row_new (_tmp35_); g_object_ref_sink (_tmp36_); row = _tmp36_; _tmp37_ = category; _tmp38_ = ibus_emojier_epadded_label_box_new (_ (_tmp37_), GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp38_); widget = _tmp38_; _tmp39_ = row; _tmp40_ = widget; gtk_container_add ((GtkContainer*) _tmp39_, (GtkWidget*) _tmp40_); _tmp41_ = self->priv->m_list_box; _tmp42_ = row; gtk_container_add ((GtkContainer*) _tmp41_, (GtkWidget*) _tmp42_); _tmp43_ = i; _tmp44_ = self->priv->m_category_active_index; if (_tmp43_ == ((guint) _tmp44_)) { IBusEmojierEListBox* _tmp45_; IBusEmojierEBoxRow* _tmp46_; _tmp45_ = self->priv->m_list_box; _tmp46_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp45_, (GtkListBoxRow*) _tmp46_); } _g_object_unref0 (widget); _g_object_unref0 (row); _g_free0 (category); } } } _tmp47_ = self->priv->m_scrolled_window; gtk_widget_show_all ((GtkWidget*) _tmp47_); _tmp48_ = self->priv->m_category_active_index; if (_tmp48_ == -1) { IBusEmojierEListBox* _tmp49_; _tmp49_ = self->priv->m_list_box; gtk_list_box_unselect_all ((GtkListBox*) _tmp49_); } _tmp50_ = self->priv->m_list_box; gtk_list_box_invalidate_filter ((GtkListBox*) _tmp50_); _tmp51_ = self->priv->m_list_box; gtk_list_box_set_selection_mode ((GtkListBox*) _tmp51_, GTK_SELECTION_SINGLE); _g_object_unref0 (adjustment); _g_object_unref0 (viewport); } static void ibus_emojier_show_emoji_for_category (IBusEmojier* self, const gchar* category) { IBusLookupTable* _tmp16_; IBusText* _tmp17_; const gchar* _tmp18_; gchar* _tmp19_; gint _tmp20_; g_return_if_fail (self != NULL); g_return_if_fail (category != NULL); if (g_strcmp0 (category, IBUS_EMOJIER_EMOJI_CATEGORY_FAVORITES) == 0) { IBusLookupTable* _tmp0_; gchar** _tmp1_; gint _tmp1__length1; gchar* _tmp6_; _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp0_); self->priv->m_candidate_panel_mode = TRUE; _tmp1_ = ibus_emojier_m_favorites; _tmp1__length1 = ibus_emojier_m_favorites_length1; { gchar** favorate_collection = NULL; gint favorate_collection_length1 = 0; gint _favorate_collection_size_ = 0; gint favorate_it = 0; favorate_collection = _tmp1_; favorate_collection_length1 = _tmp1__length1; for (favorate_it = 0; favorate_it < _tmp1__length1; favorate_it = favorate_it + 1) { const gchar* favorate = NULL; favorate = favorate_collection[favorate_it]; { IBusText* text = NULL; const gchar* _tmp2_; IBusText* _tmp3_; IBusLookupTable* _tmp4_; IBusText* _tmp5_; _tmp2_ = favorate; _tmp3_ = ibus_text_new_from_string (_tmp2_); g_object_ref_sink (_tmp3_); text = _tmp3_; _tmp4_ = self->priv->m_lookup_table; _tmp5_ = text; ibus_lookup_table_append_candidate (_tmp4_, _tmp5_); _g_object_unref0 (text); } } } _tmp6_ = g_strdup (category); _g_free0 (self->priv->m_backward); self->priv->m_backward = _tmp6_; } else { if (g_strcmp0 (category, IBUS_EMOJIER_EMOJI_CATEGORY_UNICODE) == 0) { self->priv->m_category_active_index = -1; ibus_emojier_m_show_unicode = TRUE; ibus_emojier_update_unicode_blocks (self); return; } else { GSList* emojis = NULL; GHashTable* _tmp7_; gconstpointer _tmp8_; IBusLookupTable* _tmp9_; GSList* _tmp10_; gchar* _tmp15_; _tmp7_ = ibus_emojier_m_category_to_emojis_dict; _tmp8_ = g_hash_table_lookup (_tmp7_, category); emojis = (GSList*) _tmp8_; _tmp9_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp9_); self->priv->m_candidate_panel_mode = TRUE; _tmp10_ = emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp10_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { IBusText* text = NULL; const gchar* _tmp11_; IBusText* _tmp12_; IBusLookupTable* _tmp13_; IBusText* _tmp14_; _tmp11_ = emoji; _tmp12_ = ibus_text_new_from_string (_tmp11_); g_object_ref_sink (_tmp12_); text = _tmp12_; _tmp13_ = self->priv->m_lookup_table; _tmp14_ = text; ibus_lookup_table_append_candidate (_tmp13_, _tmp14_); _g_object_unref0 (text); } } } _tmp15_ = g_strdup (category); _g_free0 (self->priv->m_backward); self->priv->m_backward = _tmp15_; } } _tmp16_ = self->priv->m_lookup_table; _tmp17_ = ibus_lookup_table_get_candidate (_tmp16_, (guint) 0); _tmp18_ = _tmp17_->text; _tmp19_ = g_strdup (_tmp18_); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp19_; _tmp20_ = self->priv->m_backward_index; if (_tmp20_ >= 0) { IBusLookupTable* _tmp21_; gint _tmp22_; _tmp21_ = self->priv->m_lookup_table; _tmp22_ = self->priv->m_backward_index; ibus_lookup_table_set_cursor_pos (_tmp21_, (guint) _tmp22_); self->priv->m_backward_index = -1; } } static void ibus_emojier_show_emoji_variants (IBusEmojier* self, GSList* emojis) { IBusLookupTable* _tmp0_; IBusLookupTable* _tmp1_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_lookup_table; self->priv->m_backward_index = (gint) ibus_lookup_table_get_cursor_pos (_tmp0_); _tmp1_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp1_); { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = emojis; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { IBusText* text = NULL; const gchar* _tmp2_; IBusText* _tmp3_; IBusLookupTable* _tmp4_; IBusText* _tmp5_; _tmp2_ = emoji; _tmp3_ = ibus_text_new_from_string (_tmp2_); g_object_ref_sink (_tmp3_); text = _tmp3_; _tmp4_ = self->priv->m_lookup_table; _tmp5_ = text; ibus_lookup_table_append_candidate (_tmp4_, _tmp5_); _g_object_unref0 (text); } } } } static gboolean __lambda22_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e) { gboolean result = FALSE; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); self->priv->m_category_active_index = -1; ibus_emojier_m_show_unicode = FALSE; ibus_emojier_hide_candidate_panel (self); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } static gboolean ___lambda22__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = __lambda22_ ((IBusEmojier*) self, _sender, event); return result; } static void __lambda23_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow) { IBusEmojierEBoxRow* row = NULL; IBusEmojierEBoxRow* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; g_return_if_fail (box != NULL); g_return_if_fail (gtkrow != NULL); self->priv->m_category_active_index = gtk_list_box_row_get_index (gtkrow); _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (gtkrow, IBUS_EMOJIER_TYPE_EBOX_ROW) ? ((IBusEmojierEBoxRow*) gtkrow) : NULL); row = _tmp0_; _tmp1_ = ibus_emojier_ebox_row_get_text (row); _tmp2_ = _tmp1_; ibus_emojier_show_unicode_for_block (self, _tmp2_); ibus_emojier_show_candidate_panel (self); _g_object_unref0 (row); } static void ___lambda23__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self) { __lambda23_ ((IBusEmojier*) self, _sender, row); } static void __lambda24_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a) { g_return_if_fail (w != NULL); g_return_if_fail (a != NULL); ibus_emojier_clamp_page (self); } static void ___lambda24__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) { __lambda24_ ((IBusEmojier*) self, _sender, allocation); } static void ibus_emojier_show_unicode_blocks (IBusEmojier* self) { gboolean _tmp0_ = FALSE; gint _tmp1_; gint _tmp9_; gboolean _tmp10_ = FALSE; gint _tmp11_; IBusEmojierEPaddedLabelBox* label = NULL; IBusEmojierEPaddedLabelBox* _tmp15_; GtkButton* button = NULL; GtkButton* _tmp16_; GtkButton* _tmp17_; IBusEmojierEPaddedLabelBox* _tmp18_; GtkBox* _tmp19_; GtkButton* _tmp20_; GtkButton* _tmp21_; GtkButton* _tmp22_; IBusEmojierEScrolledWindow* _tmp23_; GtkBox* _tmp24_; IBusEmojierEScrolledWindow* _tmp25_; GtkViewport* viewport = NULL; GtkViewport* _tmp26_; IBusEmojierEScrolledWindow* _tmp27_; GtkViewport* _tmp28_; IBusEmojierEListBox* _tmp29_; GtkViewport* _tmp30_; IBusEmojierEListBox* _tmp31_; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp32_; GtkAdjustment* _tmp33_; GtkAdjustment* _tmp34_; IBusEmojierEListBox* _tmp35_; GtkAdjustment* _tmp36_; IBusEmojierEListBox* _tmp37_; guint n = 0U; GSList* _tmp38_; gint _tmp57_; IBusEmojierEScrolledWindow* _tmp58_; IBusEmojierEScrolledWindow* _tmp59_; gint _tmp60_; IBusEmojierEListBox* _tmp62_; IBusEmojierEListBox* _tmp63_; GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp64_; guint _tmp65_; GtkListBoxRow* _tmp66_; GtkListBoxRow* _tmp67_; GtkListBoxRow* _tmp68_; g_return_if_fail (self != NULL); _tmp1_ = self->priv->m_category_active_index; if (_tmp1_ >= 0) { IBusEmojierEListBox* _tmp2_; _tmp2_ = self->priv->m_list_box; _tmp0_ = _tmp2_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp3_; gint _tmp4_; GtkListBoxRow* _tmp5_; GtkListBoxRow* _tmp6_; IBusEmojierEListBox* _tmp7_; GtkListBoxRow* _tmp8_; _tmp3_ = self->priv->m_list_box; _tmp4_ = self->priv->m_category_active_index; _tmp5_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp3_, _tmp4_); _tmp6_ = _g_object_ref0 (_tmp5_); row = _tmp6_; _tmp7_ = self->priv->m_list_box; _tmp8_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp7_, _tmp8_); _g_object_unref0 (row); return; } _tmp9_ = self->priv->m_category_active_index; if (_tmp9_ < 0) { self->priv->m_category_active_index = 0; } ibus_emojier_m_show_unicode = TRUE; _tmp11_ = ibus_emojier_m_default_window_width; if (_tmp11_ == 0) { gint _tmp12_; _tmp12_ = ibus_emojier_m_default_window_height; _tmp10_ = _tmp12_ == 0; } else { _tmp10_ = FALSE; } if (_tmp10_) { gint _tmp13_ = 0; gint _tmp14_ = 0; gtk_window_get_size ((GtkWindow*) self, &_tmp13_, &_tmp14_); ibus_emojier_m_default_window_width = _tmp13_; ibus_emojier_m_default_window_height = _tmp14_; } ibus_emojier_remove_all_children (self); ibus_emojier_set_fixed_size (self); _tmp15_ = ibus_emojier_epadded_label_box_new (_ ("Bring back emoji choice"), GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD, NULL); g_object_ref_sink (_tmp15_); label = _tmp15_; _tmp16_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp16_); button = _tmp16_; _tmp17_ = button; _tmp18_ = label; gtk_container_add ((GtkContainer*) _tmp17_, (GtkWidget*) _tmp18_); _tmp19_ = self->priv->m_vbox; _tmp20_ = button; gtk_container_add ((GtkContainer*) _tmp19_, (GtkWidget*) _tmp20_); _tmp21_ = button; gtk_widget_show_all ((GtkWidget*) _tmp21_); _tmp22_ = button; g_signal_connect_object ((GtkWidget*) _tmp22_, "button-press-event", (GCallback) ___lambda22__gtk_widget_button_press_event, self, 0); _tmp23_ = ibus_emojier_escrolled_window_new (NULL, NULL); g_object_ref_sink (_tmp23_); _g_object_unref0 (self->priv->m_scrolled_window); self->priv->m_scrolled_window = _tmp23_; _tmp24_ = self->priv->m_vbox; _tmp25_ = self->priv->m_scrolled_window; gtk_container_add ((GtkContainer*) _tmp24_, (GtkWidget*) _tmp25_); _tmp26_ = (GtkViewport*) gtk_viewport_new (NULL, NULL); g_object_ref_sink (_tmp26_); viewport = _tmp26_; _tmp27_ = self->priv->m_scrolled_window; _tmp28_ = viewport; gtk_container_add ((GtkContainer*) _tmp27_, (GtkWidget*) _tmp28_); _tmp29_ = ibus_emojier_elist_box_new (); g_object_ref_sink (_tmp29_); _g_object_unref0 (self->priv->m_list_box); self->priv->m_list_box = _tmp29_; _tmp30_ = viewport; _tmp31_ = self->priv->m_list_box; gtk_container_add ((GtkContainer*) _tmp30_, (GtkWidget*) _tmp31_); _tmp32_ = self->priv->m_scrolled_window; _tmp33_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp32_); _tmp34_ = _g_object_ref0 (_tmp33_); adjustment = _tmp34_; _tmp35_ = self->priv->m_list_box; _tmp36_ = adjustment; gtk_list_box_set_adjustment ((GtkListBox*) _tmp35_, _tmp36_); _tmp37_ = self->priv->m_list_box; g_signal_connect_object ((GtkListBox*) _tmp37_, "row-activated", (GCallback) ___lambda23__gtk_list_box_row_activated, self, 0); n = (guint) 0; _tmp38_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp38_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { gchar* name = NULL; IBusUnicodeBlock* _tmp39_; const gchar* _tmp40_; gchar* _tmp41_; gchar* caption = NULL; IBusUnicodeBlock* _tmp42_; gchar* _tmp43_; IBusEmojierEBoxRow* row = NULL; const gchar* _tmp44_; IBusEmojierEBoxRow* _tmp45_; IBusEmojierEPaddedLabelBox* widget = NULL; const gchar* _tmp46_; const gchar* _tmp47_; IBusEmojierEPaddedLabelBox* _tmp48_; IBusEmojierEBoxRow* _tmp49_; IBusEmojierEPaddedLabelBox* _tmp50_; IBusEmojierEListBox* _tmp51_; IBusEmojierEBoxRow* _tmp52_; guint _tmp53_; gint _tmp54_; _tmp39_ = block; _tmp40_ = ibus_unicode_block_get_name (_tmp39_); _tmp41_ = g_strdup (_tmp40_); name = _tmp41_; _tmp42_ = block; _tmp43_ = g_strdup_printf ("U+%08X", (guint) ibus_unicode_block_get_start (_tmp42_)); caption = _tmp43_; _tmp44_ = name; _tmp45_ = ibus_emojier_ebox_row_new (_tmp44_); g_object_ref_sink (_tmp45_); row = _tmp45_; _tmp46_ = name; _tmp47_ = caption; _tmp48_ = ibus_emojier_epadded_label_box_new (_ (_tmp46_), GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, _tmp47_); g_object_ref_sink (_tmp48_); widget = _tmp48_; _tmp49_ = row; _tmp50_ = widget; gtk_container_add ((GtkContainer*) _tmp49_, (GtkWidget*) _tmp50_); _tmp51_ = self->priv->m_list_box; _tmp52_ = row; gtk_container_add ((GtkContainer*) _tmp51_, (GtkWidget*) _tmp52_); _tmp53_ = n; n = _tmp53_ + 1; _tmp54_ = self->priv->m_category_active_index; if (_tmp53_ == ((guint) _tmp54_)) { IBusEmojierEListBox* _tmp55_; IBusEmojierEBoxRow* _tmp56_; _tmp55_ = self->priv->m_list_box; _tmp56_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp55_, (GtkListBoxRow*) _tmp56_); } _g_object_unref0 (widget); _g_object_unref0 (row); _g_free0 (caption); _g_free0 (name); } } } _tmp57_ = ibus_emojier_m_default_window_height; gtk_widget_set_size_request ((GtkWidget*) self, -1, _tmp57_ + 100); _tmp58_ = self->priv->m_scrolled_window; gtk_scrolled_window_set_policy ((GtkScrolledWindow*) _tmp58_, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); _tmp59_ = self->priv->m_scrolled_window; gtk_widget_show_all ((GtkWidget*) _tmp59_); _tmp60_ = self->priv->m_category_active_index; if (_tmp60_ == -1) { IBusEmojierEListBox* _tmp61_; _tmp61_ = self->priv->m_list_box; gtk_list_box_unselect_all ((GtkListBox*) _tmp61_); } _tmp62_ = self->priv->m_list_box; gtk_list_box_invalidate_filter ((GtkListBox*) _tmp62_); _tmp63_ = self->priv->m_list_box; gtk_list_box_set_selection_mode ((GtkListBox*) _tmp63_, GTK_SELECTION_SINGLE); _tmp64_ = self->priv->m_list_box; _tmp65_ = n; _tmp66_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp64_, ((gint) _tmp65_) - 1); _tmp67_ = _g_object_ref0 (_tmp66_); row = _tmp67_; _tmp68_ = row; g_signal_connect_object ((GtkWidget*) _tmp68_, "size-allocate", (GCallback) ___lambda24__gtk_widget_size_allocate, self, 0); _g_object_unref0 (row); _g_object_unref0 (adjustment); _g_object_unref0 (viewport); _g_object_unref0 (button); _g_object_unref0 (label); } static void ibus_emojier_show_unicode_for_block (IBusEmojier* self, const gchar* block_name) { gunichar start = 0U; gunichar end = 0U; GSList* _tmp0_; IBusLookupTable* _tmp7_; gchar* _tmp21_; IBusLookupTable* _tmp22_; g_return_if_fail (self != NULL); g_return_if_fail (block_name != NULL); start = (gunichar) 0; end = (gunichar) 0; _tmp0_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp0_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { gchar* name = NULL; IBusUnicodeBlock* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; _tmp1_ = block; _tmp2_ = ibus_unicode_block_get_name (_tmp1_); _tmp3_ = g_strdup (_tmp2_); name = _tmp3_; _tmp4_ = name; if (g_strcmp0 (block_name, _tmp4_) == 0) { IBusUnicodeBlock* _tmp5_; IBusUnicodeBlock* _tmp6_; _tmp5_ = block; start = ibus_unicode_block_get_start (_tmp5_); _tmp6_ = block; end = ibus_unicode_block_get_end (_tmp6_); } _g_free0 (name); } } } _tmp7_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp7_); self->priv->m_candidate_panel_mode = TRUE; { gunichar ch = 0U; gunichar _tmp8_; _tmp8_ = start; ch = _tmp8_; { gboolean _tmp9_ = FALSE; _tmp9_ = TRUE; while (TRUE) { gunichar _tmp11_; gunichar _tmp12_; IBusUnicodeData* data = NULL; GHashTable* _tmp13_; gunichar _tmp14_; gconstpointer _tmp15_; IBusUnicodeData* _tmp16_; IBusText* text = NULL; gunichar _tmp17_; IBusText* _tmp18_; IBusLookupTable* _tmp19_; IBusText* _tmp20_; if (!_tmp9_) { gunichar _tmp10_; _tmp10_ = ch; ch = _tmp10_ + 1; } _tmp9_ = FALSE; _tmp11_ = ch; _tmp12_ = end; if (!(_tmp11_ < _tmp12_)) { break; } _tmp13_ = ibus_emojier_m_unicode_to_data_dict; _tmp14_ = ch; _tmp15_ = g_hash_table_lookup (_tmp13_, (gpointer) ((gintptr) _tmp14_)); data = (IBusUnicodeData*) _tmp15_; _tmp16_ = data; if (_tmp16_ == NULL) { continue; } _tmp17_ = ch; _tmp18_ = ibus_text_new_from_unichar (_tmp17_); g_object_ref_sink (_tmp18_); text = _tmp18_; _tmp19_ = self->priv->m_lookup_table; _tmp20_ = text; ibus_lookup_table_append_candidate (_tmp19_, _tmp20_); _g_object_unref0 (text); } } } _tmp21_ = g_strdup (block_name); _g_free0 (self->priv->m_backward); self->priv->m_backward = _tmp21_; _tmp22_ = self->priv->m_lookup_table; if (ibus_lookup_table_get_number_of_candidates (_tmp22_) > ((guint) 0)) { IBusLookupTable* _tmp23_; IBusText* _tmp24_; const gchar* _tmp25_; gchar* _tmp26_; _tmp23_ = self->priv->m_lookup_table; _tmp24_ = ibus_lookup_table_get_candidate (_tmp23_, (guint) 0); _tmp25_ = _tmp24_->text; _tmp26_ = g_strdup (_tmp25_); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp26_; } } static Block1Data* block1_data_ref (Block1Data* _data1_) { g_atomic_int_inc (&_data1_->_ref_count_); return _data1_; } static void block1_data_unref (void * _userdata_) { Block1Data* _data1_; _data1_ = (Block1Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) { IBusEmojier* self; self = _data1_->self; _g_object_unref0 (_data1_->warning_button); _g_object_unref0 (self); g_slice_free (Block1Data, _data1_); } } static void __lambda17_ (IBusEmojier* self) { IBusLookupTable* _tmp0_; _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_page_down (_tmp0_); ibus_emojier_show_candidate_panel (self); } static void ___lambda17__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda17_ ((IBusEmojier*) self); } static void __lambda18_ (IBusEmojier* self) { IBusLookupTable* _tmp0_; _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_page_up (_tmp0_); ibus_emojier_show_candidate_panel (self); } static void ___lambda18__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda18_ ((IBusEmojier*) self); } static void ___lambda19_ (Block1Data* _data1_) { IBusEmojier* self; GtkLabel* warning_label = NULL; const gchar* _tmp0_; GtkLabel* _tmp1_; GtkPopover* popover = NULL; GtkButton* _tmp2_; GtkPopover* _tmp3_; self = _data1_->self; _tmp0_ = ibus_emojier_m_warning_message; _tmp1_ = (GtkLabel*) gtk_label_new (_tmp0_); g_object_ref_sink (_tmp1_); warning_label = _tmp1_; gtk_label_set_line_wrap (warning_label, TRUE); gtk_label_set_max_width_chars (warning_label, 40); _tmp2_ = _data1_->warning_button; _tmp3_ = (GtkPopover*) gtk_popover_new ((GtkWidget*) _tmp2_); g_object_ref_sink (_tmp3_); popover = _tmp3_; gtk_container_add ((GtkContainer*) popover, (GtkWidget*) warning_label); gtk_widget_show_all ((GtkWidget*) popover); gtk_popover_popup (popover); _g_object_unref0 (popover); _g_object_unref0 (warning_label); } static void ____lambda19__gtk_button_clicked (GtkButton* _sender, gpointer self) { ___lambda19_ (self); } static void ibus_emojier_show_arrow_buttons (IBusEmojier* self) { Block1Data* _data1_; GtkButton* next_button = NULL; GtkButton* _tmp0_; GtkButton* _tmp1_; GtkButton* _tmp2_; GtkImage* _tmp3_; GtkImage* _tmp4_; GtkButton* _tmp5_; GtkButton* _tmp6_; GtkButton* prev_button = NULL; GtkButton* _tmp7_; GtkButton* _tmp8_; GtkButton* _tmp9_; GtkImage* _tmp10_; GtkImage* _tmp11_; GtkButton* _tmp12_; GtkButton* _tmp13_; GMenu* menu = NULL; GMenu* _tmp14_; GMenu* _tmp15_; GMenu* _tmp16_; GtkMenuButton* menu_button = NULL; GtkMenuButton* _tmp17_; GtkMenuButton* _tmp18_; GtkMenuButton* _tmp19_; GtkMenuButton* _tmp20_; GMenu* _tmp21_; GtkMenuButton* _tmp22_; GtkMenuButton* _tmp23_; IBusText* text = NULL; IBusText* _tmp24_; PangoAttrList* attrs = NULL; IBusText* _tmp25_; PangoAttrList* _tmp26_; GtkLabel* title_label = NULL; IBusText* _tmp27_; const gchar* _tmp28_; GtkLabel* _tmp29_; GtkLabel* _tmp30_; PangoAttrList* _tmp31_; const gchar* _tmp32_; GtkBox* buttons_hbox = NULL; GtkBox* _tmp40_; GtkLabel* state_label = NULL; GtkLabel* _tmp41_; GtkLabel* _tmp42_; GtkLabel* _tmp43_; GtkLabel* _tmp44_; GtkBox* _tmp45_; GtkLabel* _tmp46_; GtkBox* _tmp47_; GtkButton* _tmp48_; GtkBox* _tmp49_; GtkButton* _tmp50_; GtkBox* _tmp51_; GtkLabel* _tmp52_; GtkButton* _tmp53_; GtkBox* _tmp56_; GtkMenuButton* _tmp57_; GtkBox* _tmp58_; GtkBox* _tmp59_; GtkBox* _tmp60_; g_return_if_fail (self != NULL); _data1_ = g_slice_new0 (Block1Data); _data1_->_ref_count_ = 1; _data1_->self = g_object_ref (self); _tmp0_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp0_); next_button = _tmp0_; _tmp1_ = next_button; g_signal_connect_object (_tmp1_, "clicked", (GCallback) ___lambda17__gtk_button_clicked, self, 0); _tmp2_ = next_button; _tmp3_ = (GtkImage*) gtk_image_new_from_icon_name ("go-down", (GtkIconSize) GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp3_); _tmp4_ = _tmp3_; gtk_button_set_image (_tmp2_, (GtkWidget*) _tmp4_); _g_object_unref0 (_tmp4_); _tmp5_ = next_button; gtk_button_set_relief (_tmp5_, GTK_RELIEF_NONE); _tmp6_ = next_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp6_, _ ("Page Down")); _tmp7_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp7_); prev_button = _tmp7_; _tmp8_ = prev_button; g_signal_connect_object (_tmp8_, "clicked", (GCallback) ___lambda18__gtk_button_clicked, self, 0); _tmp9_ = prev_button; _tmp10_ = (GtkImage*) gtk_image_new_from_icon_name ("go-up", (GtkIconSize) GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp10_); _tmp11_ = _tmp10_; gtk_button_set_image (_tmp9_, (GtkWidget*) _tmp11_); _g_object_unref0 (_tmp11_); _tmp12_ = prev_button; gtk_button_set_relief (_tmp12_, GTK_RELIEF_NONE); _tmp13_ = prev_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp13_, _ ("Page Up")); _tmp14_ = g_menu_new (); menu = _tmp14_; _tmp15_ = menu; g_menu_append (_tmp15_, _ ("Show emoji variants"), "win.variant"); _tmp16_ = menu; g_menu_append (_tmp16_, _ ("Close"), "win.close"); _tmp17_ = (GtkMenuButton*) gtk_menu_button_new (); g_object_ref_sink (_tmp17_); menu_button = _tmp17_; _tmp18_ = menu_button; gtk_menu_button_set_direction (_tmp18_, GTK_ARROW_NONE); _tmp19_ = menu_button; gtk_widget_set_valign ((GtkWidget*) _tmp19_, GTK_ALIGN_CENTER); _tmp20_ = menu_button; _tmp21_ = menu; gtk_menu_button_set_menu_model (_tmp20_, (GMenuModel*) _tmp21_); _tmp22_ = menu_button; gtk_button_set_relief ((GtkButton*) _tmp22_, GTK_RELIEF_NONE); _tmp23_ = menu_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp23_, _ ("Menu")); _tmp24_ = ibus_emojier_get_title_text (self); text = _tmp24_; _tmp25_ = text; _tmp26_ = get_pango_attr_list_from_ibus_text (_tmp25_); attrs = _tmp26_; _tmp27_ = text; _tmp28_ = ibus_text_get_text (_tmp27_); _tmp29_ = (GtkLabel*) gtk_label_new (_tmp28_); g_object_ref_sink (_tmp29_); title_label = _tmp29_; _tmp30_ = title_label; _tmp31_ = attrs; gtk_label_set_attributes (_tmp30_, _tmp31_); _data1_->warning_button = NULL; _tmp32_ = ibus_emojier_m_warning_message; if (g_strcmp0 (_tmp32_, "") != 0) { GtkButton* _tmp33_; GtkButton* _tmp34_; GtkButton* _tmp35_; GtkImage* _tmp36_; GtkImage* _tmp37_; GtkButton* _tmp38_; GtkButton* _tmp39_; _tmp33_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp33_); _g_object_unref0 (_data1_->warning_button); _data1_->warning_button = _tmp33_; _tmp34_ = _data1_->warning_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp34_, _ ("Click to view a warning message")); _tmp35_ = _data1_->warning_button; _tmp36_ = (GtkImage*) gtk_image_new_from_icon_name ("dialog-warning", (GtkIconSize) GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp36_); _tmp37_ = _tmp36_; gtk_button_set_image (_tmp35_, (GtkWidget*) _tmp37_); _g_object_unref0 (_tmp37_); _tmp38_ = _data1_->warning_button; gtk_button_set_relief (_tmp38_, GTK_RELIEF_NONE); _tmp39_ = _data1_->warning_button; g_signal_connect_data (_tmp39_, "clicked", (GCallback) ____lambda19__gtk_button_clicked, block1_data_ref (_data1_), (GClosureNotify) block1_data_unref, 0); } _tmp40_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp40_); buttons_hbox = _tmp40_; _tmp41_ = (GtkLabel*) gtk_label_new (NULL); g_object_ref_sink (_tmp41_); state_label = _tmp41_; _tmp42_ = state_label; gtk_widget_set_size_request ((GtkWidget*) _tmp42_, 10, -1); _tmp43_ = state_label; gtk_widget_set_halign ((GtkWidget*) _tmp43_, GTK_ALIGN_CENTER); _tmp44_ = state_label; gtk_widget_set_valign ((GtkWidget*) _tmp44_, GTK_ALIGN_CENTER); _tmp45_ = buttons_hbox; _tmp46_ = state_label; gtk_box_pack_start (_tmp45_, (GtkWidget*) _tmp46_, FALSE, TRUE, (guint) 0); _tmp47_ = buttons_hbox; _tmp48_ = prev_button; gtk_box_pack_start (_tmp47_, (GtkWidget*) _tmp48_, FALSE, FALSE, (guint) 0); _tmp49_ = buttons_hbox; _tmp50_ = next_button; gtk_box_pack_start (_tmp49_, (GtkWidget*) _tmp50_, FALSE, FALSE, (guint) 0); _tmp51_ = buttons_hbox; _tmp52_ = title_label; gtk_box_pack_start (_tmp51_, (GtkWidget*) _tmp52_, FALSE, FALSE, (guint) 0); _tmp53_ = _data1_->warning_button; if (_tmp53_ != NULL) { GtkBox* _tmp54_; GtkButton* _tmp55_; _tmp54_ = buttons_hbox; _tmp55_ = _data1_->warning_button; gtk_box_pack_start (_tmp54_, (GtkWidget*) _tmp55_, FALSE, FALSE, (guint) 0); } _tmp56_ = buttons_hbox; _tmp57_ = menu_button; gtk_box_pack_end (_tmp56_, (GtkWidget*) _tmp57_, FALSE, FALSE, (guint) 0); _tmp58_ = self->priv->m_vbox; _tmp59_ = buttons_hbox; gtk_box_pack_start (_tmp58_, (GtkWidget*) _tmp59_, FALSE, FALSE, (guint) 0); _tmp60_ = buttons_hbox; gtk_widget_show_all ((GtkWidget*) _tmp60_); _g_object_unref0 (state_label); _g_object_unref0 (buttons_hbox); _g_object_unref0 (title_label); _pango_attr_list_unref0 (attrs); _g_object_unref0 (text); _g_object_unref0 (menu_button); _g_object_unref0 (menu); _g_object_unref0 (prev_button); _g_object_unref0 (next_button); block1_data_unref (_data1_); _data1_ = NULL; } static void __lambda20_ (IBusEmojier* self, guint i, guint n) { self->priv->m_unicode_percent = ((gdouble) i) / n; } static void ___lambda20__ibus_emojier_load_progress_object_deserialize_unicode (IBusEmojierLoadProgressObject* _sender, guint done, guint total, gpointer self) { __lambda20_ ((IBusEmojier*) self, done, total); } static gboolean __lambda21_ (IBusEmojier* self) { gboolean result = FALSE; GtkProgressBar* _tmp0_; gdouble _tmp1_; GtkLabel* _tmp2_; gdouble _tmp3_; gchar* _tmp4_; gchar* _tmp5_; GtkProgressBar* _tmp6_; GtkLabel* _tmp7_; gboolean _tmp8_; gboolean _tmp9_; self->priv->m_unicode_progress_id = (guint) 0; _tmp0_ = self->priv->m_unicode_progress_bar; _tmp1_ = self->priv->m_unicode_percent; gtk_progress_bar_set_fraction (_tmp0_, _tmp1_); _tmp2_ = self->priv->m_unicode_percent_label; _tmp3_ = self->priv->m_unicode_percent; _tmp4_ = g_strdup_printf ("%.0f%%\n", _tmp3_ * 100); _tmp5_ = _tmp4_; gtk_label_set_text (_tmp2_, _tmp5_); _g_free0 (_tmp5_); _tmp6_ = self->priv->m_unicode_progress_bar; gtk_widget_show ((GtkWidget*) _tmp6_); _tmp7_ = self->priv->m_unicode_percent_label; gtk_widget_show ((GtkWidget*) _tmp7_); _tmp8_ = ibus_emojier_m_loaded_unicode; if (_tmp8_) { ibus_emojier_show_candidate_panel (self); } _tmp9_ = ibus_emojier_m_loaded_unicode; result = !_tmp9_; return result; } static gboolean ___lambda21__gsource_func (gpointer self) { gboolean result; result = __lambda21_ ((IBusEmojier*) self); return result; } static void ibus_emojier_show_unicode_progress_bar (IBusEmojier* self) { GtkProgressBar* _tmp0_; GtkProgressBar* _tmp1_; GtkProgressBar* _tmp2_; GtkProgressBar* _tmp3_; GtkBox* _tmp4_; GtkProgressBar* _tmp5_; GtkProgressBar* _tmp6_; GtkBox* hbox = NULL; GtkBox* _tmp7_; GtkBox* _tmp8_; GtkBox* _tmp9_; GtkBox* _tmp10_; GtkBox* _tmp11_; GtkLabel* label = NULL; GtkLabel* _tmp12_; GtkBox* _tmp13_; GtkLabel* _tmp14_; GtkLabel* _tmp15_; GtkBox* _tmp16_; GtkLabel* _tmp17_; GtkBox* _tmp18_; IBusEmojierLoadProgressObject* _tmp19_; guint _tmp20_; g_return_if_fail (self != NULL); _tmp0_ = (GtkProgressBar*) gtk_progress_bar_new (); g_object_ref_sink (_tmp0_); _g_object_unref0 (self->priv->m_unicode_progress_bar); self->priv->m_unicode_progress_bar = _tmp0_; _tmp1_ = self->priv->m_unicode_progress_bar; gtk_progress_bar_set_ellipsize (_tmp1_, PANGO_ELLIPSIZE_MIDDLE); _tmp2_ = self->priv->m_unicode_progress_bar; gtk_widget_set_halign ((GtkWidget*) _tmp2_, GTK_ALIGN_CENTER); _tmp3_ = self->priv->m_unicode_progress_bar; gtk_widget_set_valign ((GtkWidget*) _tmp3_, GTK_ALIGN_CENTER); _tmp4_ = self->priv->m_vbox; _tmp5_ = self->priv->m_unicode_progress_bar; gtk_container_add ((GtkContainer*) _tmp4_, (GtkWidget*) _tmp5_); _tmp6_ = self->priv->m_unicode_progress_bar; gtk_widget_show ((GtkWidget*) _tmp6_); _tmp7_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5); g_object_ref_sink (_tmp7_); hbox = _tmp7_; _tmp8_ = hbox; gtk_widget_set_halign ((GtkWidget*) _tmp8_, GTK_ALIGN_CENTER); _tmp9_ = hbox; gtk_widget_set_valign ((GtkWidget*) _tmp9_, GTK_ALIGN_CENTER); _tmp10_ = self->priv->m_vbox; _tmp11_ = hbox; gtk_container_add ((GtkContainer*) _tmp10_, (GtkWidget*) _tmp11_); _tmp12_ = (GtkLabel*) gtk_label_new (_ ("Loading a Unicode dictionary:")); g_object_ref_sink (_tmp12_); label = _tmp12_; _tmp13_ = hbox; _tmp14_ = label; gtk_box_pack_start (_tmp13_, (GtkWidget*) _tmp14_, FALSE, TRUE, (guint) 0); _tmp15_ = (GtkLabel*) gtk_label_new (""); g_object_ref_sink (_tmp15_); _g_object_unref0 (self->priv->m_unicode_percent_label); self->priv->m_unicode_percent_label = _tmp15_; _tmp16_ = hbox; _tmp17_ = self->priv->m_unicode_percent_label; gtk_box_pack_start (_tmp16_, (GtkWidget*) _tmp17_, FALSE, TRUE, (guint) 0); _tmp18_ = hbox; gtk_widget_show_all ((GtkWidget*) _tmp18_); _tmp19_ = ibus_emojier_m_unicode_progress_object; g_signal_connect_object (_tmp19_, "deserialize-unicode", (GCallback) ___lambda20__ibus_emojier_load_progress_object_deserialize_unicode, self, 0); _tmp20_ = self->priv->m_unicode_progress_id; if (_tmp20_ > ((guint) 0)) { guint _tmp21_; _tmp21_ = self->priv->m_unicode_progress_id; g_source_remove (_tmp21_); } self->priv->m_unicode_progress_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda21__gsource_func, g_object_ref (self), g_object_unref); _g_object_unref0 (label); _g_object_unref0 (hbox); } static guint64 uint64_parse (const gchar* str) { guint64 result = 0ULL; guint64 _tmp0_; g_return_val_if_fail (str != NULL, 0ULL); _tmp0_ = g_ascii_strtoull (str, NULL, (guint) 0); result = _tmp0_; return result; } static gchar* ibus_emojier_check_unicode_point (const gchar* annotation) { gchar* result = NULL; gchar* unicode_point = NULL; GString* buff = NULL; GString* _tmp0_; GString* retval = NULL; GString* _tmp1_; gunichar code = 0U; GString* _tmp19_; const gchar* _tmp20_; gunichar _tmp21_; GString* _tmp22_; gunichar _tmp23_; gchar* _tmp24_; gchar* _tmp25_; GString* _tmp26_; const gchar* _tmp27_; gchar* _tmp28_; const gchar* _tmp29_; g_return_val_if_fail (annotation != NULL, NULL); unicode_point = NULL; _tmp0_ = g_string_new ("0x"); buff = _tmp0_; _tmp1_ = g_string_new (""); retval = _tmp1_; { gint i = 0; i = 0; { gboolean _tmp2_ = FALSE; _tmp2_ = TRUE; while (TRUE) { gint _tmp4_; gunichar ch = 0U; gint _tmp5_; gunichar _tmp6_; gunichar _tmp7_; gunichar _tmp16_; GString* _tmp17_; gunichar _tmp18_; if (!_tmp2_) { gint _tmp3_; _tmp3_ = i; i = _tmp3_ + 1; } _tmp2_ = FALSE; _tmp4_ = i; if (!(_tmp4_ < g_utf8_strlen (annotation, (gssize) -1))) { break; } _tmp5_ = i; ch = string_get_char (annotation, (glong) _tmp5_); _tmp6_ = ch; if (_tmp6_ == ((gunichar) 0)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } _tmp7_ = ch; if (g_unichar_isspace (_tmp7_)) { gunichar code = 0U; GString* _tmp8_; const gchar* _tmp9_; GString* _tmp10_; gunichar _tmp11_; GString* _tmp12_; gunichar _tmp13_; gchar* _tmp14_; gchar* _tmp15_; _tmp8_ = buff; _tmp9_ = _tmp8_->str; code = (gunichar) uint64_parse (_tmp9_); _tmp10_ = buff; g_string_assign (_tmp10_, "0x"); _tmp11_ = code; if (!g_unichar_validate (_tmp11_)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } _tmp12_ = retval; _tmp13_ = code; _tmp14_ = g_unichar_to_string (_tmp13_); _tmp15_ = _tmp14_; g_string_append (_tmp12_, _tmp15_); _g_free0 (_tmp15_); continue; } _tmp16_ = ch; if (!g_unichar_isxdigit (_tmp16_)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } _tmp17_ = buff; _tmp18_ = ch; g_string_append_unichar (_tmp17_, _tmp18_); } } } _tmp19_ = buff; _tmp20_ = _tmp19_->str; code = (gunichar) uint64_parse (_tmp20_); _tmp21_ = code; if (!g_unichar_validate (_tmp21_)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } _tmp22_ = retval; _tmp23_ = code; _tmp24_ = g_unichar_to_string (_tmp23_); _tmp25_ = _tmp24_; g_string_append (_tmp22_, _tmp25_); _g_free0 (_tmp25_); _tmp26_ = retval; _tmp27_ = _tmp26_->str; _tmp28_ = g_strdup (_tmp27_); _g_free0 (unicode_point); unicode_point = _tmp28_; _tmp29_ = unicode_point; if (_tmp29_ == NULL) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } result = unicode_point; _g_string_free0 (retval); _g_string_free0 (buff); return result; } static GSList* ibus_emojier_lookup_emojis_from_annotation (const gchar* annotation) { GSList* result = NULL; GSList* total_emojis = NULL; GSList* sub_emojis = NULL; GSList* sub_exact_unicodes = NULL; GSList* sub_unicodes = NULL; gint length = 0; gint _tmp0_; gint _tmp1_; gboolean _tmp2_ = FALSE; gboolean _tmp3_; GHashTable* _tmp41_; gconstpointer _tmp42_; GSList* _tmp43_; gint _tmp52_; guint _tmp53_; g_return_val_if_fail (annotation != NULL, NULL); total_emojis = NULL; sub_emojis = NULL; sub_exact_unicodes = NULL; sub_unicodes = NULL; _tmp0_ = strlen (annotation); _tmp1_ = _tmp0_; length = _tmp1_; _tmp3_ = ibus_emojier_m_has_partial_match; if (_tmp3_) { gint _tmp4_; guint _tmp5_; _tmp4_ = length; _tmp5_ = ibus_emojier_m_partial_match_length; _tmp2_ = ((guint) _tmp4_) >= _tmp5_; } else { _tmp2_ = FALSE; } if (_tmp2_) { GSList* sorted_emojis = NULL; GHashTable* _tmp6_; GList* _tmp7_; GSList* _tmp28_; sorted_emojis = NULL; _tmp6_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp7_ = g_hash_table_get_keys (_tmp6_); { GList* key_collection = NULL; GList* key_it = NULL; key_collection = _tmp7_; for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { const gchar* key = NULL; key = (const gchar*) key_it->data; { const gchar* _tmp8_; gint _tmp9_; gint _tmp10_; gint _tmp11_; gboolean matched = FALSE; guint _tmp12_; gboolean _tmp16_; GHashTable* _tmp17_; const gchar* _tmp18_; gconstpointer _tmp19_; GSList* _tmp20_; _tmp8_ = key; _tmp9_ = strlen (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = length; if (_tmp10_ < _tmp11_) { continue; } matched = FALSE; _tmp12_ = ibus_emojier_m_partial_match_condition; switch (_tmp12_) { case 0: { const gchar* _tmp13_; _tmp13_ = key; if (g_str_has_prefix (_tmp13_, annotation)) { matched = TRUE; } break; } case 1: { const gchar* _tmp14_; _tmp14_ = key; if (g_str_has_suffix (_tmp14_, annotation)) { matched = TRUE; } break; } case 2: { const gchar* _tmp15_; _tmp15_ = key; if (string_index_of (_tmp15_, annotation, 0) >= 0) { matched = TRUE; } break; } default: { break; } } _tmp16_ = matched; if (!_tmp16_) { continue; } _tmp17_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp18_ = key; _tmp19_ = g_hash_table_lookup (_tmp17_, _tmp18_); sub_emojis = (GSList*) _tmp19_; _tmp20_ = sub_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp20_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { GSList* _tmp21_; const gchar* _tmp22_; GCompareFunc _tmp23_; GSList* _tmp24_; _tmp21_ = total_emojis; _tmp22_ = emoji; _tmp23_ = g_strcmp0; _tmp24_ = g_slist_find_custom (_tmp21_, _tmp22_, _tmp23_); if (_tmp24_ == NULL) { const gchar* _tmp25_; gchar* _tmp26_; GCompareFunc _tmp27_; _tmp25_ = emoji; _tmp26_ = g_strdup (_tmp25_); _tmp27_ = g_strcmp0; sorted_emojis = g_slist_insert_sorted (sorted_emojis, _tmp26_, _tmp27_); } } } } } } (key_collection == NULL) ? NULL : (key_collection = (g_list_free (key_collection), NULL)); } _tmp28_ = sorted_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp28_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { gchar* _tmp29_; gchar* emoji = NULL; _tmp29_ = g_strdup ((const gchar*) emoji_it->data); emoji = _tmp29_; { GSList* _tmp30_; const gchar* _tmp31_; GCompareFunc _tmp32_; GSList* _tmp33_; _tmp30_ = total_emojis; _tmp31_ = emoji; _tmp32_ = g_strcmp0; _tmp33_ = g_slist_find_custom (_tmp30_, _tmp31_, _tmp32_); if (_tmp33_ == NULL) { const gchar* _tmp34_; gchar* _tmp35_; _tmp34_ = emoji; _tmp35_ = g_strdup (_tmp34_); total_emojis = g_slist_append (total_emojis, _tmp35_); } _g_free0 (emoji); } } } (sorted_emojis == NULL) ? NULL : (sorted_emojis = (_g_slist_free__g_free0_ (sorted_emojis), NULL)); } else { GHashTable* _tmp36_; gconstpointer _tmp37_; GSList* _tmp38_; _tmp36_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp37_ = g_hash_table_lookup (_tmp36_, annotation); sub_emojis = (GSList*) _tmp37_; _tmp38_ = sub_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp38_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { const gchar* _tmp39_; gchar* _tmp40_; _tmp39_ = emoji; _tmp40_ = g_strdup (_tmp39_); total_emojis = g_slist_append (total_emojis, _tmp40_); } } } } _tmp41_ = ibus_emojier_m_name_to_unicodes_dict; _tmp42_ = g_hash_table_lookup (_tmp41_, annotation); sub_exact_unicodes = (GSList*) _tmp42_; _tmp43_ = sub_exact_unicodes; { GSList* code_collection = NULL; GSList* code_it = NULL; code_collection = _tmp43_; for (code_it = code_collection; code_it != NULL; code_it = code_it->next) { gunichar code = 0U; code = (gunichar) ((gintptr) code_it->data); { gchar* ch = NULL; gunichar _tmp44_; gchar* _tmp45_; GSList* _tmp46_; const gchar* _tmp47_; GCompareFunc _tmp48_; GSList* _tmp49_; _tmp44_ = code; _tmp45_ = g_unichar_to_string (_tmp44_); ch = _tmp45_; _tmp46_ = total_emojis; _tmp47_ = ch; _tmp48_ = g_strcmp0; _tmp49_ = g_slist_find_custom (_tmp46_, _tmp47_, _tmp48_); if (_tmp49_ == NULL) { const gchar* _tmp50_; gchar* _tmp51_; _tmp50_ = ch; _tmp51_ = g_strdup (_tmp50_); total_emojis = g_slist_append (total_emojis, _tmp51_); } _g_free0 (ch); } } } _tmp52_ = length; _tmp53_ = ibus_emojier_m_partial_match_length; if (((guint) _tmp52_) >= _tmp53_) { GSList* sorted_unicodes = NULL; GHashTable* _tmp54_; GList* _tmp55_; GSList* _tmp71_; sorted_unicodes = NULL; _tmp54_ = ibus_emojier_m_name_to_unicodes_dict; _tmp55_ = g_hash_table_get_keys (_tmp54_); { GList* key_collection = NULL; GList* key_it = NULL; key_collection = _tmp55_; for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { const gchar* key = NULL; key = (const gchar*) key_it->data; { gboolean matched = FALSE; const gchar* _tmp56_; gboolean _tmp57_; GHashTable* _tmp58_; const gchar* _tmp59_; gconstpointer _tmp60_; GSList* _tmp61_; matched = FALSE; _tmp56_ = key; if (string_index_of (_tmp56_, annotation, 0) >= 0) { matched = TRUE; } _tmp57_ = matched; if (!_tmp57_) { continue; } _tmp58_ = ibus_emojier_m_name_to_unicodes_dict; _tmp59_ = key; _tmp60_ = g_hash_table_lookup (_tmp58_, _tmp59_); sub_unicodes = (GSList*) _tmp60_; _tmp61_ = sub_unicodes; { GSList* code_collection = NULL; GSList* code_it = NULL; code_collection = _tmp61_; for (code_it = code_collection; code_it != NULL; code_it = code_it->next) { gunichar code = 0U; code = (gunichar) ((gintptr) code_it->data); { gchar* ch = NULL; gunichar _tmp62_; gchar* _tmp63_; GSList* _tmp64_; const gchar* _tmp65_; GCompareFunc _tmp66_; GSList* _tmp67_; _tmp62_ = code; _tmp63_ = g_unichar_to_string (_tmp62_); ch = _tmp63_; _tmp64_ = sorted_unicodes; _tmp65_ = ch; _tmp66_ = g_strcmp0; _tmp67_ = g_slist_find_custom (_tmp64_, _tmp65_, _tmp66_); if (_tmp67_ == NULL) { const gchar* _tmp68_; gchar* _tmp69_; GCompareFunc _tmp70_; _tmp68_ = ch; _tmp69_ = g_strdup (_tmp68_); _tmp70_ = g_strcmp0; sorted_unicodes = g_slist_insert_sorted (sorted_unicodes, _tmp69_, _tmp70_); } _g_free0 (ch); } } } } } (key_collection == NULL) ? NULL : (key_collection = (g_list_free (key_collection), NULL)); } _tmp71_ = sorted_unicodes; { GSList* ch_collection = NULL; GSList* ch_it = NULL; ch_collection = _tmp71_; for (ch_it = ch_collection; ch_it != NULL; ch_it = ch_it->next) { gchar* _tmp72_; gchar* ch = NULL; _tmp72_ = g_strdup ((const gchar*) ch_it->data); ch = _tmp72_; { GSList* _tmp73_; const gchar* _tmp74_; GCompareFunc _tmp75_; GSList* _tmp76_; _tmp73_ = total_emojis; _tmp74_ = ch; _tmp75_ = g_strcmp0; _tmp76_ = g_slist_find_custom (_tmp73_, _tmp74_, _tmp75_); if (_tmp76_ == NULL) { const gchar* _tmp77_; gchar* _tmp78_; _tmp77_ = ch; _tmp78_ = g_strdup (_tmp77_); total_emojis = g_slist_append (total_emojis, _tmp78_); } _g_free0 (ch); } } } (sorted_unicodes == NULL) ? NULL : (sorted_unicodes = (_g_slist_free__g_free0_ (sorted_unicodes), NULL)); } result = total_emojis; return result; } static void ibus_emojier_update_candidate_window (IBusEmojier* self) { gchar* annotation = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_; gint _tmp3_; gint _tmp4_; IBusLookupTable* _tmp5_; const gchar* _tmp6_; gint _tmp7_; gint _tmp8_; gint _tmp9_; gchar* unicode_point = NULL; const gchar* _tmp10_; gchar* _tmp11_; GSList* total_emojis = NULL; const gchar* _tmp12_; GSList* _tmp21_; GSList* _tmp24_; gboolean _tmp29_ = FALSE; GSList* _tmp30_; const gchar* _tmp32_; GSList* _tmp37_; gboolean _tmp42_ = FALSE; IBusLookupTable* _tmp43_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_annotation; _tmp1_ = g_strdup (_tmp0_); annotation = _tmp1_; _tmp2_ = annotation; _tmp3_ = strlen (_tmp2_); _tmp4_ = _tmp3_; if (_tmp4_ == 0) { _g_free0 (self->priv->m_backward); self->priv->m_backward = NULL; _g_free0 (annotation); return; } _tmp5_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp5_); self->priv->m_category_active_index = -1; _tmp6_ = annotation; _tmp7_ = strlen (_tmp6_); _tmp8_ = _tmp7_; _tmp9_ = ibus_emojier_m_emoji_max_seq_len; if (_tmp8_ > _tmp9_) { _g_free0 (annotation); return; } _tmp10_ = annotation; _tmp11_ = ibus_emojier_check_unicode_point (_tmp10_); unicode_point = _tmp11_; total_emojis = NULL; _tmp12_ = annotation; if (g_ascii_strcasecmp (_tmp12_, "history") == 0) { { gint i = 0; i = 0; { gboolean _tmp13_ = FALSE; _tmp13_ = TRUE; while (TRUE) { gint _tmp15_; gchar** _tmp16_; gint _tmp16__length1; gchar** _tmp17_; gint _tmp17__length1; gint _tmp18_; const gchar* _tmp19_; gchar* _tmp20_; if (!_tmp13_) { gint _tmp14_; _tmp14_ = i; i = _tmp14_ + 1; } _tmp13_ = FALSE; _tmp15_ = i; _tmp16_ = ibus_emojier_m_favorites; _tmp16__length1 = ibus_emojier_m_favorites_length1; if (!(_tmp15_ < _tmp16__length1)) { break; } _tmp17_ = ibus_emojier_m_favorites; _tmp17__length1 = ibus_emojier_m_favorites_length1; _tmp18_ = i; _tmp19_ = _tmp17_[_tmp18_]; _tmp20_ = g_strdup (_tmp19_); total_emojis = g_slist_append (total_emojis, _tmp20_); } } } } _tmp21_ = total_emojis; if (_tmp21_ == NULL) { const gchar* _tmp22_; GSList* _tmp23_; _tmp22_ = annotation; _tmp23_ = ibus_emojier_lookup_emojis_from_annotation (_tmp22_); (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); total_emojis = _tmp23_; } _tmp24_ = total_emojis; if (_tmp24_ == NULL) { const gchar* _tmp25_; gchar* _tmp26_; const gchar* _tmp27_; GSList* _tmp28_; _tmp25_ = annotation; _tmp26_ = g_utf8_strdown (_tmp25_, (gssize) -1); _g_free0 (annotation); annotation = _tmp26_; _tmp27_ = annotation; _tmp28_ = ibus_emojier_lookup_emojis_from_annotation (_tmp27_); (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); total_emojis = _tmp28_; } _tmp30_ = total_emojis; if (_tmp30_ == NULL) { const gchar* _tmp31_; _tmp31_ = unicode_point; _tmp29_ = _tmp31_ == NULL; } else { _tmp29_ = FALSE; } if (_tmp29_) { (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); _g_free0 (unicode_point); _g_free0 (annotation); return; } _tmp32_ = unicode_point; if (_tmp32_ != NULL) { IBusText* text = NULL; const gchar* _tmp33_; IBusText* _tmp34_; IBusLookupTable* _tmp35_; IBusText* _tmp36_; _tmp33_ = unicode_point; _tmp34_ = ibus_text_new_from_string (_tmp33_); g_object_ref_sink (_tmp34_); text = _tmp34_; _tmp35_ = self->priv->m_lookup_table; _tmp36_ = text; ibus_lookup_table_append_candidate (_tmp35_, _tmp36_); _g_object_unref0 (text); } _tmp37_ = total_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp37_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { IBusText* text = NULL; const gchar* _tmp38_; IBusText* _tmp39_; IBusLookupTable* _tmp40_; IBusText* _tmp41_; _tmp38_ = emoji; _tmp39_ = ibus_text_new_from_string (_tmp38_); g_object_ref_sink (_tmp39_); text = _tmp39_; _tmp40_ = self->priv->m_lookup_table; _tmp41_ = text; ibus_lookup_table_append_candidate (_tmp40_, _tmp41_); _g_object_unref0 (text); } } } _tmp43_ = self->priv->m_lookup_table; if (ibus_lookup_table_get_number_of_candidates (_tmp43_) > ((guint) 0)) { _tmp42_ = TRUE; } else { _tmp42_ = FALSE; } self->priv->m_candidate_panel_is_visible = _tmp42_; self->priv->m_candidate_panel_mode = TRUE; (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); _g_free0 (unicode_point); _g_free0 (annotation); } static gint __lambda9_ (const gchar* a, const gchar* b) { gint result = 0; gboolean _tmp0_ = FALSE; GCompareFunc _tmp2_; g_return_val_if_fail (a != NULL, 0); g_return_val_if_fail (b != NULL, 0); if (g_strcmp0 (a, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) == 0) { _tmp0_ = g_strcmp0 (b, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) != 0; } else { _tmp0_ = FALSE; } if (_tmp0_) { result = 1; return result; } else { gboolean _tmp1_ = FALSE; if (g_strcmp0 (a, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) != 0) { _tmp1_ = g_strcmp0 (b, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) == 0; } else { _tmp1_ = FALSE; } if (_tmp1_) { result = -1; return result; } } _tmp2_ = g_strcmp0; result = _tmp2_ (_ (a), _ (b)); return result; } static gint ___lambda9__gcompare_func (gconstpointer a, gconstpointer b) { gint result; result = __lambda9_ ((const gchar*) a, (const gchar*) b); return result; } static void ibus_emojier_update_category_list (IBusEmojier* self) { IBusLookupTable* _tmp0_; IBusText* text = NULL; gchar** _tmp1_; gint _tmp1__length1; GList* categories = NULL; GHashTable* _tmp5_; GList* _tmp6_; GList* _tmp7_; GSList* _tmp13_; g_return_if_fail (self != NULL); ibus_emojier_reset_window_mode (self); _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp0_); _tmp1_ = ibus_emojier_m_favorites; _tmp1__length1 = ibus_emojier_m_favorites_length1; if (_tmp1__length1 > 0) { IBusText* _tmp2_; IBusLookupTable* _tmp3_; IBusText* _tmp4_; _tmp2_ = ibus_text_new_from_string (IBUS_EMOJIER_EMOJI_CATEGORY_FAVORITES); g_object_ref_sink (_tmp2_); _g_object_unref0 (text); text = _tmp2_; _tmp3_ = self->priv->m_lookup_table; _tmp4_ = text; ibus_lookup_table_append_candidate (_tmp3_, _tmp4_); } _tmp5_ = ibus_emojier_m_category_to_emojis_dict; _tmp6_ = g_hash_table_get_keys (_tmp5_); categories = _tmp6_; categories = g_list_sort (categories, ___lambda9__gcompare_func); _tmp7_ = categories; { GList* category_collection = NULL; GList* category_it = NULL; category_collection = _tmp7_; for (category_it = category_collection; category_it != NULL; category_it = category_it->next) { const gchar* category = NULL; category = (const gchar*) category_it->data; { const gchar* _tmp8_; const gchar* _tmp9_; IBusText* _tmp10_; IBusLookupTable* _tmp11_; IBusText* _tmp12_; _tmp8_ = category; if (g_strcmp0 (_tmp8_, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) == 0) { continue; } _tmp9_ = category; _tmp10_ = ibus_text_new_from_string (_tmp9_); g_object_ref_sink (_tmp10_); _g_object_unref0 (text); text = _tmp10_; _tmp11_ = self->priv->m_lookup_table; _tmp12_ = text; ibus_lookup_table_append_candidate (_tmp11_, _tmp12_); } } } _tmp13_ = ibus_emojier_m_unicode_block_list; if (g_slist_length (_tmp13_) > ((guint) 0)) { IBusText* _tmp14_; IBusLookupTable* _tmp15_; IBusText* _tmp16_; _tmp14_ = ibus_text_new_from_string (IBUS_EMOJIER_EMOJI_CATEGORY_UNICODE); g_object_ref_sink (_tmp14_); _g_object_unref0 (text); text = _tmp14_; _tmp15_ = self->priv->m_lookup_table; _tmp16_ = text; ibus_lookup_table_append_candidate (_tmp15_, _tmp16_); } (categories == NULL) ? NULL : (categories = (g_list_free (categories), NULL)); _g_object_unref0 (text); } static void ibus_emojier_update_unicode_blocks (IBusEmojier* self) { IBusLookupTable* _tmp0_; GSList* _tmp1_; g_return_if_fail (self != NULL); ibus_emojier_reset_window_mode (self); _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp0_); ibus_emojier_m_show_unicode = TRUE; _tmp1_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp1_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { gchar* name = NULL; IBusUnicodeBlock* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; IBusText* text = NULL; const gchar* _tmp5_; IBusText* _tmp6_; IBusLookupTable* _tmp7_; IBusText* _tmp8_; _tmp2_ = block; _tmp3_ = ibus_unicode_block_get_name (_tmp2_); _tmp4_ = g_strdup (_tmp3_); name = _tmp4_; _tmp5_ = name; _tmp6_ = ibus_text_new_from_string (_tmp5_); g_object_ref_sink (_tmp6_); text = _tmp6_; _tmp7_ = self->priv->m_lookup_table; _tmp8_ = text; ibus_lookup_table_append_candidate (_tmp7_, _tmp8_); _g_object_unref0 (text); _g_free0 (name); } } } } static void ibus_emojier_show_code_point_description (IBusEmojier* self, const gchar* text) { IBusEmojierEPaddedLabelBox* widget_code = NULL; gchar* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; IBusEmojierEPaddedLabelBox* _tmp4_; IBusEmojierEPaddedLabelBox* _tmp5_; GtkBox* _tmp6_; IBusEmojierEPaddedLabelBox* _tmp7_; IBusEmojierEPaddedLabelBox* _tmp8_; GHashTable* _tmp9_; gconstpointer _tmp10_; g_return_if_fail (self != NULL); g_return_if_fail (text != NULL); _tmp0_ = ibus_emojier_utf8_code_point (text); _tmp1_ = _tmp0_; _tmp2_ = g_strdup_printf (_ ("Code point: %s"), _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = ibus_emojier_epadded_label_box_new (_tmp3_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp4_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); _g_free0 (_tmp1_); widget_code = _tmp5_; _tmp6_ = self->priv->m_vbox; _tmp7_ = widget_code; gtk_container_add ((GtkContainer*) _tmp6_, (GtkWidget*) _tmp7_); _tmp8_ = widget_code; gtk_widget_show_all ((GtkWidget*) _tmp8_); _tmp9_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp10_ = g_hash_table_lookup (_tmp9_, text); if (((GSList*) _tmp10_) != NULL) { IBusEmojierEPaddedLabelBox* widget_has_variant = NULL; IBusEmojierEPaddedLabelBox* _tmp11_; GtkBox* _tmp12_; IBusEmojierEPaddedLabelBox* _tmp13_; IBusEmojierEPaddedLabelBox* _tmp14_; _tmp11_ = ibus_emojier_epadded_label_box_new (_ ("Has emoji variants"), GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp11_); widget_has_variant = _tmp11_; _tmp12_ = self->priv->m_vbox; _tmp13_ = widget_has_variant; gtk_container_add ((GtkContainer*) _tmp12_, (GtkWidget*) _tmp13_); _tmp14_ = widget_has_variant; gtk_widget_show_all ((GtkWidget*) _tmp14_); _g_object_unref0 (widget_has_variant); } _g_object_unref0 (widget_code); } static gboolean ___lambda13_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; gint _tmp1_; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp1_ = self->priv->m_backward_index; if (_tmp1_ >= 0) { const gchar* _tmp2_; _tmp2_ = self->priv->m_backward; _tmp0_ = _tmp2_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { const gchar* _tmp3_; _tmp3_ = self->priv->m_backward; ibus_emojier_show_emoji_for_category (self, _tmp3_); ibus_emojier_show_candidate_panel (self); } else { ibus_emojier_hide_candidate_panel (self); gtk_widget_show_all ((GtkWidget*) self); } result = TRUE; return result; } static gboolean ____lambda13__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = ___lambda13_ ((IBusEmojier*) self, _sender, event); return result; } static Block2Data* block2_data_ref (Block2Data* _data2_) { g_atomic_int_inc (&_data2_->_ref_count_); return _data2_; } static void block2_data_unref (void * _userdata_) { Block2Data* _data2_; _data2_ = (Block2Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) { IBusEmojier* self; self = _data2_->self; _g_object_unref0 (self); g_slice_free (Block2Data, _data2_); } } static gboolean _____lambda14_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e) { IBusEmojier* self; gboolean result = FALSE; guint _tmp0_; guint _tmp1_; GdkModifierType _tmp2_; self = _data2_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = _data2_->index; _tmp1_ = e->button; _tmp2_ = e->state; g_signal_emit (self, ibus_emojier_signals[IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL], 0, _tmp0_, _tmp1_, (guint) _tmp2_); result = TRUE; return result; } static gboolean ______lambda14__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = _____lambda14_ (self, _sender, event); return result; } static GdkEventMotion* _vala_GdkEventMotion_copy (GdkEventMotion* self) { return g_boxed_copy (gdk_event_get_type (), self); } static gpointer __vala_GdkEventMotion_copy0 (gpointer self) { return self ? _vala_GdkEventMotion_copy (self) : NULL; } static void _vala_GdkEventMotion_free (GdkEventMotion* self) { g_boxed_free (gdk_event_get_type (), self); } static gboolean __lambda16_ (IBusEmojier* self) { gboolean result = FALSE; ibus_emojier_show_candidate_panel (self); result = FALSE; return result; } static gboolean ___lambda16__gsource_func (gpointer self) { gboolean result; result = __lambda16_ ((IBusEmojier*) self); return result; } static gboolean _____lambda15_ (Block2Data* _data2_, GdkEventMotion* e) { IBusEmojier* self; gboolean result = FALSE; gboolean _tmp0_; IBusLookupTable* _tmp1_; guint _tmp2_; GdkEventMotion* pe = NULL; GdkEventMotion* _tmp3_; gboolean _tmp4_ = FALSE; gdouble _tmp5_; GdkEventMotion* _tmp6_; gdouble _tmp7_; GdkEventMotion* _tmp11_; gdouble _tmp12_; GdkEventMotion* _tmp13_; gdouble _tmp14_; IBusLookupTable* _tmp15_; guint _tmp16_; gboolean _tmp17_ = FALSE; guint _tmp18_; self = _data2_->self; g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = self->priv->m_enter_notify_enable; if (!_tmp0_) { result = FALSE; return result; } _tmp1_ = self->priv->m_lookup_table; _tmp2_ = _data2_->index; if (ibus_lookup_table_get_cursor_pos (_tmp1_) == _tmp2_) { result = FALSE; return result; } _tmp3_ = __vala_GdkEventMotion_copy0 (e); pe = _tmp3_; _tmp5_ = ibus_emojier_m_mouse_x; _tmp6_ = pe; _tmp7_ = _tmp6_->x_root; if (_tmp5_ == _tmp7_) { gdouble _tmp8_; GdkEventMotion* _tmp9_; gdouble _tmp10_; _tmp8_ = ibus_emojier_m_mouse_y; _tmp9_ = pe; _tmp10_ = _tmp9_->y_root; _tmp4_ = _tmp8_ == _tmp10_; } else { _tmp4_ = FALSE; } if (_tmp4_) { result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } _tmp11_ = pe; _tmp12_ = _tmp11_->x_root; ibus_emojier_m_mouse_x = _tmp12_; _tmp13_ = pe; _tmp14_ = _tmp13_->y_root; ibus_emojier_m_mouse_y = _tmp14_; _tmp15_ = self->priv->m_lookup_table; _tmp16_ = _data2_->index; ibus_lookup_table_set_cursor_pos (_tmp15_, _tmp16_); _tmp18_ = self->priv->m_entry_notify_show_id; if (_tmp18_ > ((guint) 0)) { GMainContext* _tmp19_; guint _tmp20_; GSource* _tmp21_; _tmp19_ = g_main_context_default (); _tmp20_ = self->priv->m_entry_notify_show_id; _tmp21_ = g_main_context_find_source_by_id (_tmp19_, _tmp20_); _tmp17_ = _tmp21_ != NULL; } else { _tmp17_ = FALSE; } if (_tmp17_) { guint _tmp22_; _tmp22_ = self->priv->m_entry_notify_show_id; g_source_remove (_tmp22_); } self->priv->m_entry_notify_show_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda16__gsource_func, g_object_ref (self), g_object_unref); result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } static gboolean ______lambda15__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self) { gboolean result; result = _____lambda15_ (self, event); return result; } static void _vala_array_add2 (GtkLabel** * array, int* length, int* size, GtkLabel* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (GtkLabel*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void ibus_emojier_show_candidate_panel (IBusEmojier* self) { gboolean _tmp0_; guint page_size = 0U; IBusLookupTable* _tmp1_; guint ncandidates = 0U; IBusLookupTable* _tmp2_; guint cursor = 0U; IBusLookupTable* _tmp3_; guint page_start_pos = 0U; guint _tmp4_; guint _tmp5_; guint _tmp6_; guint page_end_pos = 0U; guint _tmp7_; guint _tmp8_; guint _tmp9_; GtkButton* backward_button = NULL; const gchar* _tmp10_; IBusEmojierEGrid* grid = NULL; IBusEmojierEGrid* _tmp19_; gint n = 0; gboolean _tmp81_; g_return_if_fail (self != NULL); ibus_emojier_remove_all_children (self); ibus_emojier_set_fixed_size (self); _tmp0_ = ibus_emojier_m_emoji_font_changed; if (_tmp0_) { ibus_emojier_set_css_data (self); ibus_emojier_m_emoji_font_changed = FALSE; } _tmp1_ = self->priv->m_lookup_table; page_size = ibus_lookup_table_get_page_size (_tmp1_); _tmp2_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp2_); _tmp3_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp3_); _tmp4_ = cursor; _tmp5_ = page_size; _tmp6_ = page_size; page_start_pos = (_tmp4_ / _tmp5_) * _tmp6_; _tmp7_ = page_start_pos; _tmp8_ = page_size; _tmp9_ = ncandidates; page_end_pos = MIN (_tmp7_ + _tmp8_, _tmp9_); backward_button = NULL; _tmp10_ = self->priv->m_backward; if (_tmp10_ != NULL) { gchar* backward_desc = NULL; const gchar* _tmp11_; gchar* _tmp12_; IBusEmojierEPaddedLabelBox* label = NULL; const gchar* _tmp13_; IBusEmojierEPaddedLabelBox* _tmp14_; GtkButton* _tmp15_; GtkButton* _tmp16_; IBusEmojierEPaddedLabelBox* _tmp17_; GtkButton* _tmp18_; _tmp11_ = self->priv->m_backward; _tmp12_ = g_strdup (_ (_tmp11_)); backward_desc = _tmp12_; _tmp13_ = backward_desc; _tmp14_ = ibus_emojier_epadded_label_box_new (_tmp13_, GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD, NULL); g_object_ref_sink (_tmp14_); label = _tmp14_; _tmp15_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp15_); _g_object_unref0 (backward_button); backward_button = _tmp15_; _tmp16_ = backward_button; _tmp17_ = label; gtk_container_add ((GtkContainer*) _tmp16_, (GtkWidget*) _tmp17_); _tmp18_ = backward_button; g_signal_connect_object ((GtkWidget*) _tmp18_, "button-press-event", (GCallback) ____lambda13__gtk_widget_button_press_event, self, 0); _g_object_unref0 (label); _g_free0 (backward_desc); } _tmp19_ = ibus_emojier_egrid_new (); g_object_ref_sink (_tmp19_); grid = _tmp19_; n = 0; { guint i = 0U; guint _tmp20_; _tmp20_ = page_start_pos; i = _tmp20_; { gboolean _tmp21_ = FALSE; _tmp21_ = TRUE; while (TRUE) { Block2Data* _data2_; guint _tmp23_; guint _tmp24_; gchar* text = NULL; IBusLookupTable* _tmp25_; guint _tmp26_; IBusText* _tmp27_; const gchar* _tmp28_; gchar* _tmp29_; gboolean has_variant = FALSE; GHashTable* _tmp30_; const gchar* _tmp31_; gconstpointer _tmp32_; GtkLabel* label = NULL; guint _tmp33_; guint _tmp34_; const gchar* _tmp49_; GtkLabel* _tmp64_; GtkLabel* _tmp65_; GtkEventBox* candidate_ebox = NULL; GtkEventBox* _tmp66_; GtkEventBox* _tmp67_; GtkEventBox* _tmp68_; GtkLabel* _tmp69_; guint _tmp70_; GtkEventBox* _tmp71_; GtkEventBox* _tmp72_; IBusEmojierEGrid* _tmp73_; GtkEventBox* _tmp74_; gint _tmp75_; gint _tmp76_; gint _tmp77_; GtkLabel** _tmp78_; gint _tmp78__length1; GtkLabel* _tmp79_; GtkLabel* _tmp80_; _data2_ = g_slice_new0 (Block2Data); _data2_->_ref_count_ = 1; _data2_->self = g_object_ref (self); if (!_tmp21_) { guint _tmp22_; _tmp22_ = i; i = _tmp22_ + 1; } _tmp21_ = FALSE; _tmp23_ = i; _tmp24_ = page_end_pos; if (!(_tmp23_ < _tmp24_)) { block2_data_unref (_data2_); _data2_ = NULL; break; } _tmp25_ = self->priv->m_lookup_table; _tmp26_ = i; _tmp27_ = ibus_lookup_table_get_candidate (_tmp25_, _tmp26_); _tmp28_ = _tmp27_->text; _tmp29_ = g_strdup (_tmp28_); text = _tmp29_; _tmp30_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp31_ = text; _tmp32_ = g_hash_table_lookup (_tmp30_, _tmp31_); has_variant = ((GSList*) _tmp32_) != NULL; _tmp33_ = i; _tmp34_ = cursor; if (_tmp33_ == _tmp34_) { const gchar* _tmp35_; IBusEmojierESelectedLabel* _tmp36_; GtkLabel* _tmp37_; _tmp35_ = text; _tmp36_ = ibus_emojier_eselected_label_new (_tmp35_); g_object_ref_sink (_tmp36_); _tmp37_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp36_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp36_) : NULL; if (_tmp37_ == NULL) { _g_object_unref0 (_tmp36_); } _g_object_unref0 (label); label = _tmp37_; } else { gboolean _tmp38_ = FALSE; gboolean _tmp39_ = FALSE; gboolean _tmp40_; _tmp40_ = ibus_emojier_m_show_emoji_variant; if (_tmp40_) { gboolean _tmp41_; _tmp41_ = has_variant; _tmp39_ = _tmp41_; } else { _tmp39_ = FALSE; } if (_tmp39_) { gint _tmp42_; _tmp42_ = self->priv->m_backward_index; _tmp38_ = _tmp42_ < 0; } else { _tmp38_ = FALSE; } if (_tmp38_) { const gchar* _tmp43_; IBusEmojierEGoldLabel* _tmp44_; GtkLabel* _tmp45_; _tmp43_ = text; _tmp44_ = ibus_emojier_egold_label_new (_tmp43_); g_object_ref_sink (_tmp44_); _tmp45_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp44_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp44_) : NULL; if (_tmp45_ == NULL) { _g_object_unref0 (_tmp44_); } _g_object_unref0 (label); label = _tmp45_; } else { const gchar* _tmp46_; IBusEmojierEWhiteLabel* _tmp47_; GtkLabel* _tmp48_; _tmp46_ = text; _tmp47_ = ibus_emojier_ewhite_label_new (_tmp46_); g_object_ref_sink (_tmp47_); _tmp48_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp47_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp47_) : NULL; if (_tmp48_ == NULL) { _g_object_unref0 (_tmp47_); } _g_object_unref0 (label); label = _tmp48_; } } _tmp49_ = text; if (g_utf8_strlen (_tmp49_, (gssize) -1) > 2) { gchar* font_family = NULL; const gchar* _tmp50_; gchar* _tmp51_; gint font_size = 0; gint _tmp52_; gchar* emoji_font = NULL; const gchar* _tmp53_; gint _tmp54_; gchar* _tmp55_; gchar* markup = NULL; const gchar* _tmp56_; const gchar* _tmp57_; gchar* _tmp58_; gchar* _tmp59_; gchar* _tmp60_; gchar* _tmp61_; GtkLabel* _tmp62_; const gchar* _tmp63_; _tmp50_ = ibus_emojier_m_emoji_font_family; _tmp51_ = g_strdup (_tmp50_); font_family = _tmp51_; _tmp52_ = ibus_emojier_m_emoji_font_size; font_size = _tmp52_ - 2; _tmp53_ = font_family; _tmp54_ = font_size; _tmp55_ = g_strdup_printf ("%s %d", _tmp53_, _tmp54_); emoji_font = _tmp55_; _tmp56_ = emoji_font; _tmp57_ = text; _tmp58_ = ibus_emojier_utf8_entity (_tmp57_); _tmp59_ = _tmp58_; _tmp60_ = g_strdup_printf ("%s", _tmp56_, _tmp59_); _tmp61_ = _tmp60_; _g_free0 (_tmp59_); markup = _tmp61_; _tmp62_ = label; _tmp63_ = markup; gtk_label_set_markup (_tmp62_, _tmp63_); _g_free0 (markup); _g_free0 (emoji_font); _g_free0 (font_family); } _tmp64_ = label; gtk_widget_set_halign ((GtkWidget*) _tmp64_, GTK_ALIGN_FILL); _tmp65_ = label; gtk_widget_set_valign ((GtkWidget*) _tmp65_, GTK_ALIGN_FILL); _tmp66_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp66_); candidate_ebox = _tmp66_; _tmp67_ = candidate_ebox; gtk_widget_add_events ((GtkWidget*) _tmp67_, (gint) GDK_POINTER_MOTION_MASK); _tmp68_ = candidate_ebox; _tmp69_ = label; gtk_container_add ((GtkContainer*) _tmp68_, (GtkWidget*) _tmp69_); _tmp70_ = i; _data2_->index = _tmp70_; _tmp71_ = candidate_ebox; g_signal_connect_data ((GtkWidget*) _tmp71_, "button-press-event", (GCallback) ______lambda14__gtk_widget_button_press_event, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); _tmp72_ = candidate_ebox; g_signal_connect_data ((GtkWidget*) _tmp72_, "motion-notify-event", (GCallback) ______lambda15__gtk_widget_motion_notify_event, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); _tmp73_ = grid; _tmp74_ = candidate_ebox; _tmp75_ = n; _tmp76_ = n; gtk_grid_attach ((GtkGrid*) _tmp73_, (GtkWidget*) _tmp74_, _tmp75_ % ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE), _tmp76_ / ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE), 1, 1); _tmp77_ = n; n = _tmp77_ + 1; _tmp78_ = self->priv->m_candidates; _tmp78__length1 = self->priv->m_candidates_length1; _tmp79_ = label; _tmp80_ = _g_object_ref0 (_tmp79_); _vala_array_add2 (&self->priv->m_candidates, &self->priv->m_candidates_length1, &self->priv->_m_candidates_size_, _tmp80_); _g_object_unref0 (candidate_ebox); _g_object_unref0 (label); _g_free0 (text); block2_data_unref (_data2_); _data2_ = NULL; } } } self->priv->m_candidate_panel_is_visible = TRUE; _tmp81_ = self->priv->m_is_up_side_down; if (!_tmp81_) { GtkButton* _tmp82_; gint _tmp86_; gboolean _tmp90_; ibus_emojier_show_arrow_buttons (self); _tmp82_ = backward_button; if (_tmp82_ != NULL) { GtkBox* _tmp83_; GtkButton* _tmp84_; GtkButton* _tmp85_; _tmp83_ = self->priv->m_vbox; _tmp84_ = backward_button; gtk_container_add ((GtkContainer*) _tmp83_, (GtkWidget*) _tmp84_); _tmp85_ = backward_button; gtk_widget_show_all ((GtkWidget*) _tmp85_); } _tmp86_ = n; if (_tmp86_ > 0) { GtkBox* _tmp87_; IBusEmojierEGrid* _tmp88_; IBusEmojierEGrid* _tmp89_; _tmp87_ = self->priv->m_vbox; _tmp88_ = grid; gtk_container_add ((GtkContainer*) _tmp87_, (GtkWidget*) _tmp88_); _tmp89_ = grid; gtk_widget_show_all ((GtkWidget*) _tmp89_); ibus_emojier_show_description (self); } _tmp90_ = ibus_emojier_m_loaded_unicode; if (!_tmp90_) { ibus_emojier_show_unicode_progress_bar (self); } } else { gboolean _tmp91_; gint _tmp92_; GtkButton* _tmp96_; _tmp91_ = ibus_emojier_m_loaded_unicode; if (!_tmp91_) { ibus_emojier_show_unicode_progress_bar (self); } _tmp92_ = n; if (_tmp92_ > 0) { GtkBox* _tmp93_; IBusEmojierEGrid* _tmp94_; IBusEmojierEGrid* _tmp95_; ibus_emojier_show_description (self); _tmp93_ = self->priv->m_vbox; _tmp94_ = grid; gtk_container_add ((GtkContainer*) _tmp93_, (GtkWidget*) _tmp94_); _tmp95_ = grid; gtk_widget_show_all ((GtkWidget*) _tmp95_); } _tmp96_ = backward_button; if (_tmp96_ != NULL) { GtkBox* _tmp97_; GtkButton* _tmp98_; GtkButton* _tmp99_; _tmp97_ = self->priv->m_vbox; _tmp98_ = backward_button; gtk_container_add ((GtkContainer*) _tmp97_, (GtkWidget*) _tmp98_); _tmp99_ = backward_button; gtk_widget_show_all ((GtkWidget*) _tmp99_); } ibus_emojier_show_arrow_buttons (self); } _g_object_unref0 (grid); _g_object_unref0 (backward_button); } static void ibus_emojier_show_description (IBusEmojier* self) { guint cursor = 0U; IBusLookupTable* _tmp0_; gchar* text = NULL; IBusLookupTable* _tmp1_; guint _tmp2_; IBusText* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; IBusEmojiData* data = NULL; GHashTable* _tmp6_; const gchar* _tmp7_; gconstpointer _tmp8_; IBusEmojiData* _tmp9_; const gchar* _tmp12_; IBusEmojierEPaddedLabelBox* widget = NULL; gchar* _tmp20_; gchar* _tmp21_; IBusEmojierEPaddedLabelBox* _tmp22_; IBusEmojierEPaddedLabelBox* _tmp23_; GtkBox* _tmp24_; IBusEmojierEPaddedLabelBox* _tmp25_; IBusEmojierEPaddedLabelBox* _tmp26_; const gchar* _tmp27_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp0_); _tmp1_ = self->priv->m_lookup_table; _tmp2_ = cursor; _tmp3_ = ibus_lookup_table_get_candidate (_tmp1_, _tmp2_); _tmp4_ = _tmp3_->text; _tmp5_ = g_strdup (_tmp4_); text = _tmp5_; _tmp6_ = ibus_emojier_m_emoji_to_data_dict; _tmp7_ = text; _tmp8_ = g_hash_table_lookup (_tmp6_, _tmp7_); data = (IBusEmojiData*) _tmp8_; _tmp9_ = data; if (_tmp9_ != NULL) { IBusEmojiData* _tmp10_; const gchar* _tmp11_; _tmp10_ = data; _tmp11_ = text; ibus_emojier_show_emoji_description (self, _tmp10_, _tmp11_); _g_free0 (text); return; } _tmp12_ = text; if (g_utf8_strlen (_tmp12_, (gssize) -1) <= 1) { gunichar code = 0U; const gchar* _tmp13_; IBusUnicodeData* udata = NULL; GHashTable* _tmp14_; gunichar _tmp15_; gconstpointer _tmp16_; IBusUnicodeData* _tmp17_; _tmp13_ = text; code = string_get_char (_tmp13_, (glong) 0); _tmp14_ = ibus_emojier_m_unicode_to_data_dict; _tmp15_ = code; _tmp16_ = g_hash_table_lookup (_tmp14_, (gpointer) ((gintptr) _tmp15_)); udata = (IBusUnicodeData*) _tmp16_; _tmp17_ = udata; if (_tmp17_ != NULL) { IBusUnicodeData* _tmp18_; const gchar* _tmp19_; _tmp18_ = udata; _tmp19_ = text; ibus_emojier_show_unicode_description (self, _tmp18_, _tmp19_); _g_free0 (text); return; } } _tmp20_ = g_strdup_printf (_ ("Description: %s"), _ ("None")); _tmp21_ = _tmp20_; _tmp22_ = ibus_emojier_epadded_label_box_new (_tmp21_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp22_); _tmp23_ = _tmp22_; _g_free0 (_tmp21_); widget = _tmp23_; _tmp24_ = self->priv->m_vbox; _tmp25_ = widget; gtk_container_add ((GtkContainer*) _tmp24_, (GtkWidget*) _tmp25_); _tmp26_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp26_); _tmp27_ = text; ibus_emojier_show_code_point_description (self, _tmp27_); _g_object_unref0 (widget); _g_free0 (text); } static void ibus_emojier_show_emoji_description (IBusEmojier* self, IBusEmojiData* data, const gchar* text) { const gchar* description = NULL; const gchar* _tmp0_; GSList* annotations = NULL; GSList* _tmp9_; GString* buff = NULL; GString* _tmp10_; gint i = 0; GSList* _tmp11_; GString* _tmp26_; const gchar* _tmp27_; g_return_if_fail (self != NULL); g_return_if_fail (data != NULL); g_return_if_fail (text != NULL); _tmp0_ = ibus_emoji_data_get_description (data); description = _tmp0_; { IBusEmojierEPaddedLabelBox* widget = NULL; const gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; IBusEmojierEPaddedLabelBox* _tmp4_; IBusEmojierEPaddedLabelBox* _tmp5_; GtkBox* _tmp6_; IBusEmojierEPaddedLabelBox* _tmp7_; IBusEmojierEPaddedLabelBox* _tmp8_; _tmp1_ = description; _tmp2_ = g_strdup_printf (_ ("Description: %s"), _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = ibus_emojier_epadded_label_box_new (_tmp3_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp4_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); widget = _tmp5_; _tmp6_ = self->priv->m_vbox; _tmp7_ = widget; gtk_container_add ((GtkContainer*) _tmp6_, (GtkWidget*) _tmp7_); _tmp8_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp8_); _g_object_unref0 (widget); } _tmp9_ = ibus_emoji_data_get_annotations (data); annotations = _tmp9_; _tmp10_ = g_string_new (""); buff = _tmp10_; i = 0; _tmp11_ = annotations; { GSList* annotation_collection = NULL; GSList* annotation_it = NULL; annotation_collection = _tmp11_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { const gchar* annotation = NULL; annotation = (const gchar*) annotation_it->data; { gint _tmp12_; GString* _tmp17_; const gchar* _tmp18_; _tmp12_ = i; i = _tmp12_ + 1; if (_tmp12_ == 0) { GString* _tmp13_; const gchar* _tmp14_; _tmp13_ = buff; _tmp14_ = annotation; g_string_append_printf (_tmp13_, _ ("Annotations: %s"), _tmp14_); } else { GString* _tmp15_; const gchar* _tmp16_; _tmp15_ = buff; _tmp16_ = annotation; g_string_append_printf (_tmp15_, " | %s", _tmp16_); } _tmp17_ = buff; _tmp18_ = _tmp17_->str; if (g_utf8_strlen (_tmp18_, (gssize) -1) > 30) { IBusEmojierEPaddedLabelBox* widget = NULL; GString* _tmp19_; const gchar* _tmp20_; IBusEmojierEPaddedLabelBox* _tmp21_; GtkBox* _tmp22_; IBusEmojierEPaddedLabelBox* _tmp23_; IBusEmojierEPaddedLabelBox* _tmp24_; GString* _tmp25_; _tmp19_ = buff; _tmp20_ = _tmp19_->str; _tmp21_ = ibus_emojier_epadded_label_box_new (_tmp20_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp21_); widget = _tmp21_; _tmp22_ = self->priv->m_vbox; _tmp23_ = widget; gtk_container_add ((GtkContainer*) _tmp22_, (GtkWidget*) _tmp23_); _tmp24_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp24_); _tmp25_ = buff; g_string_erase (_tmp25_, (gssize) 0, (gssize) -1); _g_object_unref0 (widget); } } } } _tmp26_ = buff; _tmp27_ = _tmp26_->str; if (g_strcmp0 (_tmp27_, "") != 0) { IBusEmojierEPaddedLabelBox* widget = NULL; GString* _tmp28_; const gchar* _tmp29_; IBusEmojierEPaddedLabelBox* _tmp30_; GtkBox* _tmp31_; IBusEmojierEPaddedLabelBox* _tmp32_; IBusEmojierEPaddedLabelBox* _tmp33_; _tmp28_ = buff; _tmp29_ = _tmp28_->str; _tmp30_ = ibus_emojier_epadded_label_box_new (_tmp29_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp30_); widget = _tmp30_; _tmp31_ = self->priv->m_vbox; _tmp32_ = widget; gtk_container_add ((GtkContainer*) _tmp31_, (GtkWidget*) _tmp32_); _tmp33_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp33_); _g_object_unref0 (widget); } ibus_emojier_show_code_point_description (self, text); _g_string_free0 (buff); } static void ibus_emojier_show_unicode_description (IBusEmojier* self, IBusUnicodeData* data, const gchar* text) { const gchar* name = NULL; const gchar* _tmp0_; const gchar* alias = NULL; const gchar* _tmp6_; g_return_if_fail (self != NULL); g_return_if_fail (data != NULL); g_return_if_fail (text != NULL); _tmp0_ = ibus_unicode_data_get_name (data); name = _tmp0_; { IBusEmojierEPaddedLabelBox* widget = NULL; gchar* _tmp1_; gchar* _tmp2_; IBusEmojierEPaddedLabelBox* _tmp3_; IBusEmojierEPaddedLabelBox* _tmp4_; GtkBox* _tmp5_; _tmp1_ = g_strdup_printf (_ ("Name: %s"), name); _tmp2_ = _tmp1_; _tmp3_ = ibus_emojier_epadded_label_box_new (_tmp2_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp3_); _tmp4_ = _tmp3_; _g_free0 (_tmp2_); widget = _tmp4_; _tmp5_ = self->priv->m_vbox; gtk_container_add ((GtkContainer*) _tmp5_, (GtkWidget*) widget); gtk_widget_show_all ((GtkWidget*) widget); _g_object_unref0 (widget); } _tmp6_ = ibus_unicode_data_get_alias (data); alias = _tmp6_; { IBusEmojierEPaddedLabelBox* widget = NULL; gchar* _tmp7_; gchar* _tmp8_; IBusEmojierEPaddedLabelBox* _tmp9_; IBusEmojierEPaddedLabelBox* _tmp10_; GtkBox* _tmp11_; _tmp7_ = g_strdup_printf (_ ("Alias: %s"), alias); _tmp8_ = _tmp7_; _tmp9_ = ibus_emojier_epadded_label_box_new (_tmp8_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp9_); _tmp10_ = _tmp9_; _g_free0 (_tmp8_); widget = _tmp10_; _tmp11_ = self->priv->m_vbox; gtk_container_add ((GtkContainer*) _tmp11_, (GtkWidget*) widget); gtk_widget_show_all ((GtkWidget*) widget); _g_object_unref0 (widget); } ibus_emojier_show_code_point_description (self, text); } static void ibus_emojier_hide_candidate_panel (IBusEmojier* self) { gchar* _tmp0_; gboolean _tmp1_; g_return_if_fail (self != NULL); gtk_widget_hide ((GtkWidget*) self); self->priv->m_enter_notify_enable = TRUE; _tmp0_ = g_strdup (""); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp0_; ibus_emojier_remove_all_children (self); _tmp1_ = ibus_emojier_m_show_unicode; if (_tmp1_) { ibus_emojier_update_unicode_blocks (self); } else { ibus_emojier_update_category_list (self); } } static gboolean __lambda27_ (IBusEmojier* self) { gboolean result = FALSE; self->priv->m_enter_notify_enable = TRUE; result = FALSE; return result; } static gboolean ___lambda27__gsource_func (gpointer self) { gboolean result; result = __lambda27_ ((IBusEmojier*) self); return result; } static void ibus_emojier_enter_notify_disable_with_timer (IBusEmojier* self) { guint _tmp0_; g_return_if_fail (self != NULL); self->priv->m_enter_notify_enable = FALSE; _tmp0_ = self->priv->m_entry_notify_disable_id; if (_tmp0_ > ((guint) 0)) { guint _tmp1_; _tmp1_ = self->priv->m_entry_notify_disable_id; g_source_remove (_tmp1_); } self->priv->m_entry_notify_show_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda27__gsource_func, g_object_ref (self), g_object_unref); } static void ibus_emojier_candidate_panel_select_index (IBusEmojier* self, guint index, guint button) { gchar* text = NULL; IBusLookupTable* _tmp4_; IBusText* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_; GSList* emojis = NULL; GHashTable* _tmp8_; const gchar* _tmp9_; gconstpointer _tmp10_; gboolean _tmp11_ = FALSE; gboolean _tmp12_ = FALSE; gboolean _tmp13_; g_return_if_fail (self != NULL); if (button == IBUS_EMOJIER_BUTTON_CLOSE_BUTTON) { gboolean _tmp0_ = FALSE; gboolean _tmp1_; gchar* _tmp3_; gtk_widget_hide ((GtkWidget*) self); _tmp1_ = self->priv->m_candidate_panel_mode; if (_tmp1_) { IBusLookupTable* _tmp2_; _tmp2_ = self->priv->m_lookup_table; _tmp0_ = ibus_lookup_table_get_number_of_candidates (_tmp2_) > ((guint) 0); } else { _tmp0_ = FALSE; } if (_tmp0_) { ibus_emojier_remove_all_children (self); } _tmp3_ = g_strdup (""); _g_free0 (self->priv->m_result); self->priv->m_result = _tmp3_; return; } _tmp4_ = self->priv->m_lookup_table; _tmp5_ = ibus_lookup_table_get_candidate (_tmp4_, index); _tmp6_ = _tmp5_->text; _tmp7_ = g_strdup (_tmp6_); text = _tmp7_; _tmp8_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp9_ = text; _tmp10_ = g_hash_table_lookup (_tmp8_, _tmp9_); emojis = (GSList*) _tmp10_; _tmp13_ = ibus_emojier_m_show_emoji_variant; if (_tmp13_) { GSList* _tmp14_; _tmp14_ = emojis; _tmp12_ = _tmp14_ != NULL; } else { _tmp12_ = FALSE; } if (_tmp12_) { gint _tmp15_; _tmp15_ = self->priv->m_backward_index; _tmp11_ = _tmp15_ < 0; } else { _tmp11_ = FALSE; } if (_tmp11_) { GSList* _tmp16_; _tmp16_ = emojis; ibus_emojier_show_emoji_variants (self, _tmp16_); gtk_widget_show_all ((GtkWidget*) self); } else { const gchar* _tmp17_; gchar* _tmp18_; _tmp17_ = text; _tmp18_ = g_strdup (_tmp17_); _g_free0 (self->priv->m_result); self->priv->m_result = _tmp18_; gtk_widget_hide ((GtkWidget*) self); } _g_free0 (text); } static void ibus_emojier_candidate_panel_cursor_down (IBusEmojier* self) { guint ncandidates = 0U; IBusLookupTable* _tmp0_; guint cursor = 0U; IBusLookupTable* _tmp1_; guint _tmp2_; guint _tmp3_; g_return_if_fail (self != NULL); ibus_emojier_enter_notify_disable_with_timer (self); _tmp0_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp0_); _tmp1_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp1_); _tmp2_ = cursor; _tmp3_ = ncandidates; if ((_tmp2_ + IBUS_EMOJIER_EMOJI_GRID_PAGE) < _tmp3_) { IBusLookupTable* _tmp4_; guint _tmp5_; _tmp4_ = self->priv->m_lookup_table; _tmp5_ = cursor; ibus_lookup_table_set_cursor_pos (_tmp4_, _tmp5_ + IBUS_EMOJIER_EMOJI_GRID_PAGE); } else { guint _tmp6_; guint _tmp7_; _tmp6_ = cursor; _tmp7_ = ncandidates; if ((_tmp6_ % IBUS_EMOJIER_EMOJI_GRID_PAGE) < _tmp7_) { IBusLookupTable* _tmp8_; guint _tmp9_; _tmp8_ = self->priv->m_lookup_table; _tmp9_ = cursor; ibus_lookup_table_set_cursor_pos (_tmp8_, _tmp9_ % IBUS_EMOJIER_EMOJI_GRID_PAGE); } else { IBusLookupTable* _tmp10_; _tmp10_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp10_, (guint) 0); } } } static void ibus_emojier_candidate_panel_cursor_up (IBusEmojier* self) { gint ncandidates = 0; IBusLookupTable* _tmp0_; gint cursor = 0; IBusLookupTable* _tmp1_; gint highest_pos = 0; gint _tmp2_; gint _tmp3_; gint _tmp4_; g_return_if_fail (self != NULL); ibus_emojier_enter_notify_disable_with_timer (self); _tmp0_ = self->priv->m_lookup_table; ncandidates = (gint) ibus_lookup_table_get_number_of_candidates (_tmp0_); _tmp1_ = self->priv->m_lookup_table; cursor = (gint) ibus_lookup_table_get_cursor_pos (_tmp1_); _tmp2_ = ncandidates; _tmp3_ = cursor; highest_pos = (((_tmp2_ - 1) / ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)) * ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)) + (_tmp3_ % ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)); _tmp4_ = cursor; if ((_tmp4_ - ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)) >= 0) { IBusLookupTable* _tmp5_; gint _tmp6_; _tmp5_ = self->priv->m_lookup_table; _tmp6_ = cursor; ibus_lookup_table_set_cursor_pos (_tmp5_, (guint) (_tmp6_ - ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE))); } else { gint _tmp7_; gint _tmp8_; _tmp7_ = highest_pos; _tmp8_ = ncandidates; if (_tmp7_ < _tmp8_) { IBusLookupTable* _tmp9_; gint _tmp10_; _tmp9_ = self->priv->m_lookup_table; _tmp10_ = highest_pos; ibus_lookup_table_set_cursor_pos (_tmp9_, (guint) _tmp10_); } else { IBusLookupTable* _tmp11_; _tmp11_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp11_, (guint) 0); } } } static gint ibus_emojier_get_page_num (IBusEmojier* self) { gint result = 0; gint _tmp0_; GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp1_; gint _tmp2_; GtkListBoxRow* _tmp3_; GtkListBoxRow* _tmp4_; GtkAllocation alloc = {0}; GtkAllocation _tmp5_ = {0}; GtkListBoxRow* _tmp6_; GtkAllocation _tmp7_ = {0}; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp8_; GtkAdjustment* _tmp9_; GtkAdjustment* _tmp10_; gint page_size = 0; GtkAdjustment* _tmp11_; gint page_num = 0; gint _tmp12_; GtkAllocation _tmp13_; gint _tmp14_; gint _tmp15_ = 0; gint _tmp16_; GtkAllocation _tmp17_; gint _tmp18_; gint _tmp19_; g_return_val_if_fail (self != NULL, 0); _tmp0_ = self->priv->m_category_active_index; if (_tmp0_ < 0) { self->priv->m_category_active_index = 0; } _tmp1_ = self->priv->m_list_box; _tmp2_ = self->priv->m_category_active_index; _tmp3_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp1_, _tmp2_); _tmp4_ = _g_object_ref0 (_tmp3_); row = _tmp4_; _tmp5_.x = 0; _tmp5_.y = 0; _tmp5_.width = 0; _tmp5_.height = 0; alloc = _tmp5_; _tmp6_ = row; gtk_widget_get_allocation ((GtkWidget*) _tmp6_, &_tmp7_); alloc = _tmp7_; _tmp8_ = self->priv->m_scrolled_window; _tmp9_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp8_); _tmp10_ = _g_object_ref0 (_tmp9_); adjustment = _tmp10_; _tmp11_ = adjustment; page_size = (gint) gtk_adjustment_get_page_size (_tmp11_); _tmp12_ = page_size; _tmp13_ = alloc; _tmp14_ = _tmp13_.height; page_num = _tmp12_ / _tmp14_; _tmp16_ = page_size; _tmp17_ = alloc; _tmp18_ = _tmp17_.height; if ((_tmp16_ % _tmp18_) > 0) { _tmp15_ = 1; } else { _tmp15_ = 0; } _tmp19_ = page_num; page_num = _tmp19_ + _tmp15_; result = page_num; _g_object_unref0 (adjustment); _g_object_unref0 (row); return result; } static gboolean ibus_emojier_category_list_cursor_move (IBusEmojier* self, guint keyval) { gboolean result = FALSE; IBusEmojierEListBox* _tmp0_; GList* list = NULL; IBusEmojierEListBox* _tmp1_; GList* _tmp2_; gint length = 0; GList* _tmp3_; gint _tmp4_; GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp26_; GtkListBoxRow* _tmp27_; GtkListBoxRow* _tmp28_; GtkListBoxRow* _tmp29_; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_list_box; g_return_val_if_fail (_tmp0_ != NULL, FALSE); _tmp1_ = self->priv->m_list_box; _tmp2_ = gtk_container_get_children ((GtkContainer*) _tmp1_); list = _tmp2_; _tmp3_ = list; length = (gint) g_list_length (_tmp3_); _tmp4_ = length; if (_tmp4_ == 0) { result = FALSE; (list == NULL) ? NULL : (list = (g_list_free (list), NULL)); return result; } switch (keyval) { case GDK_KEY_Down: { gint _tmp5_; gint _tmp6_; gint _tmp7_; _tmp5_ = self->priv->m_category_active_index; self->priv->m_category_active_index = _tmp5_ + 1; _tmp6_ = self->priv->m_category_active_index; _tmp7_ = length; if (_tmp6_ == _tmp7_) { self->priv->m_category_active_index = 0; } break; } case GDK_KEY_Up: { gint _tmp8_; gint _tmp9_; _tmp8_ = self->priv->m_category_active_index; self->priv->m_category_active_index = _tmp8_ - 1; _tmp9_ = self->priv->m_category_active_index; if (_tmp9_ < 0) { gint _tmp10_; _tmp10_ = length; self->priv->m_category_active_index = _tmp10_ - 1; } break; } case GDK_KEY_Home: { self->priv->m_category_active_index = 0; break; } case GDK_KEY_End: { gint _tmp11_; _tmp11_ = length; self->priv->m_category_active_index = _tmp11_ - 1; break; } case GDK_KEY_Page_Down: { gint page_num = 0; gint _tmp12_; gint _tmp13_; page_num = ibus_emojier_get_page_num (self); _tmp12_ = self->priv->m_category_active_index; _tmp13_ = length; if ((_tmp12_ + 1) == _tmp13_) { self->priv->m_category_active_index = 0; } else { gint _tmp14_; gint _tmp15_; gint _tmp16_; _tmp14_ = self->priv->m_category_active_index; _tmp15_ = page_num; _tmp16_ = length; if ((_tmp14_ + _tmp15_) >= _tmp16_) { gint _tmp17_; _tmp17_ = length; self->priv->m_category_active_index = _tmp17_ - 1; } else { gint _tmp18_; gint _tmp19_; _tmp18_ = self->priv->m_category_active_index; _tmp19_ = page_num; self->priv->m_category_active_index = _tmp18_ + _tmp19_; } } break; } case GDK_KEY_Page_Up: { gint page_num = 0; gint _tmp20_; page_num = ibus_emojier_get_page_num (self); _tmp20_ = self->priv->m_category_active_index; if (_tmp20_ == 0) { gint _tmp21_; _tmp21_ = length; self->priv->m_category_active_index = _tmp21_ - 1; } else { gint _tmp22_; gint _tmp23_; _tmp22_ = self->priv->m_category_active_index; _tmp23_ = page_num; if ((_tmp22_ - _tmp23_) < 0) { self->priv->m_category_active_index = 0; } else { gint _tmp24_; gint _tmp25_; _tmp24_ = self->priv->m_category_active_index; _tmp25_ = page_num; self->priv->m_category_active_index = _tmp24_ - _tmp25_; } } break; } default: break; } _tmp26_ = self->priv->m_list_box; _tmp27_ = gtk_list_box_get_selected_row ((GtkListBox*) _tmp26_); _tmp28_ = _g_object_ref0 (_tmp27_); row = _tmp28_; _tmp29_ = row; if (_tmp29_ != NULL) { IBusEmojierEListBox* _tmp30_; GtkListBoxRow* _tmp31_; _tmp30_ = self->priv->m_list_box; _tmp31_ = row; gtk_list_box_unselect_row ((GtkListBox*) _tmp30_, _tmp31_); } ibus_emojier_clamp_page (self); result = TRUE; _g_object_unref0 (row); (list == NULL) ? NULL : (list = (g_list_free (list), NULL)); return result; } gboolean ibus_emojier_has_variants (IBusEmojier* self, guint index) { gboolean result = FALSE; IBusLookupTable* _tmp0_; gchar* text = NULL; IBusLookupTable* _tmp1_; IBusText* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; GSList* emojis = NULL; GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_; gboolean _tmp8_ = FALSE; gboolean _tmp9_ = FALSE; gboolean _tmp10_; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_lookup_table; if (index >= ibus_lookup_table_get_number_of_candidates (_tmp0_)) { result = FALSE; return result; } _tmp1_ = self->priv->m_lookup_table; _tmp2_ = ibus_lookup_table_get_candidate (_tmp1_, index); _tmp3_ = _tmp2_->text; _tmp4_ = g_strdup (_tmp3_); text = _tmp4_; _tmp5_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp6_ = text; _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); emojis = (GSList*) _tmp7_; _tmp10_ = ibus_emojier_m_show_emoji_variant; if (_tmp10_) { GSList* _tmp11_; _tmp11_ = emojis; _tmp9_ = _tmp11_ != NULL; } else { _tmp9_ = FALSE; } if (_tmp9_) { gint _tmp12_; _tmp12_ = self->priv->m_backward_index; _tmp8_ = _tmp12_ < 0; } else { _tmp8_ = FALSE; } if (_tmp8_) { GSList* _tmp13_; _tmp13_ = emojis; ibus_emojier_show_emoji_variants (self, _tmp13_); result = TRUE; _g_free0 (text); return result; } result = FALSE; _g_free0 (text); return result; } gboolean ibus_emojier_key_press_cursor_horizontal (IBusEmojier* self, guint keyval, guint modifiers) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp2_; g_return_val_if_fail (self != NULL, FALSE); if (keyval == ((guint) GDK_KEY_Left)) { _tmp0_ = TRUE; } else { _tmp0_ = keyval == ((guint) GDK_KEY_Right); } _vala_assert (_tmp0_, "keyval == Gdk.Key.Left || keyval == Gdk.Key.Right"); _tmp2_ = self->priv->m_candidate_panel_mode; if (_tmp2_) { IBusLookupTable* _tmp3_; _tmp3_ = self->priv->m_lookup_table; _tmp1_ = ibus_lookup_table_get_number_of_candidates (_tmp3_) > ((guint) 0); } else { _tmp1_ = FALSE; } if (_tmp1_) { ibus_emojier_enter_notify_disable_with_timer (self); if (keyval == ((guint) GDK_KEY_Left)) { IBusLookupTable* _tmp4_; _tmp4_ = self->priv->m_lookup_table; ibus_lookup_table_cursor_up (_tmp4_); } else { if (keyval == ((guint) GDK_KEY_Right)) { IBusLookupTable* _tmp5_; _tmp5_ = self->priv->m_lookup_table; ibus_lookup_table_cursor_down (_tmp5_); } } } else { IBusEmojierEEntry* _tmp6_; const gchar* _tmp7_; gint _tmp8_; gint _tmp9_; _tmp6_ = self->priv->m_entry; _tmp7_ = gtk_entry_get_text ((GtkEntry*) _tmp6_); _tmp8_ = strlen (_tmp7_); _tmp9_ = _tmp8_; if (_tmp9_ > 0) { gint step = 0; gboolean _tmp10_ = FALSE; IBusEmojierEEntry* _tmp11_; gint _tmp12_; step = 0; if (keyval == ((guint) GDK_KEY_Left)) { step = -1; } else { if (keyval == ((guint) GDK_KEY_Right)) { step = 1; } } if ((modifiers & GDK_SHIFT_MASK) != ((guint) 0)) { _tmp10_ = TRUE; } else { _tmp10_ = FALSE; } _tmp11_ = self->priv->m_entry; _tmp12_ = step; g_signal_emit_by_name (_tmp11_, "move-cursor", GTK_MOVEMENT_VISUAL_POSITIONS, _tmp12_, _tmp10_, NULL); } else { if (keyval == ((guint) GDK_KEY_Left)) { keyval = (guint) GDK_KEY_Up; } else { if (keyval == ((guint) GDK_KEY_Right)) { keyval = (guint) GDK_KEY_Down; } } result = ibus_emojier_category_list_cursor_move (self, keyval); return result; } } result = TRUE; return result; } gboolean ibus_emojier_key_press_cursor_vertical (IBusEmojier* self, guint keyval, guint modifiers) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; gboolean _tmp4_ = FALSE; gboolean _tmp5_; g_return_val_if_fail (self != NULL, FALSE); if (keyval == ((guint) GDK_KEY_Down)) { _tmp2_ = TRUE; } else { _tmp2_ = keyval == ((guint) GDK_KEY_Up); } if (_tmp2_) { _tmp1_ = TRUE; } else { _tmp1_ = keyval == ((guint) GDK_KEY_Page_Down); } if (_tmp1_) { _tmp0_ = TRUE; } else { _tmp0_ = keyval == ((guint) GDK_KEY_Page_Up); } _vala_assert (_tmp0_, "keyval == Gdk.Key.Down || keyval == Gdk.Key.Up || keyval == Gdk.Key.Page_Down || keyval == Gdk.Key.Page_Up"); if ((modifiers & GDK_SHIFT_MASK) != ((guint) 0)) { if (keyval == ((guint) GDK_KEY_Down)) { keyval = (guint) GDK_KEY_Page_Down; } else { if (keyval == ((guint) GDK_KEY_Up)) { keyval = (guint) GDK_KEY_Page_Up; } } } _tmp5_ = self->priv->m_candidate_panel_is_visible; if (_tmp5_) { _tmp4_ = TRUE; } else { const gchar* _tmp6_; gint _tmp7_; gint _tmp8_; _tmp6_ = self->priv->m_annotation; _tmp7_ = strlen (_tmp6_); _tmp8_ = _tmp7_; _tmp4_ = _tmp8_ > 0; } if (_tmp4_) { IBusLookupTable* _tmp9_; _tmp9_ = self->priv->m_lookup_table; _tmp3_ = ibus_lookup_table_get_number_of_candidates (_tmp9_) > ((guint) 0); } else { _tmp3_ = FALSE; } if (_tmp3_) { switch (keyval) { case GDK_KEY_Down: { ibus_emojier_candidate_panel_cursor_down (self); break; } case GDK_KEY_Up: { ibus_emojier_candidate_panel_cursor_up (self); break; } case GDK_KEY_Page_Down: { IBusLookupTable* _tmp10_; ibus_emojier_enter_notify_disable_with_timer (self); _tmp10_ = self->priv->m_lookup_table; ibus_lookup_table_page_down (_tmp10_); break; } case GDK_KEY_Page_Up: { IBusLookupTable* _tmp11_; ibus_emojier_enter_notify_disable_with_timer (self); _tmp11_ = self->priv->m_lookup_table; ibus_lookup_table_page_up (_tmp11_); break; } default: break; } } else { result = ibus_emojier_category_list_cursor_move (self, keyval); return result; } result = TRUE; return result; } gboolean ibus_emojier_key_press_cursor_home_end (IBusEmojier* self, guint keyval, guint modifiers) { gboolean result = FALSE; gboolean _tmp0_ = FALSE; guint ncandidates = 0U; IBusLookupTable* _tmp1_; gboolean _tmp2_ = FALSE; gboolean _tmp3_; IBusEmojierEEntry* _tmp8_; const gchar* _tmp9_; gint _tmp10_; gint _tmp11_; g_return_val_if_fail (self != NULL, FALSE); if (keyval == ((guint) GDK_KEY_Home)) { _tmp0_ = TRUE; } else { _tmp0_ = keyval == ((guint) GDK_KEY_End); } _vala_assert (_tmp0_, "keyval == Gdk.Key.Home || keyval == Gdk.Key.End"); _tmp1_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp1_); _tmp3_ = self->priv->m_candidate_panel_mode; if (_tmp3_) { guint _tmp4_; _tmp4_ = ncandidates; _tmp2_ = _tmp4_ > ((guint) 0); } else { _tmp2_ = FALSE; } if (_tmp2_) { ibus_emojier_enter_notify_disable_with_timer (self); if (keyval == ((guint) GDK_KEY_Home)) { IBusLookupTable* _tmp5_; _tmp5_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp5_, (guint) 0); } else { if (keyval == ((guint) GDK_KEY_End)) { IBusLookupTable* _tmp6_; guint _tmp7_; _tmp6_ = self->priv->m_lookup_table; _tmp7_ = ncandidates; ibus_lookup_table_set_cursor_pos (_tmp6_, _tmp7_ - 1); } } result = TRUE; return result; } _tmp8_ = self->priv->m_entry; _tmp9_ = gtk_entry_get_text ((GtkEntry*) _tmp8_); _tmp10_ = strlen (_tmp9_); _tmp11_ = _tmp10_; if (_tmp11_ > 0) { gint step = 0; gboolean _tmp12_ = FALSE; IBusEmojierEEntry* _tmp13_; gint _tmp14_; step = 0; if (keyval == ((guint) GDK_KEY_Home)) { step = -1; } else { if (keyval == ((guint) GDK_KEY_End)) { step = 1; } } if ((modifiers & GDK_SHIFT_MASK) != ((guint) 0)) { _tmp12_ = TRUE; } else { _tmp12_ = FALSE; } _tmp13_ = self->priv->m_entry; _tmp14_ = step; g_signal_emit_by_name (_tmp13_, "move-cursor", GTK_MOVEMENT_DISPLAY_LINE_ENDS, _tmp14_, _tmp12_, NULL); result = TRUE; return result; } result = ibus_emojier_category_list_cursor_move (self, keyval); return result; } gboolean ibus_emojier_key_press_escape (IBusEmojier* self) { gboolean result = FALSE; gboolean _tmp0_; gboolean _tmp9_ = FALSE; gboolean _tmp10_; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = ibus_emojier_m_show_unicode; if (_tmp0_) { gboolean _tmp1_; _tmp1_ = self->priv->m_candidate_panel_is_visible; if (!_tmp1_) { ibus_emojier_m_show_unicode = FALSE; self->priv->m_category_active_index = -1; } ibus_emojier_hide_candidate_panel (self); result = TRUE; return result; } else { gboolean _tmp2_ = FALSE; gint _tmp3_; _tmp3_ = self->priv->m_backward_index; if (_tmp3_ >= 0) { const gchar* _tmp4_; _tmp4_ = self->priv->m_backward; _tmp2_ = _tmp4_ != NULL; } else { _tmp2_ = FALSE; } if (_tmp2_) { const gchar* _tmp5_; _tmp5_ = self->priv->m_backward; ibus_emojier_show_emoji_for_category (self, _tmp5_); result = TRUE; return result; } else { gboolean _tmp6_ = FALSE; gboolean _tmp7_; _tmp7_ = self->priv->m_candidate_panel_is_visible; if (_tmp7_) { const gchar* _tmp8_; _tmp8_ = self->priv->m_backward; _tmp6_ = _tmp8_ != NULL; } else { _tmp6_ = FALSE; } if (_tmp6_) { ibus_emojier_hide_candidate_panel (self); result = TRUE; return result; } } } gtk_widget_hide ((GtkWidget*) self); _tmp10_ = self->priv->m_candidate_panel_mode; if (_tmp10_) { IBusLookupTable* _tmp11_; _tmp11_ = self->priv->m_lookup_table; _tmp9_ = ibus_lookup_table_get_number_of_candidates (_tmp11_) > ((guint) 0); } else { _tmp9_ = FALSE; } if (_tmp9_) { ibus_emojier_remove_all_children (self); } result = FALSE; return result; } gboolean ibus_emojier_key_press_enter (IBusEmojier* self) { gboolean result = FALSE; gboolean _tmp0_; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_candidate_panel_is_visible; if (_tmp0_) { guint index = 0U; IBusLookupTable* _tmp1_; guint _tmp2_; _tmp1_ = self->priv->m_lookup_table; index = ibus_lookup_table_get_cursor_pos (_tmp1_); _tmp2_ = index; result = ibus_emojier_has_variants (self, _tmp2_); return result; } else { gint _tmp3_; _tmp3_ = self->priv->m_category_active_index; if (_tmp3_ >= 0) { GtkListBoxRow* gtkrow = NULL; IBusEmojierEListBox* _tmp4_; GtkListBoxRow* _tmp5_; GtkListBoxRow* _tmp6_; IBusEmojierEBoxRow* row = NULL; GtkListBoxRow* _tmp7_; IBusEmojierEBoxRow* _tmp8_; gboolean _tmp9_; _tmp4_ = self->priv->m_list_box; _tmp5_ = gtk_list_box_get_selected_row ((GtkListBox*) _tmp4_); _tmp6_ = _g_object_ref0 (_tmp5_); gtkrow = _tmp6_; _tmp7_ = gtkrow; _tmp8_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, IBUS_EMOJIER_TYPE_EBOX_ROW) ? ((IBusEmojierEBoxRow*) _tmp7_) : NULL); row = _tmp8_; _tmp9_ = ibus_emojier_m_show_unicode; if (_tmp9_) { IBusEmojierEBoxRow* _tmp10_; const gchar* _tmp11_; const gchar* _tmp12_; _tmp10_ = row; _tmp11_ = ibus_emojier_ebox_row_get_text (_tmp10_); _tmp12_ = _tmp11_; ibus_emojier_show_unicode_for_block (self, _tmp12_); } else { IBusEmojierEBoxRow* _tmp13_; const gchar* _tmp14_; const gchar* _tmp15_; _tmp13_ = row; _tmp14_ = ibus_emojier_ebox_row_get_text (_tmp13_); _tmp15_ = _tmp14_; ibus_emojier_show_emoji_for_category (self, _tmp15_); } _g_object_unref0 (row); _g_object_unref0 (gtkrow); } } result = TRUE; return result; } static void ibus_emojier_entry_enter_keyval (IBusEmojier* self, guint keyval) { gunichar ch = 0U; gunichar _tmp0_; gchar* str = NULL; gunichar _tmp1_; gchar* _tmp2_; IBusEmojierEEntry* _tmp3_; gboolean _tmp4_; gint pos = 0; IBusEmojierEEntry* _tmp14_; IBusEmojierEEntry* _tmp15_; const gchar* _tmp16_; IBusEmojierEEntry* _tmp17_; gint _tmp18_; g_return_if_fail (self != NULL); ch = ibus_keyval_to_unicode (keyval); _tmp0_ = ch; if (g_unichar_iscntrl (_tmp0_)) { return; } _tmp1_ = ch; _tmp2_ = g_unichar_to_string (_tmp1_); str = _tmp2_; _tmp3_ = self->priv->m_entry; _tmp4_ = gtk_editable_get_selection_bounds ((GtkEditable*) _tmp3_, NULL, NULL); if (_tmp4_) { IBusEmojierEEntry* _tmp5_; _tmp5_ = self->priv->m_entry; gtk_editable_delete_selection ((GtkEditable*) _tmp5_); } else { IBusEmojierEEntry* _tmp6_; _tmp6_ = self->priv->m_entry; if (gtk_entry_get_overwrite_mode ((GtkEntry*) _tmp6_)) { guint text_length = 0U; IBusEmojierEEntry* _tmp7_; GtkEntryBuffer* _tmp8_; IBusEmojierEEntry* _tmp9_; gint _tmp10_; gint _tmp11_; guint _tmp12_; _tmp7_ = self->priv->m_entry; _tmp8_ = gtk_entry_get_buffer ((GtkEntry*) _tmp7_); text_length = gtk_entry_buffer_get_length (_tmp8_); _tmp9_ = self->priv->m_entry; g_object_get ((GtkEntry*) _tmp9_, "cursor-position", &_tmp10_, NULL); _tmp11_ = _tmp10_; _tmp12_ = text_length; if (((guint) _tmp11_) < _tmp12_) { IBusEmojierEEntry* _tmp13_; _tmp13_ = self->priv->m_entry; g_signal_emit_by_name ((GtkEntry*) _tmp13_, "delete-from-cursor", GTK_DELETE_CHARS, 1); } } } _tmp14_ = self->priv->m_entry; pos = gtk_editable_get_position ((GtkEditable*) _tmp14_); _tmp15_ = self->priv->m_entry; _tmp16_ = str; g_signal_emit_by_name ((GtkEditable*) _tmp15_, "insert-text", _tmp16_, -1, &pos); _tmp17_ = self->priv->m_entry; _tmp18_ = pos; gtk_editable_set_position ((GtkEditable*) _tmp17_, _tmp18_); _g_free0 (str); } static void ibus_emojier_get_monitor_geometry (IBusEmojier* self, GdkRectangle* result) { GdkRectangle monitor_area = {0}; GdkRectangle _tmp0_ = {0}; GdkMonitor* monitor = NULL; GdkDisplay* _tmp1_; GdkRectangle _tmp2_; gint _tmp3_; GdkRectangle _tmp4_; gint _tmp5_; GdkMonitor* _tmp6_; GdkMonitor* _tmp7_; GdkRectangle _tmp8_ = {0}; g_return_if_fail (self != NULL); _tmp0_.x = 0; monitor_area = _tmp0_; _tmp1_ = gdk_display_get_default (); _tmp2_ = self->priv->m_cursor_location; _tmp3_ = _tmp2_.x; _tmp4_ = self->priv->m_cursor_location; _tmp5_ = _tmp4_.y; _tmp6_ = gdk_display_get_monitor_at_point (_tmp1_, _tmp3_, _tmp5_); _tmp7_ = _g_object_ref0 (_tmp6_); monitor = _tmp7_; gdk_monitor_get_geometry (monitor, &_tmp8_); monitor_area = _tmp8_; *result = monitor_area; _g_object_unref0 (monitor); return; } static gboolean ___lambda12_ (IBusEmojier* self) { gboolean result = FALSE; self->priv->m_redraw_window_id = (guint) 0; gtk_widget_show_all ((GtkWidget*) self); result = FALSE; return result; } static gboolean ____lambda12__gsource_func (gpointer self) { gboolean result; result = ___lambda12_ ((IBusEmojier*) self); return result; } static void ibus_emojier_adjust_window_position (IBusEmojier* self) { GdkPoint cursor_right_bottom = {0}; GdkRectangle _tmp0_; gint _tmp1_; GdkRectangle _tmp2_; gint _tmp3_; GdkRectangle _tmp4_; gint _tmp5_; GdkRectangle _tmp6_; gint _tmp7_; GdkPoint _tmp8_ = {0}; GtkAllocation allocation = {0}; GtkAllocation _tmp9_ = {0}; GdkPoint window_right_bottom = {0}; GdkPoint _tmp10_; gint _tmp11_; GtkAllocation _tmp12_; gint _tmp13_; GdkPoint _tmp14_; gint _tmp15_; GtkAllocation _tmp16_; gint _tmp17_; GdkPoint _tmp18_ = {0}; GdkRectangle monitor_area = {0}; GdkRectangle _tmp19_ = {0}; gint monitor_right = 0; GdkRectangle _tmp20_; gint _tmp21_; GdkRectangle _tmp22_; gint _tmp23_; gint monitor_bottom = 0; GdkRectangle _tmp24_; gint _tmp25_; GdkRectangle _tmp26_; gint _tmp27_; gint x = 0; gint y = 0; GdkPoint _tmp28_; gint _tmp29_; gint _tmp30_; gint _tmp36_; gboolean changed = FALSE; GdkPoint _tmp37_; gint _tmp38_; gint _tmp39_; gint _tmp50_; gint _tmp51_; gint _tmp52_; gboolean _tmp53_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_cursor_location; _tmp1_ = _tmp0_.x; _tmp2_ = self->priv->m_cursor_location; _tmp3_ = _tmp2_.width; _tmp4_ = self->priv->m_cursor_location; _tmp5_ = _tmp4_.y; _tmp6_ = self->priv->m_cursor_location; _tmp7_ = _tmp6_.height; _tmp8_.x = _tmp1_ + _tmp3_; _tmp8_.y = _tmp5_ + _tmp7_; cursor_right_bottom = _tmp8_; gtk_widget_get_allocation ((GtkWidget*) self, &_tmp9_); allocation = _tmp9_; _tmp10_ = cursor_right_bottom; _tmp11_ = _tmp10_.x; _tmp12_ = allocation; _tmp13_ = _tmp12_.width; _tmp14_ = cursor_right_bottom; _tmp15_ = _tmp14_.y; _tmp16_ = allocation; _tmp17_ = _tmp16_.height; _tmp18_.x = _tmp11_ + _tmp13_; _tmp18_.y = _tmp15_ + _tmp17_; window_right_bottom = _tmp18_; ibus_emojier_get_monitor_geometry (self, &_tmp19_); monitor_area = _tmp19_; _tmp20_ = monitor_area; _tmp21_ = _tmp20_.x; _tmp22_ = monitor_area; _tmp23_ = _tmp22_.width; monitor_right = _tmp21_ + _tmp23_; _tmp24_ = monitor_area; _tmp25_ = _tmp24_.y; _tmp26_ = monitor_area; _tmp27_ = _tmp26_.height; monitor_bottom = _tmp25_ + _tmp27_; _tmp28_ = window_right_bottom; _tmp29_ = _tmp28_.x; _tmp30_ = monitor_right; if (_tmp29_ > _tmp30_) { gint _tmp31_; GtkAllocation _tmp32_; gint _tmp33_; _tmp31_ = monitor_right; _tmp32_ = allocation; _tmp33_ = _tmp32_.width; x = _tmp31_ - _tmp33_; } else { GdkPoint _tmp34_; gint _tmp35_; _tmp34_ = cursor_right_bottom; _tmp35_ = _tmp34_.x; x = _tmp35_; } _tmp36_ = x; if (_tmp36_ < 0) { x = 0; } changed = FALSE; _tmp37_ = window_right_bottom; _tmp38_ = _tmp37_.y; _tmp39_ = monitor_bottom; if (_tmp38_ > _tmp39_) { GdkRectangle _tmp40_; gint _tmp41_; GtkAllocation _tmp42_; gint _tmp43_; const gchar* _tmp44_; _tmp40_ = self->priv->m_cursor_location; _tmp41_ = _tmp40_.y; _tmp42_ = allocation; _tmp43_ = _tmp42_.height; y = _tmp41_ - _tmp43_; _tmp44_ = self->priv->m_input_context_path; if (g_strcmp0 (_tmp44_, "") == 0) { gboolean _tmp45_; _tmp45_ = self->priv->m_is_up_side_down; changed = _tmp45_ == FALSE; self->priv->m_is_up_side_down = TRUE; } else { gboolean _tmp46_; _tmp46_ = self->priv->m_is_up_side_down; changed = _tmp46_ == TRUE; self->priv->m_is_up_side_down = FALSE; } } else { GdkPoint _tmp47_; gint _tmp48_; gboolean _tmp49_; _tmp47_ = cursor_right_bottom; _tmp48_ = _tmp47_.y; y = _tmp48_; _tmp49_ = self->priv->m_is_up_side_down; changed = _tmp49_ == TRUE; self->priv->m_is_up_side_down = FALSE; } _tmp50_ = y; if (_tmp50_ < 0) { y = 0; } _tmp51_ = x; _tmp52_ = y; gtk_window_move ((GtkWindow*) self, _tmp51_, _tmp52_); _tmp53_ = changed; if (_tmp53_) { guint _tmp54_; _tmp54_ = self->priv->m_redraw_window_id; if (_tmp54_ > ((guint) 0)) { guint _tmp55_; _tmp55_ = self->priv->m_redraw_window_id; g_source_remove (_tmp55_); } self->priv->m_redraw_window_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ____lambda12__gsource_func, g_object_ref (self), g_object_unref); } } static void ibus_emojier_check_action_variant_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter) { GVariant* _tmp0_; GVariant* _tmp1_; gboolean _tmp2_; GVariant* _tmp3_; GVariant* _tmp4_; gboolean _tmp5_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = g_action_get_state ((GAction*) action); _tmp1_ = _tmp0_; ibus_emojier_m_show_emoji_variant = !g_variant_get_boolean (_tmp1_); _g_variant_unref0 (_tmp1_); _tmp2_ = ibus_emojier_m_show_emoji_variant; _tmp3_ = g_variant_new_boolean (_tmp2_); g_variant_ref_sink (_tmp3_); _tmp4_ = _tmp3_; g_simple_action_set_state (action, _tmp4_); _g_variant_unref0 (_tmp4_); _tmp5_ = self->priv->m_candidate_panel_is_visible; if (_tmp5_) { gtk_widget_queue_draw ((GtkWidget*) self); } } static void ibus_emojier_action_close_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter) { g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); g_signal_emit (self, ibus_emojier_signals[IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL], 0, (guint) 0, IBUS_EMOJIER_BUTTON_CLOSE_BUTTON, (guint) 0); } void ibus_emojier_update_favorite_emoji_dict (void) { gboolean _tmp0_ = FALSE; GHashTable* _tmp1_; _tmp1_ = ibus_emojier_m_emoji_to_data_dict; if (_tmp1_ == NULL) { _tmp0_ = TRUE; } else { GHashTable* _tmp2_; _tmp2_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp0_ = _tmp2_ == NULL; } if (_tmp0_) { return; } { gint i = 0; i = 0; { gboolean _tmp3_ = FALSE; _tmp3_ = TRUE; while (TRUE) { gint _tmp5_; gchar** _tmp6_; gint _tmp6__length1; gchar* favorite = NULL; gchar** _tmp7_; gint _tmp7__length1; gint _tmp8_; const gchar* _tmp9_; gchar* _tmp10_; gchar* annotation = NULL; gchar* _tmp11_; gint _tmp12_; gchar** _tmp13_; gint _tmp13__length1; const gchar* _tmp18_; IBusEmojiData* data = NULL; GHashTable* _tmp19_; const gchar* _tmp20_; gconstpointer _tmp21_; IBusEmojiData* _tmp22_; GSList* emojis = NULL; GHashTable* _tmp52_; const gchar* _tmp53_; gconstpointer _tmp54_; GSList* _tmp55_; const gchar* _tmp56_; GCompareFunc _tmp57_; GSList* _tmp58_; if (!_tmp3_) { gint _tmp4_; _tmp4_ = i; i = _tmp4_ + 1; } _tmp3_ = FALSE; _tmp5_ = i; _tmp6_ = ibus_emojier_m_favorites; _tmp6__length1 = ibus_emojier_m_favorites_length1; if (!(_tmp5_ < _tmp6__length1)) { break; } _tmp7_ = ibus_emojier_m_favorites; _tmp7__length1 = ibus_emojier_m_favorites_length1; _tmp8_ = i; _tmp9_ = _tmp7_[_tmp8_]; _tmp10_ = g_strdup (_tmp9_); favorite = _tmp10_; _tmp11_ = g_strdup (""); annotation = _tmp11_; _tmp12_ = i; _tmp13_ = ibus_emojier_m_favorite_annotations; _tmp13__length1 = ibus_emojier_m_favorite_annotations_length1; if (_tmp12_ < _tmp13__length1) { gchar** _tmp14_; gint _tmp14__length1; gint _tmp15_; const gchar* _tmp16_; gchar* _tmp17_; _tmp14_ = ibus_emojier_m_favorite_annotations; _tmp14__length1 = ibus_emojier_m_favorite_annotations_length1; _tmp15_ = i; _tmp16_ = _tmp14_[_tmp15_]; _tmp17_ = g_strdup (_tmp16_); _g_free0 (annotation); annotation = _tmp17_; } _tmp18_ = annotation; if (g_strcmp0 (_tmp18_, "") == 0) { _g_free0 (annotation); _g_free0 (favorite); continue; } _tmp19_ = ibus_emojier_m_emoji_to_data_dict; _tmp20_ = favorite; _tmp21_ = g_hash_table_lookup (_tmp19_, _tmp20_); data = (IBusEmojiData*) _tmp21_; _tmp22_ = data; if (_tmp22_ == NULL) { GSList* new_annotations = NULL; const gchar* _tmp23_; gchar* _tmp24_; IBusEmojiData* new_data = NULL; const gchar* _tmp25_; gchar* _tmp26_; gchar* _tmp27_; GSList* _tmp28_; const gchar* _tmp29_; gchar* _tmp30_; gchar* _tmp31_; GObject* _tmp32_; GObject* _tmp33_; IBusEmojiData* _tmp34_; IBusEmojiData* _tmp35_; GHashTable* _tmp36_; const gchar* _tmp37_; gchar* _tmp38_; IBusEmojiData* _tmp39_; IBusEmojiData* _tmp40_; new_annotations = NULL; _tmp23_ = annotation; _tmp24_ = g_strdup (_tmp23_); new_annotations = g_slist_append (new_annotations, _tmp24_); _tmp25_ = favorite; _tmp26_ = g_strdup (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = new_annotations; _tmp29_ = annotation; _tmp30_ = g_strdup (_tmp29_); _tmp31_ = _tmp30_; _tmp32_ = g_object_new (ibus_emoji_data_get_type (), "emoji", _tmp27_, "annotations", _tmp28_, "description", _tmp31_, NULL); _tmp33_ = G_IS_INITIALLY_UNOWNED (_tmp32_) ? g_object_ref_sink (_tmp32_) : _tmp32_; _tmp34_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, ibus_emoji_data_get_type ()) ? ((IBusEmojiData*) _tmp33_) : NULL; if (_tmp34_ == NULL) { _g_object_unref0 (_tmp33_); } _tmp35_ = _tmp34_; _g_free0 (_tmp31_); _g_free0 (_tmp27_); new_data = _tmp35_; _tmp36_ = ibus_emojier_m_emoji_to_data_dict; _tmp37_ = favorite; _tmp38_ = g_strdup (_tmp37_); _tmp39_ = new_data; _tmp40_ = _g_object_ref0 (_tmp39_); g_hash_table_insert (_tmp36_, _tmp38_, _tmp40_); _g_object_unref0 (new_data); (new_annotations == NULL) ? NULL : (new_annotations = (_g_slist_free__g_free0_ (new_annotations), NULL)); } else { GSList* annotations = NULL; IBusEmojiData* _tmp41_; GSList* _tmp42_; GSList* _tmp43_; const gchar* _tmp44_; GCompareFunc _tmp45_; GSList* _tmp46_; _tmp41_ = data; _tmp42_ = ibus_emoji_data_get_annotations (_tmp41_); annotations = _tmp42_; _tmp43_ = annotations; _tmp44_ = annotation; _tmp45_ = g_strcmp0; _tmp46_ = g_slist_find_custom (_tmp43_, _tmp44_, _tmp45_); if (_tmp46_ == NULL) { const gchar* _tmp47_; gchar* _tmp48_; IBusEmojiData* _tmp49_; GSList* _tmp50_; GSList* _tmp51_; _tmp47_ = annotation; _tmp48_ = g_strdup (_tmp47_); annotations = g_slist_append (annotations, _tmp48_); _tmp49_ = data; _tmp50_ = annotations; _tmp51_ = g_slist_copy (_tmp50_); ibus_emoji_data_set_annotations (_tmp49_, _tmp51_); } } _tmp52_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp53_ = annotation; _tmp54_ = g_hash_table_lookup (_tmp52_, _tmp53_); emojis = (GSList*) _tmp54_; _tmp55_ = emojis; _tmp56_ = favorite; _tmp57_ = g_strcmp0; _tmp58_ = g_slist_find_custom (_tmp55_, _tmp56_, _tmp57_); if (_tmp58_ == NULL) { const gchar* _tmp59_; gchar* _tmp60_; GHashTable* _tmp61_; const gchar* _tmp62_; gchar* _tmp63_; GSList* _tmp64_; GSList* _tmp65_; _tmp59_ = favorite; _tmp60_ = g_strdup (_tmp59_); emojis = g_slist_append (emojis, _tmp60_); _tmp61_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp62_ = annotation; _tmp63_ = g_strdup (_tmp62_); _tmp64_ = emojis; _tmp65_ = g_slist_copy (_tmp64_); g_hash_table_replace (_tmp61_, _tmp63_, _tmp65_); } _g_free0 (annotation); _g_free0 (favorite); } } } } void ibus_emojier_set_annotation (IBusEmojier* self, const gchar* annotation) { gchar* _tmp0_; gint _tmp1_; gint _tmp2_; g_return_if_fail (self != NULL); g_return_if_fail (annotation != NULL); _tmp0_ = g_strdup (annotation); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp0_; ibus_emojier_remove_all_children (self); _tmp1_ = strlen (annotation); _tmp2_ = _tmp1_; if (_tmp2_ > 0) { ibus_emojier_update_candidate_window (self); } else { gboolean _tmp3_; _tmp3_ = ibus_emojier_m_show_unicode; if (_tmp3_) { ibus_emojier_update_unicode_blocks (self); } else { ibus_emojier_update_category_list (self); } } } IBusLookupTable* ibus_emojier_get_one_dimension_lookup_table (IBusEmojier* self) { IBusLookupTable* result = NULL; IBusLookupTable* lookup_table = NULL; IBusLookupTable* _tmp0_; guint i = 0U; guint _tmp12_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = ibus_lookup_table_new (IBUS_EMOJIER_EMOJI_GRID_PAGE, (guint) 0, TRUE, TRUE); g_object_ref_sink (_tmp0_); lookup_table = _tmp0_; i = (guint) 0; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { guint _tmp3_; IBusLookupTable* _tmp4_; IBusText* text = NULL; IBusText* _tmp5_; IBusText* _tmp6_; IBusLookupTable* _tmp7_; guint _tmp8_; IBusText* _tmp9_; IBusLookupTable* _tmp10_; IBusText* _tmp11_; if (!_tmp1_) { guint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; _tmp3_ = i; _tmp4_ = self->priv->m_lookup_table; if (!(_tmp3_ < ibus_lookup_table_get_number_of_candidates (_tmp4_))) { break; } _tmp5_ = ibus_text_new_from_string (""); g_object_ref_sink (_tmp5_); text = _tmp5_; _tmp6_ = text; _tmp7_ = self->priv->m_lookup_table; _tmp8_ = i; _tmp9_ = ibus_lookup_table_get_candidate (_tmp7_, _tmp8_); IBUS_SERIALIZABLE_GET_CLASS ((IBusSerializable*) _tmp6_)->copy ((IBusSerializable*) _tmp6_, (IBusSerializable*) _tmp9_); _tmp10_ = lookup_table; _tmp11_ = text; ibus_lookup_table_append_candidate (_tmp10_, _tmp11_); _g_object_unref0 (text); } } _tmp12_ = i; if (_tmp12_ > ((guint) 0)) { IBusLookupTable* _tmp13_; IBusLookupTable* _tmp14_; _tmp13_ = lookup_table; _tmp14_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp13_, ibus_lookup_table_get_cursor_pos (_tmp14_)); } result = lookup_table; return result; } guint ibus_emojier_get_number_of_candidates (IBusEmojier* self) { guint result = 0U; IBusLookupTable* _tmp0_; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->m_lookup_table; result = ibus_lookup_table_get_number_of_candidates (_tmp0_); return result; } guint ibus_emojier_get_cursor_pos (IBusEmojier* self) { guint result = 0U; IBusLookupTable* _tmp0_; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->m_lookup_table; result = ibus_lookup_table_get_cursor_pos (_tmp0_); return result; } void ibus_emojier_set_cursor_pos (IBusEmojier* self, guint cursor_pos) { IBusLookupTable* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp0_, cursor_pos); } gchar* ibus_emojier_get_current_candidate (IBusEmojier* self) { gchar* result = NULL; gboolean _tmp0_; guint cursor = 0U; IBusLookupTable* _tmp2_; IBusLookupTable* _tmp3_; guint _tmp4_; IBusText* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_candidate_panel_mode; if (!_tmp0_) { gchar* _tmp1_; _tmp1_ = g_strdup (""); result = _tmp1_; return result; } _tmp2_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp2_); _tmp3_ = self->priv->m_lookup_table; _tmp4_ = cursor; _tmp5_ = ibus_lookup_table_get_candidate (_tmp3_, _tmp4_); _tmp6_ = _tmp5_->text; _tmp7_ = g_strdup (_tmp6_); result = _tmp7_; return result; } IBusText* ibus_emojier_get_title_text (IBusEmojier* self) { IBusText* result = NULL; gchar* language = NULL; const gchar* _tmp0_; const gchar* _tmp1_; gchar* _tmp2_; guint ncandidates = 0U; gchar* main_title = NULL; gchar* _tmp3_; gboolean _tmp4_; IBusText* text = NULL; const gchar* _tmp6_; const gchar* _tmp7_; guint _tmp8_; gchar* _tmp9_; gchar* _tmp10_; IBusText* _tmp11_; IBusText* _tmp12_; gint char_count = 0; IBusText* _tmp13_; const gchar* _tmp14_; gint start_index = 0; gint _tmp25_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = ibus_emojier_m_current_lang_id; _tmp1_ = ibus_get_language_name (_tmp0_); _tmp2_ = g_strdup (_ (_tmp1_)); language = _tmp2_; ncandidates = ibus_emojier_get_number_of_candidates (self); _tmp3_ = g_strdup (_ ("Emoji Choice")); main_title = _tmp3_; _tmp4_ = ibus_emojier_m_show_unicode; if (_tmp4_) { gchar* _tmp5_; _tmp5_ = g_strdup (_ ("Unicode Choice")); _g_free0 (main_title); main_title = _tmp5_; } _tmp6_ = main_title; _tmp7_ = language; _tmp8_ = ncandidates; _tmp9_ = g_strdup_printf ("%s (%s) (%u / %u)", _tmp6_, _tmp7_, ibus_emojier_get_cursor_pos (self) + 1, _tmp8_); _tmp10_ = _tmp9_; _tmp11_ = ibus_text_new_from_string (_tmp10_); g_object_ref_sink (_tmp11_); _tmp12_ = _tmp11_; _g_free0 (_tmp10_); text = _tmp12_; _tmp13_ = text; _tmp14_ = _tmp13_->text; char_count = g_utf8_strlen (_tmp14_, (gssize) -1); start_index = -1; { gint i = 0; i = 0; { gboolean _tmp15_ = FALSE; _tmp15_ = TRUE; while (TRUE) { gint _tmp17_; gint _tmp18_; IBusText* _tmp19_; const gchar* _tmp20_; gint _tmp21_; const gchar* _tmp22_; const gchar* _tmp23_; if (!_tmp15_) { gint _tmp16_; _tmp16_ = i; i = _tmp16_ + 1; } _tmp15_ = FALSE; _tmp17_ = i; _tmp18_ = char_count; if (!(_tmp17_ < _tmp18_)) { break; } _tmp19_ = text; _tmp20_ = _tmp19_->text; _tmp21_ = i; _tmp22_ = g_utf8_offset_to_pointer (_tmp20_, (glong) _tmp21_); _tmp23_ = language; if (g_str_has_prefix (_tmp22_, _tmp23_)) { gint _tmp24_; _tmp24_ = i; start_index = _tmp24_; break; } } } } _tmp25_ = start_index; if (_tmp25_ >= 0) { IBusAttribute* attr = NULL; gint _tmp26_; gint _tmp27_; const gchar* _tmp28_; IBusAttribute* _tmp29_; IBusAttrList* attrs = NULL; IBusAttrList* _tmp30_; IBusAttrList* _tmp31_; IBusAttribute* _tmp32_; IBusText* _tmp33_; IBusAttrList* _tmp34_; _tmp26_ = start_index; _tmp27_ = start_index; _tmp28_ = language; _tmp29_ = ibus_attribute_new ((guint) IBUS_ATTR_TYPE_FOREGROUND, (guint) 0x808080, (guint) _tmp26_, (guint) (_tmp27_ + g_utf8_strlen (_tmp28_, (gssize) -1))); g_object_ref_sink (_tmp29_); attr = _tmp29_; _tmp30_ = ibus_attr_list_new (); g_object_ref_sink (_tmp30_); attrs = _tmp30_; _tmp31_ = attrs; _tmp32_ = attr; ibus_attr_list_append (_tmp31_, _tmp32_); _tmp33_ = text; _tmp34_ = attrs; ibus_text_set_attributes (_tmp33_, _tmp34_); _g_object_unref0 (attrs); _g_object_unref0 (attr); } result = text; _g_free0 (main_title); _g_free0 (language); return result; } static void ibus_emojier_real_show_all (GtkWidget* base) { IBusEmojier * self; gboolean _tmp0_; self = (IBusEmojier*) base; GTK_WIDGET_CLASS (ibus_emojier_parent_class)->show_all ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_application_window_get_type (), GtkApplicationWindow)); _tmp0_ = self->priv->m_candidate_panel_mode; if (_tmp0_) { ibus_emojier_show_candidate_panel (self); } else { gboolean _tmp1_; _tmp1_ = ibus_emojier_m_show_unicode; if (_tmp1_) { ibus_emojier_show_unicode_blocks (self); } else { ibus_emojier_show_category_list (self); } } } static void ibus_emojier_real_hide (GtkWidget* base) { IBusEmojier * self; guint _tmp0_; guint _tmp2_; self = (IBusEmojier*) base; GTK_WIDGET_CLASS (ibus_emojier_parent_class)->hide ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_application_window_get_type (), GtkApplicationWindow)); self->priv->m_candidate_panel_is_visible = FALSE; _tmp0_ = self->priv->m_redraw_window_id; if (_tmp0_ > ((guint) 0)) { guint _tmp1_; _tmp1_ = self->priv->m_redraw_window_id; g_source_remove (_tmp1_); self->priv->m_redraw_window_id = (guint) 0; } _tmp2_ = self->priv->m_unicode_progress_id; if (_tmp2_ > ((guint) 0)) { guint _tmp3_; _tmp3_ = self->priv->m_unicode_progress_id; g_source_remove (_tmp3_); self->priv->m_unicode_progress_id = (guint) 0; } } static gboolean ibus_emojier_real_key_press_event (GtkWidget* base, GdkEventKey* event) { IBusEmojier * self; gboolean result = FALSE; guint keyval = 0U; guint _tmp0_; guint modifiers = 0U; GdkModifierType _tmp1_; guint _tmp2_; guint _tmp35_; guint _tmp77_; self = (IBusEmojier*) base; g_return_val_if_fail (event != NULL, FALSE); _tmp0_ = event->keyval; keyval = _tmp0_; _tmp1_ = event->state; modifiers = (guint) _tmp1_; _tmp2_ = keyval; switch (_tmp2_) { case GDK_KEY_Escape: { if (ibus_emojier_key_press_escape (self)) { gtk_widget_show_all ((GtkWidget*) self); } result = TRUE; return result; } case GDK_KEY_Return: case GDK_KEY_KP_Enter: { if (ibus_emojier_key_press_enter (self)) { gtk_widget_show_all ((GtkWidget*) self); } else { gchar* _tmp3_; _tmp3_ = ibus_emojier_get_current_candidate (self); _g_free0 (self->priv->m_result); self->priv->m_result = _tmp3_; gtk_widget_hide ((GtkWidget*) self); } result = TRUE; return result; } case GDK_KEY_BackSpace: { IBusEmojierEEntry* _tmp4_; const gchar* _tmp5_; gint _tmp6_; gint _tmp7_; _tmp4_ = self->priv->m_entry; _tmp5_ = gtk_entry_get_text ((GtkEntry*) _tmp4_); _tmp6_ = strlen (_tmp5_); _tmp7_ = _tmp6_; if (_tmp7_ > 0) { guint _tmp8_; _tmp8_ = modifiers; if ((_tmp8_ & GDK_CONTROL_MASK) != ((guint) 0)) { IBusEmojierEEntry* _tmp9_; _tmp9_ = self->priv->m_entry; g_signal_emit_by_name (_tmp9_, "delete-from-cursor", GTK_DELETE_WORD_ENDS, -1, NULL); } else { IBusEmojierEEntry* _tmp10_; _tmp10_ = self->priv->m_entry; g_signal_emit_by_name (_tmp10_, "backspace", NULL); } result = TRUE; return result; } break; } case GDK_KEY_Delete: case GDK_KEY_KP_Delete: { IBusEmojierEEntry* _tmp11_; const gchar* _tmp12_; gint _tmp13_; gint _tmp14_; _tmp11_ = self->priv->m_entry; _tmp12_ = gtk_entry_get_text ((GtkEntry*) _tmp11_); _tmp13_ = strlen (_tmp12_); _tmp14_ = _tmp13_; if (_tmp14_ > 0) { guint _tmp15_; _tmp15_ = modifiers; if ((_tmp15_ & GDK_CONTROL_MASK) != ((guint) 0)) { IBusEmojierEEntry* _tmp16_; _tmp16_ = self->priv->m_entry; g_signal_emit_by_name (_tmp16_, "delete-from-cursor", GTK_DELETE_WORD_ENDS, 1, NULL); } else { IBusEmojierEEntry* _tmp17_; _tmp17_ = self->priv->m_entry; g_signal_emit_by_name (_tmp17_, "delete-from-cursor", GTK_DELETE_CHARS, 1, NULL); } result = TRUE; return result; } break; } case GDK_KEY_space: case GDK_KEY_KP_Space: { guint _tmp18_; _tmp18_ = modifiers; if ((_tmp18_ & GDK_SHIFT_MASK) != ((guint) 0)) { IBusEmojierEEntry* _tmp19_; const gchar* _tmp20_; gint _tmp21_; gint _tmp22_; _tmp19_ = self->priv->m_entry; _tmp20_ = gtk_entry_get_text ((GtkEntry*) _tmp19_); _tmp21_ = strlen (_tmp20_); _tmp22_ = _tmp21_; if (_tmp22_ > 0) { guint _tmp23_; _tmp23_ = keyval; ibus_emojier_entry_enter_keyval (self, _tmp23_); } } else { gboolean _tmp24_; _tmp24_ = self->priv->m_candidate_panel_is_visible; if (_tmp24_) { IBusLookupTable* _tmp25_; ibus_emojier_enter_notify_disable_with_timer (self); _tmp25_ = self->priv->m_lookup_table; ibus_lookup_table_cursor_down (_tmp25_); ibus_emojier_show_candidate_panel (self); } else { ibus_emojier_category_list_cursor_move (self, (guint) GDK_KEY_Down); gtk_widget_show_all ((GtkWidget*) self); } } result = TRUE; return result; } case GDK_KEY_Right: case GDK_KEY_KP_Right: { guint _tmp26_; _tmp26_ = modifiers; ibus_emojier_key_press_cursor_horizontal (self, (guint) GDK_KEY_Right, _tmp26_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Left: case GDK_KEY_KP_Left: { guint _tmp27_; _tmp27_ = modifiers; ibus_emojier_key_press_cursor_horizontal (self, (guint) GDK_KEY_Left, _tmp27_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Down: case GDK_KEY_KP_Down: { guint _tmp28_; _tmp28_ = modifiers; ibus_emojier_key_press_cursor_vertical (self, (guint) GDK_KEY_Down, _tmp28_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Up: case GDK_KEY_KP_Up: { guint _tmp29_; _tmp29_ = modifiers; ibus_emojier_key_press_cursor_vertical (self, (guint) GDK_KEY_Up, _tmp29_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Page_Down: case GDK_KEY_KP_Page_Down: { guint _tmp30_; _tmp30_ = modifiers; ibus_emojier_key_press_cursor_vertical (self, (guint) GDK_KEY_Page_Down, _tmp30_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Page_Up: case GDK_KEY_KP_Page_Up: { guint _tmp31_; _tmp31_ = modifiers; ibus_emojier_key_press_cursor_vertical (self, (guint) GDK_KEY_Page_Up, _tmp31_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Home: case GDK_KEY_KP_Home: { guint _tmp32_; _tmp32_ = modifiers; ibus_emojier_key_press_cursor_home_end (self, (guint) GDK_KEY_Home, _tmp32_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_End: case GDK_KEY_KP_End: { guint _tmp33_; _tmp33_ = modifiers; ibus_emojier_key_press_cursor_home_end (self, (guint) GDK_KEY_End, _tmp33_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Insert: case GDK_KEY_KP_Insert: { IBusEmojierEEntry* _tmp34_; _tmp34_ = self->priv->m_entry; g_signal_emit_by_name (_tmp34_, "toggle-overwrite", NULL); result = TRUE; return result; } default: break; } _tmp35_ = modifiers; if ((_tmp35_ & GDK_CONTROL_MASK) != ((guint) 0)) { guint _tmp36_; _tmp36_ = keyval; switch (_tmp36_) { case GDK_KEY_f: { guint _tmp37_; _tmp37_ = modifiers; ibus_emojier_key_press_cursor_horizontal (self, (guint) GDK_KEY_Right, _tmp37_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_b: { guint _tmp38_; _tmp38_ = modifiers; ibus_emojier_key_press_cursor_horizontal (self, (guint) GDK_KEY_Left, _tmp38_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_n: case GDK_KEY_N: { guint _tmp39_; _tmp39_ = modifiers; ibus_emojier_key_press_cursor_vertical (self, (guint) GDK_KEY_Down, _tmp39_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_p: case GDK_KEY_P: { guint _tmp40_; _tmp40_ = modifiers; ibus_emojier_key_press_cursor_vertical (self, (guint) GDK_KEY_Up, _tmp40_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_h: { guint _tmp41_; _tmp41_ = modifiers; ibus_emojier_key_press_cursor_home_end (self, (guint) GDK_KEY_Home, _tmp41_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_e: { guint _tmp42_; _tmp42_ = modifiers; ibus_emojier_key_press_cursor_home_end (self, (guint) GDK_KEY_End, _tmp42_); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_u: { IBusEmojierEEntry* _tmp43_; const gchar* _tmp44_; gint _tmp45_; gint _tmp46_; _tmp43_ = self->priv->m_entry; _tmp44_ = gtk_entry_get_text ((GtkEntry*) _tmp43_); _tmp45_ = strlen (_tmp44_); _tmp46_ = _tmp45_; if (_tmp46_ > 0) { IBusEmojierEEntry* _tmp47_; _tmp47_ = self->priv->m_entry; g_signal_emit_by_name (_tmp47_, "delete-from-cursor", GTK_DELETE_PARAGRAPH_ENDS, -1, NULL); result = TRUE; return result; } break; } case GDK_KEY_a: { IBusEmojierEEntry* _tmp48_; const gchar* _tmp49_; gint _tmp50_; gint _tmp51_; _tmp48_ = self->priv->m_entry; _tmp49_ = gtk_entry_get_text ((GtkEntry*) _tmp48_); _tmp50_ = strlen (_tmp49_); _tmp51_ = _tmp50_; if (_tmp51_ > 0) { IBusEmojierEEntry* _tmp52_; _tmp52_ = self->priv->m_entry; gtk_editable_select_region ((GtkEditable*) _tmp52_, 0, -1); result = TRUE; return result; } break; } case GDK_KEY_x: { IBusEmojierEEntry* _tmp53_; const gchar* _tmp54_; gint _tmp55_; gint _tmp56_; _tmp53_ = self->priv->m_entry; _tmp54_ = gtk_entry_get_text ((GtkEntry*) _tmp53_); _tmp55_ = strlen (_tmp54_); _tmp56_ = _tmp55_; if (_tmp56_ > 0) { IBusEmojierEEntry* _tmp57_; _tmp57_ = self->priv->m_entry; g_signal_emit_by_name (_tmp57_, "cut-clipboard", NULL); result = TRUE; return result; } break; } case GDK_KEY_C: case GDK_KEY_c: { guint _tmp58_; _tmp58_ = modifiers; if ((_tmp58_ & GDK_SHIFT_MASK) != ((guint) 0)) { gboolean _tmp59_; _tmp59_ = self->priv->m_candidate_panel_is_visible; if (_tmp59_) { guint index = 0U; IBusLookupTable* _tmp60_; gchar* text = NULL; IBusLookupTable* _tmp61_; guint _tmp62_; IBusText* _tmp63_; const gchar* _tmp64_; gchar* _tmp65_; GtkClipboard* clipboard = NULL; GtkClipboard* _tmp66_; GtkClipboard* _tmp67_; GtkClipboard* _tmp68_; const gchar* _tmp69_; GtkClipboard* _tmp70_; _tmp60_ = self->priv->m_lookup_table; index = ibus_lookup_table_get_cursor_pos (_tmp60_); _tmp61_ = self->priv->m_lookup_table; _tmp62_ = index; _tmp63_ = ibus_lookup_table_get_candidate (_tmp61_, _tmp62_); _tmp64_ = _tmp63_->text; _tmp65_ = g_strdup (_tmp64_); text = _tmp65_; _tmp66_ = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); _tmp67_ = _g_object_ref0 (_tmp66_); clipboard = _tmp67_; _tmp68_ = clipboard; _tmp69_ = text; gtk_clipboard_set_text (_tmp68_, _tmp69_, -1); _tmp70_ = clipboard; gtk_clipboard_store (_tmp70_); result = TRUE; _g_object_unref0 (clipboard); _g_free0 (text); return result; } } else { IBusEmojierEEntry* _tmp71_; const gchar* _tmp72_; gint _tmp73_; gint _tmp74_; _tmp71_ = self->priv->m_entry; _tmp72_ = gtk_entry_get_text ((GtkEntry*) _tmp71_); _tmp73_ = strlen (_tmp72_); _tmp74_ = _tmp73_; if (_tmp74_ > 0) { IBusEmojierEEntry* _tmp75_; _tmp75_ = self->priv->m_entry; g_signal_emit_by_name (_tmp75_, "copy-clipboard", NULL); result = TRUE; return result; } } break; } case GDK_KEY_v: { IBusEmojierEEntry* _tmp76_; _tmp76_ = self->priv->m_entry; g_signal_emit_by_name (_tmp76_, "paste-clipboard", NULL); result = TRUE; return result; } default: break; } result = FALSE; return result; } _tmp77_ = keyval; ibus_emojier_entry_enter_keyval (self, _tmp77_); result = TRUE; return result; } gboolean ibus_emojier_is_running (IBusEmojier* self) { gboolean result = FALSE; gboolean _tmp0_; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_is_running; result = _tmp0_; return result; } gchar* ibus_emojier_get_input_context_path (IBusEmojier* self) { gchar* result = NULL; const gchar* _tmp0_; gchar* _tmp1_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_input_context_path; _tmp1_ = g_strdup (_tmp0_); result = _tmp1_; return result; } void ibus_emojier_set_input_context_path (IBusEmojier* self, const gchar* input_context_path) { gchar* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (input_context_path != NULL); _tmp0_ = g_strdup (input_context_path); _g_free0 (self->priv->m_input_context_path); self->priv->m_input_context_path = _tmp0_; if (g_strcmp0 (input_context_path, "") == 0) { gchar* _tmp1_; _tmp1_ = g_strdup (_ ("" "Failed to get the current text application. " "Please re-focus your application. E.g. Press Esc key " "several times to release the emoji typing mode, " "click your desktop and click your text application again.")); _g_free0 (ibus_emojier_m_warning_message); ibus_emojier_m_warning_message = _tmp1_; } else { gchar* _tmp2_; _tmp2_ = g_strdup (""); _g_free0 (ibus_emojier_m_warning_message); ibus_emojier_m_warning_message = _tmp2_; } } gchar* ibus_emojier_get_selected_string (IBusEmojier* self) { gchar* result = NULL; const gchar* _tmp0_; gchar* _tmp1_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_result; _tmp1_ = g_strdup (_tmp0_); result = _tmp1_; return result; } static void ibus_emojier_reset_window_mode (IBusEmojier* self) { g_return_if_fail (self != NULL); self->priv->m_backward_index = -1; _g_free0 (self->priv->m_backward); self->priv->m_backward = NULL; self->priv->m_candidate_panel_is_visible = FALSE; self->priv->m_candidate_panel_mode = FALSE; } void ibus_emojier_reset (IBusEmojier* self) { gchar* _tmp0_; g_return_if_fail (self != NULL); ibus_emojier_reset_window_mode (self); _tmp0_ = g_strdup (""); _g_free0 (self->priv->m_input_context_path); self->priv->m_input_context_path = _tmp0_; _g_free0 (self->priv->m_result); self->priv->m_result = NULL; self->priv->m_category_active_index = -1; ibus_emojier_m_show_unicode = FALSE; } void ibus_emojier_present_centralize (IBusEmojier* self, GdkEvent* event) { GtkAllocation allocation = {0}; GtkAllocation _tmp0_ = {0}; GdkRectangle monitor_area = {0}; GdkRectangle work_area = {0}; GdkDisplay* display = NULL; GdkDisplay* _tmp1_; GdkDisplay* _tmp2_; GdkMonitor* monitor = NULL; GdkDisplay* _tmp3_; GdkWindow* _tmp4_; GdkMonitor* _tmp5_; GdkMonitor* _tmp6_; GdkMonitor* _tmp7_; GdkRectangle _tmp8_ = {0}; GdkMonitor* _tmp9_; GdkRectangle _tmp10_ = {0}; gint x = 0; GdkRectangle _tmp11_; gint _tmp12_; GdkRectangle _tmp13_; gint _tmp14_; GtkAllocation _tmp15_; gint _tmp16_; gint y = 0; GdkRectangle _tmp17_; gint _tmp18_; GdkRectangle _tmp19_; gint _tmp20_; GtkAllocation _tmp21_; gint _tmp22_; GdkRectangle _tmp23_; gint _tmp24_; gint _tmp25_; gint _tmp28_; gint _tmp29_; guint32 timestamp = 0U; IBusEmojierEEntry* _tmp30_; g_return_if_fail (self != NULL); g_return_if_fail (event != NULL); gtk_widget_get_allocation ((GtkWidget*) self, &_tmp0_); allocation = _tmp0_; _tmp1_ = gdk_display_get_default (); _tmp2_ = _g_object_ref0 (_tmp1_); display = _tmp2_; _tmp3_ = display; _tmp4_ = gtk_widget_get_window ((GtkWidget*) self); _tmp5_ = gdk_display_get_monitor_at_window (_tmp3_, _tmp4_); _tmp6_ = _g_object_ref0 (_tmp5_); monitor = _tmp6_; _tmp7_ = monitor; gdk_monitor_get_geometry (_tmp7_, &_tmp8_); monitor_area = _tmp8_; _tmp9_ = monitor; gdk_monitor_get_workarea (_tmp9_, &_tmp10_); work_area = _tmp10_; _tmp11_ = monitor_area; _tmp12_ = _tmp11_.x; _tmp13_ = monitor_area; _tmp14_ = _tmp13_.width; _tmp15_ = allocation; _tmp16_ = _tmp15_.width; x = ((_tmp12_ + _tmp14_) - _tmp16_) / 2; _tmp17_ = monitor_area; _tmp18_ = _tmp17_.y; _tmp19_ = monitor_area; _tmp20_ = _tmp19_.height; _tmp21_ = allocation; _tmp22_ = _tmp21_.height; y = ((_tmp18_ + _tmp20_) - _tmp22_) / 2; _tmp23_ = work_area; _tmp24_ = _tmp23_.y; _tmp25_ = y; if (_tmp24_ < _tmp25_) { GdkRectangle _tmp26_; gint _tmp27_; _tmp26_ = work_area; _tmp27_ = _tmp26_.y; y = _tmp27_; } _tmp28_ = x; _tmp29_ = y; gtk_window_move ((GtkWindow*) self, _tmp28_, _tmp29_); timestamp = gdk_event_get_time (event); gtk_window_present_with_time ((GtkWindow*) self, timestamp); _tmp30_ = self->priv->m_entry; gtk_entry_set_activates_default ((GtkEntry*) _tmp30_, TRUE); _g_object_unref0 (monitor); _g_object_unref0 (display); } static gboolean _cairo_rectangle_int_equal (const cairo_rectangle_int_t * s1, const cairo_rectangle_int_t * s2) { if (s1 == s2) { return TRUE; } if (s1 == NULL) { return FALSE; } if (s2 == NULL) { return FALSE; } if (s1->x != s2->x) { return FALSE; } if (s1->y != s2->y) { return FALSE; } if (s1->width != s2->width) { return FALSE; } if (s1->height != s2->height) { return FALSE; } return TRUE; } void ibus_emojier_set_cursor_location (IBusEmojier* self, gint x, gint y, gint width, gint height) { GdkRectangle location = {0}; GdkRectangle _tmp0_ = {0}; GdkRectangle _tmp1_; GdkRectangle _tmp2_; GdkRectangle _tmp3_; g_return_if_fail (self != NULL); memset (&_tmp0_, 0, sizeof (GdkRectangle)); _tmp0_.x = x; _tmp0_.y = y; _tmp0_.width = width; _tmp0_.height = height; location = _tmp0_; _tmp1_ = self->priv->m_cursor_location; _tmp2_ = location; if (_cairo_rectangle_int_equal (&_tmp1_, &_tmp2_) == TRUE) { return; } _tmp3_ = location; self->priv->m_cursor_location = _tmp3_; } gboolean ibus_emojier_is_candidate_panel_mode (IBusEmojier* self) { gboolean result = FALSE; gboolean _tmp0_; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_candidate_panel_mode; result = _tmp0_; return result; } gboolean ibus_emojier_has_loaded_emoji_dict (void) { gboolean result = FALSE; GHashTable* _tmp0_; GList* keys = NULL; GHashTable* _tmp1_; GList* _tmp2_; GList* _tmp3_; _tmp0_ = ibus_emojier_m_emoji_to_data_dict; if (_tmp0_ == NULL) { result = FALSE; return result; } _tmp1_ = ibus_emojier_m_emoji_to_data_dict; _tmp2_ = g_hash_table_get_keys (_tmp1_); keys = _tmp2_; _tmp3_ = keys; if (g_list_length (_tmp3_) == ((guint) 0)) { result = FALSE; (keys == NULL) ? NULL : (keys = (g_list_free (keys), NULL)); return result; } result = TRUE; (keys == NULL) ? NULL : (keys = (g_list_free (keys), NULL)); return result; } void ibus_emojier_set_annotation_lang (const gchar* lang) { gboolean _tmp0_ = FALSE; const gchar* _tmp1_; gchar* _tmp2_; if (lang == NULL) { _tmp0_ = TRUE; } else { _tmp0_ = g_strcmp0 (lang, "") == 0; } if (_tmp0_) { lang = "en"; } _tmp1_ = ibus_emojier_m_current_lang_id; if (g_strcmp0 (_tmp1_, lang) == 0) { return; } _tmp2_ = g_strdup (lang); _g_free0 (ibus_emojier_m_current_lang_id); ibus_emojier_m_current_lang_id = _tmp2_; ibus_emojier_reload_emoji_dict (); } gchar* ibus_emojier_get_annotation_lang (void) { gchar* result = NULL; const gchar* _tmp0_; gchar* _tmp1_; _tmp0_ = ibus_emojier_m_current_lang_id; _tmp1_ = g_strdup (_tmp0_); result = _tmp1_; return result; } static void _vala_PangoFontDescription_free (PangoFontDescription* self) { g_boxed_free (pango_font_description_get_type (), self); } void ibus_emojier_set_emoji_font (const gchar* emoji_font) { gboolean _tmp0_ = FALSE; PangoFontDescription* font_desc = NULL; PangoFontDescription* _tmp1_; gchar* font_family = NULL; PangoFontDescription* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; const gchar* _tmp5_; gint font_size = 0; PangoFontDescription* _tmp8_; gint _tmp9_; if (emoji_font != NULL) { _tmp0_ = g_strcmp0 (emoji_font, "") != 0; } else { _tmp0_ = FALSE; } g_return_if_fail (_tmp0_); _tmp1_ = pango_font_description_from_string (emoji_font); font_desc = _tmp1_; _tmp2_ = font_desc; _tmp3_ = pango_font_description_get_family (_tmp2_); _tmp4_ = g_strdup (_tmp3_); font_family = _tmp4_; _tmp5_ = font_family; if (_tmp5_ != NULL) { const gchar* _tmp6_; gchar* _tmp7_; _tmp6_ = font_family; _tmp7_ = g_strdup (_tmp6_); _g_free0 (ibus_emojier_m_emoji_font_family); ibus_emojier_m_emoji_font_family = _tmp7_; ibus_emojier_m_emoji_font_changed = TRUE; } _tmp8_ = font_desc; font_size = pango_font_description_get_size (_tmp8_) / PANGO_SCALE; _tmp9_ = font_size; if (_tmp9_ != 0) { gint _tmp10_; _tmp10_ = font_size; ibus_emojier_m_emoji_font_size = _tmp10_; ibus_emojier_m_emoji_font_changed = TRUE; } _g_free0 (font_family); __vala_PangoFontDescription_free0 (font_desc); } void ibus_emojier_set_partial_match (gboolean has_partial_match) { ibus_emojier_m_has_partial_match = has_partial_match; } void ibus_emojier_set_partial_match_length (gint length) { if (length < 1) { return; } ibus_emojier_m_partial_match_length = (guint) length; } void ibus_emojier_set_partial_match_condition (gint condition) { if (condition < 0) { return; } ibus_emojier_m_partial_match_condition = (guint) condition; } static void _vala_array_add3 (gchar** * array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } static void _vala_array_add4 (gchar** * array, int* length, int* size, gchar* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gchar*, *array, (*size) + 1); } (*array)[(*length)++] = value; (*array)[*length] = NULL; } void ibus_emojier_set_favorites (gchar** unowned_favorites, int unowned_favorites_length1, gchar** unowned_favorite_annotations, int unowned_favorite_annotations_length1) { gchar** _tmp0_; gchar** _tmp1_; _tmp0_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorites = (_vala_array_free (ibus_emojier_m_favorites, ibus_emojier_m_favorites_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorites = _tmp0_; ibus_emojier_m_favorites_length1 = 0; _ibus_emojier_m_favorites_size_ = ibus_emojier_m_favorites_length1; _tmp1_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorite_annotations = (_vala_array_free (ibus_emojier_m_favorite_annotations, ibus_emojier_m_favorite_annotations_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorite_annotations = _tmp1_; ibus_emojier_m_favorite_annotations_length1 = 0; _ibus_emojier_m_favorite_annotations_size_ = ibus_emojier_m_favorite_annotations_length1; { gint i = 0; i = 0; { gboolean _tmp2_ = FALSE; _tmp2_ = TRUE; while (TRUE) { gint _tmp4_; gchar* favorite = NULL; gint _tmp5_; const gchar* _tmp6_; gchar* _tmp7_; const gchar* _tmp8_; gchar** _tmp9_; gint _tmp9__length1; const gchar* _tmp10_; gchar* _tmp11_; if (!_tmp2_) { gint _tmp3_; _tmp3_ = i; i = _tmp3_ + 1; } _tmp2_ = FALSE; _tmp4_ = i; if (!(_tmp4_ < unowned_favorites_length1)) { break; } _tmp5_ = i; _tmp6_ = unowned_favorites[_tmp5_]; _tmp7_ = g_strdup (_tmp6_); favorite = _tmp7_; _tmp8_ = favorite; g_return_if_fail (_tmp8_ != NULL); _tmp9_ = ibus_emojier_m_favorites; _tmp9__length1 = ibus_emojier_m_favorites_length1; _tmp10_ = favorite; _tmp11_ = g_strdup (_tmp10_); _vala_array_add3 (&ibus_emojier_m_favorites, &ibus_emojier_m_favorites_length1, &_ibus_emojier_m_favorites_size_, _tmp11_); _g_free0 (favorite); } } } { gint i = 0; i = 0; { gboolean _tmp12_ = FALSE; _tmp12_ = TRUE; while (TRUE) { gint _tmp14_; gchar* favorite_annotation = NULL; gint _tmp15_; const gchar* _tmp16_; gchar* _tmp17_; const gchar* _tmp18_; gchar** _tmp19_; gint _tmp19__length1; const gchar* _tmp20_; gchar* _tmp21_; if (!_tmp12_) { gint _tmp13_; _tmp13_ = i; i = _tmp13_ + 1; } _tmp12_ = FALSE; _tmp14_ = i; if (!(_tmp14_ < unowned_favorite_annotations_length1)) { break; } _tmp15_ = i; _tmp16_ = unowned_favorite_annotations[_tmp15_]; _tmp17_ = g_strdup (_tmp16_); favorite_annotation = _tmp17_; _tmp18_ = favorite_annotation; g_return_if_fail (_tmp18_ != NULL); _tmp19_ = ibus_emojier_m_favorite_annotations; _tmp19__length1 = ibus_emojier_m_favorite_annotations_length1; _tmp20_ = favorite_annotation; _tmp21_ = g_strdup (_tmp20_); _vala_array_add4 (&ibus_emojier_m_favorite_annotations, &ibus_emojier_m_favorite_annotations_length1, &_ibus_emojier_m_favorite_annotations_size_, _tmp21_); _g_free0 (favorite_annotation); } } } ibus_emojier_update_favorite_emoji_dict (); } static GObject* ibus_emojier_get_load_progress_object (void) { GObject* result = NULL; IBusEmojierLoadProgressObject* _tmp0_; IBusEmojierLoadProgressObject* _tmp2_; GObject* _tmp3_; _tmp0_ = ibus_emojier_m_unicode_progress_object; if (_tmp0_ == NULL) { IBusEmojierLoadProgressObject* _tmp1_; _tmp1_ = ibus_emojier_load_progress_object_new (); _g_object_unref0 (ibus_emojier_m_unicode_progress_object); ibus_emojier_m_unicode_progress_object = _tmp1_; } _tmp2_ = ibus_emojier_m_unicode_progress_object; _tmp3_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, G_TYPE_OBJECT) ? ((GObject*) _tmp2_) : NULL); result = _tmp3_; return result; } void ibus_emojier_load_unicode_dict (void) { GSList* _tmp0_; GHashTable* _tmp1_; _tmp0_ = ibus_emojier_m_unicode_block_list; if (g_slist_length (_tmp0_) == ((guint) 0)) { ibus_emojier_make_unicode_block_dict (); } _tmp1_ = ibus_emojier_m_name_to_unicodes_dict; if (g_hash_table_size (_tmp1_) == ((guint) 0)) { GObject* _tmp2_; GObject* _tmp3_; _tmp2_ = ibus_emojier_get_load_progress_object (); _tmp3_ = _tmp2_; ibus_emojier_make_unicode_name_dict (_tmp3_); _g_object_unref0 (_tmp3_); } } static void g_cclosure_user_marshal_VOID__UINT_UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__UINT_UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, guint arg_3, gpointer data2); register GMarshalFunc_VOID__UINT_UINT_UINT callback; register GCClosure * cc; register gpointer data1; register gpointer data2; cc = (GCClosure *) closure; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = param_values->data[0].v_pointer; } else { data1 = param_values->data[0].v_pointer; data2 = closure->data; } callback = (GMarshalFunc_VOID__UINT_UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_value_get_uint (param_values + 1), g_value_get_uint (param_values + 2), g_value_get_uint (param_values + 3), data2); } static IBusEmojierEEntry* ibus_emojier_eentry_construct (GType object_type) { IBusEmojierEEntry * self = NULL; self = (IBusEmojierEEntry*) g_object_new (object_type, "name", "IBusEmojierEntry", "margin-start", 6, "margin-end", 6, "margin-top", 6, "margin-bottom", 6, NULL); return self; } static IBusEmojierEEntry* ibus_emojier_eentry_new (void) { return ibus_emojier_eentry_construct (IBUS_EMOJIER_TYPE_EENTRY); } static void ibus_emojier_eentry_class_init (IBusEmojierEEntryClass * klass) { ibus_emojier_eentry_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_eentry_instance_init (IBusEmojierEEntry * self) { } static GType ibus_emojier_eentry_get_type (void) { static volatile gsize ibus_emojier_eentry_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_eentry_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEEntryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_eentry_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEEntry), 0, (GInstanceInitFunc) ibus_emojier_eentry_instance_init, NULL }; GType ibus_emojier_eentry_type_id; ibus_emojier_eentry_type_id = g_type_register_static (gtk_search_entry_get_type (), "IBusEmojierEEntry", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_eentry_type_id__volatile, ibus_emojier_eentry_type_id); } return ibus_emojier_eentry_type_id__volatile; } static gboolean __lambda5_ (IBusEmojierEListBox* self, GdkEventMotion* e) { gboolean result = FALSE; GdkEventMotion* pe = NULL; GdkEventMotion* _tmp0_; gboolean _tmp1_ = FALSE; gdouble _tmp2_; GdkEventMotion* _tmp3_; gdouble _tmp4_; GdkEventMotion* _tmp8_; gdouble _tmp9_; GdkEventMotion* _tmp10_; gdouble _tmp11_; GtkListBoxRow* row = NULL; gdouble _tmp12_; GtkListBoxRow* _tmp13_; GtkListBoxRow* _tmp14_; GtkListBoxRow* _tmp15_; g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = __vala_GdkEventMotion_copy0 (e); pe = _tmp0_; _tmp2_ = ibus_emojier_m_mouse_x; _tmp3_ = pe; _tmp4_ = _tmp3_->x_root; if (_tmp2_ == _tmp4_) { gdouble _tmp5_; GdkEventMotion* _tmp6_; gdouble _tmp7_; _tmp5_ = ibus_emojier_m_mouse_y; _tmp6_ = pe; _tmp7_ = _tmp6_->y_root; _tmp1_ = _tmp5_ == _tmp7_; } else { _tmp1_ = FALSE; } if (_tmp1_) { result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } _tmp8_ = pe; _tmp9_ = _tmp8_->x_root; ibus_emojier_m_mouse_x = _tmp9_; _tmp10_ = pe; _tmp11_ = _tmp10_->y_root; ibus_emojier_m_mouse_y = _tmp11_; _tmp12_ = e->y; _tmp13_ = gtk_list_box_get_row_at_y ((GtkListBox*) self, (gint) _tmp12_); _tmp14_ = _g_object_ref0 (_tmp13_); row = _tmp14_; _tmp15_ = row; if (_tmp15_ != NULL) { GtkListBoxRow* _tmp16_; _tmp16_ = row; gtk_list_box_select_row ((GtkListBox*) self, _tmp16_); } result = FALSE; _g_object_unref0 (row); __vala_GdkEventMotion_free0 (pe); return result; } static gboolean ___lambda5__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self) { gboolean result; result = __lambda5_ ((IBusEmojierEListBox*) self, event); return result; } static gboolean __lambda6_ (IBusEmojierEListBox* self, GdkEventCrossing* e) { gboolean result = FALSE; g_return_val_if_fail (e != NULL, FALSE); result = TRUE; return result; } static gboolean ___lambda6__gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self) { gboolean result; result = __lambda6_ ((IBusEmojierEListBox*) self, event); return result; } static IBusEmojierEListBox* ibus_emojier_elist_box_construct (GType object_type) { IBusEmojierEListBox * self = NULL; self = (IBusEmojierEListBox*) g_object_new (object_type, "vexpand", TRUE, "halign", GTK_ALIGN_FILL, "valign", GTK_ALIGN_FILL, NULL); g_signal_connect_object ((GtkWidget*) self, "motion-notify-event", (GCallback) ___lambda5__gtk_widget_motion_notify_event, self, 0); g_signal_connect_object ((GtkWidget*) self, "enter-notify-event", (GCallback) ___lambda6__gtk_widget_enter_notify_event, self, 0); return self; } static IBusEmojierEListBox* ibus_emojier_elist_box_new (void) { return ibus_emojier_elist_box_construct (IBUS_EMOJIER_TYPE_ELIST_BOX); } static void ibus_emojier_elist_box_class_init (IBusEmojierEListBoxClass * klass) { ibus_emojier_elist_box_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_elist_box_instance_init (IBusEmojierEListBox * self) { } static GType ibus_emojier_elist_box_get_type (void) { static volatile gsize ibus_emojier_elist_box_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_elist_box_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEListBoxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_elist_box_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEListBox), 0, (GInstanceInitFunc) ibus_emojier_elist_box_instance_init, NULL }; GType ibus_emojier_elist_box_type_id; ibus_emojier_elist_box_type_id = g_type_register_static (gtk_list_box_get_type (), "IBusEmojierEListBox", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_elist_box_type_id__volatile, ibus_emojier_elist_box_type_id); } return ibus_emojier_elist_box_type_id__volatile; } static IBusEmojierEBoxRow* ibus_emojier_ebox_row_construct (GType object_type, const gchar* text) { IBusEmojierEBoxRow * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEBoxRow*) g_object_new (object_type, NULL); ibus_emojier_ebox_row_set_text (self, text); return self; } static IBusEmojierEBoxRow* ibus_emojier_ebox_row_new (const gchar* text) { return ibus_emojier_ebox_row_construct (IBUS_EMOJIER_TYPE_EBOX_ROW, text); } static const gchar* ibus_emojier_ebox_row_get_text (IBusEmojierEBoxRow* self) { const gchar* result; const gchar* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_text; result = _tmp0_; return result; } static void ibus_emojier_ebox_row_set_text (IBusEmojierEBoxRow* self, const gchar* value) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, ibus_emojier_ebox_row_get_text (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_text); self->priv->_text = _tmp0_; g_object_notify_by_pspec ((GObject *) self, ibus_emojier_ebox_row_properties[IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY]); } } static void ibus_emojier_ebox_row_class_init (IBusEmojierEBoxRowClass * klass) { ibus_emojier_ebox_row_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (IBusEmojierEBoxRowPrivate)); G_OBJECT_CLASS (klass)->get_property = _vala_ibus_emojier_ebox_row_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_ibus_emojier_ebox_row_set_property; G_OBJECT_CLASS (klass)->finalize = ibus_emojier_ebox_row_finalize; g_object_class_install_property (G_OBJECT_CLASS (klass), IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY, ibus_emojier_ebox_row_properties[IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY] = g_param_spec_string ("text", "text", "text", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void ibus_emojier_ebox_row_instance_init (IBusEmojierEBoxRow * self) { self->priv = IBUS_EMOJIER_EBOX_ROW_GET_PRIVATE (self); } static void ibus_emojier_ebox_row_finalize (GObject * obj) { IBusEmojierEBoxRow * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow); _g_free0 (self->priv->_text); G_OBJECT_CLASS (ibus_emojier_ebox_row_parent_class)->finalize (obj); } static GType ibus_emojier_ebox_row_get_type (void) { static volatile gsize ibus_emojier_ebox_row_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_ebox_row_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEBoxRowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_ebox_row_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEBoxRow), 0, (GInstanceInitFunc) ibus_emojier_ebox_row_instance_init, NULL }; GType ibus_emojier_ebox_row_type_id; ibus_emojier_ebox_row_type_id = g_type_register_static (gtk_list_box_row_get_type (), "IBusEmojierEBoxRow", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_ebox_row_type_id__volatile, ibus_emojier_ebox_row_type_id); } return ibus_emojier_ebox_row_type_id__volatile; } static void _vala_ibus_emojier_ebox_row_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { IBusEmojierEBoxRow * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow); switch (property_id) { case IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY: g_value_set_string (value, ibus_emojier_ebox_row_get_text (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void _vala_ibus_emojier_ebox_row_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { IBusEmojierEBoxRow * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow); switch (property_id) { case IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY: ibus_emojier_ebox_row_set_text (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_construct (GType object_type, GtkAdjustment* hadjustment, GtkAdjustment* vadjustment) { IBusEmojierEScrolledWindow * self = NULL; self = (IBusEmojierEScrolledWindow*) g_object_new (object_type, "hscrollbar-policy", GTK_POLICY_NEVER, "vscrollbar-policy", GTK_POLICY_NEVER, "shadow-type", GTK_SHADOW_IN, "margin-start", 6, "margin-end", 6, "margin-top", 6, "margin-bottom", 6, NULL); if (hadjustment != NULL) { gtk_scrolled_window_set_hadjustment ((GtkScrolledWindow*) self, hadjustment); } if (vadjustment != NULL) { gtk_scrolled_window_set_hadjustment ((GtkScrolledWindow*) self, vadjustment); } return self; } static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_new (GtkAdjustment* hadjustment, GtkAdjustment* vadjustment) { return ibus_emojier_escrolled_window_construct (IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, hadjustment, vadjustment); } static void ibus_emojier_escrolled_window_class_init (IBusEmojierEScrolledWindowClass * klass) { ibus_emojier_escrolled_window_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_escrolled_window_instance_init (IBusEmojierEScrolledWindow * self) { } static GType ibus_emojier_escrolled_window_get_type (void) { static volatile gsize ibus_emojier_escrolled_window_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_escrolled_window_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEScrolledWindowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_escrolled_window_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEScrolledWindow), 0, (GInstanceInitFunc) ibus_emojier_escrolled_window_instance_init, NULL }; GType ibus_emojier_escrolled_window_type_id; ibus_emojier_escrolled_window_type_id = g_type_register_static (gtk_scrolled_window_get_type (), "IBusEmojierEScrolledWindow", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_escrolled_window_type_id__volatile, ibus_emojier_escrolled_window_type_id); } return ibus_emojier_escrolled_window_type_id__volatile; } static IBusEmojierEGrid* ibus_emojier_egrid_construct (GType object_type) { IBusEmojierEGrid * self = NULL; self = (IBusEmojierEGrid*) g_object_new (object_type, "row-homogeneous", FALSE, "vexpand", TRUE, "halign", GTK_ALIGN_FILL, "valign", GTK_ALIGN_FILL, "row-spacing", 5, "column-spacing", 5, "border-width", 2, NULL); return self; } static IBusEmojierEGrid* ibus_emojier_egrid_new (void) { return ibus_emojier_egrid_construct (IBUS_EMOJIER_TYPE_EGRID); } static void ibus_emojier_egrid_class_init (IBusEmojierEGridClass * klass) { ibus_emojier_egrid_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_egrid_instance_init (IBusEmojierEGrid * self) { } static GType ibus_emojier_egrid_get_type (void) { static volatile gsize ibus_emojier_egrid_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_egrid_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEGridClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_egrid_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEGrid), 0, (GInstanceInitFunc) ibus_emojier_egrid_instance_init, NULL }; GType ibus_emojier_egrid_type_id; ibus_emojier_egrid_type_id = g_type_register_static (gtk_grid_get_type (), "IBusEmojierEGrid", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_egrid_type_id__volatile, ibus_emojier_egrid_type_id); } return ibus_emojier_egrid_type_id__volatile; } static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_construct (GType object_type, const gchar* text) { IBusEmojierEWhiteLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEWhiteLabel*) g_object_new (object_type, "name", "IBusEmojierWhiteLabel", NULL); gtk_label_set_label ((GtkLabel*) self, text); return self; } static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_new (const gchar* text) { return ibus_emojier_ewhite_label_construct (IBUS_EMOJIER_TYPE_EWHITE_LABEL, text); } static void ibus_emojier_ewhite_label_real_get_preferred_width (GtkWidget* base, gint* minimum_width, gint* natural_width) { IBusEmojierEWhiteLabel * self; gint _vala_minimum_width = 0; gint _vala_natural_width = 0; gboolean _tmp0_ = FALSE; gint _tmp1_; gchar* text = NULL; const gchar* _tmp5_; gchar* _tmp6_; gunichar ch = 0U; const gchar* _tmp7_; gboolean _tmp8_ = FALSE; const gchar* _tmp9_; gint _tmp10_; gint _tmp11_; gint _tmp17_ = 0; gint _tmp18_ = 0; gboolean _tmp19_ = FALSE; const gchar* _tmp20_; gint _tmp21_; gint _tmp22_; gint _tmp30_; gint _tmp31_; gint _tmp33_; gint _tmp34_; gint _tmp36_; gint _tmp37_; self = (IBusEmojierEWhiteLabel*) base; _tmp1_ = self->priv->m_minimum_height; if (_tmp1_ == 0) { gint _tmp2_; _tmp2_ = self->priv->m_natural_height; _tmp0_ = _tmp2_ == 0; } else { _tmp0_ = FALSE; } if (_tmp0_) { gint _tmp3_ = 0; gint _tmp4_ = 0; GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_height ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp3_, &_tmp4_); self->priv->m_minimum_height = _tmp3_; self->priv->m_natural_height = _tmp4_; } _tmp5_ = gtk_label_get_label ((GtkLabel*) self); _tmp6_ = g_strdup (_tmp5_); text = _tmp6_; _tmp7_ = text; ch = string_get_char (_tmp7_, (glong) 0); _tmp9_ = text; _tmp10_ = strlen (_tmp9_); _tmp11_ = _tmp10_; if (_tmp11_ == 1) { gunichar _tmp12_; _tmp12_ = ch; _tmp8_ = _tmp12_ == ((gunichar) '\t'); } else { _tmp8_ = FALSE; } if (_tmp8_) { gint _tmp13_; gint _tmp14_; gint _tmp15_; gint _tmp16_; _tmp13_ = self->priv->m_minimum_height; _vala_minimum_width = _tmp13_; _tmp14_ = _vala_minimum_width; self->priv->m_minimum_width = _tmp14_; _tmp15_ = self->priv->m_natural_height; _vala_natural_width = _tmp15_; _tmp16_ = _vala_natural_width; self->priv->m_natural_width = _tmp16_; _g_free0 (text); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } return; } GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_width ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp17_, &_tmp18_); _vala_minimum_width = _tmp17_; _vala_natural_width = _tmp18_; _tmp20_ = text; _tmp21_ = strlen (_tmp20_); _tmp22_ = _tmp21_; if (_tmp22_ == 1) { gboolean _tmp23_ = FALSE; gunichar _tmp24_; _tmp24_ = ch; if (_tmp24_ == ((gunichar) '\n')) { _tmp23_ = TRUE; } else { gunichar _tmp25_; _tmp25_ = ch; _tmp23_ = _tmp25_ == ((gunichar) '\r'); } _tmp19_ = _tmp23_; } else { _tmp19_ = FALSE; } if (_tmp19_) { gint _tmp26_; gint _tmp27_; gint _tmp28_; gint _tmp29_; _tmp26_ = _vala_minimum_width; _vala_minimum_width = _tmp26_ / 2; _tmp27_ = _vala_natural_width; _vala_natural_width = _tmp27_ / 2; _tmp28_ = _vala_minimum_width; self->priv->m_minimum_width = _tmp28_; _tmp29_ = _vala_natural_width; self->priv->m_natural_width = _tmp29_; _g_free0 (text); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } return; } _tmp30_ = _vala_minimum_width; _tmp31_ = self->priv->m_minimum_height; if (_tmp30_ < _tmp31_) { gint _tmp32_; _tmp32_ = self->priv->m_minimum_height; _vala_minimum_width = _tmp32_; } _tmp33_ = _vala_natural_width; _tmp34_ = self->priv->m_natural_height; if (_tmp33_ < _tmp34_) { gint _tmp35_; _tmp35_ = self->priv->m_natural_height; _vala_natural_width = _tmp35_; } _tmp36_ = _vala_minimum_width; self->priv->m_minimum_width = _tmp36_; _tmp37_ = _vala_natural_width; self->priv->m_natural_width = _tmp37_; _g_free0 (text); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } } static void ibus_emojier_ewhite_label_real_get_preferred_height (GtkWidget* base, gint* minimum_height, gint* natural_height) { IBusEmojierEWhiteLabel * self; gint _vala_minimum_height = 0; gint _vala_natural_height = 0; gboolean _tmp0_ = FALSE; gint _tmp1_; gchar* text = NULL; const gchar* _tmp5_; gchar* _tmp6_; gunichar ch = 0U; const gchar* _tmp7_; gboolean _tmp8_ = FALSE; const gchar* _tmp9_; gint _tmp10_; gint _tmp11_; gint _tmp17_ = 0; gint _tmp18_ = 0; gboolean _tmp19_ = FALSE; const gchar* _tmp20_; gint _tmp21_; gint _tmp22_; gint _tmp30_; gint _tmp31_; self = (IBusEmojierEWhiteLabel*) base; _tmp1_ = self->priv->m_minimum_width; if (_tmp1_ == 0) { gint _tmp2_; _tmp2_ = self->priv->m_natural_width; _tmp0_ = _tmp2_ == 0; } else { _tmp0_ = FALSE; } if (_tmp0_) { gint _tmp3_ = 0; gint _tmp4_ = 0; GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_width ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp3_, &_tmp4_); self->priv->m_minimum_width = _tmp3_; self->priv->m_natural_width = _tmp4_; } _tmp5_ = gtk_label_get_label ((GtkLabel*) self); _tmp6_ = g_strdup (_tmp5_); text = _tmp6_; _tmp7_ = text; ch = string_get_char (_tmp7_, (glong) 0); _tmp9_ = text; _tmp10_ = strlen (_tmp9_); _tmp11_ = _tmp10_; if (_tmp11_ == 1) { gunichar _tmp12_; _tmp12_ = ch; _tmp8_ = _tmp12_ == ((gunichar) '\v'); } else { _tmp8_ = FALSE; } if (_tmp8_) { gint _tmp13_; gint _tmp14_; gint _tmp15_; gint _tmp16_; _tmp13_ = self->priv->m_minimum_width; _vala_minimum_height = _tmp13_; _tmp14_ = _vala_minimum_height; self->priv->m_minimum_height = _tmp14_; _tmp15_ = self->priv->m_natural_width; _vala_natural_height = _tmp15_; _tmp16_ = _vala_natural_height; self->priv->m_natural_height = _tmp16_; _g_free0 (text); if (minimum_height) { *minimum_height = _vala_minimum_height; } if (natural_height) { *natural_height = _vala_natural_height; } return; } GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_height ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp17_, &_tmp18_); _vala_minimum_height = _tmp17_; _vala_natural_height = _tmp18_; _tmp20_ = text; _tmp21_ = strlen (_tmp20_); _tmp22_ = _tmp21_; if (_tmp22_ == 1) { gboolean _tmp23_ = FALSE; gunichar _tmp24_; _tmp24_ = ch; if (_tmp24_ == ((gunichar) '\n')) { _tmp23_ = TRUE; } else { gunichar _tmp25_; _tmp25_ = ch; _tmp23_ = _tmp25_ == ((gunichar) '\r'); } _tmp19_ = _tmp23_; } else { _tmp19_ = FALSE; } if (_tmp19_) { gint _tmp26_; gint _tmp27_; gint _tmp28_; gint _tmp29_; _tmp26_ = _vala_minimum_height; _vala_minimum_height = _tmp26_ / 2; _tmp27_ = _vala_natural_height; _vala_natural_height = _tmp27_ / 2; _tmp28_ = _vala_minimum_height; self->priv->m_minimum_height = _tmp28_; _tmp29_ = _vala_natural_height; self->priv->m_natural_height = _tmp29_; _g_free0 (text); if (minimum_height) { *minimum_height = _vala_minimum_height; } if (natural_height) { *natural_height = _vala_natural_height; } return; } _tmp30_ = _vala_minimum_height; self->priv->m_minimum_height = _tmp30_; _tmp31_ = _vala_natural_height; self->priv->m_natural_height = _tmp31_; _g_free0 (text); if (minimum_height) { *minimum_height = _vala_minimum_height; } if (natural_height) { *natural_height = _vala_natural_height; } } static void ibus_emojier_ewhite_label_class_init (IBusEmojierEWhiteLabelClass * klass) { ibus_emojier_ewhite_label_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (IBusEmojierEWhiteLabelPrivate)); ((GtkWidgetClass *) klass)->get_preferred_width = (void (*) (GtkWidget *, gint*, gint*)) ibus_emojier_ewhite_label_real_get_preferred_width; ((GtkWidgetClass *) klass)->get_preferred_height = (void (*) (GtkWidget *, gint*, gint*)) ibus_emojier_ewhite_label_real_get_preferred_height; G_OBJECT_CLASS (klass)->finalize = ibus_emojier_ewhite_label_finalize; } static void ibus_emojier_ewhite_label_instance_init (IBusEmojierEWhiteLabel * self) { self->priv = IBUS_EMOJIER_EWHITE_LABEL_GET_PRIVATE (self); self->priv->m_minimum_width = 0; self->priv->m_natural_width = 0; self->priv->m_minimum_height = 0; self->priv->m_natural_height = 0; } static void ibus_emojier_ewhite_label_finalize (GObject * obj) { IBusEmojierEWhiteLabel * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabel); G_OBJECT_CLASS (ibus_emojier_ewhite_label_parent_class)->finalize (obj); } static GType ibus_emojier_ewhite_label_get_type (void) { static volatile gsize ibus_emojier_ewhite_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_ewhite_label_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEWhiteLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_ewhite_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEWhiteLabel), 0, (GInstanceInitFunc) ibus_emojier_ewhite_label_instance_init, NULL }; GType ibus_emojier_ewhite_label_type_id; ibus_emojier_ewhite_label_type_id = g_type_register_static (gtk_label_get_type (), "IBusEmojierEWhiteLabel", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_ewhite_label_type_id__volatile, ibus_emojier_ewhite_label_type_id); } return ibus_emojier_ewhite_label_type_id__volatile; } static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_construct (GType object_type, const gchar* text) { IBusEmojierESelectedLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierESelectedLabel*) g_object_new (object_type, "name", "IBusEmojierSelectedLabel", NULL); if (g_strcmp0 (text, "") != 0) { gtk_label_set_label ((GtkLabel*) self, text); } return self; } static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_new (const gchar* text) { return ibus_emojier_eselected_label_construct (IBUS_EMOJIER_TYPE_ESELECTED_LABEL, text); } static void ibus_emojier_eselected_label_class_init (IBusEmojierESelectedLabelClass * klass) { ibus_emojier_eselected_label_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_eselected_label_instance_init (IBusEmojierESelectedLabel * self) { } static GType ibus_emojier_eselected_label_get_type (void) { static volatile gsize ibus_emojier_eselected_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_eselected_label_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierESelectedLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_eselected_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierESelectedLabel), 0, (GInstanceInitFunc) ibus_emojier_eselected_label_instance_init, NULL }; GType ibus_emojier_eselected_label_type_id; ibus_emojier_eselected_label_type_id = g_type_register_static (IBUS_EMOJIER_TYPE_EWHITE_LABEL, "IBusEmojierESelectedLabel", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_eselected_label_type_id__volatile, ibus_emojier_eselected_label_type_id); } return ibus_emojier_eselected_label_type_id__volatile; } static IBusEmojierEGoldLabel* ibus_emojier_egold_label_construct (GType object_type, const gchar* text) { IBusEmojierEGoldLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEGoldLabel*) g_object_new (object_type, "name", "IBusEmojierGoldLabel", NULL); if (g_strcmp0 (text, "") != 0) { gtk_label_set_label ((GtkLabel*) self, text); } return self; } static IBusEmojierEGoldLabel* ibus_emojier_egold_label_new (const gchar* text) { return ibus_emojier_egold_label_construct (IBUS_EMOJIER_TYPE_EGOLD_LABEL, text); } static void ibus_emojier_egold_label_class_init (IBusEmojierEGoldLabelClass * klass) { ibus_emojier_egold_label_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_egold_label_instance_init (IBusEmojierEGoldLabel * self) { } static GType ibus_emojier_egold_label_get_type (void) { static volatile gsize ibus_emojier_egold_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_egold_label_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEGoldLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_egold_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEGoldLabel), 0, (GInstanceInitFunc) ibus_emojier_egold_label_instance_init, NULL }; GType ibus_emojier_egold_label_type_id; ibus_emojier_egold_label_type_id = g_type_register_static (IBUS_EMOJIER_TYPE_EWHITE_LABEL, "IBusEmojierEGoldLabel", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_egold_label_type_id__volatile, ibus_emojier_egold_label_type_id); } return ibus_emojier_egold_label_type_id__volatile; } static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_construct (GType object_type, const gchar* text, GtkAlign align) { IBusEmojierEPaddedLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEPaddedLabel*) g_object_new (object_type, "name", "IBusEmojierPaddedLabel", "halign", align, "valign", GTK_ALIGN_CENTER, "margin-start", 20, "margin-end", 20, "margin-top", 6, "margin-bottom", 6, NULL); gtk_label_set_text ((GtkLabel*) self, text); return self; } static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_new (const gchar* text, GtkAlign align) { return ibus_emojier_epadded_label_construct (IBUS_EMOJIER_TYPE_EPADDED_LABEL, text, align); } static void ibus_emojier_epadded_label_class_init (IBusEmojierEPaddedLabelClass * klass) { ibus_emojier_epadded_label_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_epadded_label_instance_init (IBusEmojierEPaddedLabel * self) { } static GType ibus_emojier_epadded_label_get_type (void) { static volatile gsize ibus_emojier_epadded_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_epadded_label_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEPaddedLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_epadded_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEPaddedLabel), 0, (GInstanceInitFunc) ibus_emojier_epadded_label_instance_init, NULL }; GType ibus_emojier_epadded_label_type_id; ibus_emojier_epadded_label_type_id = g_type_register_static (gtk_label_get_type (), "IBusEmojierEPaddedLabel", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_epadded_label_type_id__volatile, ibus_emojier_epadded_label_type_id); } return ibus_emojier_epadded_label_type_id__volatile; } static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_construct (GType object_type, const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption) { IBusEmojierEPaddedLabelBox * self = NULL; IBusEmojierEPaddedLabel* label = NULL; IBusEmojierEPaddedLabel* _tmp3_; IBusEmojierEPaddedLabel* _tmp4_; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEPaddedLabelBox*) g_object_new (object_type, "name", "IBusEmojierPaddedLabelBox", "orientation", GTK_ORIENTATION_HORIZONTAL, "spacing", 0, NULL); if (direction == IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD) { IconWidget* icon = NULL; IconWidget* _tmp2_; if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL) { IconWidget* _tmp0_; _tmp0_ = icon_widget_new ("go-previous-rtl-symbolic", GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp0_); _g_object_unref0 (icon); icon = _tmp0_; } else { IconWidget* _tmp1_; _tmp1_ = icon_widget_new ("go-previous-symbolic", GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp1_); _g_object_unref0 (icon); icon = _tmp1_; } _tmp2_ = icon; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp2_, FALSE, TRUE, (guint) 0); _g_object_unref0 (icon); } _tmp3_ = ibus_emojier_epadded_label_new (text, align); g_object_ref_sink (_tmp3_); label = _tmp3_; _tmp4_ = label; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp4_, TRUE, TRUE, (guint) 0); if (caption != NULL) { IBusEmojierEPaddedLabel* label_r = NULL; IBusEmojierEPaddedLabel* _tmp5_; IBusEmojierEPaddedLabel* _tmp6_; _tmp5_ = ibus_emojier_epadded_label_new (caption, GTK_ALIGN_END); g_object_ref_sink (_tmp5_); label_r = _tmp5_; _tmp6_ = label_r; gtk_box_pack_end ((GtkBox*) self, (GtkWidget*) _tmp6_, TRUE, TRUE, (guint) 0); _g_object_unref0 (label_r); } _g_object_unref0 (label); return self; } static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_new (const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption) { return ibus_emojier_epadded_label_box_construct (IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, text, align, direction, caption); } static void ibus_emojier_epadded_label_box_class_init (IBusEmojierEPaddedLabelBoxClass * klass) { ibus_emojier_epadded_label_box_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_epadded_label_box_instance_init (IBusEmojierEPaddedLabelBox * self) { } static GType ibus_emojier_epadded_label_box_get_type (void) { static volatile gsize ibus_emojier_epadded_label_box_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_epadded_label_box_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEPaddedLabelBoxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_epadded_label_box_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEPaddedLabelBox), 0, (GInstanceInitFunc) ibus_emojier_epadded_label_box_instance_init, NULL }; GType ibus_emojier_epadded_label_box_type_id; ibus_emojier_epadded_label_box_type_id = g_type_register_static (gtk_box_get_type (), "IBusEmojierEPaddedLabelBox", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_epadded_label_box_type_id__volatile, ibus_emojier_epadded_label_box_type_id); } return ibus_emojier_epadded_label_box_type_id__volatile; } static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_construct (GType object_type) { IBusEmojierLoadProgressObject * self = NULL; self = (IBusEmojierLoadProgressObject*) g_object_new (object_type, NULL); return self; } static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_new (void) { return ibus_emojier_load_progress_object_construct (IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT); } static void g_cclosure_user_marshal_VOID__UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__UINT_UINT) (gpointer data1, guint arg_1, guint arg_2, gpointer data2); register GMarshalFunc_VOID__UINT_UINT callback; register GCClosure * cc; register gpointer data1; register gpointer data2; cc = (GCClosure *) closure; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = param_values->data[0].v_pointer; } else { data1 = param_values->data[0].v_pointer; data2 = closure->data; } callback = (GMarshalFunc_VOID__UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_value_get_uint (param_values + 1), g_value_get_uint (param_values + 2), data2); } static void ibus_emojier_load_progress_object_class_init (IBusEmojierLoadProgressObjectClass * klass) { ibus_emojier_load_progress_object_parent_class = g_type_class_peek_parent (klass); ibus_emojier_load_progress_object_signals[IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_DESERIALIZE_UNICODE_SIGNAL] = g_signal_new ("deserialize-unicode", IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); } static void ibus_emojier_load_progress_object_instance_init (IBusEmojierLoadProgressObject * self) { } static GType ibus_emojier_load_progress_object_get_type (void) { static volatile gsize ibus_emojier_load_progress_object_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_load_progress_object_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierLoadProgressObjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_load_progress_object_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierLoadProgressObject), 0, (GInstanceInitFunc) ibus_emojier_load_progress_object_instance_init, NULL }; GType ibus_emojier_load_progress_object_type_id; ibus_emojier_load_progress_object_type_id = g_type_register_static (G_TYPE_OBJECT, "IBusEmojierLoadProgressObject", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_load_progress_object_type_id__volatile, ibus_emojier_load_progress_object_type_id); } return ibus_emojier_load_progress_object_type_id__volatile; } static void ibus_emojier_class_init (IBusEmojierClass * klass) { gchar* _tmp0_; ibus_emojier_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (IBusEmojierPrivate)); ((GtkWidgetClass *) klass)->show_all = (void (*) (GtkWidget *)) ibus_emojier_real_show_all; ((GtkWidgetClass *) klass)->hide = (void (*) (GtkWidget *)) ibus_emojier_real_hide; ((GtkWidgetClass *) klass)->key_press_event = (gboolean (*) (GtkWidget *, GdkEventKey*)) ibus_emojier_real_key_press_event; G_OBJECT_CLASS (klass)->finalize = ibus_emojier_finalize; ibus_emojier_signals[IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL] = g_signal_new ("candidate-clicked", TYPE_IBUS_EMOJIER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__UINT_UINT_UINT, G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); _tmp0_ = g_strdup (""); ibus_emojier_m_warning_message = _tmp0_; } static void ibus_emojier_instance_init (IBusEmojier * self) { gchar* _tmp0_; gchar* _tmp1_; self->priv = IBUS_EMOJIER_GET_PRIVATE (self); _tmp0_ = g_strdup (""); self->priv->m_annotation = _tmp0_; self->priv->m_backward_index = -1; self->priv->m_scrolled_window = NULL; self->priv->m_is_running = FALSE; _tmp1_ = g_strdup (""); self->priv->m_input_context_path = _tmp1_; self->priv->m_category_active_index = -1; self->priv->m_enter_notify_enable = TRUE; self->priv->m_is_up_side_down = FALSE; } static void ibus_emojier_finalize (GObject * obj) { IBusEmojier * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_IBUS_EMOJIER, IBusEmojier); _themed_rgba_unref0 (self->priv->m_rgba); _g_object_unref0 (self->priv->m_vbox); _g_object_unref0 (self->priv->m_entry); _g_free0 (self->priv->m_annotation); _g_free0 (self->priv->m_backward); _g_object_unref0 (self->priv->m_scrolled_window); _g_object_unref0 (self->priv->m_list_box); _g_free0 (self->priv->m_input_context_path); _g_main_loop_unref0 (self->priv->m_loop); _g_free0 (self->priv->m_result); _g_object_unref0 (self->priv->m_lookup_table); self->priv->m_candidates = (_vala_array_free (self->priv->m_candidates, self->priv->m_candidates_length1, (GDestroyNotify) g_object_unref), NULL); _g_object_unref0 (self->priv->m_unicode_progress_bar); _g_object_unref0 (self->priv->m_unicode_percent_label); G_OBJECT_CLASS (ibus_emojier_parent_class)->finalize (obj); } GType ibus_emojier_get_type (void) { static volatile gsize ibus_emojier_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojier), 0, (GInstanceInitFunc) ibus_emojier_instance_init, NULL }; GType ibus_emojier_type_id; ibus_emojier_type_id = g_type_register_static (gtk_application_window_get_type (), "IBusEmojier", &g_define_type_info, 0); g_once_init_leave (&ibus_emojier_type_id__volatile, ibus_emojier_type_id); } return ibus_emojier_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); } static gint _vala_array_length (gpointer array) { int length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; }