mirror of
https://github.com/tmux/tmux.git
synced 2024-12-14 02:48:47 +00:00
Merge branch 'obsd-master'
This commit is contained in:
commit
54c2d48d7d
@ -131,7 +131,12 @@ cmd_resize_pane_mouse_update(struct client *c, struct mouse_event *m)
|
|||||||
struct winlink *wl;
|
struct winlink *wl;
|
||||||
struct window *w;
|
struct window *w;
|
||||||
u_int y, ly, x, lx;
|
u_int y, ly, x, lx;
|
||||||
struct layout_cell *lc;
|
struct layout_cell *cells[5], *lc;
|
||||||
|
u_int ncells = 0, i, j, resizes = 0;
|
||||||
|
enum layout_type type;
|
||||||
|
static const int offsets[nitems(cells)][2] = {
|
||||||
|
{ 0, 0 }, { 0, 1 }, { 1, 0 }, { 0, -1 }, { -1, 0 },
|
||||||
|
};
|
||||||
|
|
||||||
wl = cmd_mouse_window(m, NULL);
|
wl = cmd_mouse_window(m, NULL);
|
||||||
if (wl == NULL) {
|
if (wl == NULL) {
|
||||||
@ -151,16 +156,37 @@ cmd_resize_pane_mouse_update(struct client *c, struct mouse_event *m)
|
|||||||
else if (m->statusat > 0 && ly >= (u_int)m->statusat)
|
else if (m->statusat > 0 && ly >= (u_int)m->statusat)
|
||||||
ly = m->statusat - 1;
|
ly = m->statusat - 1;
|
||||||
|
|
||||||
lc = layout_search_by_border(w->layout_root, lx, ly);
|
for (i = 0; i < nitems(cells); i++) {
|
||||||
|
lc = layout_search_by_border(w->layout_root, lx + offsets[i][0],
|
||||||
|
ly + offsets[i][1]);
|
||||||
if (lc == NULL)
|
if (lc == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (j = 0; j < ncells; j++) {
|
||||||
|
if (cells[j] == lc) {
|
||||||
|
lc = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lc == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
cells[ncells] = lc;
|
||||||
|
ncells++;
|
||||||
|
}
|
||||||
|
if (ncells == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (y != ly && lc->parent->type == LAYOUT_TOPBOTTOM)
|
for (i = 0; i < ncells; i++) {
|
||||||
layout_resize_layout(w, lc, LAYOUT_TOPBOTTOM, y - ly, 0);
|
type = cells[i]->parent->type;
|
||||||
else if (x != lx && lc->parent->type == LAYOUT_LEFTRIGHT)
|
if (y != ly && type == LAYOUT_TOPBOTTOM) {
|
||||||
layout_resize_layout(w, lc, LAYOUT_LEFTRIGHT, x - lx, 0);
|
layout_resize_layout(w, cells[i], type, y - ly, 0);
|
||||||
else
|
resizes++;
|
||||||
return;
|
} else if (x != lx && type == LAYOUT_LEFTRIGHT) {
|
||||||
|
layout_resize_layout(w, cells[i], type, x - lx, 0);
|
||||||
|
resizes++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (resizes != 0)
|
||||||
server_redraw_window(w);
|
server_redraw_window(w);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user