static void
text_grid_request_line_event_common(winid_t win, glui32 maxlen, gboolean insert, gchar *inserttext)
{
+ /* All outstanding printing _must_ be finished before putting an input entry
+ into the buffer */
+ flush_window_buffer(win);
+
gdk_threads_enter();
GtkTextBuffer *buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(win->widget) );
/* Apply the correct style to the input prompt */
GtkTextIter input_iter;
gtk_text_buffer_get_iter_at_mark(buffer, &input_iter, input_position);
+ gtk_text_buffer_apply_tag_by_name(buffer, "default", &input_iter, &end_iter);
gtk_text_buffer_apply_tag_by_name(buffer, "input", &input_iter, &end_iter);
+ gtk_text_buffer_apply_tag_by_name(buffer, "glk-input", &input_iter, &end_iter);
gtk_text_view_set_editable(GTK_TEXT_VIEW(win->widget), TRUE);
gtk_text_buffer_get_end_iter(buffer, &end);
g_signal_handler_block(buffer, win->insert_text_handler);
- gtk_text_buffer_insert_with_tags_by_name(buffer, &end, win->history_pos->data, -1, "default", "input", NULL);
+ gtk_text_buffer_insert_with_tags_by_name(buffer, &end, win->history_pos->data, -1, "default", "input", "glk-input", NULL);
+
g_signal_handler_unblock(buffer, win->insert_text_handler);
return TRUE;
}
g_signal_handler_unblock(input_entry, win->line_input_entry_changed);
return TRUE;
}
+ else if(g_slist_find(win->current_extra_line_terminators, GUINT_TO_POINTER(event->keyval)))
+ {
+ /* If this key was a line terminator, pretend we pressed enter */
+ on_input_entry_activate(input_entry, win);
+ }
return FALSE;
}
else
WARNING_S("Ignoring invalid line terminator", gdk_keyval_name(key));
}
-}
\ No newline at end of file
+}