static gboolean idle_update_entry (gpointer entry) { NmtNewtEntryPrivate *priv = NMT_NEWT_ENTRY_GET_PRIVATE (entry); newtComponent co = nmt_newt_component_get_component (entry); char *text; priv->idle_update = 0; if (!co) return FALSE; priv->last_cursor_pos = newtEntryGetCursorPosition (co); text = nmt_newt_locale_to_utf8 (newtEntryGetValue (co)); nmt_newt_entry_set_text_internal (entry, text, NULL); g_free (text); return FALSE; }
static void nmt_newt_form_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { NmtNewtFormPrivate *priv = NMT_NEWT_FORM_GET_PRIVATE (object); switch (prop_id) { case PROP_TITLE: if (priv->title_lc) { g_value_take_string (value, nmt_newt_locale_to_utf8 (priv->title_lc)); } else g_value_set_string (value, NULL); break; case PROP_X: g_value_set_uint (value, priv->x); break; case PROP_Y: g_value_set_uint (value, priv->y); break; case PROP_WIDTH: g_value_set_uint (value, priv->width); break; case PROP_HEIGHT: g_value_set_uint (value, priv->height); break; case PROP_PADDING: g_value_set_uint (value, priv->padding); break; case PROP_ESCAPE_EXITS: g_value_set_boolean (value, priv->escape_exits); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static int entry_filter (newtComponent entry, void *self, int ch, int cursor) { NmtNewtEntryPrivate *priv = NMT_NEWT_ENTRY_GET_PRIVATE (self); if (g_ascii_isprint (ch)) { if (priv->filter) { char *text = nmt_newt_locale_to_utf8 (newtEntryGetValue (entry)); if (!priv->filter (self, text, ch, cursor, priv->filter_data)) { g_free (text); return 0; } g_free (text); } } if (!priv->idle_update) priv->idle_update = g_idle_add (idle_update_entry, self); return ch; }