Lines Matching refs:wp

66 	u_int			 wp;  member
367 window_pane_destroy_ready(struct window_pane *wp) in window_pane_destroy_ready() argument
371 if (wp->pipe_fd != -1) { in window_pane_destroy_ready()
372 if (EVBUFFER_LENGTH(wp->pipe_event->output) != 0) in window_pane_destroy_ready()
374 if (ioctl(wp->fd, FIONREAD, &n) != -1 && n > 0) in window_pane_destroy_ready()
378 if (~wp->flags & PANE_EXITED) in window_pane_destroy_ready()
428 window_pane_send_resize(struct window_pane *wp, u_int sx, u_int sy) in window_pane_send_resize() argument
430 struct window *w = wp->window; in window_pane_send_resize()
433 if (wp->fd == -1) in window_pane_send_resize()
436 log_debug("%s: %%%u resize to %u,%u", __func__, wp->id, sx, sy); in window_pane_send_resize()
443 if (ioctl(wp->fd, TIOCSWINSZ, &ws) == -1) in window_pane_send_resize()
457 window_has_pane(struct window *w, struct window_pane *wp) in window_has_pane() argument
462 if (wp1 == wp) in window_has_pane()
469 window_set_active_pane(struct window *w, struct window_pane *wp, int notify) in window_set_active_pane() argument
471 log_debug("%s: pane %%%u", __func__, wp->id); in window_set_active_pane()
473 if (wp == w->active) in window_set_active_pane()
477 w->active = wp; in window_set_active_pane()
489 window_redraw_active_switch(struct window *w, struct window_pane *wp) in window_redraw_active_switch() argument
494 if (wp == w->active) in window_redraw_active_switch()
502 gc1 = &wp->cached_gc; in window_redraw_active_switch()
503 gc2 = &wp->cached_active_gc; in window_redraw_active_switch()
505 wp->flags |= PANE_REDRAW; in window_redraw_active_switch()
507 c1 = window_pane_get_palette(wp, gc1->fg); in window_redraw_active_switch()
508 c2 = window_pane_get_palette(wp, gc2->fg); in window_redraw_active_switch()
510 wp->flags |= PANE_REDRAW; in window_redraw_active_switch()
512 c1 = window_pane_get_palette(wp, gc1->bg); in window_redraw_active_switch()
513 c2 = window_pane_get_palette(wp, gc2->bg); in window_redraw_active_switch()
515 wp->flags |= PANE_REDRAW; in window_redraw_active_switch()
518 if (wp == w->active) in window_redraw_active_switch()
520 wp = w->active; in window_redraw_active_switch()
527 struct window_pane *wp; in window_get_active_at() local
529 TAILQ_FOREACH(wp, &w->panes, entry) { in window_get_active_at()
530 if (!window_pane_visible(wp)) in window_get_active_at()
532 if (x < wp->xoff || x > wp->xoff + wp->sx) in window_get_active_at()
534 if (y < wp->yoff || y > wp->yoff + wp->sy) in window_get_active_at()
536 return (wp); in window_get_active_at()
583 window_zoom(struct window_pane *wp) in window_zoom() argument
585 struct window *w = wp->window; in window_zoom()
594 if (w->active != wp) in window_zoom()
595 window_set_active_pane(w, wp, 1); in window_zoom()
603 layout_init(w, wp); in window_zoom()
613 struct window_pane *wp; in window_unzoom() local
623 TAILQ_FOREACH(wp, &w->panes, entry) { in window_unzoom()
624 wp->layout_cell = wp->saved_layout_cell; in window_unzoom()
625 wp->saved_layout_cell = NULL; in window_unzoom()
659 struct window_pane *wp; in window_add_pane() local
664 wp = window_pane_create(w, w->sx, w->sy, hlimit); in window_add_pane()
667 TAILQ_INSERT_HEAD(&w->panes, wp, entry); in window_add_pane()
669 log_debug("%s: @%u before %%%u", __func__, w->id, wp->id); in window_add_pane()
671 TAILQ_INSERT_HEAD(&w->panes, wp, entry); in window_add_pane()
673 TAILQ_INSERT_BEFORE(other, wp, entry); in window_add_pane()
675 log_debug("%s: @%u after %%%u", __func__, w->id, wp->id); in window_add_pane()
677 TAILQ_INSERT_TAIL(&w->panes, wp, entry); in window_add_pane()
679 TAILQ_INSERT_AFTER(&w->panes, other, wp, entry); in window_add_pane()
681 return (wp); in window_add_pane()
685 window_lost_pane(struct window *w, struct window_pane *wp) in window_lost_pane() argument
687 log_debug("%s: @%u pane %%%u", __func__, w->id, wp->id); in window_lost_pane()
689 if (wp == marked_pane.wp) in window_lost_pane()
692 if (wp == w->active) { in window_lost_pane()
696 w->active = TAILQ_PREV(wp, window_panes, entry); in window_lost_pane()
698 w->active = TAILQ_NEXT(wp, entry); in window_lost_pane()
704 } else if (wp == w->last) in window_lost_pane()
709 window_remove_pane(struct window *w, struct window_pane *wp) in window_remove_pane() argument
711 window_lost_pane(w, wp); in window_remove_pane()
713 TAILQ_REMOVE(&w->panes, wp, entry); in window_remove_pane()
714 window_pane_destroy(wp); in window_remove_pane()
720 struct window_pane *wp; in window_pane_at_index() local
724 TAILQ_FOREACH(wp, &w->panes, entry) { in window_pane_at_index()
726 return (wp); in window_pane_at_index()
733 window_pane_next_by_number(struct window *w, struct window_pane *wp, u_int n) in window_pane_next_by_number() argument
736 if ((wp = TAILQ_NEXT(wp, entry)) == NULL) in window_pane_next_by_number()
737 wp = TAILQ_FIRST(&w->panes); in window_pane_next_by_number()
740 return (wp); in window_pane_next_by_number()
744 window_pane_previous_by_number(struct window *w, struct window_pane *wp, in window_pane_previous_by_number() argument
748 if ((wp = TAILQ_PREV(wp, window_panes, entry)) == NULL) in window_pane_previous_by_number()
749 wp = TAILQ_LAST(&w->panes, window_panes); in window_pane_previous_by_number()
752 return (wp); in window_pane_previous_by_number()
756 window_pane_index(struct window_pane *wp, u_int *i) in window_pane_index() argument
759 struct window *w = wp->window; in window_pane_index()
763 if (wp == wq) { in window_pane_index()
775 struct window_pane *wp; in window_count_panes() local
779 TAILQ_FOREACH(wp, &w->panes, entry) in window_count_panes()
787 struct window_pane *wp; in window_destroy_panes() local
790 wp = TAILQ_FIRST(&w->panes); in window_destroy_panes()
791 TAILQ_REMOVE(&w->panes, wp, entry); in window_destroy_panes()
792 window_pane_destroy(wp); in window_destroy_panes()
843 struct window_pane wp; in window_pane_find_by_id() local
845 wp.id = id; in window_pane_find_by_id()
846 return (RB_FIND(window_pane_tree, &all_window_panes, &wp)); in window_pane_find_by_id()
852 struct window_pane *wp; in window_pane_create() local
855 wp = xcalloc(1, sizeof *wp); in window_pane_create()
856 wp->window = w; in window_pane_create()
857 wp->options = options_create(w->options); in window_pane_create()
858 wp->flags = PANE_STYLECHANGED; in window_pane_create()
860 wp->id = next_window_pane_id++; in window_pane_create()
861 RB_INSERT(window_pane_tree, &all_window_panes, wp); in window_pane_create()
863 wp->fd = -1; in window_pane_create()
865 wp->fg = 8; in window_pane_create()
866 wp->bg = 8; in window_pane_create()
868 TAILQ_INIT(&wp->modes); in window_pane_create()
870 TAILQ_INIT (&wp->resize_queue); in window_pane_create()
872 wp->sx = sx; in window_pane_create()
873 wp->sy = sy; in window_pane_create()
875 wp->pipe_fd = -1; in window_pane_create()
877 screen_init(&wp->base, sx, sy, hlimit); in window_pane_create()
878 wp->screen = &wp->base; in window_pane_create()
880 screen_init(&wp->status_screen, 1, 1, 0); in window_pane_create()
883 screen_set_title(&wp->base, host); in window_pane_create()
885 return (wp); in window_pane_create()
889 window_pane_destroy(struct window_pane *wp) in window_pane_destroy() argument
894 window_pane_reset_mode_all(wp); in window_pane_destroy()
895 free(wp->searchstr); in window_pane_destroy()
897 if (wp->fd != -1) { in window_pane_destroy()
899 utempter_remove_record(wp->fd); in window_pane_destroy()
901 bufferevent_free(wp->event); in window_pane_destroy()
902 close(wp->fd); in window_pane_destroy()
904 if (wp->ictx != NULL) in window_pane_destroy()
905 input_free(wp->ictx); in window_pane_destroy()
907 screen_free(&wp->status_screen); in window_pane_destroy()
909 screen_free(&wp->base); in window_pane_destroy()
911 if (wp->pipe_fd != -1) { in window_pane_destroy()
912 bufferevent_free(wp->pipe_event); in window_pane_destroy()
913 close(wp->pipe_fd); in window_pane_destroy()
916 if (event_initialized(&wp->resize_timer)) in window_pane_destroy()
917 event_del(&wp->resize_timer); in window_pane_destroy()
918 TAILQ_FOREACH_SAFE(r, &wp->resize_queue, entry, r1) { in window_pane_destroy()
919 TAILQ_REMOVE(&wp->resize_queue, r, entry); in window_pane_destroy()
923 RB_REMOVE(window_pane_tree, &all_window_panes, wp); in window_pane_destroy()
925 options_free(wp->options); in window_pane_destroy()
926 free((void *)wp->cwd); in window_pane_destroy()
927 free(wp->shell); in window_pane_destroy()
928 cmd_free_argv(wp->argc, wp->argv); in window_pane_destroy()
929 free(wp->palette); in window_pane_destroy()
930 free(wp); in window_pane_destroy()
936 struct window_pane *wp = data; in window_pane_read_callback() local
937 struct evbuffer *evb = wp->event->input; in window_pane_read_callback()
938 struct window_pane_offset *wpo = &wp->pipe_offset; in window_pane_read_callback()
944 if (wp->pipe_fd != -1) { in window_pane_read_callback()
945 new_data = window_pane_get_new_data(wp, wpo, &new_size); in window_pane_read_callback()
947 bufferevent_write(wp->pipe_event, new_data, new_size); in window_pane_read_callback()
948 window_pane_update_used_data(wp, wpo, new_size); in window_pane_read_callback()
952 log_debug("%%%u has %zu bytes", wp->id, size); in window_pane_read_callback()
955 control_write_output(c, wp); in window_pane_read_callback()
957 input_parse_pane(wp); in window_pane_read_callback()
958 bufferevent_disable(wp->event, EV_READ); in window_pane_read_callback()
965 struct window_pane *wp = data; in window_pane_error_callback() local
967 log_debug("%%%u error", wp->id); in window_pane_error_callback()
968 wp->flags |= PANE_EXITED; in window_pane_error_callback()
970 if (window_pane_destroy_ready(wp)) in window_pane_error_callback()
971 server_destroy_pane(wp, 1); in window_pane_error_callback()
975 window_pane_set_event(struct window_pane *wp) in window_pane_set_event() argument
977 setblocking(wp->fd, 0); in window_pane_set_event()
979 wp->event = bufferevent_new(wp->fd, window_pane_read_callback, in window_pane_set_event()
980 NULL, window_pane_error_callback, wp); in window_pane_set_event()
981 wp->ictx = input_init(wp, wp->event); in window_pane_set_event()
983 bufferevent_enable(wp->event, EV_READ|EV_WRITE); in window_pane_set_event()
987 window_pane_resize(struct window_pane *wp, u_int sx, u_int sy) in window_pane_resize() argument
992 if (sx == wp->sx && sy == wp->sy) in window_pane_resize()
998 r->osx = wp->sx; in window_pane_resize()
999 r->osy = wp->sy; in window_pane_resize()
1000 TAILQ_INSERT_TAIL (&wp->resize_queue, r, entry); in window_pane_resize()
1002 wp->sx = sx; in window_pane_resize()
1003 wp->sy = sy; in window_pane_resize()
1005 log_debug("%s: %%%u resize %ux%u", __func__, wp->id, sx, sy); in window_pane_resize()
1006 screen_resize(&wp->base, sx, sy, wp->base.saved_grid == NULL); in window_pane_resize()
1008 wme = TAILQ_FIRST(&wp->modes); in window_pane_resize()
1014 window_pane_set_palette(struct window_pane *wp, u_int n, int colour) in window_pane_set_palette() argument
1019 if (wp->palette == NULL) in window_pane_set_palette()
1020 wp->palette = xcalloc(0x100, sizeof *wp->palette); in window_pane_set_palette()
1022 wp->palette[n] = colour; in window_pane_set_palette()
1023 wp->flags |= PANE_REDRAW; in window_pane_set_palette()
1027 window_pane_unset_palette(struct window_pane *wp, u_int n) in window_pane_unset_palette() argument
1029 if (n > 0xff || wp->palette == NULL) in window_pane_unset_palette()
1032 wp->palette[n] = 0; in window_pane_unset_palette()
1033 wp->flags |= PANE_REDRAW; in window_pane_unset_palette()
1037 window_pane_reset_palette(struct window_pane *wp) in window_pane_reset_palette() argument
1039 if (wp->palette == NULL) in window_pane_reset_palette()
1042 free(wp->palette); in window_pane_reset_palette()
1043 wp->palette = NULL; in window_pane_reset_palette()
1044 wp->flags |= PANE_REDRAW; in window_pane_reset_palette()
1048 window_pane_get_palette(struct window_pane *wp, int c) in window_pane_get_palette() argument
1052 if (wp == NULL || wp->palette == NULL) in window_pane_get_palette()
1057 new = wp->palette[c]; in window_pane_get_palette()
1059 new = wp->palette[8 + c - 90]; in window_pane_get_palette()
1061 new = wp->palette[c & ~COLOUR_FLAG_256]; in window_pane_get_palette()
1068 window_pane_set_mode(struct window_pane *wp, struct window_pane *swp, in window_pane_set_mode() argument
1074 if (!TAILQ_EMPTY(&wp->modes) && TAILQ_FIRST(&wp->modes)->mode == mode) in window_pane_set_mode()
1077 TAILQ_FOREACH(wme, &wp->modes, entry) { in window_pane_set_mode()
1082 TAILQ_REMOVE(&wp->modes, wme, entry); in window_pane_set_mode()
1083 TAILQ_INSERT_HEAD(&wp->modes, wme, entry); in window_pane_set_mode()
1086 wme->wp = wp; in window_pane_set_mode()
1090 TAILQ_INSERT_HEAD(&wp->modes, wme, entry); in window_pane_set_mode()
1094 wp->screen = wme->screen; in window_pane_set_mode()
1095 wp->flags |= (PANE_REDRAW|PANE_CHANGED); in window_pane_set_mode()
1097 server_redraw_window_borders(wp->window); in window_pane_set_mode()
1098 server_status_window(wp->window); in window_pane_set_mode()
1099 notify_pane("pane-mode-changed", wp); in window_pane_set_mode()
1105 window_pane_reset_mode(struct window_pane *wp) in window_pane_reset_mode() argument
1109 if (TAILQ_EMPTY(&wp->modes)) in window_pane_reset_mode()
1112 wme = TAILQ_FIRST(&wp->modes); in window_pane_reset_mode()
1113 TAILQ_REMOVE(&wp->modes, wme, entry); in window_pane_reset_mode()
1117 next = TAILQ_FIRST(&wp->modes); in window_pane_reset_mode()
1120 wp->screen = &wp->base; in window_pane_reset_mode()
1123 wp->screen = next->screen; in window_pane_reset_mode()
1125 next->mode->resize(next, wp->sx, wp->sy); in window_pane_reset_mode()
1127 wp->flags |= (PANE_REDRAW|PANE_CHANGED); in window_pane_reset_mode()
1129 server_redraw_window_borders(wp->window); in window_pane_reset_mode()
1130 server_status_window(wp->window); in window_pane_reset_mode()
1131 notify_pane("pane-mode-changed", wp); in window_pane_reset_mode()
1135 window_pane_reset_mode_all(struct window_pane *wp) in window_pane_reset_mode_all() argument
1137 while (!TAILQ_EMPTY(&wp->modes)) in window_pane_reset_mode_all()
1138 window_pane_reset_mode(wp); in window_pane_reset_mode_all()
1142 window_pane_copy_key(struct window_pane *wp, key_code key) in window_pane_copy_key() argument
1146 TAILQ_FOREACH(loop, &wp->window->panes, entry) { in window_pane_copy_key()
1147 if (loop != wp && in window_pane_copy_key()
1158 window_pane_key(struct window_pane *wp, struct client *c, struct session *s, in window_pane_key() argument
1166 wme = TAILQ_FIRST(&wp->modes); in window_pane_key()
1175 if (wp->fd == -1 || wp->flags & PANE_INPUTOFF) in window_pane_key()
1178 if (input_key_pane(wp, key, m) != 0) in window_pane_key()
1183 if (options_get_number(wp->options, "synchronize-panes")) in window_pane_key()
1184 window_pane_copy_key(wp, key); in window_pane_key()
1189 window_pane_visible(struct window_pane *wp) in window_pane_visible() argument
1191 if (~wp->window->flags & WINDOW_ZOOMED) in window_pane_visible()
1193 return (wp == wp->window->active); in window_pane_visible()
1197 window_pane_search(struct window_pane *wp, const char *term, int regex, in window_pane_search() argument
1200 struct screen *s = &wp->base; in window_pane_search()
1268 window_pane_find_up(struct window_pane *wp) in window_pane_find_up() argument
1275 if (wp == NULL) in window_pane_find_up()
1277 w = wp->window; in window_pane_find_up()
1283 edge = wp->yoff; in window_pane_find_up()
1295 left = wp->xoff; in window_pane_find_up()
1296 right = wp->xoff + wp->sx; in window_pane_find_up()
1299 if (next == wp) in window_pane_find_up()
1325 window_pane_find_down(struct window_pane *wp) in window_pane_find_down() argument
1332 if (wp == NULL) in window_pane_find_down()
1334 w = wp->window; in window_pane_find_down()
1340 edge = wp->yoff + wp->sy + 1; in window_pane_find_down()
1352 left = wp->xoff; in window_pane_find_down()
1353 right = wp->xoff + wp->sx; in window_pane_find_down()
1356 if (next == wp) in window_pane_find_down()
1382 window_pane_find_left(struct window_pane *wp) in window_pane_find_left() argument
1389 if (wp == NULL) in window_pane_find_left()
1391 w = wp->window; in window_pane_find_left()
1396 edge = wp->xoff; in window_pane_find_left()
1400 top = wp->yoff; in window_pane_find_left()
1401 bottom = wp->yoff + wp->sy; in window_pane_find_left()
1404 if (next == wp) in window_pane_find_left()
1430 window_pane_find_right(struct window_pane *wp) in window_pane_find_right() argument
1437 if (wp == NULL) in window_pane_find_right()
1439 w = wp->window; in window_pane_find_right()
1444 edge = wp->xoff + wp->sx + 1; in window_pane_find_right()
1448 top = wp->yoff; in window_pane_find_right()
1449 bottom = wp->yoff + wp->sy; in window_pane_find_right()
1452 if (next == wp) in window_pane_find_right()
1528 struct window_pane *wp; in window_pane_input_callback() local
1532 wp = window_pane_find_by_id(cdata->wp); in window_pane_input_callback()
1533 if (wp == NULL || closed || error != 0 || c->flags & CLIENT_DEAD) { in window_pane_input_callback()
1534 if (wp == NULL) in window_pane_input_callback()
1544 input_parse_buffer(wp, buf, len); in window_pane_input_callback()
1549 window_pane_start_input(struct window_pane *wp, struct cmdq_item *item, in window_pane_start_input() argument
1555 if (~wp->flags & PANE_EMPTY) { in window_pane_start_input()
1562 cdata->wp = wp->id; in window_pane_start_input()
1571 window_pane_get_new_data(struct window_pane *wp, in window_pane_get_new_data() argument
1574 size_t used = wpo->used - wp->base_offset; in window_pane_get_new_data()
1576 *size = EVBUFFER_LENGTH(wp->event->input) - used; in window_pane_get_new_data()
1577 return (EVBUFFER_DATA(wp->event->input) + used); in window_pane_get_new_data()
1581 window_pane_update_used_data(struct window_pane *wp, in window_pane_update_used_data() argument
1584 size_t used = wpo->used - wp->base_offset; in window_pane_update_used_data()
1586 if (size > EVBUFFER_LENGTH(wp->event->input) - used) in window_pane_update_used_data()
1587 size = EVBUFFER_LENGTH(wp->event->input) - used; in window_pane_update_used_data()