diff --git a/src/gui/curses/gui-curses-key.c b/src/gui/curses/gui-curses-key.c index a07727d..a303b4f 100644 --- a/src/gui/curses/gui-curses-key.c +++ b/src/gui/curses/gui-curses-key.c @@ -509,7 +509,13 @@ gui_key_read_cb (void *data, int fd) for (i = 0; i < ret; i++) { - gui_key_buffer_add (buffer[i]); + /* add all chars (ignore a '\n' after a '\r') */ + if ((i == 0) + || (buffer[i] != '\n') + || (buffer[i - 1] != '\r')) + { + gui_key_buffer_add (buffer[i]); + } } text_added_to_buffer = 1; diff --git a/src/gui/gui-key.c b/src/gui/gui-key.c index f9920f9..0d3c0b6 100644 --- a/src/gui/gui-key.c +++ b/src/gui/gui-key.c @@ -1386,10 +1386,13 @@ gui_key_buffer_add (unsigned char key) if (gui_key_buffer) { gui_key_buffer[gui_key_buffer_size - 1] = key; - if ((key == 13) + if (((key == '\r') || (key == '\n')) && (gui_key_buffer_size > 1) - && (gui_key_buffer[gui_key_buffer_size - 2] != 13)) + && (gui_key_buffer[gui_key_buffer_size - 2] != '\r') + && (gui_key_buffer[gui_key_buffer_size - 2] != '\n')) + { gui_key_paste_lines++; + } } else { @@ -1409,8 +1412,11 @@ int gui_key_get_paste_lines () { if ((gui_key_buffer_size > 0) - && (gui_key_buffer[gui_key_buffer_size - 1] != 13)) + && (gui_key_buffer[gui_key_buffer_size - 1] != '\r') + && (gui_key_buffer[gui_key_buffer_size - 1] != '\n')) + { return gui_key_paste_lines + 1; + } return gui_key_paste_lines; }