/[weechat]/weechat/src/gui/curses/gui-input.c
ViewVC logotype

Diff of /weechat/src/gui/curses/gui-input.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.53 by flashcode, Tue Oct 18 17:46:54 2005 UTC revision 1.54 by flashcode, Fri Oct 21 13:59:55 2005 UTC
# Line 39  Line 39 
39  #include "../../common/command.h"  #include "../../common/command.h"
40  #include "../../common/hotlist.h"  #include "../../common/hotlist.h"
41  #include "../../common/fifo.h"  #include "../../common/fifo.h"
42    #include "../../common/utf8.h"
43  #include "../../irc/irc.h"  #include "../../irc/irc.h"
44    
45    
# Line 163  gui_input_grab_end () Line 164  gui_input_grab_end ()
164  void  void
165  gui_input_read ()  gui_input_read ()
166  {  {
167      int key, i;      int key, i, insert_ok;
168      char key_str[32];      char key_str[32];
169            
170      i = 0;      i = 0;
# Line 175  gui_input_read () Line 176  gui_input_read ()
176              gui_input_grab_end ();              gui_input_grab_end ();
177                    
178          key = getch ();          key = getch ();
179            insert_ok = 1;
180                    
181          if (key == ERR)          if (key == ERR)
182          {          {
# Line 191  gui_input_read () Line 193  gui_input_read ()
193                                    
194          if (key < 32)          if (key < 32)
195          {          {
196                insert_ok = 0;
197              key_str[0] = '^';              key_str[0] = '^';
198              key_str[1] = (char) key + '@';              key_str[1] = (char) key + '@';
199              key_str[2] = '\0';              key_str[2] = '\0';
# Line 203  gui_input_read () Line 206  gui_input_read ()
206          }          }
207          else          else
208          {          {
209              if (key > 0xff)              if (local_utf8)
210              {              {
211                  key_str[0] = (char) (key >> 8);                  /* 1 char: 0vvvvvvv */
212                  key_str[1] = (char) (key & 0xff);                  if (key < 0x80)
213                  key_str[2] = '\0';                  {
214                        key_str[0] = (char) key;
215                        key_str[1] = '\0';
216                    }
217                    /* 2 chars: 110vvvvv 10vvvvvv */
218                    else if ((key & 0xE0) == 0xC0)
219                    {
220                        key_str[0] = (char) key;
221                        key_str[1] = (char) (getch ());
222                        key_str[2] = '\0';
223                    }
224                     /* 3 chars: 1110vvvv 10vvvvvv 10vvvvvv */
225                    else if ((key & 0xF0) == 0xE0)
226                    {
227                        key_str[0] = (char) key;
228                        key_str[1] = (char) (getch ());
229                        key_str[2] = (char) (getch ());
230                        key_str[3] = '\0';
231                    }
232                    /* 4 chars: 11110vvv 10vvvvvv 10vvvvvv 10vvvvvv */
233                    else if ((key & 0xF8) == 0xF0)
234                    {
235                        key_str[0] = (char) key;
236                        key_str[1] = (char) (getch ());
237                        key_str[2] = (char) (getch ());
238                        key_str[3] = (char) (getch ());
239                        key_str[4] = '\0';
240                    }
241              }              }
242              else              else
243              {              {
# Line 224  gui_input_read () Line 254  gui_input_read ()
254                    
255          /*gui_printf (gui_current_window->buffer, "gui_input_read: key = %s (%d)\n", key_str, key);*/          /*gui_printf (gui_current_window->buffer, "gui_input_read: key = %s (%d)\n", key_str, key);*/
256                    
257          if (gui_key_pressed (key_str) != 0)          if ((gui_key_pressed (key_str) != 0) && (insert_ok))
258              gui_input_insert_char (gui_current_window, key);          {
259                gui_input_insert_string (gui_current_window, key_str, -1);
260                gui_current_window->buffer->input_buffer_pos += utf8_strlen (key_str);
261                gui_draw_buffer_input (gui_current_window->buffer, 0);
262                gui_current_window->buffer->completion.position = -1;
263            }
264                    
265          i++;          i++;
266      }      }

Legend:
Removed from v.1.53  
changed lines
  Added in v.1.54

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26