flush_window_buffer(win);
- ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+ if(win->type == wintype_TextBuffer) {
+ /* Move the input_position mark to the end of the window_buffer */
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(win->widget) );
+ GtkTextMark *input_position = gtk_text_buffer_get_mark(buffer, "input_position");
+ GtkTextIter end_iter;
+ gtk_text_buffer_get_end_iter(buffer, &end_iter);
+ gtk_text_buffer_move_mark(buffer, input_position, &end_iter);
+ }
+
win->input_request_type = unicode? INPUT_REQUEST_CHARACTER_UNICODE : INPUT_REQUEST_CHARACTER;
g_signal_handler_unblock( win->widget, win->char_input_keypress_handler );
gdk_threads_leave();
/* Emit the "waiting" signal to let listeners know we are ready for input */
+ ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
g_signal_emit_by_name(glk_data->self, "waiting");
}
/* 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
+}