summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui/gui-input.c45
1 files changed, 10 insertions, 35 deletions
diff --git a/src/gui/gui-input.c b/src/gui/gui-input.c
index 074093a1e..f78ef4f02 100644
--- a/src/gui/gui-input.c
+++ b/src/gui/gui-input.c
@@ -130,7 +130,8 @@ gui_input_text_changed_modifier_and_signal (struct t_gui_buffer *buffer,
buffer->input_buffer : "");
if (new_input)
{
- if (strcmp (new_input, buffer->input_buffer) != 0)
+ if (!buffer->input_buffer
+ || strcmp (new_input, buffer->input_buffer) != 0)
{
/* input has been changed by modifier, use it */
gui_input_replace_input (buffer, new_input);
@@ -163,22 +164,6 @@ gui_input_search_signal ()
}
/*
- * gui_input_move: move data in input buffer
- */
-
-void
-gui_input_move (struct t_gui_buffer *buffer, char *target, const char *source,
- int size)
-{
- int pos_source, pos_target;
-
- pos_target = target - buffer->input_buffer;
- pos_source = source - buffer->input_buffer;
-
- memmove (target, source, size);
-}
-
-/*
* gui_input_set_pos: set position in input line
*/
@@ -205,7 +190,7 @@ int
gui_input_insert_string (struct t_gui_buffer *buffer, const char *string,
int pos)
{
- int pos_start, size, length;
+ int size, length;
char *ptr_start;
if (buffer->input)
@@ -224,12 +209,10 @@ gui_input_insert_string (struct t_gui_buffer *buffer, const char *string,
/* move end of string to the right */
ptr_start = utf8_add_offset (buffer->input_buffer, pos);
- pos_start = ptr_start - buffer->input_buffer;
memmove (ptr_start + size, ptr_start, strlen (ptr_start));
/* insert new string */
ptr_start = utf8_add_offset (buffer->input_buffer, pos);
- pos_start = ptr_start - buffer->input_buffer;
strncpy (ptr_start, string, size);
buffer->input_buffer_pos += length;
@@ -551,7 +534,7 @@ gui_input_delete_previous_char (struct t_gui_window *window)
pos_last = utf8_prev_char (window->buffer->input_buffer, pos);
char_size = pos - pos_last;
size_to_move = strlen (pos);
- gui_input_move (window->buffer, pos_last, pos, size_to_move);
+ memmove (pos_last, pos, size_to_move);
window->buffer->input_buffer_size -= char_size;
window->buffer->input_buffer_length--;
window->buffer->input_buffer_pos--;
@@ -581,7 +564,7 @@ gui_input_delete_next_char (struct t_gui_window *window)
pos_next = utf8_next_char (pos);
char_size = pos_next - pos;
size_to_move = strlen (pos_next);
- gui_input_move (window->buffer, pos, pos_next, size_to_move);
+ memmove (pos, pos_next, size_to_move);
window->buffer->input_buffer_size -= char_size;
window->buffer->input_buffer_length--;
window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
@@ -636,8 +619,7 @@ gui_input_delete_previous_word (struct t_gui_window *window)
gui_input_clipboard_copy (string, size_deleted);
- gui_input_move (window->buffer, string, string + size_deleted,
- strlen (string + size_deleted));
+ memmove (string, string + size_deleted, strlen (string + size_deleted));
window->buffer->input_buffer_size -= size_deleted;
window->buffer->input_buffer_length -= length_deleted;
@@ -677,7 +659,7 @@ gui_input_delete_next_word (struct t_gui_window *window)
gui_input_clipboard_copy (start, size_deleted);
- gui_input_move (window->buffer, start, string, strlen (string));
+ memmove (start, string, strlen (string));
window->buffer->input_buffer_size -= size_deleted;
window->buffer->input_buffer_length -= length_deleted;
@@ -697,7 +679,7 @@ gui_input_delete_next_word (struct t_gui_window *window)
void
gui_input_delete_beginning_of_line (struct t_gui_window *window)
{
- int length_deleted, size_deleted, pos_start;
+ int length_deleted, size_deleted;
char *start;
if (window->buffer->input && (window->buffer->input_buffer_pos > 0))
@@ -705,14 +687,12 @@ gui_input_delete_beginning_of_line (struct t_gui_window *window)
gui_buffer_undo_snap (window->buffer);
start = utf8_add_offset (window->buffer->input_buffer,
window->buffer->input_buffer_pos);
- pos_start = start - window->buffer->input_buffer;
size_deleted = start - window->buffer->input_buffer;
length_deleted = utf8_strnlen (window->buffer->input_buffer, size_deleted);
gui_input_clipboard_copy (window->buffer->input_buffer,
start - window->buffer->input_buffer);
- gui_input_move (window->buffer, window->buffer->input_buffer,
- start, strlen (start));
+ memmove (window->buffer->input_buffer, start, strlen (start));
window->buffer->input_buffer_size -= size_deleted;
window->buffer->input_buffer_length -= length_deleted;
@@ -733,16 +713,14 @@ void
gui_input_delete_end_of_line (struct t_gui_window *window)
{
char *start;
- int size_deleted, length_deleted, pos_start;
+ int size_deleted;
if (window->buffer->input)
{
gui_buffer_undo_snap (window->buffer);
start = utf8_add_offset (window->buffer->input_buffer,
window->buffer->input_buffer_pos);
- pos_start = start - window->buffer->input_buffer;
size_deleted = strlen (start);
- length_deleted = utf8_strlen (start);
gui_input_clipboard_copy (start, size_deleted);
start[0] = '\0';
window->buffer->input_buffer_size = strlen (window->buffer->input_buffer);
@@ -783,7 +761,6 @@ gui_input_transpose_chars (struct t_gui_window *window)
{
char *start, *prev_char, saved_char[5];
int size_prev_char, size_start_char;
- int pos_prev_char, pos_start;
if (window->buffer->input && (window->buffer->input_buffer_pos > 0)
&& (window->buffer->input_buffer_length > 1))
@@ -795,9 +772,7 @@ gui_input_transpose_chars (struct t_gui_window *window)
start = utf8_add_offset (window->buffer->input_buffer,
window->buffer->input_buffer_pos);
- pos_start = start - window->buffer->input_buffer;
prev_char = utf8_prev_char (window->buffer->input_buffer, start);
- pos_prev_char = prev_char - window->buffer->input_buffer;
size_prev_char = start - prev_char;
size_start_char = utf8_char_size (start);