aboutsummaryrefslogtreecommitdiff
path: root/src/ui/chat_open_dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/chat_open_dialog.c')
-rw-r--r--src/ui/chat_open_dialog.c53
1 files changed, 2 insertions, 51 deletions
diff --git a/src/ui/chat_open_dialog.c b/src/ui/chat_open_dialog.c
index 701b8e5..5b641d6 100644
--- a/src/ui/chat_open_dialog.c
+++ b/src/ui/chat_open_dialog.c
@@ -24,12 +24,11 @@
24 24
25#include "chat_open_dialog.h" 25#include "chat_open_dialog.h"
26 26
27#include <ctype.h>
28
29#include <gnunet/platform.h> 27#include <gnunet/platform.h>
30#include <gnunet/gnunet_chat_lib.h> 28#include <gnunet/gnunet_chat_lib.h>
31#include <gnunet/gnunet_util_lib.h> 29#include <gnunet/gnunet_util_lib.h>
32 30
31#include "text_input.h"
33#include "../application.h" 32#include "../application.h"
34#include "../util.h" 33#include "../util.h"
35 34
@@ -42,69 +41,21 @@ chat_open_dialog_event(UI_CHAT_OPEN_DIALOG_Handle *open_dialog,
42 { 41 {
43 case 27: 42 case 27:
44 case KEY_EXIT: 43 case KEY_EXIT:
45 {
46 open_dialog->window = NULL; 44 open_dialog->window = NULL;
47 break; 45 break;
48 }
49 case KEY_LEFT:
50 {
51 open_dialog->topic_pos--;
52 break;
53 }
54 case KEY_RIGHT:
55 {
56 open_dialog->topic_pos++;
57 break;
58 }
59 case '\n': 46 case '\n':
60 case KEY_ENTER: 47 case KEY_ENTER:
61 {
62 if (open_dialog->topic_len > 0) 48 if (open_dialog->topic_len > 0)
63 GNUNET_CHAT_group_create(app->chat.handle, open_dialog->topic); 49 GNUNET_CHAT_group_create(app->chat.handle, open_dialog->topic);
64 50
65 open_dialog->topic_len = 0; 51 open_dialog->topic_len = 0;
66 open_dialog->window = NULL; 52 open_dialog->window = NULL;
67 break; 53 break;
68 }
69 case KEY_BACKSPACE:
70 {
71 if ((open_dialog->topic_pos < open_dialog->topic_len) &&
72 (open_dialog->topic_pos > 0))
73 for (int i = open_dialog->topic_pos; i < open_dialog->topic_len; i++)
74 open_dialog->topic[i - 1] = open_dialog->topic[i];
75
76 if ((open_dialog->topic_pos > 0) && (open_dialog->topic_len > 0))
77 {
78 open_dialog->topic_pos--;
79 open_dialog->topic_len--;
80 }
81
82 break;
83 }
84 default: 54 default:
85 {
86 if (!isprint(key))
87 break; 55 break;
88
89 for (int i = open_dialog->topic_len - 1; i >= open_dialog->topic_pos; i--)
90 open_dialog->topic[i + 1] = open_dialog->topic[i];
91
92 open_dialog->topic[open_dialog->topic_pos++] = (char) key;
93 open_dialog->topic_len++;
94 break;
95 }
96 } 56 }
97 57
98 if (open_dialog->topic_len > 255) 58 text_input_event(open_dialog->topic, key);
99 open_dialog->topic_len = 255;
100
101 open_dialog->topic[open_dialog->topic_len] = '\0';
102
103 if (open_dialog->topic_pos < 0)
104 open_dialog->topic_pos = 0;
105
106 if (open_dialog->topic_pos > open_dialog->topic_len)
107 open_dialog->topic_pos = open_dialog->topic_len;
108} 59}
109 60
110void 61void