version 1.44, 2010/03/22 19:02:54 |
version 1.45, 2010/03/22 19:07:52 |
|
|
xfree(newsearchstr); |
xfree(newsearchstr); |
return (msg); |
return (msg); |
} |
} |
|
|
|
/* Find the pane directly above another. */ |
|
struct window_pane * |
|
window_pane_find_up(struct window_pane *wp) |
|
{ |
|
struct window_pane *wp2; |
|
u_int left, top; |
|
|
|
if (wp == NULL || !window_pane_visible(wp)) |
|
return (NULL); |
|
|
|
top = wp->yoff; |
|
if (top == 0) |
|
top = wp->window->sy + 1; |
|
left = wp->xoff; |
|
|
|
TAILQ_FOREACH(wp2, &wp->window->panes, entry) { |
|
if (!window_pane_visible(wp2)) |
|
continue; |
|
if (wp2->yoff + wp2->sy + 1 != top) |
|
continue; |
|
if (left >= wp2->xoff && left <= wp2->xoff + wp2->sx) |
|
return (wp2); |
|
} |
|
return (NULL); |
|
} |
|
|
|
/* Find the pane directly below another. */ |
|
struct window_pane * |
|
window_pane_find_down(struct window_pane *wp) |
|
{ |
|
struct window_pane *wp2; |
|
u_int left, bottom; |
|
|
|
if (wp == NULL || !window_pane_visible(wp)) |
|
return (NULL); |
|
|
|
bottom = wp->yoff + wp->sy + 1; |
|
if (bottom >= wp->window->sy) |
|
bottom = 0; |
|
left = wp->xoff; |
|
|
|
TAILQ_FOREACH(wp2, &wp->window->panes, entry) { |
|
if (!window_pane_visible(wp2)) |
|
continue; |
|
if (wp2->yoff != bottom) |
|
continue; |
|
if (left >= wp2->xoff && left <= wp2->xoff + wp2->sx) |
|
return (wp2); |
|
} |
|
return (NULL); |
|
} |
|
|
|
/* |
|
* Find the pane directly to the left of another, adjacent to the left side and |
|
* containing the top edge. |
|
*/ |
|
struct window_pane * |
|
window_pane_find_left(struct window_pane *wp) |
|
{ |
|
struct window_pane *wp2; |
|
u_int left, top; |
|
|
|
if (wp == NULL || !window_pane_visible(wp)) |
|
return (NULL); |
|
|
|
left = wp->xoff; |
|
if (left == 0) |
|
left = wp->window->sx + 1; |
|
top = wp->yoff; |
|
|
|
TAILQ_FOREACH(wp2, &wp->window->panes, entry) { |
|
if (!window_pane_visible(wp2)) |
|
continue; |
|
if (wp2->xoff + wp2->sx + 1 != left) |
|
continue; |
|
if (top >= wp2->yoff && top <= wp2->yoff + wp2->sy) |
|
return (wp2); |
|
} |
|
return (NULL); |
|
} |
|
|
|
/* |
|
* Find the pane directly to the right of another, that is adjacent to the |
|
* right edge and including the top edge. |
|
*/ |
|
struct window_pane * |
|
window_pane_find_right(struct window_pane *wp) |
|
{ |
|
struct window_pane *wp2; |
|
u_int right, top; |
|
|
|
if (wp == NULL || !window_pane_visible(wp)) |
|
return (NULL); |
|
|
|
right = wp->xoff + wp->sx + 1; |
|
if (right >= wp->window->sx) |
|
right = 0; |
|
top = wp->yoff; |
|
|
|
TAILQ_FOREACH(wp2, &wp->window->panes, entry) { |
|
if (!window_pane_visible(wp2)) |
|
continue; |
|
if (wp2->xoff != right) |
|
continue; |
|
if (top >= wp2->yoff && top <= wp2->yoff + wp2->sy) |
|
return (wp2); |
|
} |
|
return (NULL); |
|
} |