[BACK]Return to window-client.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/window-client.c between version 1.23 and 1.24

version 1.23, 2019/05/28 07:18:42 version 1.24, 2019/08/16 11:49:12
Line 75 
Line 75 
         "creation",          "creation",
         "activity"          "activity"
 };  };
   static struct mode_tree_sort_criteria *window_client_sort;
   
 struct window_client_itemdata {  struct window_client_itemdata {
         struct client   *c;          struct client   *c;
Line 110 
Line 111 
 }  }
   
 static int  static int
 window_client_cmp_name(const void *a0, const void *b0)  window_client_cmp(const void *a0, const void *b0)
 {  {
         const struct window_client_itemdata *const *a = a0;          const struct window_client_itemdata *const      *a = a0;
         const struct window_client_itemdata *const *b = b0;          const struct window_client_itemdata *const      *b = b0;
           const struct window_client_itemdata             *itema = *a;
           const struct window_client_itemdata             *itemb = *b;
           struct client                                   *ca = itema->c;
           struct client                                   *cb = itemb->c;
           int                                              result = 0;
   
         return (strcmp((*a)->c->name, (*b)->c->name));          switch (window_client_sort->field) {
 }          case WINDOW_CLIENT_BY_SIZE:
                   result = ca->tty.sx - cb->tty.sx;
                   if (result == 0)
                           result = ca->tty.sy - cb->tty.sy;
                   break;
           case WINDOW_CLIENT_BY_CREATION_TIME:
                   if (timercmp(&ca->creation_time, &cb->creation_time, >))
                           result = -1;
                   else if (timercmp(&ca->creation_time, &cb->creation_time, <))
                           result = 1;
                   break;
           case WINDOW_CLIENT_BY_ACTIVITY_TIME:
                   if (timercmp(&ca->activity_time, &cb->activity_time, >))
                           result = -1;
                   else if (timercmp(&ca->activity_time, &cb->activity_time, <))
                           result = 1;
                   break;
           }
   
 static int          /* Use WINDOW_CLIENT_BY_NAME as default order and tie breaker. */
 window_client_cmp_size(const void *a0, const void *b0)          if (result == 0)
 {                  result = strcmp(ca->name, cb->name);
         const struct window_client_itemdata *const *a = a0;  
         const struct window_client_itemdata *const *b = b0;  
   
         if ((*a)->c->tty.sx < (*b)->c->tty.sx)          if (window_client_sort->reversed)
                 return (-1);                  result = -result;
         if ((*a)->c->tty.sx > (*b)->c->tty.sx)          return (result);
                 return (1);  
         if ((*a)->c->tty.sy < (*b)->c->tty.sy)  
                 return (-1);  
         if ((*a)->c->tty.sy > (*b)->c->tty.sy)  
                 return (1);  
         return (strcmp((*a)->c->name, (*b)->c->name));  
 }  }
   
 static int  
 window_client_cmp_creation_time(const void *a0, const void *b0)  
 {  
         const struct window_client_itemdata *const *a = a0;  
         const struct window_client_itemdata *const *b = b0;  
   
         if (timercmp(&(*a)->c->creation_time, &(*b)->c->creation_time, >))  
                 return (-1);  
         if (timercmp(&(*a)->c->creation_time, &(*b)->c->creation_time, <))  
                 return (1);  
         return (strcmp((*a)->c->name, (*b)->c->name));  
 }  
   
 static int  
 window_client_cmp_activity_time(const void *a0, const void *b0)  
 {  
         const struct window_client_itemdata *const *a = a0;  
         const struct window_client_itemdata *const *b = b0;  
   
         if (timercmp(&(*a)->c->activity_time, &(*b)->c->activity_time, >))  
                 return (-1);  
         if (timercmp(&(*a)->c->activity_time, &(*b)->c->activity_time, <))  
                 return (1);  
         return (strcmp((*a)->c->name, (*b)->c->name));  
 }  
   
 static void  static void
 window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag,  window_client_build(void *modedata, struct mode_tree_sort_criteria *sort_crit,
     const char *filter)      __unused uint64_t *tag, const char *filter)
 {  {
         struct window_client_modedata   *data = modedata;          struct window_client_modedata   *data = modedata;
         struct window_client_itemdata   *item;          struct window_client_itemdata   *item;
Line 187 
Line 176 
                 c->references++;                  c->references++;
         }          }
   
         switch (sort_type) {          window_client_sort = sort_crit;
         case WINDOW_CLIENT_BY_NAME:          qsort(data->item_list, data->item_size, sizeof *data->item_list,
                 qsort(data->item_list, data->item_size, sizeof *data->item_list,              window_client_cmp);
                     window_client_cmp_name);  
                 break;  
         case WINDOW_CLIENT_BY_SIZE:  
                 qsort(data->item_list, data->item_size, sizeof *data->item_list,  
                     window_client_cmp_size);  
                 break;  
         case WINDOW_CLIENT_BY_CREATION_TIME:  
                 qsort(data->item_list, data->item_size, sizeof *data->item_list,  
                     window_client_cmp_creation_time);  
                 break;  
         case WINDOW_CLIENT_BY_ACTIVITY_TIME:  
                 qsort(data->item_list, data->item_size, sizeof *data->item_list,  
                     window_client_cmp_activity_time);  
                 break;  
         }  
   
         for (i = 0; i < data->item_size; i++) {          for (i = 0; i < data->item_size; i++) {
                 item = data->item_list[i];                  item = data->item_list[i];

Legend:
Removed from v.1.23  
changed lines
  Added in v.1.24