#include "charset.h"
#include "magic.h"
#include "input.h"
+#include "pager.h"
#include "chimara-glk-private.h"
extern GPrivate *glk_data_key;
/* Make the entry as small as possible to fit with the text */
gtk_entry_set_has_frame(GTK_ENTRY(win->input_entry), FALSE);
GtkBorder border = { 0, 0, 0, 0 };
+
+ /* COMPAT: */
+#if GTK_CHECK_VERSION(2,10,0)
gtk_entry_set_inner_border(GTK_ENTRY(win->input_entry), &border);
+#endif
gtk_entry_set_max_length(GTK_ENTRY(win->input_entry), win->input_length);
gtk_entry_set_width_chars(GTK_ENTRY(win->input_entry), win->input_length);
if(glk_data->register_arr)
win->buffer_rock = (*glk_data->register_arr)(buf, maxlen, "&+#!Iu");
+
+
win->input_request_type = INPUT_REQUEST_LINE_UNICODE;
win->line_input_buffer_unicode = buf;
win->line_input_buffer_max_len = maxlen;
gboolean
on_char_input_key_press_event(GtkWidget *widget, GdkEventKey *event, winid_t win)
{
+ /* Ignore modifier keys, otherwise the char input will already trigger on
+ the shift key when the user tries to type a capital letter */
+ if(event->is_modifier)
+ return FALSE; /* don't stop the event */
+
+ /* All text up to the input position is now regarded as being read by the user */
+ if(win->type == wintype_TextBuffer)
+ pager_update(win);
+
glui32 keycode = keyval_to_glk_keycode(event->keyval, win->input_request_type == INPUT_REQUEST_CHARACTER_UNICODE);
ChimaraGlk *glk = CHIMARA_GLK(gtk_widget_get_ancestor(widget, CHIMARA_TYPE_GLK));
switch(win->type)
{
case wintype_TextBuffer:
+ /* All text up to the input position is now regarded as being read by the user */
+ pager_update(win);
/* History up/down */
if(event->keyval == GDK_Up || event->keyval == GDK_KP_Up