From 4d51554ff1bfab2fc6dea057d7be6008bd72c3bf Mon Sep 17 00:00:00 2001 From: malc Date: Sat, 2 Oct 2010 03:18:43 +0400 Subject: [PATCH] Reject text selection which spans multiple pages --- main.ml | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/main.ml b/main.ml index 442900b..ec38ae0 100644 --- a/main.ml +++ b/main.ml @@ -1444,17 +1444,21 @@ let showsel () = () | Msel ((x0, y0), (x1, y1)) -> - let f l = - if (y0 >= l.pagedispy && y0 <= (l.pagedispy + l.pagevh)) - || ((y1 >= l.pagedispy)) - then - match getopaque l.pageno with - | Some opaque when validopaque opaque -> - let oy = -l.pagey + l.pagedispy in - seltext opaque (x0, y0, x1, y1) oy - | _ -> () + let rec loop = function + | l :: ls -> + if (y0 >= l.pagedispy && y0 <= (l.pagedispy + l.pagevh)) + || ((y1 >= l.pagedispy && y1 <= (l.pagedispy + l.pagevh))) + then + match getopaque l.pageno with + | Some opaque when validopaque opaque -> + let oy = -l.pagey + l.pagedispy in + seltext opaque (x0, y0, x1, y1) oy; + () + | _ -> () + else loop ls + | [] -> () in - List.iter f state.layout + loop state.layout ;; let showrects () = @@ -1601,7 +1605,7 @@ let mouse ~button ~bstate ~x ~y = | Msel ((x0, y0), (x1, y1)) -> let f l = if (y0 >= l.pagedispy && y0 <= (l.pagedispy + l.pagevh)) - || ((y1 >= l.pagedispy)) + || ((y1 >= l.pagedispy && y1 <= (l.pagedispy + l.pagevh))) then match getopaque l.pageno with | Some opaque when validopaque opaque -> -- 2.11.4.GIT