/[weechat]/weechat/src/gui/gui-common.c
ViewVC logotype

Diff of /weechat/src/gui/gui-common.c

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

revision 1.45 by flashcode, Thu Jul 14 16:35:59 2005 UTC revision 1.46 by flashcode, Sat Jul 16 11:14:47 2005 UTC
# Line 201  gui_buffer_new (t_gui_window *window, vo Line 201  gui_buffer_new (t_gui_window *window, vo
201              log_start (new_buffer);              log_start (new_buffer);
202                    
203          /* init input buffer */          /* init input buffer */
204          new_buffer->input_buffer_alloc = INPUT_BUFFER_BLOCK_SIZE;          new_buffer->has_input = (new_buffer->dcc) ? 0 : 1;
205          new_buffer->input_buffer = (char *) malloc (INPUT_BUFFER_BLOCK_SIZE);          if (new_buffer->has_input)
206          new_buffer->input_buffer[0] = '\0';          {
207                new_buffer->input_buffer_alloc = INPUT_BUFFER_BLOCK_SIZE;
208                new_buffer->input_buffer = (char *) malloc (INPUT_BUFFER_BLOCK_SIZE);
209                new_buffer->input_buffer[0] = '\0';
210            }
211            else
212                new_buffer->input_buffer = NULL;
213          new_buffer->input_buffer_size = 0;          new_buffer->input_buffer_size = 0;
214          new_buffer->input_buffer_pos = 0;          new_buffer->input_buffer_pos = 0;
215          new_buffer->input_buffer_1st_display = 0;          new_buffer->input_buffer_1st_display = 0;
# Line 565  gui_input_optimize_buffer_size (t_gui_bu Line 571  gui_input_optimize_buffer_size (t_gui_bu
571  {  {
572      int optimal_size;      int optimal_size;
573            
574      optimal_size = ((buffer->input_buffer_size / INPUT_BUFFER_BLOCK_SIZE) *      if (buffer->has_input)
575                     INPUT_BUFFER_BLOCK_SIZE) + INPUT_BUFFER_BLOCK_SIZE;      {
576      if (buffer->input_buffer_alloc != optimal_size)          optimal_size = ((buffer->input_buffer_size / INPUT_BUFFER_BLOCK_SIZE) *
577                            INPUT_BUFFER_BLOCK_SIZE) + INPUT_BUFFER_BLOCK_SIZE;
578            if (buffer->input_buffer_alloc != optimal_size)
579            {
580                buffer->input_buffer_alloc = optimal_size;
581                buffer->input_buffer = realloc (buffer->input_buffer, optimal_size);
582            }
583        }
584    }
585    
586    /*
587     * gui_input_clipboard_copy: copy string into clipboard
588     */
589    
590    void
591    gui_input_clipboard_copy (char *buffer, int size)
592    {
593        if (size <= 0)
594            return;
595        
596        if (gui_input_clipboard != NULL)
597            free(gui_input_clipboard);
598        
599        gui_input_clipboard = (char *) malloc( (size + 1) * sizeof(*gui_input_clipboard));
600        
601        if (gui_input_clipboard)
602      {      {
603          buffer->input_buffer_alloc = optimal_size;          memcpy(gui_input_clipboard, buffer, size);
604          buffer->input_buffer = realloc (buffer->input_buffer, optimal_size);          gui_input_clipboard[size] = '\0';
605        }
606    }
607    
608    /*
609     * gui_input_clipboard_paste: paste clipboard at cursor pos in input line
610     */
611    
612    void
613    gui_input_clipboard_paste ()
614    {
615        if (gui_current_window->buffer->has_input && gui_input_clipboard)
616        {
617            gui_input_insert_string (gui_input_clipboard, gui_current_window->buffer->input_buffer_pos);
618            gui_current_window->buffer->input_buffer_pos += strlen (gui_input_clipboard);
619            gui_draw_buffer_input (gui_current_window->buffer, 0);
620            gui_current_window->buffer->completion.position = -1;
621      }      }
622  }  }
623    
624  /*  /*
625   * gui_input_insert_string: insert a string into the input buffer   * gui_input_insert_string: insert a string into the input buffer
626     *                          if pos == -1, string is inserted at cursor position
627   */   */
628    
629  void  void
# Line 583  gui_input_insert_string (char *string, i Line 631  gui_input_insert_string (char *string, i
631  {  {
632      int i, start, end, length;      int i, start, end, length;
633            
634      length = strlen (string);      if (gui_current_window->buffer->has_input)
635            {
636      /* increase buffer size */          if (pos == -1)
637      gui_current_window->buffer->input_buffer_size += length;              pos = gui_current_window->buffer->input_buffer_pos;
638      gui_input_optimize_buffer_size (gui_current_window->buffer);          
639      gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';          length = strlen (string);
640                
641      /* move end of string to the right */          /* increase buffer size */
642      start = pos + length;          gui_current_window->buffer->input_buffer_size += length;
643      end = gui_current_window->buffer->input_buffer_size - 1;          gui_input_optimize_buffer_size (gui_current_window->buffer);
644      for (i = end; i >= start; i--)          gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
645          gui_current_window->buffer->input_buffer[i] =          
646              gui_current_window->buffer->input_buffer[i - length];          /* move end of string to the right */
647                start = pos + length;
648      /* insert new string */          end = gui_current_window->buffer->input_buffer_size - 1;
649      strncpy (gui_current_window->buffer->input_buffer + pos, string, length);          for (i = end; i >= start; i--)
650                gui_current_window->buffer->input_buffer[i] =
651                    gui_current_window->buffer->input_buffer[i - length];
652            
653            /* insert new string */
654            strncpy (gui_current_window->buffer->input_buffer + pos, string, length);
655        }
656  }  }
657    
658  /*  /*
# Line 683  gui_input_insert_char (int key) Line 737  gui_input_insert_char (int key)
737                  break;                  break;
738          }          }
739      }      }
740      else      else if (gui_current_window->buffer->has_input)
741      {      {
742          /*gui_printf (gui_current_window->buffer,          /*gui_printf (gui_current_window->buffer,
743            "[Debug] key pressed = %d, hex = %02X, octal = %o\n", key, key, key);*/            "[Debug] key pressed = %d, hex = %02X, octal = %o\n", key, key, key);*/
# Line 707  gui_input_return () Line 761  gui_input_return ()
761  {  {
762      t_gui_buffer *ptr_buffer;      t_gui_buffer *ptr_buffer;
763            
764      if (!gui_current_window->buffer->dcc)          if (gui_current_window->buffer->has_input)
765      {      {
766          if (gui_current_window->buffer->input_buffer_size > 0)          if (gui_current_window->buffer->input_buffer_size > 0)
767          {          {
# Line 740  gui_input_tab () Line 794  gui_input_tab ()
794  {  {
795      int i;      int i;
796    
797      if (!gui_current_window->buffer->dcc)      if (gui_current_window->buffer->has_input)
798      {      {
799          completion_search (&(gui_current_window->buffer->completion),          completion_search (&(gui_current_window->buffer->completion),
800                             CHANNEL(gui_current_window->buffer),                             CHANNEL(gui_current_window->buffer),
# Line 837  gui_input_backspace () Line 891  gui_input_backspace ()
891  {  {
892      int i;      int i;
893    
894      if (!gui_current_window->buffer->dcc)      if (gui_current_window->buffer->has_input)
895      {      {
896          if (gui_current_window->buffer->input_buffer_pos > 0)          if (gui_current_window->buffer->input_buffer_pos > 0)
897          {          {
# Line 867  gui_input_delete () Line 921  gui_input_delete ()
921  {  {
922      int i;      int i;
923    
924      if (!gui_current_window->buffer->dcc)      if (gui_current_window->buffer->has_input)
925      {      {
926          if (gui_current_window->buffer->input_buffer_pos <          if (gui_current_window->buffer->input_buffer_pos <
927              gui_current_window->buffer->input_buffer_size)              gui_current_window->buffer->input_buffer_size)
# Line 897  gui_input_delete_previous_word () Line 951  gui_input_delete_previous_word ()
951  {  {
952      int i, j, num_char_deleted, num_char_end;      int i, j, num_char_deleted, num_char_end;
953            
954      if (gui_current_window->buffer->input_buffer_pos > 0)      if (gui_current_window->buffer->has_input)
955      {      {
956          i = gui_current_window->buffer->input_buffer_pos - 1;          if (gui_current_window->buffer->input_buffer_pos > 0)
         while ((i >= 0) &&  
             (gui_current_window->buffer->input_buffer[i] == ' '))  
             i--;  
         if (i >= 0)  
957          {          {
958                i = gui_current_window->buffer->input_buffer_pos - 1;
959              while ((i >= 0) &&              while ((i >= 0) &&
960                  (gui_current_window->buffer->input_buffer[i] != ' '))                     (gui_current_window->buffer->input_buffer[i] == ' '))
961                  i--;                  i--;
962              if (i >= 0)              if (i >= 0)
963              {              {
964                  while ((i >= 0) &&                  while ((i >= 0) &&
965                      (gui_current_window->buffer->input_buffer[i] == ' '))                         (gui_current_window->buffer->input_buffer[i] != ' '))
966                      i--;                      i--;
967                    if (i >= 0)
968                    {
969                        while ((i >= 0) &&
970                               (gui_current_window->buffer->input_buffer[i] == ' '))
971                            i--;
972                    }
973              }              }
974          }              
975                        if (i >= 0)
976          if (i >= 0)                  i++;
977              i++;              i++;
978          i++;              num_char_deleted = gui_current_window->buffer->input_buffer_pos - i;
979          num_char_deleted = gui_current_window->buffer->input_buffer_pos - i;              num_char_end = gui_current_window->buffer->input_buffer_size -
980          num_char_end = gui_current_window->buffer->input_buffer_size -                  gui_current_window->buffer->input_buffer_pos;
981              gui_current_window->buffer->input_buffer_pos;              
982                gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
983          gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +                                       gui_current_window->buffer->input_buffer_pos - num_char_deleted,
984                                   gui_current_window->buffer->input_buffer_pos - num_char_deleted,                                       num_char_deleted);
985                                   num_char_deleted);              
986                        for (j = 0; j < num_char_end; j++)
987          for (j = 0; j < num_char_end; j++)                  gui_current_window->buffer->input_buffer[i + j] =
988              gui_current_window->buffer->input_buffer[i + j] =                      gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos + j];
989                  gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos + j];              
990                        gui_current_window->buffer->input_buffer_size -= num_char_deleted;
991          gui_current_window->buffer->input_buffer_size -= num_char_deleted;              gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
992          gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';              gui_current_window->buffer->input_buffer_pos = i;
993          gui_current_window->buffer->input_buffer_pos = i;              gui_draw_buffer_input (gui_current_window->buffer, 0);
994          gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_input_optimize_buffer_size (gui_current_window->buffer);
995          gui_input_optimize_buffer_size (gui_current_window->buffer);              gui_current_window->buffer->completion.position = -1;
996          gui_current_window->buffer->completion.position = -1;          }
997      }      }
998  }  }
999    
# Line 949  gui_input_delete_next_word () Line 1006  gui_input_delete_next_word ()
1006  {  {
1007      int i, j, num_char_deleted;      int i, j, num_char_deleted;
1008            
1009      i = gui_current_window->buffer->input_buffer_pos;      if (gui_current_window->buffer->has_input)
     while (i < gui_current_window->buffer->input_buffer_size)  
1010      {      {
1011          if ((gui_current_window->buffer->input_buffer[i] == ' ')          i = gui_current_window->buffer->input_buffer_pos;
1012              && i != gui_current_window->buffer->input_buffer_pos)          while (i < gui_current_window->buffer->input_buffer_size)
1013              break;          {
1014          i++;              if ((gui_current_window->buffer->input_buffer[i] == ' ')
1015      }                  && i != gui_current_window->buffer->input_buffer_pos)
1016      num_char_deleted = i - gui_current_window->buffer->input_buffer_pos;                  break;
1017                i++;
1018      gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +          }
1019                               gui_current_window->buffer->input_buffer_pos, num_char_deleted);          num_char_deleted = i - gui_current_window->buffer->input_buffer_pos;
1020                
1021      for (j = i; j < gui_current_window->buffer->input_buffer_size; j++)          gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
1022          gui_current_window->buffer->input_buffer[j - num_char_deleted] =                                   gui_current_window->buffer->input_buffer_pos, num_char_deleted);
1023              gui_current_window->buffer->input_buffer[j];          
1024                for (j = i; j < gui_current_window->buffer->input_buffer_size; j++)
1025      gui_current_window->buffer->input_buffer_size -= num_char_deleted;              gui_current_window->buffer->input_buffer[j - num_char_deleted] =
1026      gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';                  gui_current_window->buffer->input_buffer[j];
1027      gui_draw_buffer_input (gui_current_window->buffer, 0);          
1028      gui_input_optimize_buffer_size (gui_current_window->buffer);          gui_current_window->buffer->input_buffer_size -= num_char_deleted;
1029      gui_current_window->buffer->completion.position = -1;          gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
1030            gui_draw_buffer_input (gui_current_window->buffer, 0);
1031            gui_input_optimize_buffer_size (gui_current_window->buffer);
1032            gui_current_window->buffer->completion.position = -1;
1033        }
1034  }  }
1035    
1036  /*  /*
# Line 980  gui_input_delete_next_word () Line 1040  gui_input_delete_next_word ()
1040  void  void
1041  gui_input_delete_begin_of_line ()  gui_input_delete_begin_of_line ()
1042  {  {
1043    if (gui_current_window->buffer->input_buffer_pos > 0)      int i;
     {  
       int i;  
       
       gui_input_clipboard_copy(gui_current_window->buffer->input_buffer,  
                                gui_current_window->buffer->input_buffer_pos);  
1044            
1045        for (i = gui_current_window->buffer->input_buffer_pos;      if (gui_current_window->buffer->has_input)
1046             i < gui_current_window->buffer->input_buffer_size; i++)      {
1047          gui_current_window->buffer->input_buffer[i - gui_current_window->buffer->input_buffer_pos] =          if (gui_current_window->buffer->input_buffer_pos > 0)
1048            gui_current_window->buffer->input_buffer[i];          {
1049                      gui_input_clipboard_copy (gui_current_window->buffer->input_buffer,
1050        gui_current_window->buffer->input_buffer_size -=                                        gui_current_window->buffer->input_buffer_pos);
1051          gui_current_window->buffer->input_buffer_pos;              
1052        gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';              for (i = gui_current_window->buffer->input_buffer_pos;
1053        gui_current_window->buffer->input_buffer_pos = 0;                   i < gui_current_window->buffer->input_buffer_size; i++)
1054        gui_draw_buffer_input (gui_current_window->buffer, 0);                  gui_current_window->buffer->input_buffer[i - gui_current_window->buffer->input_buffer_pos] =
1055        gui_input_optimize_buffer_size (gui_current_window->buffer);                      gui_current_window->buffer->input_buffer[i];
1056        gui_current_window->buffer->completion.position = -1;              
1057                gui_current_window->buffer->input_buffer_size -=
1058                    gui_current_window->buffer->input_buffer_pos;
1059                gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
1060                gui_current_window->buffer->input_buffer_pos = 0;
1061                gui_draw_buffer_input (gui_current_window->buffer, 0);
1062                gui_input_optimize_buffer_size (gui_current_window->buffer);
1063                gui_current_window->buffer->completion.position = -1;
1064            }
1065      }      }
1066  }  }
1067    
# Line 1009  gui_input_delete_begin_of_line () Line 1072  gui_input_delete_begin_of_line ()
1072  void  void
1073  gui_input_delete_end_of_line ()  gui_input_delete_end_of_line ()
1074  {  {
1075      gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +      if (gui_current_window->buffer->has_input)
1076                               gui_current_window->buffer->input_buffer_pos,      {
1077                               gui_current_window->buffer->input_buffer_size -          gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
1078                               gui_current_window->buffer->input_buffer_pos);                                   gui_current_window->buffer->input_buffer_pos,
1079      gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' ';                                   gui_current_window->buffer->input_buffer_size -
1080      gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ;                                   gui_current_window->buffer->input_buffer_pos);
1081      gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';          gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' ';
1082      gui_draw_buffer_input (gui_current_window->buffer, 0);          gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ;
1083      gui_input_optimize_buffer_size (gui_current_window->buffer);          gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
1084      gui_current_window->buffer->completion.position = -1;          gui_draw_buffer_input (gui_current_window->buffer, 0);
1085            gui_input_optimize_buffer_size (gui_current_window->buffer);
1086            gui_current_window->buffer->completion.position = -1;
1087        }
1088  }  }
1089    
1090  /*  /*
# Line 1028  gui_input_delete_end_of_line () Line 1094  gui_input_delete_end_of_line ()
1094  void  void
1095  gui_input_delete_line ()  gui_input_delete_line ()
1096  {  {
1097      gui_current_window->buffer->input_buffer[0] = '\0';      if (gui_current_window->buffer->has_input)
1098      gui_current_window->buffer->input_buffer_size = 0;      {
1099      gui_current_window->buffer->input_buffer_pos = 0;          gui_current_window->buffer->input_buffer[0] = '\0';
1100      gui_draw_buffer_input (gui_current_window->buffer, 0);          gui_current_window->buffer->input_buffer_size = 0;
1101      gui_input_optimize_buffer_size (gui_current_window->buffer);          gui_current_window->buffer->input_buffer_pos = 0;
1102      gui_current_window->buffer->completion.position = -1;          gui_draw_buffer_input (gui_current_window->buffer, 0);
1103            gui_input_optimize_buffer_size (gui_current_window->buffer);
1104            gui_current_window->buffer->completion.position = -1;
1105        }
1106  }  }
1107    
1108  /*  /*
# Line 1046  gui_input_transpose_chars () Line 1115  gui_input_transpose_chars ()
1115      char buf;      char buf;
1116      int curpos;      int curpos;
1117            
1118      if (gui_current_window->buffer->input_buffer_pos > 0)      if (gui_current_window->buffer->has_input)
       {  
         curpos = gui_current_window->buffer->input_buffer_pos;  
         if (curpos == gui_current_window->buffer->input_buffer_size)  
           curpos--;  
         else  
           gui_current_window->buffer->input_buffer_pos++;  
           
         buf = gui_current_window->buffer->input_buffer[curpos];  
         gui_current_window->buffer->input_buffer[curpos] =  
           gui_current_window->buffer->input_buffer[curpos-1];  
         gui_current_window->buffer->input_buffer[curpos-1] = buf;  
           
         gui_draw_buffer_input (gui_current_window->buffer, 0);    
         gui_current_window->buffer->completion.position = -1;  
       }  
 }  
   
 /*  
  * gui_input_clipboard_paste: paste clipboard at cursor pos in input line  
  */  
   
 void  
 gui_input_clipboard_paste ()  
 {  
   if (gui_input_clipboard)  
1119      {      {
1120        gui_input_insert_string(gui_input_clipboard, gui_current_window->buffer->input_buffer_pos);          if (gui_current_window->buffer->input_buffer_pos > 0)
1121        gui_current_window->buffer->input_buffer_pos += strlen(gui_input_clipboard);          {
1122        gui_draw_buffer_input (gui_current_window->buffer, 0);              curpos = gui_current_window->buffer->input_buffer_pos;
1123        gui_current_window->buffer->completion.position = -1;              if (curpos == gui_current_window->buffer->input_buffer_size)
1124      }                  curpos--;
1125  }              else
1126                    gui_current_window->buffer->input_buffer_pos++;
1127  /*              
1128   * gui_input_clipboard_copy: copy string into clipboard              buf = gui_current_window->buffer->input_buffer[curpos];
1129   */              gui_current_window->buffer->input_buffer[curpos] =
1130                    gui_current_window->buffer->input_buffer[curpos-1];
1131  void              gui_current_window->buffer->input_buffer[curpos-1] = buf;
1132  gui_input_clipboard_copy (char *buffer, int size)              
1133  {              gui_draw_buffer_input (gui_current_window->buffer, 0);      
1134      if (size <= 0)              gui_current_window->buffer->completion.position = -1;
1135          return;          }
       
     if (gui_input_clipboard != NULL)  
         free(gui_input_clipboard);  
       
     gui_input_clipboard = (char *) malloc( (size + 1) * sizeof(*gui_input_clipboard));  
       
     if (gui_input_clipboard)  
     {  
         memcpy(gui_input_clipboard, buffer, size);  
         gui_input_clipboard[size] = '\0';  
1136      }      }
1137  }  }
1138    
# Line 1109  gui_input_clipboard_copy (char *buffer, Line 1143  gui_input_clipboard_copy (char *buffer,
1143  void  void
1144  gui_input_home ()  gui_input_home ()
1145  {  {
1146      if (!gui_current_window->buffer->dcc)      if (gui_current_window->buffer->has_input)
1147      {      {
1148          if (gui_current_window->buffer->input_buffer_pos > 0)          if (gui_current_window->buffer->input_buffer_pos > 0)
1149          {          {
# Line 1126  gui_input_home () Line 1160  gui_input_home ()
1160  void  void
1161  gui_input_end ()  gui_input_end ()
1162  {  {
1163      if (!gui_current_window->buffer->dcc)      if (gui_current_window->buffer->has_input)
1164      {      {
1165          if (gui_current_window->buffer->input_buffer_pos <          if (gui_current_window->buffer->input_buffer_pos <
1166              gui_current_window->buffer->input_buffer_size)              gui_current_window->buffer->input_buffer_size)
# Line 1145  gui_input_end () Line 1179  gui_input_end ()
1179  void  void
1180  gui_input_left ()  gui_input_left ()
1181  {  {
1182      if (!gui_current_window->buffer->dcc)      if (gui_current_window->buffer->has_input)
1183      {      {
1184          if (gui_current_window->buffer->input_buffer_pos > 0)          if (gui_current_window->buffer->input_buffer_pos > 0)
1185          {          {
# Line 1164  gui_input_previous_word () Line 1198  gui_input_previous_word ()
1198  {  {
1199      int i;      int i;
1200            
1201      if (gui_current_window->buffer->input_buffer_pos > 0)      if (gui_current_window->buffer->has_input)
1202      {      {
1203          i = gui_current_window->buffer->input_buffer_pos - 1;          if (gui_current_window->buffer->input_buffer_pos > 0)
         while ((i >= 0) &&  
             (gui_current_window->buffer->input_buffer[i] == ' '))  
             i--;  
         if (i < 0)  
             gui_current_window->buffer->input_buffer_pos = 0;  
         else  
1204          {          {
1205                i = gui_current_window->buffer->input_buffer_pos - 1;
1206              while ((i >= 0) &&              while ((i >= 0) &&
1207                  (gui_current_window->buffer->input_buffer[i] != ' '))                     (gui_current_window->buffer->input_buffer[i] == ' '))
1208                  i--;                  i--;
1209              gui_current_window->buffer->input_buffer_pos = i + 1;              if (i < 0)
1210                    gui_current_window->buffer->input_buffer_pos = 0;
1211                else
1212                {
1213                    while ((i >= 0) &&
1214                           (gui_current_window->buffer->input_buffer[i] != ' '))
1215                        i--;
1216                    gui_current_window->buffer->input_buffer_pos = i + 1;
1217                }
1218                gui_draw_buffer_input (gui_current_window->buffer, 0);
1219          }          }
         gui_draw_buffer_input (gui_current_window->buffer, 0);  
1220      }      }
1221  }  }
1222    
# Line 1190  gui_input_previous_word () Line 1227  gui_input_previous_word ()
1227  void  void
1228  gui_input_right ()  gui_input_right ()
1229  {  {
1230      if (!gui_current_window->buffer->dcc)      if (gui_current_window->buffer->has_input)
1231      {      {
1232          if (gui_current_window->buffer->input_buffer_pos <          if (gui_current_window->buffer->input_buffer_pos <
1233              gui_current_window->buffer->input_buffer_size)              gui_current_window->buffer->input_buffer_size)
# Line 1210  gui_input_next_word () Line 1247  gui_input_next_word ()
1247  {  {
1248      int i;      int i;
1249            
1250      if (gui_current_window->buffer->input_buffer_pos <      if (gui_current_window->buffer->has_input)
         gui_current_window->buffer->input_buffer_size + 1)  
1251      {      {
1252          i = gui_current_window->buffer->input_buffer_pos;          if (gui_current_window->buffer->input_buffer_pos <
1253          while ((i <= gui_current_window->buffer->input_buffer_size) &&              gui_current_window->buffer->input_buffer_size + 1)
             (gui_current_window->buffer->input_buffer[i] == ' '))  
             i++;  
         if (i > gui_current_window->buffer->input_buffer_size)  
             gui_current_window->buffer->input_buffer_pos = i - 1;  
         else  
1254          {          {
1255                i = gui_current_window->buffer->input_buffer_pos;
1256              while ((i <= gui_current_window->buffer->input_buffer_size) &&              while ((i <= gui_current_window->buffer->input_buffer_size) &&
1257                  (gui_current_window->buffer->input_buffer[i] != ' '))                     (gui_current_window->buffer->input_buffer[i] == ' '))
1258                  i++;                  i++;
1259              if (i > gui_current_window->buffer->input_buffer_size)              if (i > gui_current_window->buffer->input_buffer_size)
1260                  gui_current_window->buffer->input_buffer_pos =                  gui_current_window->buffer->input_buffer_pos = i - 1;
                     gui_current_window->buffer->input_buffer_size;  
1261              else              else
1262                  gui_current_window->buffer->input_buffer_pos = i;              {
1263                                while ((i <= gui_current_window->buffer->input_buffer_size) &&
1264                           (gui_current_window->buffer->input_buffer[i] != ' '))
1265                        i++;
1266                    if (i > gui_current_window->buffer->input_buffer_size)
1267                        gui_current_window->buffer->input_buffer_pos =
1268                            gui_current_window->buffer->input_buffer_size;
1269                    else
1270                        gui_current_window->buffer->input_buffer_pos = i;
1271                    
1272                }
1273                gui_draw_buffer_input (gui_current_window->buffer, 0);
1274          }          }
         gui_draw_buffer_input (gui_current_window->buffer, 0);  
1275      }      }
1276  }  }
1277    
# Line 1260  gui_input_up () Line 1300  gui_input_up ()
1300              }              }
1301          }          }
1302      }      }
1303      else      else if (gui_current_window->buffer->has_input)
1304      {      {
1305          if (gui_current_window->buffer->ptr_history)          if (gui_current_window->buffer->ptr_history)
1306          {          {
# Line 1323  gui_input_down () Line 1363  gui_input_down ()
1363              }              }
1364          }          }
1365      }      }
1366      else      else if (gui_current_window->buffer->has_input)
1367      {      {
1368          if (gui_current_window->buffer->ptr_history)          if (gui_current_window->buffer->ptr_history)
1369          {          {
# Line 1400  gui_input_jump_dcc () Line 1440  gui_input_jump_dcc ()
1440  void  void
1441  gui_input_jump_server ()  gui_input_jump_server ()
1442  {  {
1443      if (!gui_current_window->buffer->dcc)      if (SERVER(gui_current_window->buffer))
1444      {      {
1445          if (SERVER(gui_current_window->buffer)->buffer !=          if (SERVER(gui_current_window->buffer)->buffer !=
1446              gui_current_window->buffer)              gui_current_window->buffer)
# Line 1422  gui_input_jump_next_server () Line 1462  gui_input_jump_next_server ()
1462      t_irc_server *ptr_server;      t_irc_server *ptr_server;
1463      t_gui_buffer *ptr_buffer;      t_gui_buffer *ptr_buffer;
1464            
1465      if (!gui_current_window->buffer->dcc)      if (SERVER(gui_current_window->buffer))
1466      {      {
1467          ptr_server = SERVER(gui_current_window->buffer)->next_server;          ptr_server = SERVER(gui_current_window->buffer)->next_server;
1468          if (!ptr_server)          if (!ptr_server)
# Line 1471  gui_input_infobar_clear () Line 1511  gui_input_infobar_clear ()
1511  }  }
1512    
1513  /*  /*
1514     * gui_input_grab_key: init "grab key mode" (next key will be inserted into input buffer)
1515     */
1516    
1517    void
1518    gui_input_grab_key ()
1519    {
1520        if (gui_current_window->buffer->has_input)
1521            gui_key_init_grab ();
1522    }
1523    
1524    /*
1525   * gui_switch_to_previous_buffer: switch to previous buffer   * gui_switch_to_previous_buffer: switch to previous buffer
1526   */   */
1527    
# Line 1740  gui_buffer_print_log (t_gui_buffer *buff Line 1791  gui_buffer_print_log (t_gui_buffer *buff
1791      wee_log_printf ("  notify_level . . . . : %d\n",   buffer->notify_level);      wee_log_printf ("  notify_level . . . . : %d\n",   buffer->notify_level);
1792      wee_log_printf ("  log_filename . . . . : '%s'\n", buffer->log_filename);      wee_log_printf ("  log_filename . . . . : '%s'\n", buffer->log_filename);
1793      wee_log_printf ("  log_file . . . . . . : 0x%X\n", buffer->log_file);      wee_log_printf ("  log_file . . . . . . : 0x%X\n", buffer->log_file);
1794        wee_log_printf ("  has_input. . . . . . : %d\n",   buffer->has_input);
1795      wee_log_printf ("  input_buffer . . . . : '%s'\n", buffer->input_buffer);      wee_log_printf ("  input_buffer . . . . : '%s'\n", buffer->input_buffer);
1796      wee_log_printf ("  input_buffer_alloc . : %d\n",   buffer->input_buffer_alloc);      wee_log_printf ("  input_buffer_alloc . : %d\n",   buffer->input_buffer_alloc);
1797      wee_log_printf ("  input_buffer_size. . : %d\n",   buffer->input_buffer_size);      wee_log_printf ("  input_buffer_size. . : %d\n",   buffer->input_buffer_size);

Legend:
Removed from v.1.45  
changed lines
  Added in v.1.46

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