projects
/
rodin
/
chimara.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
More pager improvements. Pager now determines correctly which text is read by the...
[rodin/chimara.git]
/
libchimara
/
input.c
diff --git
a/libchimara/input.c
b/libchimara/input.c
index a4511dc57306e6fc2dec661f5496d568b11c8fbf..d59191641ac2d892eb40ddec1e8215eddf09b83d 100644
(file)
--- a/
libchimara/input.c
+++ b/
libchimara/input.c
@@
-1,6
+1,7
@@
#include "charset.h"
#include "magic.h"
#include "input.h"
#include "charset.h"
#include "magic.h"
#include "input.h"
+#include "pager.h"
#include "chimara-glk-private.h"
extern GPrivate *glk_data_key;
#include "chimara-glk-private.h"
extern GPrivate *glk_data_key;
@@
-32,6
+33,12
@@
request_char_event_common(winid_t win, gboolean unicode)
/* Emit the "waiting" signal to let listeners know we are ready for input */
g_signal_emit_by_name(glk_data->self, "waiting");
/* Emit the "waiting" signal to let listeners know we are ready for input */
g_signal_emit_by_name(glk_data->self, "waiting");
+
+ /* Schedule a check for the pager */
+ /*
+ if(win->type == wintype_TextBuffer)
+ g_idle_add(pager_check, win);
+ */
}
/**
}
/**
@@
-196,6
+203,11
@@
text_buffer_request_line_event_common(winid_t win, glui32 maxlen, gboolean inser
gtk_widget_grab_focus(win->widget);
gdk_threads_leave();
gtk_widget_grab_focus(win->widget);
gdk_threads_leave();
+
+ /* Schedule a check for the pager */
+ /*
+ g_idle_add(pager_check, win);
+ */
}
/**
}
/**
@@
-293,6
+305,8
@@
glk_request_line_event_uni(winid_t win, glui32 *buf, glui32 maxlen, glui32 initl
if(glk_data->register_arr)
win->buffer_rock = (*glk_data->register_arr)(buf, maxlen, "&+#!Iu");
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;
win->input_request_type = INPUT_REQUEST_LINE_UNICODE;
win->line_input_buffer_unicode = buf;
win->line_input_buffer_max_len = maxlen;
@@
-421,6
+435,10
@@
on_char_input_key_press_event(GtkWidget *widget, GdkEventKey *event, winid_t win
the shift key when the user tries to type a capital letter */
if(event->is_modifier)
return FALSE; /* don't stop the event */
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);
glui32 keycode = keyval_to_glk_keycode(event->keyval, win->input_request_type == INPUT_REQUEST_CHARACTER_UNICODE);
@@
-442,6
+460,8
@@
on_line_input_key_press_event(GtkWidget *widget, GdkEventKey *event, winid_t win
switch(win->type)
{
case wintype_TextBuffer:
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
/* History up/down */
if(event->keyval == GDK_Up || event->keyval == GDK_KP_Up