GTK + v2 в C с использованием Code :: Blocks на Win7.
Я использую сигнал "insert_text" для обратного вызова виджета записи.
Как изменить цвет фона поля ввода в функции обратного вызова?
Я думаю, это не то же самое, что изменение цвета виджета.
Мой код:
Обратный звонок ...
static void VerifyDOW (GtkEntry *entry,
const gchar *text,
gint length,
gint *position,
gpointer data)
{
GtkEditable *editable = GTK_EDITABLE(entry);
const gchar *result = gtk_editable_get_chars (editable, 0, -1); // = g_new (gchar, length);
int i, count = strlen(result);
for (i=0; i < count; i++) {
if ((! isdigit(result[i])) & (result[i] != ',')) {
i = count;
g_signal_handlers_block_by_func (G_OBJECT (editable), G_CALLBACK (VerifyDOW), data);
/* CHANGE FIELD, NOT WIDGET, COLOR HERE */
g_signal_handlers_unblock_by_func (G_OBJECT (editable), G_CALLBACK (VerifyDOW), data);
}
}
g_signal_stop_emission_by_name (G_OBJECT (editable), "insert_text");
g_free (result);
}
Теперь в Main () ...
entry = gtk_entry_new();
gtk_widget_set_tooltip_text (entry, "Valid input, 1..7 and ,");
gtk_entry_set_text(GTK_ENTRY(entry), "1,3,5");
g_signal_connect(G_OBJECT(entry), "insert_text", g_CALLBACK(VerifyDOW), NULL);
gtk_table_attach(GTK_TABLE(table), entry...
Спасибо, Марк.