version 1.38, 2019/07/06 20:56:34 |
version 1.39, 2019/10/15 08:25:37 |
|
|
#include <sys/types.h> |
#include <sys/types.h> |
|
|
#include <stdlib.h> |
#include <stdlib.h> |
|
#include <string.h> |
|
|
#include "tmux.h" |
#include "tmux.h" |
|
|
|
|
struct window *w = wl->window; |
struct window *w = wl->window; |
struct client *c = item->client; |
struct client *c = item->client; |
struct session *s = item->target.s; |
struct session *s = item->target.s; |
const char *errstr; |
const char *errstr, *p; |
char *cause; |
char *cause, *copy; |
u_int adjust; |
u_int adjust; |
int x, y; |
int x, y, percentage; |
|
size_t plen; |
|
|
if (args_has(args, 'M')) { |
if (args_has(args, 'M')) { |
if (cmd_mouse_window(&shared->mouse, &s) == NULL) |
if (cmd_mouse_window(&shared->mouse, &s) == NULL) |
|
|
} |
} |
} |
} |
|
|
if (args_has(args, 'x')) { |
if ((p = args_get(args, 'x')) != NULL) { |
x = args_strtonum(args, 'x', PANE_MINIMUM, INT_MAX, &cause); |
plen = strlen(p); |
if (cause != NULL) { |
if (p[plen - 1] == '%') { |
cmdq_error(item, "width %s", cause); |
copy = xstrdup(p); |
free(cause); |
copy[plen - 1] = '\0'; |
return (CMD_RETURN_ERROR); |
percentage = strtonum(copy, 0, INT_MAX, &errstr); |
|
free(copy); |
|
if (errstr != NULL) { |
|
cmdq_error(item, "width %s", errstr); |
|
return (CMD_RETURN_ERROR); |
|
} |
|
x = (w->sx * percentage) / 100; |
|
if (x < PANE_MINIMUM) |
|
x = PANE_MINIMUM; |
|
if (x > INT_MAX) |
|
x = INT_MAX; |
|
} else { |
|
x = args_strtonum(args, 'x', PANE_MINIMUM, INT_MAX, |
|
&cause); |
|
if (cause != NULL) { |
|
cmdq_error(item, "width %s", cause); |
|
free(cause); |
|
return (CMD_RETURN_ERROR); |
|
} |
} |
} |
layout_resize_pane_to(wp, LAYOUT_LEFTRIGHT, x); |
layout_resize_pane_to(wp, LAYOUT_LEFTRIGHT, x); |
} |
} |
if (args_has(args, 'y')) { |
if ((p = args_get(args, 'y')) != NULL) { |
y = args_strtonum(args, 'y', PANE_MINIMUM, INT_MAX, &cause); |
plen = strlen(p); |
if (cause != NULL) { |
if (p[plen - 1] == '%') { |
cmdq_error(item, "height %s", cause); |
copy = xstrdup(p); |
free(cause); |
copy[plen - 1] = '\0'; |
return (CMD_RETURN_ERROR); |
percentage = strtonum(copy, 0, INT_MAX, &errstr); |
|
free(copy); |
|
if (errstr != NULL) { |
|
cmdq_error(item, "height %s", errstr); |
|
return (CMD_RETURN_ERROR); |
|
} |
|
y = (w->sy * percentage) / 100; |
|
if (y < PANE_MINIMUM) |
|
y = PANE_MINIMUM; |
|
if (y > INT_MAX) |
|
y = INT_MAX; |
|
} |
|
else { |
|
y = args_strtonum(args, 'y', PANE_MINIMUM, INT_MAX, |
|
&cause); |
|
if (cause != NULL) { |
|
cmdq_error(item, "height %s", cause); |
|
free(cause); |
|
return (CMD_RETURN_ERROR); |
|
} |
} |
} |
layout_resize_pane_to(wp, LAYOUT_TOPBOTTOM, y); |
layout_resize_pane_to(wp, LAYOUT_TOPBOTTOM, y); |
} |
} |