From 9c5a74507f38787b5ea0a99da21b50a12c73fca0 Mon Sep 17 00:00:00 2001 From: malc Date: Wed, 15 Aug 2012 20:42:12 +0400 Subject: [PATCH] Better space/delete behavior in split columns case --- main.ml | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/main.ml b/main.ml index bcf7f82..8c7d951 100644 --- a/main.ml +++ b/main.ml @@ -4921,16 +4921,41 @@ let viewkeyboard key mask = begin match List.rev state.layout with | [] -> () | l :: _ -> - let pageno = min (l.pageno+1) (state.pagecount-1) in - gotoy_and_clear_text (getpagey pageno) + match conf.columns with + | Csingle | Cmulti _ -> + let pageno = min (l.pageno+1) (state.pagecount-1) in + gotoy_and_clear_text (getpagey pageno) + | Csplit (n, _) -> + if l.pageno < state.pagecount - 1 || l.pagecol < n - 1 + then + let pagey, pageh = getpageyh l.pageno in + let pagey = pagey + pageh * l.pagecol in + gotoy_and_clear_text (pagey + pageh + conf.interpagespace) end | 0xff9f | 0xffff -> (* delete *) begin match state.layout with | [] -> () | l :: _ -> - let pageno = max 0 (l.pageno-1) in - gotoy_and_clear_text (getpagey pageno) + match conf.columns with + | Csingle | Cmulti _ -> + let pageno = max 0 (l.pageno-1) in + gotoy_and_clear_text (getpagey pageno) + | Csplit (n, _) -> + let y = + if l.pagecol = 0 + then + if l.pageno = 0 + then l.pagey + else + let pageno = max 0 (l.pageno-1) in + let pagey, pageh = getpageyh pageno in + pagey + (n-1)*pageh + else + let pagey, pageh = getpageyh l.pageno in + pagey + pageh * (l.pagecol-1) + in + gotoy_and_clear_text y end | 61 -> (* = *) -- 2.11.4.GIT