diff options
Diffstat (limited to 'pw.c')
-rw-r--r-- | pw.c | 42 |
1 files changed, 21 insertions, 21 deletions
@@ -1206,33 +1206,33 @@ int main(int argc, char **argv) pw.stat |= stat_force; break; case '>': - if ((int) pw.vsplit1 < pw.columns - 2) { - pw.vsplit1++; - if (pw.vsplit2 && - (int) (pw.vsplit1 + pw.vsplit2) >= pw.columns - 2) - pw.vsplit2--; - pw.stat |= stat_force; - } + if (cmdcount == UINT_MAX) + cmdcount = 1; + pw.vsplit1 += cmdcount; + pw.vsplit1 = min(pw.vsplit1, pw.columns - 2); + pw.vsplit2 = min(pw.vsplit2, pw.columns - 2 - pw.vsplit1); + pw.stat |= stat_force; break; case '<': - if (pw.vsplit1 > 0) { - pw.vsplit1--; - pw.stat |= stat_force; - } + if (cmdcount == UINT_MAX) + cmdcount = 1; + pw.vsplit1 = max(0, pw.vsplit1 - (int) cmdcount); + pw.stat |= stat_force; break; case ']': - if ((int) (pw.vsplit1 + pw.vsplit2) < pw.columns - 2) { - if (pw.vsplit2 == 0) - pw.vs2pos = pw.hpos + pw.vsplit1; - pw.vsplit2++; - pw.stat |= stat_force; - } + if (cmdcount == UINT_MAX) + cmdcount = 1; + if (pw.vsplit2 == 0) + pw.vs2pos = pw.hpos + pw.vsplit1; + pw.vsplit2 += cmdcount; + pw.vsplit2 = min(pw.vsplit2, pw.columns - 2 - pw.vsplit1); + pw.stat |= stat_force; break; case '[': - if (pw.vsplit2 > 0) { - pw.vsplit2--; - pw.stat |= stat_force; - } + if (cmdcount == UINT_MAX) + cmdcount = 1; + pw.vsplit2 = max(0, pw.vsplit2 - (int) cmdcount); + pw.stat |= stat_force; break; case ctrl('i'): pw.stat ^= stat_hlite; |