From 3d41a3fa2f90ba14666b1809aaff9cc97e4c9414 Mon Sep 17 00:00:00 2001 From: Emmanuel Bouthenot Date: Wed, 13 Jul 2005 08:32:02 +0000 Subject: correct bugs in clipboard management --- src/gui/gui-common.c | 51 +++++++++++++++++++++++++------------------- weechat/src/gui/gui-common.c | 51 +++++++++++++++++++++++++------------------- 2 files changed, 58 insertions(+), 44 deletions(-) diff --git a/src/gui/gui-common.c b/src/gui/gui-common.c index 18af085f7..7eeb4bfed 100644 --- a/src/gui/gui-common.c +++ b/src/gui/gui-common.c @@ -980,23 +980,26 @@ gui_input_delete_next_word () void gui_input_delete_begin_of_line () { - int i; + if (gui_current_window->buffer->input_buffer_pos > 0) + { + int i; - gui_input_clipboard_copy(gui_current_window->buffer->input_buffer, - gui_current_window->buffer->input_buffer_pos); + gui_input_clipboard_copy(gui_current_window->buffer->input_buffer, + gui_current_window->buffer->input_buffer_pos); - for (i = gui_current_window->buffer->input_buffer_pos; - i < gui_current_window->buffer->input_buffer_size; i++) + for (i = gui_current_window->buffer->input_buffer_pos; + i < gui_current_window->buffer->input_buffer_size; i++) gui_current_window->buffer->input_buffer[i - gui_current_window->buffer->input_buffer_pos] = - gui_current_window->buffer->input_buffer[i]; - - gui_current_window->buffer->input_buffer_size -= + gui_current_window->buffer->input_buffer[i]; + + gui_current_window->buffer->input_buffer_size -= gui_current_window->buffer->input_buffer_pos; - gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0'; - gui_current_window->buffer->input_buffer_pos = 0; - gui_draw_buffer_input (gui_current_window->buffer, 0); - gui_input_optimize_buffer_size (gui_current_window->buffer); - gui_current_window->buffer->completion.position = -1; + gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0'; + gui_current_window->buffer->input_buffer_pos = 0; + gui_draw_buffer_input (gui_current_window->buffer, 0); + gui_input_optimize_buffer_size (gui_current_window->buffer); + gui_current_window->buffer->completion.position = -1; + } } /* @@ -1006,16 +1009,20 @@ gui_input_delete_begin_of_line () void gui_input_delete_end_of_line () { - gui_input_clipboard_copy(gui_current_window->buffer->input_buffer + - gui_current_window->buffer->input_buffer_pos, - gui_current_window->buffer->input_buffer_size); + if (gui_current_window->buffer->input_buffer_pos > 0) + { + gui_input_clipboard_copy(gui_current_window->buffer->input_buffer + + gui_current_window->buffer->input_buffer_pos, + gui_current_window->buffer->input_buffer_size - + gui_current_window->buffer->input_buffer_pos); + } - gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' '; - gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ; - gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0'; - gui_draw_buffer_input (gui_current_window->buffer, 0); - gui_input_optimize_buffer_size (gui_current_window->buffer); - gui_current_window->buffer->completion.position = -1; + gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' '; + gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ; + gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0'; + gui_draw_buffer_input (gui_current_window->buffer, 0); + gui_input_optimize_buffer_size (gui_current_window->buffer); + gui_current_window->buffer->completion.position = -1; } /* diff --git a/weechat/src/gui/gui-common.c b/weechat/src/gui/gui-common.c index 18af085f7..7eeb4bfed 100644 --- a/weechat/src/gui/gui-common.c +++ b/weechat/src/gui/gui-common.c @@ -980,23 +980,26 @@ gui_input_delete_next_word () void gui_input_delete_begin_of_line () { - int i; + if (gui_current_window->buffer->input_buffer_pos > 0) + { + int i; - gui_input_clipboard_copy(gui_current_window->buffer->input_buffer, - gui_current_window->buffer->input_buffer_pos); + gui_input_clipboard_copy(gui_current_window->buffer->input_buffer, + gui_current_window->buffer->input_buffer_pos); - for (i = gui_current_window->buffer->input_buffer_pos; - i < gui_current_window->buffer->input_buffer_size; i++) + for (i = gui_current_window->buffer->input_buffer_pos; + i < gui_current_window->buffer->input_buffer_size; i++) gui_current_window->buffer->input_buffer[i - gui_current_window->buffer->input_buffer_pos] = - gui_current_window->buffer->input_buffer[i]; - - gui_current_window->buffer->input_buffer_size -= + gui_current_window->buffer->input_buffer[i]; + + gui_current_window->buffer->input_buffer_size -= gui_current_window->buffer->input_buffer_pos; - gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0'; - gui_current_window->buffer->input_buffer_pos = 0; - gui_draw_buffer_input (gui_current_window->buffer, 0); - gui_input_optimize_buffer_size (gui_current_window->buffer); - gui_current_window->buffer->completion.position = -1; + gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0'; + gui_current_window->buffer->input_buffer_pos = 0; + gui_draw_buffer_input (gui_current_window->buffer, 0); + gui_input_optimize_buffer_size (gui_current_window->buffer); + gui_current_window->buffer->completion.position = -1; + } } /* @@ -1006,16 +1009,20 @@ gui_input_delete_begin_of_line () void gui_input_delete_end_of_line () { - gui_input_clipboard_copy(gui_current_window->buffer->input_buffer + - gui_current_window->buffer->input_buffer_pos, - gui_current_window->buffer->input_buffer_size); + if (gui_current_window->buffer->input_buffer_pos > 0) + { + gui_input_clipboard_copy(gui_current_window->buffer->input_buffer + + gui_current_window->buffer->input_buffer_pos, + gui_current_window->buffer->input_buffer_size - + gui_current_window->buffer->input_buffer_pos); + } - gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' '; - gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ; - gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0'; - gui_draw_buffer_input (gui_current_window->buffer, 0); - gui_input_optimize_buffer_size (gui_current_window->buffer); - gui_current_window->buffer->completion.position = -1; + gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' '; + gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ; + gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0'; + gui_draw_buffer_input (gui_current_window->buffer, 0); + gui_input_optimize_buffer_size (gui_current_window->buffer); + gui_current_window->buffer->completion.position = -1; } /* -- cgit v1.2.3