diff options
Diffstat (limited to 'src/ui/messages.c')
-rw-r--r-- | src/ui/messages.c | 62 |
1 files changed, 3 insertions, 59 deletions
diff --git a/src/ui/messages.c b/src/ui/messages.c index 1194f5b..211fe94 100644 --- a/src/ui/messages.c +++ b/src/ui/messages.c | |||
@@ -24,6 +24,7 @@ | |||
24 | 24 | ||
25 | #include "messages.h" | 25 | #include "messages.h" |
26 | 26 | ||
27 | #include "text_input.h" | ||
27 | #include "../application.h" | 28 | #include "../application.h" |
28 | #include "../util.h" | 29 | #include "../util.h" |
29 | 30 | ||
@@ -39,8 +40,6 @@ _messages_iterate(UI_MESSAGES_Handle *messages, | |||
39 | messages->selected = message; | 40 | messages->selected = message; |
40 | } | 41 | } |
41 | 42 | ||
42 | |||
43 | |||
44 | void | 43 | void |
45 | _messages_handle_message(UI_MESSAGES_Handle *messages) | 44 | _messages_handle_message(UI_MESSAGES_Handle *messages) |
46 | { | 45 | { |
@@ -94,38 +93,19 @@ messages_event(UI_MESSAGES_Handle *messages, | |||
94 | { | 93 | { |
95 | case 27: | 94 | case 27: |
96 | case KEY_EXIT: | 95 | case KEY_EXIT: |
97 | { | ||
98 | app->chat.context = NULL; | 96 | app->chat.context = NULL; |
99 | break; | 97 | break; |
100 | } | ||
101 | case KEY_LEFT: | ||
102 | { | ||
103 | messages->text_pos--; | ||
104 | break; | ||
105 | } | ||
106 | case KEY_RIGHT: | ||
107 | { | ||
108 | messages->text_pos++; | ||
109 | break; | ||
110 | } | ||
111 | case KEY_UP: | 98 | case KEY_UP: |
112 | { | ||
113 | messages->line_selected--; | 99 | messages->line_selected--; |
114 | break; | 100 | break; |
115 | } | ||
116 | case KEY_DOWN: | 101 | case KEY_DOWN: |
117 | { | ||
118 | messages->line_selected++; | 102 | messages->line_selected++; |
119 | break; | 103 | break; |
120 | } | ||
121 | case '\t': | 104 | case '\t': |
122 | { | ||
123 | app->chat.show_members = TRUE; | 105 | app->chat.show_members = TRUE; |
124 | break; | 106 | break; |
125 | } | ||
126 | case '\n': | 107 | case '\n': |
127 | case KEY_ENTER: | 108 | case KEY_ENTER: |
128 | { | ||
129 | if (messages->selected) | 109 | if (messages->selected) |
130 | _messages_handle_message(messages); | 110 | _messages_handle_message(messages); |
131 | else if (messages->text_len > 0) | 111 | else if (messages->text_len > 0) |
@@ -134,55 +114,19 @@ messages_event(UI_MESSAGES_Handle *messages, | |||
134 | messages->text_len = 0; | 114 | messages->text_len = 0; |
135 | } | 115 | } |
136 | break; | 116 | break; |
137 | } | ||
138 | case KEY_BACKSPACE: | 117 | case KEY_BACKSPACE: |
139 | { | ||
140 | if (messages->selected) | 118 | if (messages->selected) |
141 | { | ||
142 | GNUNET_CHAT_message_delete( | 119 | GNUNET_CHAT_message_delete( |
143 | messages->selected, | 120 | messages->selected, |
144 | GNUNET_TIME_relative_get_zero_() | 121 | GNUNET_TIME_relative_get_zero_() |
145 | ); | 122 | ); |
146 | break; | ||
147 | } | ||
148 | |||
149 | if ((messages->text_pos < messages->text_len) && | ||
150 | (messages->text_pos > 0)) | ||
151 | for (int i = messages->text_pos; i < messages->text_len; i++) | ||
152 | messages->text[i - 1] = messages->text[i]; | ||
153 | |||
154 | if ((messages->text_pos > 0) && (messages->text_len > 0)) | ||
155 | { | ||
156 | messages->text_pos--; | ||
157 | messages->text_len--; | ||
158 | } | ||
159 | |||
160 | break; | 123 | break; |
161 | } | ||
162 | default: | 124 | default: |
163 | { | ||
164 | if ((messages->selected) || (!isprint(key))) | ||
165 | break; | ||
166 | |||
167 | for (int i = messages->text_len - 1; i >= messages->text_pos; i--) | ||
168 | messages->text[i + 1] = messages->text[i]; | ||
169 | |||
170 | messages->text[messages->text_pos++] = (char) key; | ||
171 | messages->text_len++; | ||
172 | break; | 125 | break; |
173 | } | ||
174 | } | 126 | } |
175 | 127 | ||
176 | if (messages->text_len >= TEXT_LEN_MAX) | 128 | if (!(messages->selected)) |
177 | messages->text_len = TEXT_LEN_MAX - 1; | 129 | text_input_event(messages->text, key); |
178 | |||
179 | messages->text[messages->text_len] = '\0'; | ||
180 | |||
181 | if (messages->text_pos < 0) | ||
182 | messages->text_pos = 0; | ||
183 | |||
184 | if (messages->text_pos > messages->text_len) | ||
185 | messages->text_pos = messages->text_len; | ||
186 | 130 | ||
187 | if (messages->line_selected < 0) | 131 | if (messages->line_selected < 0) |
188 | messages->line_selected = 0; | 132 | messages->line_selected = 0; |