/[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.57 by flashcode, Sat Oct 22 08:22:28 2005 UTC revision 1.58 by flashcode, Sat Oct 22 14:04:27 2005 UTC
# Line 609  gui_input_optimize_buffer_size (t_gui_bu Line 609  gui_input_optimize_buffer_size (t_gui_bu
609    
610  /*  /*
611   * gui_input_action_dcc: execute an action on a DCC after a user input   * gui_input_action_dcc: execute an action on a DCC after a user input
612     *                       return -1 if DCC buffer was closed due to action, 0 otherwise
613   */   */
614    
615  void  void
616  gui_input_action_dcc (t_gui_window *window, char action)  gui_input_action_dcc (t_gui_window *window, char *actions)
617  {  {
618      t_irc_dcc *dcc_selected, *ptr_dcc, *ptr_dcc_next;      t_irc_dcc *dcc_selected, *ptr_dcc, *ptr_dcc_next;
619        t_gui_buffer *ptr_buffer;
620            
621      dcc_selected = (window->dcc_selected) ?      while (actions[0])
         (t_irc_dcc *) window->dcc_selected : dcc_list;  
       
     switch (action)  
622      {      {
623          /* accept DCC */          if (actions[0] >= 32)
624          case 'a':          {
625          case 'A':              dcc_selected = (window->dcc_selected) ?
626              if (dcc_selected                  (t_irc_dcc *) window->dcc_selected : dcc_list;
627                  && (DCC_IS_RECV(dcc_selected->status))              
628                  && (dcc_selected->status == DCC_WAITING))              switch (actions[0])
             {  
                 dcc_accept (dcc_selected);  
             }  
             break;  
         /* cancel DCC */  
         case 'c':  
         case 'C':  
             if (dcc_selected  
                 && (!DCC_ENDED(dcc_selected->status)))  
             {  
                 dcc_close (dcc_selected, DCC_ABORTED);  
                 gui_redraw_buffer (window->buffer);  
             }  
             break;  
         /* purge old DCC */  
         case 'p':  
         case 'P':  
             window->dcc_selected = NULL;  
             ptr_dcc = dcc_list;  
             while (ptr_dcc)  
             {  
                 ptr_dcc_next = ptr_dcc->next_dcc;  
                 if (DCC_ENDED(ptr_dcc->status))  
                     dcc_free (ptr_dcc);  
                 ptr_dcc = ptr_dcc_next;  
             }  
             gui_redraw_buffer (window->buffer);  
             break;  
         /* close DCC window */  
         case 'q':  
         case 'Q':  
             if (buffer_before_dcc)  
             {  
                 gui_buffer_free (window->buffer, 1);  
                 gui_switch_to_buffer (window, buffer_before_dcc);  
             }  
             else  
                 gui_buffer_free (window->buffer, 1);  
             gui_redraw_buffer (window->buffer);  
             break;  
         /* remove from DCC list */  
         case 'r':  
         case 'R':  
             if (dcc_selected  
                 && (DCC_ENDED(dcc_selected->status)))  
629              {              {
630                  if (dcc_selected->next_dcc)                  /* accept DCC */
631                      window->dcc_selected = dcc_selected->next_dcc;                  case 'a':
632                  else                  case 'A':
633                        if (dcc_selected
634                            && (DCC_IS_RECV(dcc_selected->status))
635                            && (dcc_selected->status == DCC_WAITING))
636                        {
637                            dcc_accept (dcc_selected);
638                        }
639                        break;
640                    /* cancel DCC */
641                    case 'c':
642                    case 'C':
643                        if (dcc_selected
644                            && (!DCC_ENDED(dcc_selected->status)))
645                        {
646                            dcc_close (dcc_selected, DCC_ABORTED);
647                            gui_redraw_buffer (window->buffer);
648                        }
649                        break;
650                        /* purge old DCC */
651                    case 'p':
652                    case 'P':
653                      window->dcc_selected = NULL;                      window->dcc_selected = NULL;
654                  dcc_free (dcc_selected);                      ptr_dcc = dcc_list;
655                  gui_redraw_buffer (window->buffer);                      while (ptr_dcc)
656                        {
657                            ptr_dcc_next = ptr_dcc->next_dcc;
658                            if (DCC_ENDED(ptr_dcc->status))
659                                dcc_free (ptr_dcc);
660                            ptr_dcc = ptr_dcc_next;
661                        }
662                        gui_redraw_buffer (window->buffer);
663                        break;
664                        /* close DCC window */
665                    case 'q':
666                    case 'Q':
667                        if (buffer_before_dcc)
668                        {
669                            ptr_buffer = window->buffer;
670                            gui_switch_to_buffer (window, buffer_before_dcc);
671                            gui_buffer_free (ptr_buffer, 0);
672                        }
673                        else
674                            gui_buffer_free (window->buffer, 1);
675                        gui_redraw_buffer (window->buffer);
676                        return;
677                        break;
678                        /* remove from DCC list */
679                    case 'r':
680                    case 'R':
681                        if (dcc_selected
682                            && (DCC_ENDED(dcc_selected->status)))
683                        {
684                            if (dcc_selected->next_dcc)
685                                window->dcc_selected = dcc_selected->next_dcc;
686                            else
687                                window->dcc_selected = NULL;
688                            dcc_free (dcc_selected);
689                            gui_redraw_buffer (window->buffer);
690                        }
691                        break;
692              }              }
693              break;          }
694            actions = utf8_next_char (actions);
695      }      }
696  }  }
697    
# Line 697  gui_input_insert_string (t_gui_window *w Line 708  gui_input_insert_string (t_gui_window *w
708      int size, length;      int size, length;
709      char *ptr_start;      char *ptr_start;
710            
711      if (window->buffer->dcc)      if (window->buffer->has_input)
     {  
         while (string[0])  
         {  
             if (string[0] >= 32)  
                 gui_input_action_dcc (window, string[0]);  
             string = utf8_next_char (string);  
         }  
     }  
     else if (window->buffer->has_input)  
712      {      {
713          if (pos == -1)          if (pos == -1)
714              pos = window->buffer->input_buffer_pos;              pos = window->buffer->input_buffer_pos;
# Line 1761  gui_switch_to_next_window (t_gui_window Line 1763  gui_switch_to_next_window (t_gui_window
1763  }  }
1764    
1765  /*  /*
1766     * gui_switch_to_window_by_buffer: switch to next window displaying a buffer
1767     */
1768    
1769    void
1770    gui_switch_to_window_by_buffer (t_gui_window *window, int buffer_number)
1771    {
1772        t_gui_window *ptr_win;
1773        
1774        if (!gui_ok)
1775            return;
1776        
1777        ptr_win = (window->next_window) ? window->next_window : gui_windows;
1778        while (ptr_win != window)
1779        {
1780            if (ptr_win->buffer->number == buffer_number)
1781            {
1782                gui_current_window = ptr_win;
1783                gui_switch_to_buffer (gui_current_window, gui_current_window->buffer);
1784                gui_redraw_buffer (gui_current_window->buffer);
1785                return;
1786            }
1787            ptr_win = (ptr_win->next_window) ? ptr_win->next_window : gui_windows;
1788        }
1789    }
1790    
1791    /*
1792   * gui_switch_to_dcc_buffer: switch to dcc buffer (create it if it does not exist)   * gui_switch_to_dcc_buffer: switch to dcc buffer (create it if it does not exist)
1793   */   */
1794    

Legend:
Removed from v.1.57  
changed lines
  Added in v.1.58

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