/[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.50 by flashcode, Sun Jul 31 11:32:28 2005 UTC revision 1.51 by flashcode, Tue Sep 13 17:04:35 2005 UTC
# Line 619  gui_input_clipboard_copy (char *buffer, Line 619  gui_input_clipboard_copy (char *buffer,
619   */   */
620    
621  void  void
622  gui_input_clipboard_paste ()  gui_input_clipboard_paste (t_gui_window *window)
623  {  {
624      if (gui_current_window->buffer->has_input && gui_input_clipboard)      if (window->buffer->has_input && gui_input_clipboard)
625      {      {
626          gui_input_insert_string (gui_input_clipboard, gui_current_window->buffer->input_buffer_pos);          gui_input_insert_string (window, gui_input_clipboard, window->buffer->input_buffer_pos);
627          gui_current_window->buffer->input_buffer_pos += strlen (gui_input_clipboard);          window->buffer->input_buffer_pos += strlen (gui_input_clipboard);
628          gui_draw_buffer_input (gui_current_window->buffer, 0);          gui_draw_buffer_input (window->buffer, 0);
629          gui_current_window->buffer->completion.position = -1;          window->buffer->completion.position = -1;
630      }      }
631  }  }
632    
# Line 636  gui_input_clipboard_paste () Line 636  gui_input_clipboard_paste ()
636   */   */
637    
638  void  void
639  gui_input_insert_string (char *string, int pos)  gui_input_insert_string (t_gui_window *window, char *string, int pos)
640  {  {
641      int i, start, end, length;      int i, start, end, length;
642            
643      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
644      {      {
645          if (pos == -1)          if (pos == -1)
646              pos = gui_current_window->buffer->input_buffer_pos;              pos = window->buffer->input_buffer_pos;
647                    
648          length = strlen (string);          length = strlen (string);
649                    
650          /* increase buffer size */          /* increase buffer size */
651          gui_current_window->buffer->input_buffer_size += length;          window->buffer->input_buffer_size += length;
652          gui_input_optimize_buffer_size (gui_current_window->buffer);          gui_input_optimize_buffer_size (window->buffer);
653          gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';          window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
654                    
655          /* move end of string to the right */          /* move end of string to the right */
656          start = pos + length;          start = pos + length;
657          end = gui_current_window->buffer->input_buffer_size - 1;          end = window->buffer->input_buffer_size - 1;
658          for (i = end; i >= start; i--)          for (i = end; i >= start; i--)
659              gui_current_window->buffer->input_buffer[i] =              window->buffer->input_buffer[i] =
660                  gui_current_window->buffer->input_buffer[i - length];                  window->buffer->input_buffer[i - length];
661                    
662          /* insert new string */          /* insert new string */
663          strncpy (gui_current_window->buffer->input_buffer + pos, string, length);          strncpy (window->buffer->input_buffer + pos, string, length);
664      }      }
665  }  }
666    
# Line 669  gui_input_insert_string (char *string, i Line 669  gui_input_insert_string (char *string, i
669   */   */
670    
671  void  void
672  gui_input_insert_char (int key)  gui_input_insert_char (t_gui_window *window, int key)
673  {  {
674      char new_char[3];      char new_char[3];
675      t_irc_dcc *dcc_selected, *ptr_dcc, *ptr_dcc_next;      t_irc_dcc *dcc_selected, *ptr_dcc, *ptr_dcc_next;
# Line 677  gui_input_insert_char (int key) Line 677  gui_input_insert_char (int key)
677      if (key < 32)      if (key < 32)
678          return;          return;
679            
680      if (gui_current_window->buffer->dcc)      if (window->buffer->dcc)
681      {      {
682          dcc_selected = (gui_current_window->dcc_selected) ?          dcc_selected = (window->dcc_selected) ?
683              (t_irc_dcc *) gui_current_window->dcc_selected : dcc_list;              (t_irc_dcc *) window->dcc_selected : dcc_list;
684          switch (key)          switch (key)
685          {          {
686              /* accept DCC */              /* accept DCC */
# Line 700  gui_input_insert_char (int key) Line 700  gui_input_insert_char (int key)
700                      && (!DCC_ENDED(dcc_selected->status)))                      && (!DCC_ENDED(dcc_selected->status)))
701                  {                  {
702                      dcc_close (dcc_selected, DCC_ABORTED);                      dcc_close (dcc_selected, DCC_ABORTED);
703                      gui_redraw_buffer (gui_current_window->buffer);                      gui_redraw_buffer (window->buffer);
704                  }                  }
705                  break;                  break;
706              /* purge old DCC */              /* purge old DCC */
707              case 'p':              case 'p':
708              case 'P':              case 'P':
709                  gui_current_window->dcc_selected = NULL;                  window->dcc_selected = NULL;
710                  ptr_dcc = dcc_list;                  ptr_dcc = dcc_list;
711                  while (ptr_dcc)                  while (ptr_dcc)
712                  {                  {
# Line 715  gui_input_insert_char (int key) Line 715  gui_input_insert_char (int key)
715                          dcc_free (ptr_dcc);                          dcc_free (ptr_dcc);
716                      ptr_dcc = ptr_dcc_next;                      ptr_dcc = ptr_dcc_next;
717                  }                  }
718                  gui_redraw_buffer (gui_current_window->buffer);                  gui_redraw_buffer (window->buffer);
719                  break;                  break;
720              /* close DCC window */              /* close DCC window */
721              case 'q':              case 'q':
722              case 'Q':              case 'Q':
723                  if (buffer_before_dcc)                  if (buffer_before_dcc)
724                  {                  {
725                      gui_buffer_free (gui_current_window->buffer, 1);                      gui_buffer_free (window->buffer, 1);
726                      gui_switch_to_buffer (gui_current_window,                      gui_switch_to_buffer (window, buffer_before_dcc);
                                           buffer_before_dcc);  
727                  }                  }
728                  else                  else
729                      gui_buffer_free (gui_current_window->buffer, 1);                      gui_buffer_free (window->buffer, 1);
730                  gui_redraw_buffer (gui_current_window->buffer);                  gui_redraw_buffer (window->buffer);
731                  break;                  break;
732              /* remove from DCC list */              /* remove from DCC list */
733              case 'r':              case 'r':
# Line 737  gui_input_insert_char (int key) Line 736  gui_input_insert_char (int key)
736                      && (DCC_ENDED(dcc_selected->status)))                      && (DCC_ENDED(dcc_selected->status)))
737                  {                  {
738                      if (dcc_selected->next_dcc)                      if (dcc_selected->next_dcc)
739                          gui_current_window->dcc_selected = dcc_selected->next_dcc;                          window->dcc_selected = dcc_selected->next_dcc;
740                      else                      else
741                          gui_current_window->dcc_selected = NULL;                          window->dcc_selected = NULL;
742                      dcc_free (dcc_selected);                      dcc_free (dcc_selected);
743                      gui_redraw_buffer (gui_current_window->buffer);                      gui_redraw_buffer (window->buffer);
744                  }                  }
745                  break;                  break;
746          }          }
747      }      }
748      else if (gui_current_window->buffer->has_input)      else if (window->buffer->has_input)
749      {      {
750          /*gui_printf (gui_current_window->buffer,          /*gui_printf (window->buffer,
751            "[Debug] key pressed = %d, hex = %02X, octal = %o\n", key, key, key);*/            "[Debug] key pressed = %d, hex = %02X, octal = %o\n", key, key, key);*/
752          new_char[0] = key;          new_char[0] = key;
753          new_char[1] = '\0';          new_char[1] = '\0';
754                    
755          gui_input_insert_string (new_char,          gui_input_insert_string (window, new_char,
756                                   gui_current_window->buffer->input_buffer_pos);                                   window->buffer->input_buffer_pos);
757          gui_current_window->buffer->input_buffer_pos++;          window->buffer->input_buffer_pos++;
758          gui_draw_buffer_input (gui_current_window->buffer, 0);          gui_draw_buffer_input (window->buffer, 0);
759          gui_current_window->buffer->completion.position = -1;          window->buffer->completion.position = -1;
760      }      }
761  }  }
762    
# Line 766  gui_input_insert_char (int key) Line 765  gui_input_insert_char (int key)
765   */   */
766    
767  void  void
768  gui_input_return ()  gui_input_return (t_gui_window *window)
769  {  {
770      t_gui_buffer *ptr_buffer;      t_gui_buffer *ptr_buffer;
771            
772      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
773      {      {
774          if (gui_current_window->buffer->input_buffer_size > 0)          if (window->buffer->input_buffer_size > 0)
775          {          {
776              gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';              window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
777              history_add (gui_current_window->buffer, gui_current_window->buffer->input_buffer);              history_add (window->buffer, window->buffer->input_buffer);
778              gui_current_window->buffer->input_buffer_size = 0;              window->buffer->input_buffer_size = 0;
779              gui_current_window->buffer->input_buffer_pos = 0;              window->buffer->input_buffer_pos = 0;
780              gui_current_window->buffer->input_buffer_1st_display = 0;              window->buffer->input_buffer_1st_display = 0;
781              gui_current_window->buffer->completion.position = -1;              window->buffer->completion.position = -1;
782              gui_current_window->buffer->ptr_history = NULL;              window->buffer->ptr_history = NULL;
783              ptr_buffer = gui_current_window->buffer;              ptr_buffer = window->buffer;
784              user_command (SERVER(gui_current_window->buffer),              user_command (SERVER(window->buffer),
785                            gui_current_window->buffer,                            window->buffer,
786                            gui_current_window->buffer->input_buffer);                            window->buffer->input_buffer);
787              if (ptr_buffer == gui_current_window->buffer)              if (ptr_buffer == window->buffer)
788              {              {
789                  ptr_buffer->input_buffer[0] = '\0';                  ptr_buffer->input_buffer[0] = '\0';
790                  gui_draw_buffer_input (ptr_buffer, 0);                  gui_draw_buffer_input (ptr_buffer, 0);
# Line 799  gui_input_return () Line 798  gui_input_return ()
798   */   */
799    
800  void  void
801  gui_input_tab ()  gui_input_tab (t_gui_window *window)
802  {  {
803      int i;      int i;
804    
805      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
806      {      {
807          completion_search (&(gui_current_window->buffer->completion),          completion_search (&(window->buffer->completion),
808                             CHANNEL(gui_current_window->buffer),                             CHANNEL(window->buffer),
809                             gui_current_window->buffer->input_buffer,                             window->buffer->input_buffer,
810                             gui_current_window->buffer->input_buffer_size,                             window->buffer->input_buffer_size,
811                             gui_current_window->buffer->input_buffer_pos);                             window->buffer->input_buffer_pos);
812                                
813          if (gui_current_window->buffer->completion.word_found)          if (window->buffer->completion.word_found)
814          {          {
815              /* replace word with new completed word into input buffer */              /* replace word with new completed word into input buffer */
816              if (gui_current_window->buffer->completion.diff_size > 0)              if (window->buffer->completion.diff_size > 0)
817              {              {
818                  gui_current_window->buffer->input_buffer_size +=                  window->buffer->input_buffer_size +=
819                      gui_current_window->buffer->completion.diff_size;                      window->buffer->completion.diff_size;
820                  gui_input_optimize_buffer_size (gui_current_window->buffer);                  gui_input_optimize_buffer_size (window->buffer);
821                  gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';                  window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
822                  for (i = gui_current_window->buffer->input_buffer_size - 1;                  for (i = window->buffer->input_buffer_size - 1;
823                       i >=  gui_current_window->buffer->completion.position_replace +                       i >=  window->buffer->completion.position_replace +
824                           (int)strlen (gui_current_window->buffer->completion.word_found); i--)                           (int)strlen (window->buffer->completion.word_found); i--)
825                      gui_current_window->buffer->input_buffer[i] =                      window->buffer->input_buffer[i] =
826                          gui_current_window->buffer->input_buffer[i -                          window->buffer->input_buffer[i - window->buffer->completion.diff_size];
                                                                  gui_current_window->buffer->completion.diff_size];  
827              }              }
828              else              else
829              {              {
830                  for (i = gui_current_window->buffer->completion.position_replace +                  for (i = window->buffer->completion.position_replace +
831                           strlen (gui_current_window->buffer->completion.word_found);                           strlen (window->buffer->completion.word_found);
832                       i < gui_current_window->buffer->input_buffer_size; i++)                       i < window->buffer->input_buffer_size; i++)
833                      gui_current_window->buffer->input_buffer[i] =                      window->buffer->input_buffer[i] =
834                          gui_current_window->buffer->input_buffer[i -                          window->buffer->input_buffer[i - window->buffer->completion.diff_size];
835                                                                   gui_current_window->buffer->completion.diff_size];                  window->buffer->input_buffer_size +=
836                  gui_current_window->buffer->input_buffer_size +=                      window->buffer->completion.diff_size;
837                      gui_current_window->buffer->completion.diff_size;                  gui_input_optimize_buffer_size (window->buffer);
838                  gui_input_optimize_buffer_size (gui_current_window->buffer);                  window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
                 gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';  
839              }              }
840                                                    
841              strncpy (gui_current_window->buffer->input_buffer + gui_current_window->buffer->completion.position_replace,              strncpy (window->buffer->input_buffer + window->buffer->completion.position_replace,
842                       gui_current_window->buffer->completion.word_found,                       window->buffer->completion.word_found,
843                       strlen (gui_current_window->buffer->completion.word_found));                       strlen (window->buffer->completion.word_found));
844              gui_current_window->buffer->input_buffer_pos =              window->buffer->input_buffer_pos =
845                  gui_current_window->buffer->completion.position_replace +                  window->buffer->completion.position_replace +
846                  strlen (gui_current_window->buffer->completion.word_found);                  strlen (window->buffer->completion.word_found);
847                                                    
848              /* position is < 0 this means only one word was found to complete,              /* position is < 0 this means only one word was found to complete,
849                 so reinit to stop completion */                 so reinit to stop completion */
850              if (gui_current_window->buffer->completion.position >= 0)              if (window->buffer->completion.position >= 0)
851                  gui_current_window->buffer->completion.position =                  window->buffer->completion.position =
852                      gui_current_window->buffer->input_buffer_pos;                      window->buffer->input_buffer_pos;
853                                                    
854              /* add space or completor to the end of completion, if needed */              /* add space or completor to the end of completion, if needed */
855              if ((gui_current_window->buffer->completion.context == COMPLETION_COMMAND)              if ((window->buffer->completion.context == COMPLETION_COMMAND)
856                  || (gui_current_window->buffer->completion.context == COMPLETION_COMMAND_ARG))                  || (window->buffer->completion.context == COMPLETION_COMMAND_ARG))
857              {              {
858                  if (gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] != ' ')                  if (window->buffer->input_buffer[window->buffer->input_buffer_pos] != ' ')
859                      gui_input_insert_string (" ",                      gui_input_insert_string (window, " ",
860                                               gui_current_window->buffer->input_buffer_pos);                                               window->buffer->input_buffer_pos);
861                  if (gui_current_window->buffer->completion.position >= 0)                  if (window->buffer->completion.position >= 0)
862                      gui_current_window->buffer->completion.position++;                      window->buffer->completion.position++;
863                  gui_current_window->buffer->input_buffer_pos++;                  window->buffer->input_buffer_pos++;
864              }              }
865              else              else
866              {              {
867                  /* add nick completor if position 0 and completing nick */                  /* add nick completor if position 0 and completing nick */
868                  if ((gui_current_window->buffer->completion.base_word_pos == 0)                  if ((window->buffer->completion.base_word_pos == 0)
869                      && (gui_current_window->buffer->completion.context == COMPLETION_NICK))                      && (window->buffer->completion.context == COMPLETION_NICK))
870                  {                  {
871                      if (strncmp (gui_current_window->buffer->input_buffer + gui_current_window->buffer->input_buffer_pos,                      if (strncmp (window->buffer->input_buffer + window->buffer->input_buffer_pos,
872                                   cfg_look_completor, strlen (cfg_look_completor)) != 0)                                   cfg_look_completor, strlen (cfg_look_completor)) != 0)
873                          gui_input_insert_string (cfg_look_completor,                          gui_input_insert_string (window, cfg_look_completor,
874                                                   gui_current_window->buffer->input_buffer_pos);                                                   window->buffer->input_buffer_pos);
875                      if (gui_current_window->buffer->completion.position >= 0)                      if (window->buffer->completion.position >= 0)
876                          gui_current_window->buffer->completion.position += strlen (cfg_look_completor);                          window->buffer->completion.position += strlen (cfg_look_completor);
877                      gui_current_window->buffer->input_buffer_pos += strlen (cfg_look_completor);                      window->buffer->input_buffer_pos += strlen (cfg_look_completor);
878                      if (gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] != ' ')                      if (window->buffer->input_buffer[window->buffer->input_buffer_pos] != ' ')
879                          gui_input_insert_string (" ",                          gui_input_insert_string (window, " ",
880                                                   gui_current_window->buffer->input_buffer_pos);                                                   window->buffer->input_buffer_pos);
881                      if (gui_current_window->buffer->completion.position >= 0)                      if (window->buffer->completion.position >= 0)
882                          gui_current_window->buffer->completion.position++;                          window->buffer->completion.position++;
883                      gui_current_window->buffer->input_buffer_pos++;                      window->buffer->input_buffer_pos++;
884                  }                  }
885              }              }
886              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
887          }          }
888      }      }
889  }  }
# Line 896  gui_input_tab () Line 893  gui_input_tab ()
893   */   */
894    
895  void  void
896  gui_input_backspace ()  gui_input_backspace (t_gui_window *window)
897  {  {
898      int i;      int i;
899    
900      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
901      {      {
902          if (gui_current_window->buffer->input_buffer_pos > 0)          if (window->buffer->input_buffer_pos > 0)
903          {          {
904              i = gui_current_window->buffer->input_buffer_pos-1;              i = window->buffer->input_buffer_pos-1;
905              while (gui_current_window->buffer->input_buffer[i])              while (window->buffer->input_buffer[i])
906              {              {
907                  gui_current_window->buffer->input_buffer[i] =                  window->buffer->input_buffer[i] =
908                      gui_current_window->buffer->input_buffer[i+1];                      window->buffer->input_buffer[i+1];
909                  i++;                  i++;
910              }              }
911              gui_current_window->buffer->input_buffer_size--;              window->buffer->input_buffer_size--;
912              gui_current_window->buffer->input_buffer_pos--;              window->buffer->input_buffer_pos--;
913              gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';              window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
914              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
915              gui_input_optimize_buffer_size (gui_current_window->buffer);              gui_input_optimize_buffer_size (window->buffer);
916              gui_current_window->buffer->completion.position = -1;              window->buffer->completion.position = -1;
917          }          }
918      }      }
919  }  }
# Line 926  gui_input_backspace () Line 923  gui_input_backspace ()
923   */   */
924    
925  void  void
926  gui_input_delete ()  gui_input_delete (t_gui_window *window)
927  {  {
928      int i;      int i;
929    
930      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
931      {      {
932          if (gui_current_window->buffer->input_buffer_pos <          if (window->buffer->input_buffer_pos <
933              gui_current_window->buffer->input_buffer_size)              window->buffer->input_buffer_size)
934          {          {
935              i = gui_current_window->buffer->input_buffer_pos;              i = window->buffer->input_buffer_pos;
936              while (gui_current_window->buffer->input_buffer[i])              while (window->buffer->input_buffer[i])
937              {              {
938                  gui_current_window->buffer->input_buffer[i] =                  window->buffer->input_buffer[i] =
939                      gui_current_window->buffer->input_buffer[i+1];                      window->buffer->input_buffer[i+1];
940                  i++;                  i++;
941              }              }
942              gui_current_window->buffer->input_buffer_size--;              window->buffer->input_buffer_size--;
943              gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';              window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
944              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
945              gui_input_optimize_buffer_size (gui_current_window->buffer);              gui_input_optimize_buffer_size (window->buffer);
946              gui_current_window->buffer->completion.position = -1;              window->buffer->completion.position = -1;
947          }          }
948      }      }
949  }  }
# Line 956  gui_input_delete () Line 953  gui_input_delete ()
953   */   */
954    
955  void  void
956  gui_input_delete_previous_word ()  gui_input_delete_previous_word (t_gui_window *window)
957  {  {
958      int i, j, num_char_deleted, num_char_end;      int i, j, num_char_deleted, num_char_end;
959            
960      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
961      {      {
962          if (gui_current_window->buffer->input_buffer_pos > 0)          if (window->buffer->input_buffer_pos > 0)
963          {          {
964              i = gui_current_window->buffer->input_buffer_pos - 1;              i = window->buffer->input_buffer_pos - 1;
965              while ((i >= 0) &&              while ((i >= 0) &&
966                     (gui_current_window->buffer->input_buffer[i] == ' '))                     (window->buffer->input_buffer[i] == ' '))
967                  i--;                  i--;
968              if (i >= 0)              if (i >= 0)
969              {              {
970                  while ((i >= 0) &&                  while ((i >= 0) &&
971                         (gui_current_window->buffer->input_buffer[i] != ' '))                         (window->buffer->input_buffer[i] != ' '))
972                      i--;                      i--;
973                  if (i >= 0)                  if (i >= 0)
974                  {                  {
975                      while ((i >= 0) &&                      while ((i >= 0) &&
976                             (gui_current_window->buffer->input_buffer[i] == ' '))                             (window->buffer->input_buffer[i] == ' '))
977                          i--;                          i--;
978                  }                  }
979              }              }
# Line 984  gui_input_delete_previous_word () Line 981  gui_input_delete_previous_word ()
981              if (i >= 0)              if (i >= 0)
982                  i++;                  i++;
983              i++;              i++;
984              num_char_deleted = gui_current_window->buffer->input_buffer_pos - i;              num_char_deleted = window->buffer->input_buffer_pos - i;
985              num_char_end = gui_current_window->buffer->input_buffer_size -              num_char_end = window->buffer->input_buffer_size -
986                  gui_current_window->buffer->input_buffer_pos;                  window->buffer->input_buffer_pos;
987                            
988              gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +              gui_input_clipboard_copy(window->buffer->input_buffer +
989                                       gui_current_window->buffer->input_buffer_pos - num_char_deleted,                                       window->buffer->input_buffer_pos - num_char_deleted,
990                                       num_char_deleted);                                       num_char_deleted);
991                            
992              for (j = 0; j < num_char_end; j++)              for (j = 0; j < num_char_end; j++)
993                  gui_current_window->buffer->input_buffer[i + j] =                  window->buffer->input_buffer[i + j] =
994                      gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos + j];                      window->buffer->input_buffer[window->buffer->input_buffer_pos + j];
995                            
996              gui_current_window->buffer->input_buffer_size -= num_char_deleted;              window->buffer->input_buffer_size -= num_char_deleted;
997              gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';              window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
998              gui_current_window->buffer->input_buffer_pos = i;              window->buffer->input_buffer_pos = i;
999              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1000              gui_input_optimize_buffer_size (gui_current_window->buffer);              gui_input_optimize_buffer_size (window->buffer);
1001              gui_current_window->buffer->completion.position = -1;              window->buffer->completion.position = -1;
1002          }          }
1003      }      }
1004  }  }
# Line 1011  gui_input_delete_previous_word () Line 1008  gui_input_delete_previous_word ()
1008   */   */
1009    
1010  void  void
1011  gui_input_delete_next_word ()  gui_input_delete_next_word (t_gui_window *window)
1012  {  {
1013      int i, j, num_char_deleted;      int i, j, num_char_deleted;
1014            
1015      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1016      {      {
1017          i = gui_current_window->buffer->input_buffer_pos;          i = window->buffer->input_buffer_pos;
1018          while (i < gui_current_window->buffer->input_buffer_size)          while (i < window->buffer->input_buffer_size)
1019          {          {
1020              if ((gui_current_window->buffer->input_buffer[i] == ' ')              if ((window->buffer->input_buffer[i] == ' ')
1021                  && i != gui_current_window->buffer->input_buffer_pos)                  && i != window->buffer->input_buffer_pos)
1022                  break;                  break;
1023              i++;              i++;
1024          }          }
1025          num_char_deleted = i - gui_current_window->buffer->input_buffer_pos;          num_char_deleted = i - window->buffer->input_buffer_pos;
1026                    
1027          gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +          gui_input_clipboard_copy(window->buffer->input_buffer +
1028                                   gui_current_window->buffer->input_buffer_pos, num_char_deleted);                                   window->buffer->input_buffer_pos, num_char_deleted);
1029                    
1030          for (j = i; j < gui_current_window->buffer->input_buffer_size; j++)          for (j = i; j < window->buffer->input_buffer_size; j++)
1031              gui_current_window->buffer->input_buffer[j - num_char_deleted] =              window->buffer->input_buffer[j - num_char_deleted] =
1032                  gui_current_window->buffer->input_buffer[j];                  window->buffer->input_buffer[j];
1033                    
1034          gui_current_window->buffer->input_buffer_size -= num_char_deleted;          window->buffer->input_buffer_size -= num_char_deleted;
1035          gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';          window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
1036          gui_draw_buffer_input (gui_current_window->buffer, 0);          gui_draw_buffer_input (window->buffer, 0);
1037          gui_input_optimize_buffer_size (gui_current_window->buffer);          gui_input_optimize_buffer_size (window->buffer);
1038          gui_current_window->buffer->completion.position = -1;          window->buffer->completion.position = -1;
1039      }      }
1040  }  }
1041    
# Line 1047  gui_input_delete_next_word () Line 1044  gui_input_delete_next_word ()
1044   */   */
1045    
1046  void  void
1047  gui_input_delete_begin_of_line ()  gui_input_delete_begin_of_line (t_gui_window *window)
1048  {  {
1049      int i;      int i;
1050            
1051      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1052      {      {
1053          if (gui_current_window->buffer->input_buffer_pos > 0)          if (window->buffer->input_buffer_pos > 0)
1054          {          {
1055              gui_input_clipboard_copy (gui_current_window->buffer->input_buffer,              gui_input_clipboard_copy (window->buffer->input_buffer,
1056                                        gui_current_window->buffer->input_buffer_pos);                                        window->buffer->input_buffer_pos);
1057                            
1058              for (i = gui_current_window->buffer->input_buffer_pos;              for (i = window->buffer->input_buffer_pos;
1059                   i < gui_current_window->buffer->input_buffer_size; i++)                   i < window->buffer->input_buffer_size; i++)
1060                  gui_current_window->buffer->input_buffer[i - gui_current_window->buffer->input_buffer_pos] =                  window->buffer->input_buffer[i - window->buffer->input_buffer_pos] =
1061                      gui_current_window->buffer->input_buffer[i];                      window->buffer->input_buffer[i];
1062                            
1063              gui_current_window->buffer->input_buffer_size -=              window->buffer->input_buffer_size -=
1064                  gui_current_window->buffer->input_buffer_pos;                  window->buffer->input_buffer_pos;
1065              gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';              window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
1066              gui_current_window->buffer->input_buffer_pos = 0;              window->buffer->input_buffer_pos = 0;
1067              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1068              gui_input_optimize_buffer_size (gui_current_window->buffer);              gui_input_optimize_buffer_size (window->buffer);
1069              gui_current_window->buffer->completion.position = -1;              window->buffer->completion.position = -1;
1070          }          }
1071      }      }
1072  }  }
# Line 1079  gui_input_delete_begin_of_line () Line 1076  gui_input_delete_begin_of_line ()
1076   */   */
1077    
1078  void  void
1079  gui_input_delete_end_of_line ()  gui_input_delete_end_of_line (t_gui_window *window)
1080  {  {
1081      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1082      {      {
1083          gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +          gui_input_clipboard_copy(window->buffer->input_buffer +
1084                                   gui_current_window->buffer->input_buffer_pos,                                   window->buffer->input_buffer_pos,
1085                                   gui_current_window->buffer->input_buffer_size -                                   window->buffer->input_buffer_size -
1086                                   gui_current_window->buffer->input_buffer_pos);                                   window->buffer->input_buffer_pos);
1087          gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' ';          window->buffer->input_buffer[window->buffer->input_buffer_pos] = ' ';
1088          gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ;          window->buffer->input_buffer_size = window->buffer->input_buffer_pos ;
1089          gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';          window->buffer->input_buffer[window->buffer->input_buffer_size] = '\0';
1090          gui_draw_buffer_input (gui_current_window->buffer, 0);          gui_draw_buffer_input (window->buffer, 0);
1091          gui_input_optimize_buffer_size (gui_current_window->buffer);          gui_input_optimize_buffer_size (window->buffer);
1092          gui_current_window->buffer->completion.position = -1;          window->buffer->completion.position = -1;
1093      }      }
1094  }  }
1095    
# Line 1101  gui_input_delete_end_of_line () Line 1098  gui_input_delete_end_of_line ()
1098   */   */
1099    
1100  void  void
1101  gui_input_delete_line ()  gui_input_delete_line (t_gui_window *window)
1102  {  {
1103      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1104      {      {
1105          gui_current_window->buffer->input_buffer[0] = '\0';          window->buffer->input_buffer[0] = '\0';
1106          gui_current_window->buffer->input_buffer_size = 0;          window->buffer->input_buffer_size = 0;
1107          gui_current_window->buffer->input_buffer_pos = 0;          window->buffer->input_buffer_pos = 0;
1108          gui_draw_buffer_input (gui_current_window->buffer, 0);          gui_draw_buffer_input (window->buffer, 0);
1109          gui_input_optimize_buffer_size (gui_current_window->buffer);          gui_input_optimize_buffer_size (window->buffer);
1110          gui_current_window->buffer->completion.position = -1;          window->buffer->completion.position = -1;
1111      }      }
1112  }  }
1113    
# Line 1119  gui_input_delete_line () Line 1116  gui_input_delete_line ()
1116   */   */
1117    
1118  void  void
1119  gui_input_transpose_chars ()  gui_input_transpose_chars (t_gui_window *window)
1120  {  {
1121      char buf;      char buf;
1122      int curpos;      int curpos;
1123            
1124      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1125      {      {
1126          if (gui_current_window->buffer->input_buffer_pos > 0)          if (window->buffer->input_buffer_pos > 0)
1127          {          {
1128              curpos = gui_current_window->buffer->input_buffer_pos;              curpos = window->buffer->input_buffer_pos;
1129              if (curpos == gui_current_window->buffer->input_buffer_size)              if (curpos == window->buffer->input_buffer_size)
1130                  curpos--;                  curpos--;
1131              else              else
1132                  gui_current_window->buffer->input_buffer_pos++;                  window->buffer->input_buffer_pos++;
1133                            
1134              buf = gui_current_window->buffer->input_buffer[curpos];              buf = window->buffer->input_buffer[curpos];
1135              gui_current_window->buffer->input_buffer[curpos] =              window->buffer->input_buffer[curpos] =
1136                  gui_current_window->buffer->input_buffer[curpos-1];                  window->buffer->input_buffer[curpos-1];
1137              gui_current_window->buffer->input_buffer[curpos-1] = buf;              window->buffer->input_buffer[curpos-1] = buf;
1138                            
1139              gui_draw_buffer_input (gui_current_window->buffer, 0);                    gui_draw_buffer_input (window->buffer, 0);  
1140              gui_current_window->buffer->completion.position = -1;              window->buffer->completion.position = -1;
1141          }          }
1142      }      }
1143  }  }
# Line 1150  gui_input_transpose_chars () Line 1147  gui_input_transpose_chars ()
1147   */   */
1148    
1149  void  void
1150  gui_input_home ()  gui_input_home (t_gui_window *window)
1151  {  {
1152      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1153      {      {
1154          if (gui_current_window->buffer->input_buffer_pos > 0)          if (window->buffer->input_buffer_pos > 0)
1155          {          {
1156              gui_current_window->buffer->input_buffer_pos = 0;              window->buffer->input_buffer_pos = 0;
1157              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1158          }          }
1159      }      }
1160  }  }
# Line 1167  gui_input_home () Line 1164  gui_input_home ()
1164   */   */
1165    
1166  void  void
1167  gui_input_end ()  gui_input_end (t_gui_window *window)
1168  {  {
1169      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1170      {      {
1171          if (gui_current_window->buffer->input_buffer_pos <          if (window->buffer->input_buffer_pos <
1172              gui_current_window->buffer->input_buffer_size)              window->buffer->input_buffer_size)
1173          {          {
1174              gui_current_window->buffer->input_buffer_pos =              window->buffer->input_buffer_pos =
1175                  gui_current_window->buffer->input_buffer_size;                  window->buffer->input_buffer_size;
1176              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1177          }          }
1178      }      }
1179  }  }
# Line 1186  gui_input_end () Line 1183  gui_input_end ()
1183   */   */
1184    
1185  void  void
1186  gui_input_left ()  gui_input_left (t_gui_window *window)
1187  {  {
1188      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1189      {      {
1190          if (gui_current_window->buffer->input_buffer_pos > 0)          if (window->buffer->input_buffer_pos > 0)
1191          {          {
1192              gui_current_window->buffer->input_buffer_pos--;              window->buffer->input_buffer_pos--;
1193              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1194          }          }
1195      }      }
1196  }  }
# Line 1203  gui_input_left () Line 1200  gui_input_left ()
1200   */   */
1201    
1202  void  void
1203  gui_input_previous_word ()  gui_input_previous_word (t_gui_window *window)
1204  {  {
1205      int i;      int i;
1206            
1207      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1208      {      {
1209          if (gui_current_window->buffer->input_buffer_pos > 0)          if (window->buffer->input_buffer_pos > 0)
1210          {          {
1211              i = gui_current_window->buffer->input_buffer_pos - 1;              i = window->buffer->input_buffer_pos - 1;
1212              while ((i >= 0) &&              while ((i >= 0) &&
1213                     (gui_current_window->buffer->input_buffer[i] == ' '))                     (window->buffer->input_buffer[i] == ' '))
1214                  i--;                  i--;
1215              if (i < 0)              if (i < 0)
1216                  gui_current_window->buffer->input_buffer_pos = 0;                  window->buffer->input_buffer_pos = 0;
1217              else              else
1218              {              {
1219                  while ((i >= 0) &&                  while ((i >= 0) &&
1220                         (gui_current_window->buffer->input_buffer[i] != ' '))                         (window->buffer->input_buffer[i] != ' '))
1221                      i--;                      i--;
1222                  gui_current_window->buffer->input_buffer_pos = i + 1;                  window->buffer->input_buffer_pos = i + 1;
1223              }              }
1224              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1225          }          }
1226      }      }
1227  }  }
# Line 1234  gui_input_previous_word () Line 1231  gui_input_previous_word ()
1231   */   */
1232    
1233  void  void
1234  gui_input_right ()  gui_input_right (t_gui_window *window)
1235  {  {
1236      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1237      {      {
1238          if (gui_current_window->buffer->input_buffer_pos <          if (window->buffer->input_buffer_pos <
1239              gui_current_window->buffer->input_buffer_size)              window->buffer->input_buffer_size)
1240          {          {
1241              gui_current_window->buffer->input_buffer_pos++;              window->buffer->input_buffer_pos++;
1242              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1243          }          }
1244      }      }
1245  }  }
# Line 1252  gui_input_right () Line 1249  gui_input_right ()
1249   */   */
1250    
1251  void  void
1252  gui_input_next_word ()  gui_input_next_word (t_gui_window *window)
1253  {  {
1254      int i;      int i;
1255            
1256      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1257      {      {
1258          if (gui_current_window->buffer->input_buffer_pos <          if (window->buffer->input_buffer_pos <
1259              gui_current_window->buffer->input_buffer_size + 1)              window->buffer->input_buffer_size + 1)
1260          {          {
1261              i = gui_current_window->buffer->input_buffer_pos;              i = window->buffer->input_buffer_pos;
1262              while ((i <= gui_current_window->buffer->input_buffer_size) &&              while ((i <= window->buffer->input_buffer_size) &&
1263                     (gui_current_window->buffer->input_buffer[i] == ' '))                     (window->buffer->input_buffer[i] == ' '))
1264                  i++;                  i++;
1265              if (i > gui_current_window->buffer->input_buffer_size)              if (i > window->buffer->input_buffer_size)
1266                  gui_current_window->buffer->input_buffer_pos = i - 1;                  window->buffer->input_buffer_pos = i - 1;
1267              else              else
1268              {              {
1269                  while ((i <= gui_current_window->buffer->input_buffer_size) &&                  while ((i <= window->buffer->input_buffer_size) &&
1270                         (gui_current_window->buffer->input_buffer[i] != ' '))                         (window->buffer->input_buffer[i] != ' '))
1271                      i++;                      i++;
1272                  if (i > gui_current_window->buffer->input_buffer_size)                  if (i > window->buffer->input_buffer_size)
1273                      gui_current_window->buffer->input_buffer_pos =                      window->buffer->input_buffer_pos =
1274                          gui_current_window->buffer->input_buffer_size;                          window->buffer->input_buffer_size;
1275                  else                  else
1276                      gui_current_window->buffer->input_buffer_pos = i;                      window->buffer->input_buffer_pos = i;
1277                                    
1278              }              }
1279              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1280          }          }
1281      }      }
1282  }  }
# Line 1289  gui_input_next_word () Line 1286  gui_input_next_word ()
1286   */   */
1287    
1288  void  void
1289  gui_input_up ()  gui_input_up (t_gui_window *window)
1290  {  {
1291      if (gui_current_window->buffer->dcc)      if (window->buffer->dcc)
1292      {      {
1293          if (dcc_list)          if (dcc_list)
1294          {          {
1295              if (gui_current_window->dcc_selected              if (window->dcc_selected
1296                  && ((t_irc_dcc *)(gui_current_window->dcc_selected))->prev_dcc)                  && ((t_irc_dcc *)(window->dcc_selected))->prev_dcc)
1297              {              {
1298                  if (gui_current_window->dcc_selected ==                  if (window->dcc_selected ==
1299                      gui_current_window->dcc_first)                      window->dcc_first)
1300                      gui_current_window->dcc_first =                      window->dcc_first =
1301                          ((t_irc_dcc *)(gui_current_window->dcc_first))->prev_dcc;                          ((t_irc_dcc *)(window->dcc_first))->prev_dcc;
1302                  gui_current_window->dcc_selected =                  window->dcc_selected =
1303                      ((t_irc_dcc *)(gui_current_window->dcc_selected))->prev_dcc;                      ((t_irc_dcc *)(window->dcc_selected))->prev_dcc;
1304                  gui_draw_buffer_chat (gui_current_window->buffer, 1);                  gui_draw_buffer_chat (window->buffer, 1);
1305                  gui_draw_buffer_input (gui_current_window->buffer, 1);                  gui_draw_buffer_input (window->buffer, 1);
1306              }              }
1307          }          }
1308      }      }
1309      else if (gui_current_window->buffer->has_input)      else if (window->buffer->has_input)
1310      {      {
1311          if (gui_current_window->buffer->ptr_history)          if (window->buffer->ptr_history)
1312          {          {
1313              gui_current_window->buffer->ptr_history =              window->buffer->ptr_history =
1314                  gui_current_window->buffer->ptr_history->next_history;                  window->buffer->ptr_history->next_history;
1315              if (!gui_current_window->buffer->ptr_history)              if (!window->buffer->ptr_history)
1316                  gui_current_window->buffer->ptr_history =                  window->buffer->ptr_history =
1317                      gui_current_window->buffer->history;                      window->buffer->history;
1318          }          }
1319          else          else
1320              gui_current_window->buffer->ptr_history =              window->buffer->ptr_history =
1321                  gui_current_window->buffer->history;                  window->buffer->history;
1322          if (gui_current_window->buffer->ptr_history)          if (window->buffer->ptr_history)
1323          {          {
1324              gui_current_window->buffer->input_buffer_size =              window->buffer->input_buffer_size =
1325                  strlen (gui_current_window->buffer->ptr_history->text);                  strlen (window->buffer->ptr_history->text);
1326              gui_input_optimize_buffer_size (gui_current_window->buffer);              gui_input_optimize_buffer_size (window->buffer);
1327              gui_current_window->buffer->input_buffer_pos =              window->buffer->input_buffer_pos =
1328                  gui_current_window->buffer->input_buffer_size;                  window->buffer->input_buffer_size;
1329              strcpy (gui_current_window->buffer->input_buffer,              strcpy (window->buffer->input_buffer,
1330                      gui_current_window->buffer->ptr_history->text);                      window->buffer->ptr_history->text);
1331              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1332          }          }
1333      }      }
1334  }  }
# Line 1341  gui_input_up () Line 1338  gui_input_up ()
1338   */   */
1339    
1340  void  void
1341  gui_input_up_global ()  gui_input_up_global (t_gui_window *window)
1342  {  {
1343      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1344      {      {
1345          if (history_global_ptr)          if (history_global_ptr)
1346          {          {
# Line 1355  gui_input_up_global () Line 1352  gui_input_up_global ()
1352              history_global_ptr = history_global;              history_global_ptr = history_global;
1353          if (history_global_ptr)          if (history_global_ptr)
1354          {          {
1355              gui_current_window->buffer->input_buffer_size =              window->buffer->input_buffer_size =
1356                  strlen (history_global_ptr->text);                  strlen (history_global_ptr->text);
1357              gui_input_optimize_buffer_size (gui_current_window->buffer);              gui_input_optimize_buffer_size (window->buffer);
1358              gui_current_window->buffer->input_buffer_pos =              window->buffer->input_buffer_pos =
1359                  gui_current_window->buffer->input_buffer_size;                  window->buffer->input_buffer_size;
1360              strcpy (gui_current_window->buffer->input_buffer,              strcpy (window->buffer->input_buffer,
1361                      history_global_ptr->text);                      history_global_ptr->text);
1362              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1363          }          }
1364      }      }
1365  }  }
# Line 1372  gui_input_up_global () Line 1369  gui_input_up_global ()
1369   */   */
1370    
1371  void  void
1372  gui_input_down ()  gui_input_down (t_gui_window *window)
1373  {  {
1374      if (gui_current_window->buffer->dcc)      if (window->buffer->dcc)
1375      {      {
1376          if (dcc_list)          if (dcc_list)
1377          {          {
1378              if (!gui_current_window->dcc_selected              if (!window->dcc_selected
1379                  || ((t_irc_dcc *)(gui_current_window->dcc_selected))->next_dcc)                  || ((t_irc_dcc *)(window->dcc_selected))->next_dcc)
1380              {              {
1381                  if (gui_current_window->dcc_last_displayed                  if (window->dcc_last_displayed
1382                      && (gui_current_window->dcc_selected ==                      && (window->dcc_selected ==
1383                          gui_current_window->dcc_last_displayed))                          window->dcc_last_displayed))
1384                  {                  {
1385                      if (gui_current_window->dcc_first)                      if (window->dcc_first)
1386                          gui_current_window->dcc_first =                          window->dcc_first =
1387                              ((t_irc_dcc *)(gui_current_window->dcc_first))->next_dcc;                              ((t_irc_dcc *)(window->dcc_first))->next_dcc;
1388                      else                      else
1389                          gui_current_window->dcc_first =                          window->dcc_first =
1390                              dcc_list->next_dcc;                              dcc_list->next_dcc;
1391                  }                  }
1392                  if (gui_current_window->dcc_selected)                  if (window->dcc_selected)
1393                      gui_current_window->dcc_selected =                      window->dcc_selected =
1394                          ((t_irc_dcc *)(gui_current_window->dcc_selected))->next_dcc;                          ((t_irc_dcc *)(window->dcc_selected))->next_dcc;
1395                  else                  else
1396                      gui_current_window->dcc_selected =                      window->dcc_selected =
1397                          dcc_list->next_dcc;                          dcc_list->next_dcc;
1398                  gui_draw_buffer_chat (gui_current_window->buffer, 1);                  gui_draw_buffer_chat (window->buffer, 1);
1399                  gui_draw_buffer_input (gui_current_window->buffer, 1);                  gui_draw_buffer_input (window->buffer, 1);
1400              }              }
1401          }          }
1402      }      }
1403      else if (gui_current_window->buffer->has_input)      else if (window->buffer->has_input)
1404      {      {
1405          if (gui_current_window->buffer->ptr_history)          if (window->buffer->ptr_history)
1406          {          {
1407              gui_current_window->buffer->ptr_history =              window->buffer->ptr_history =
1408                  gui_current_window->buffer->ptr_history->prev_history;                  window->buffer->ptr_history->prev_history;
1409              if (gui_current_window->buffer->ptr_history)              if (window->buffer->ptr_history)
1410                  gui_current_window->buffer->input_buffer_size =                  window->buffer->input_buffer_size =
1411                      strlen (gui_current_window->buffer->ptr_history->text);                      strlen (window->buffer->ptr_history->text);
1412              else              else
1413                  gui_current_window->buffer->input_buffer_size = 0;                  window->buffer->input_buffer_size = 0;
1414              gui_input_optimize_buffer_size (gui_current_window->buffer);              gui_input_optimize_buffer_size (window->buffer);
1415              gui_current_window->buffer->input_buffer_pos =              window->buffer->input_buffer_pos =
1416                  gui_current_window->buffer->input_buffer_size;                  window->buffer->input_buffer_size;
1417              if (gui_current_window->buffer->ptr_history)              if (window->buffer->ptr_history)
1418                  strcpy (gui_current_window->buffer->input_buffer,                  strcpy (window->buffer->input_buffer,
1419                          gui_current_window->buffer->ptr_history->text);                          window->buffer->ptr_history->text);
1420              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1421          }          }
1422      }      }
1423  }  }
# Line 1430  gui_input_down () Line 1427  gui_input_down ()
1427   */   */
1428    
1429  void  void
1430  gui_input_down_global ()  gui_input_down_global (t_gui_window *window)
1431  {  {
1432      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1433      {      {
1434          if (history_global_ptr)          if (history_global_ptr)
1435          {          {
1436              history_global_ptr = history_global_ptr->prev_history;              history_global_ptr = history_global_ptr->prev_history;
1437              if (history_global_ptr)              if (history_global_ptr)
1438                  gui_current_window->buffer->input_buffer_size =                  window->buffer->input_buffer_size =
1439                      strlen (history_global_ptr->text);                      strlen (history_global_ptr->text);
1440              else              else
1441                  gui_current_window->buffer->input_buffer_size = 0;                  window->buffer->input_buffer_size = 0;
1442              gui_input_optimize_buffer_size (gui_current_window->buffer);              gui_input_optimize_buffer_size (window->buffer);
1443              gui_current_window->buffer->input_buffer_pos =              window->buffer->input_buffer_pos =
1444                  gui_current_window->buffer->input_buffer_size;                  window->buffer->input_buffer_size;
1445              if (history_global_ptr)              if (history_global_ptr)
1446                  strcpy (gui_current_window->buffer->input_buffer,                  strcpy (window->buffer->input_buffer,
1447                          history_global_ptr->text);                          history_global_ptr->text);
1448              gui_draw_buffer_input (gui_current_window->buffer, 0);              gui_draw_buffer_input (window->buffer, 0);
1449          }          }
1450      }      }
1451  }  }
# Line 1458  gui_input_down_global () Line 1455  gui_input_down_global ()
1455   */   */
1456    
1457  void  void
1458  gui_input_jump_smart ()  gui_input_jump_smart (t_gui_window *window)
1459  {  {
1460      if (hotlist)      if (hotlist)
1461      {      {
1462          if (!hotlist_initial_buffer)          if (!hotlist_initial_buffer)
1463              hotlist_initial_buffer = gui_current_window->buffer;              hotlist_initial_buffer = window->buffer;
1464          gui_switch_to_buffer (gui_current_window, hotlist->buffer);          gui_switch_to_buffer (window, hotlist->buffer);
1465          gui_redraw_buffer (gui_current_window->buffer);          gui_redraw_buffer (window->buffer);
1466      }      }
1467      else      else
1468      {      {
1469          if (hotlist_initial_buffer)          if (hotlist_initial_buffer)
1470          {          {
1471              gui_switch_to_buffer (gui_current_window, hotlist_initial_buffer);              gui_switch_to_buffer (window, hotlist_initial_buffer);
1472              gui_redraw_buffer (gui_current_window->buffer);              gui_redraw_buffer (window->buffer);
1473              hotlist_initial_buffer = NULL;              hotlist_initial_buffer = NULL;
1474          }          }
1475      }      }
# Line 1483  gui_input_jump_smart () Line 1480  gui_input_jump_smart ()
1480   */   */
1481    
1482  void  void
1483  gui_input_jump_dcc ()  gui_input_jump_dcc (t_gui_window *window)
1484  {  {
1485      if (gui_current_window->buffer->dcc)      if (window->buffer->dcc)
1486      {      {
1487          if (buffer_before_dcc)          if (buffer_before_dcc)
1488          {          {
1489              gui_switch_to_buffer (gui_current_window,              gui_switch_to_buffer (window,
1490                                    buffer_before_dcc);                                    buffer_before_dcc);
1491              gui_redraw_buffer (gui_current_window->buffer);              gui_redraw_buffer (window->buffer);
1492          }          }
1493      }      }
1494      else      else
1495      {      {
1496          buffer_before_dcc = gui_current_window->buffer;          buffer_before_dcc = window->buffer;
1497          gui_switch_to_dcc_buffer ();          gui_switch_to_dcc_buffer (window);
1498      }      }
1499  }  }
1500    
# Line 1506  gui_input_jump_dcc () Line 1503  gui_input_jump_dcc ()
1503   */   */
1504    
1505  void  void
1506  gui_input_jump_last_buffer ()  gui_input_jump_last_buffer (t_gui_window *window)
1507  {  {
1508      if (last_gui_buffer)      if (last_gui_buffer)
1509          gui_switch_to_buffer_by_number (gui_current_window, last_gui_buffer->number);          gui_switch_to_buffer_by_number (window, last_gui_buffer->number);
1510  }  }
1511    
1512  /*  /*
# Line 1517  gui_input_jump_last_buffer () Line 1514  gui_input_jump_last_buffer ()
1514   */   */
1515    
1516  void  void
1517  gui_input_jump_server ()  gui_input_jump_server (t_gui_window *window)
1518  {  {
1519      if (SERVER(gui_current_window->buffer))      if (SERVER(window->buffer))
1520      {      {
1521          if (SERVER(gui_current_window->buffer)->buffer !=          if (SERVER(window->buffer)->buffer !=
1522              gui_current_window->buffer)              window->buffer)
1523          {          {
1524              gui_switch_to_buffer (gui_current_window,              gui_switch_to_buffer (window,
1525                                    SERVER(gui_current_window->buffer)->buffer);                                    SERVER(window->buffer)->buffer);
1526              gui_redraw_buffer (gui_current_window->buffer);              gui_redraw_buffer (window->buffer);
1527          }          }
1528      }      }
1529  }  }
# Line 1536  gui_input_jump_server () Line 1533  gui_input_jump_server ()
1533   */   */
1534    
1535  void  void
1536  gui_input_jump_next_server ()  gui_input_jump_next_server (t_gui_window *window)
1537  {  {
1538      t_irc_server *ptr_server;      t_irc_server *ptr_server;
1539      t_gui_buffer *ptr_buffer;      t_gui_buffer *ptr_buffer;
1540            
1541      if (SERVER(gui_current_window->buffer))      if (SERVER(window->buffer))
1542      {      {
1543          ptr_server = SERVER(gui_current_window->buffer)->next_server;          ptr_server = SERVER(window->buffer)->next_server;
1544          if (!ptr_server)          if (!ptr_server)
1545              ptr_server = irc_servers;              ptr_server = irc_servers;
1546          while (ptr_server != SERVER(gui_current_window->buffer))          while (ptr_server != SERVER(window->buffer))
1547          {          {
1548              if (ptr_server->buffer)              if (ptr_server->buffer)
1549                  break;                  break;
1550              ptr_server = (ptr_server->next_server) ?              ptr_server = (ptr_server->next_server) ?
1551                  ptr_server->next_server : irc_servers;                  ptr_server->next_server : irc_servers;
1552          }          }
1553          if (ptr_server != SERVER(gui_current_window->buffer))          if (ptr_server != SERVER(window->buffer))
1554          {          {
1555              /* save current buffer */              /* save current buffer */
1556              SERVER(gui_current_window->buffer)->buffer->old_channel_buffer =              SERVER(window->buffer)->buffer->old_channel_buffer =
1557                  gui_current_window->buffer;                  window->buffer;
1558                            
1559              /* come back to memorized chan if found */              /* come back to memorized chan if found */
1560              if (ptr_server->buffer->old_channel_buffer)              if (ptr_server->buffer->old_channel_buffer)
# Line 1565  gui_input_jump_next_server () Line 1562  gui_input_jump_next_server ()
1562              else              else
1563                  ptr_buffer = (ptr_server->channels) ?                  ptr_buffer = (ptr_server->channels) ?
1564                      ptr_server->channels->buffer : ptr_server->buffer;                      ptr_server->channels->buffer : ptr_server->buffer;
1565              gui_switch_to_buffer (gui_current_window, ptr_buffer);              gui_switch_to_buffer (window, ptr_buffer);
1566              gui_redraw_buffer (gui_current_window->buffer);              gui_redraw_buffer (window->buffer);
1567          }          }
1568      }      }
1569  }  }
# Line 1576  gui_input_jump_next_server () Line 1573  gui_input_jump_next_server ()
1573   */   */
1574    
1575  void  void
1576  gui_input_hotlist_clear ()  gui_input_hotlist_clear (t_gui_window *window)
1577  {  {
1578      if (hotlist)      if (hotlist)
1579      {      {
1580          hotlist_free_all ();          hotlist_free_all ();
1581          gui_redraw_buffer (gui_current_window->buffer);          gui_redraw_buffer (window->buffer);
1582      }      }
1583      hotlist_initial_buffer = gui_current_window->buffer;      hotlist_initial_buffer = window->buffer;
1584  }  }
1585    
1586  /*  /*
# Line 1591  gui_input_hotlist_clear () Line 1588  gui_input_hotlist_clear ()
1588   */   */
1589    
1590  void  void
1591  gui_input_infobar_clear ()  gui_input_infobar_clear (t_gui_window *window)
1592  {  {
1593      gui_infobar_remove ();      gui_infobar_remove ();
1594      gui_draw_buffer_infobar (gui_current_window->buffer, 1);      gui_draw_buffer_infobar (window->buffer, 1);
1595  }  }
1596    
1597  /*  /*
# Line 1602  gui_input_infobar_clear () Line 1599  gui_input_infobar_clear ()
1599   */   */
1600    
1601  void  void
1602  gui_input_grab_key ()  gui_input_grab_key (t_gui_window *window)
1603  {  {
1604      if (gui_current_window->buffer->has_input)      if (window->buffer->has_input)
1605          gui_key_init_grab ();          gui_key_init_grab ();
1606  }  }
1607    
# Line 1613  gui_input_grab_key () Line 1610  gui_input_grab_key ()
1610   */   */
1611    
1612  void  void
1613  gui_switch_to_previous_buffer ()  gui_switch_to_previous_buffer (t_gui_window *window)
1614  {  {
1615      if (!gui_ok)      if (!gui_ok)
1616          return;          return;
# Line 1622  gui_switch_to_previous_buffer () Line 1619  gui_switch_to_previous_buffer ()
1619      if (gui_buffers == last_gui_buffer)      if (gui_buffers == last_gui_buffer)
1620          return;          return;
1621            
1622      if (gui_current_window->buffer->prev_buffer)      if (window->buffer->prev_buffer)
1623          gui_switch_to_buffer (gui_current_window, gui_current_window->buffer->prev_buffer);          gui_switch_to_buffer (window, window->buffer->prev_buffer);
1624      else      else
1625          gui_switch_to_buffer (gui_current_window, last_gui_buffer);          gui_switch_to_buffer (window, last_gui_buffer);
1626            
1627      gui_redraw_buffer (gui_current_window->buffer);      gui_redraw_buffer (window->buffer);
1628  }  }
1629    
1630  /*  /*
# Line 1635  gui_switch_to_previous_buffer () Line 1632  gui_switch_to_previous_buffer ()
1632   */   */
1633    
1634  void  void
1635  gui_switch_to_next_buffer ()  gui_switch_to_next_buffer (t_gui_window *window)
1636  {  {
1637      if (!gui_ok)      if (!gui_ok)
1638          return;          return;
# Line 1644  gui_switch_to_next_buffer () Line 1641  gui_switch_to_next_buffer ()
1641      if (gui_buffers == last_gui_buffer)      if (gui_buffers == last_gui_buffer)
1642          return;          return;
1643            
1644      if (gui_current_window->buffer->next_buffer)      if (window->buffer->next_buffer)
1645          gui_switch_to_buffer (gui_current_window, gui_current_window->buffer->next_buffer);          gui_switch_to_buffer (window, window->buffer->next_buffer);
1646      else      else
1647          gui_switch_to_buffer (gui_current_window, gui_buffers);          gui_switch_to_buffer (window, gui_buffers);
1648            
1649      gui_redraw_buffer (gui_current_window->buffer);      gui_redraw_buffer (window->buffer);
1650  }  }
1651    
1652  /*  /*
# Line 1657  gui_switch_to_next_buffer () Line 1654  gui_switch_to_next_buffer ()
1654   */   */
1655    
1656  void  void
1657  gui_switch_to_previous_window ()  gui_switch_to_previous_window (t_gui_window *window)
1658  {  {
1659      if (!gui_ok)      if (!gui_ok)
1660          return;          return;
# Line 1666  gui_switch_to_previous_window () Line 1663  gui_switch_to_previous_window ()
1663      if (gui_windows == last_gui_window)      if (gui_windows == last_gui_window)
1664          return;          return;
1665            
1666      gui_current_window = (gui_current_window->prev_window) ? gui_current_window->prev_window : last_gui_window;      window = (window->prev_window) ? window->prev_window : last_gui_window;
1667      gui_switch_to_buffer (gui_current_window, gui_current_window->buffer);      gui_switch_to_buffer (window, window->buffer);
1668      gui_redraw_buffer (gui_current_window->buffer);      gui_redraw_buffer (window->buffer);
1669  }  }
1670    
1671  /*  /*
# Line 1676  gui_switch_to_previous_window () Line 1673  gui_switch_to_previous_window ()
1673   */   */
1674    
1675  void  void
1676  gui_switch_to_next_window ()  gui_switch_to_next_window (t_gui_window *window)
1677  {  {
1678      if (!gui_ok)      if (!gui_ok)
1679          return;          return;
# Line 1685  gui_switch_to_next_window () Line 1682  gui_switch_to_next_window ()
1682      if (gui_windows == last_gui_window)      if (gui_windows == last_gui_window)
1683          return;          return;
1684            
1685      gui_current_window = (gui_current_window->next_window) ? gui_current_window->next_window : gui_windows;      window = (window->next_window) ? window->next_window : gui_windows;
1686      gui_switch_to_buffer (gui_current_window, gui_current_window->buffer);      gui_switch_to_buffer (window, window->buffer);
1687      gui_redraw_buffer (gui_current_window->buffer);      gui_redraw_buffer (window->buffer);
1688  }  }
1689    
1690  /*  /*
# Line 1695  gui_switch_to_next_window () Line 1692  gui_switch_to_next_window ()
1692   */   */
1693    
1694  void  void
1695  gui_switch_to_dcc_buffer ()  gui_switch_to_dcc_buffer (t_gui_window *window)
1696  {  {
1697      t_gui_buffer *ptr_buffer;      t_gui_buffer *ptr_buffer;
1698            
# Line 1707  gui_switch_to_dcc_buffer () Line 1704  gui_switch_to_dcc_buffer ()
1704      }      }
1705      if (ptr_buffer)      if (ptr_buffer)
1706      {      {
1707          gui_switch_to_buffer (gui_current_window, ptr_buffer);          gui_switch_to_buffer (window, ptr_buffer);
1708          gui_redraw_buffer (ptr_buffer);          gui_redraw_buffer (ptr_buffer);
1709      }      }
1710      else      else
1711          gui_buffer_new (gui_current_window, NULL, NULL, 1, 1);          gui_buffer_new (window, NULL, NULL, 1, 1);
1712  }  }
1713    
1714  /*  /*

Legend:
Removed from v.1.50  
changed lines
  Added in v.1.51

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