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) );
GtkTextIter end;
gtk_text_buffer_get_end_iter(buffer, &end);
gtk_text_buffer_insert(buffer, &end, "\n", 1);
+ gtk_text_buffer_place_cursor(buffer, &end);
/* Make the window uneditable again and retrieve the text that was input */
gtk_text_view_set_editable(GTK_TEXT_VIEW(win->widget), FALSE);
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;
}