From 43fbcd68ba647a5ca8aefcd80658e71ac0175df7 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Fri, 21 Jul 2023 17:48:29 +1000 Subject: [PATCH] render-lines: fix cursor-placement sometimes off-screen I was measuring against the bottom of the cursor, not the top. Signed-off-by: NeilBrown --- DOC/TODO.md | 2 +- render-lines.c | 6 ++- tests.d/02-grep | 100 +++++++++++++++++++++---------------------- tests.d/02-presenter | 4 +- 4 files changed, 58 insertions(+), 54 deletions(-) diff --git a/DOC/TODO.md b/DOC/TODO.md index 315a5733..39b66393 100644 --- a/DOC/TODO.md +++ b/DOC/TODO.md @@ -20,7 +20,7 @@ the file. - [X] When merge makes a change, highlight the new content. - [ ] Review the options for editing a merge - it doesn't always do what I want. Maybe have a menu of choices to remind me -- [ ] cursor is sometimes off-screen when it shouldn't be. I don't know +- [X] cursor is sometimes off-screen when it shouldn't be. I don't know what cause this yet, but I will try to remember to take notes next time. When searching backwards and result is just above display, the diff --git a/render-lines.c b/render-lines.c index 2e11e02f..57f04f5c 100644 --- a/render-lines.c +++ b/render-lines.c @@ -726,9 +726,13 @@ static void find_lines(struct mark *pm safe, struct pane *p safe, found_end = step_fore(p, focus, &start, &end, &y_post, &line_height_post); + /* This test has "> rl->margin" while found_end test has + * ">= rl->margin" due to the asymmetry of measuring from the + * baseline, not the centreling, of the target text. + */ if (!found_start && top && end && mark_ordered_or_same(start, top) && - lines_above >= rl->margin) + lines_above > rl->margin) if (mark_ordered_not_same(top, end) || (mark_same(top, end) && y_post - rl->tail_height >= y_pre)) diff --git a/tests.d/02-grep b/tests.d/02-grep index 7d4f691b..3a2d1d75 100644 --- a/tests.d/02-grep +++ b/tests.d/02-grep @@ -90,102 +90,102 @@ Display 80,30 F3D5D6A5E0A5D5975ECB6E7F00917039 1,6 Key ":C-X" Display 80,30 2D8E0ECD65429DDDA3F1C8A49A73E1D8 1,6 Key "-`" -Display 80,30 8C5006B950CA2BEB4E936CCBAC1B6592 1,1 +Display 80,30 1A4BDA70365FA2BE77204B4D3C5A71FD 1,1 Key "-`" -Display 80,30 2B92DBCEE330D073BD5C0A47EFE783B6 1,7 +Display 80,30 6488347D7F4C458D0C4DB4DD9EDB8DA5 1,7 Key "-`" -Display 80,30 C8582801EA4EB730362C8E28C7408B33 1,6 +Display 80,30 69AD76906A155260B345D2BA411F3921 1,6 Key "-`" -Display 80,30 AC1DE4A9739FFCEFD87C066C2BAE7B8A 1,7 +Display 80,30 047048FF34AD3B5A3C889C79BEC80EAB 1,7 Key "-`" -Display 80,30 1A236C860DE13BBBC446C143CAF21813 1,6 +Display 80,30 2D5FBF9D6847197E8686AE154C0CA6B2 1,6 Key "-`" -Display 80,30 28F045FE67ADE62B92F3A4E02A295234 1,7 +Display 80,30 14302278E63F297EDCB931F482E34BDE 1,7 Key "-`" -Display 80,30 5A3D99C44BCE3F01AF08C0ABA187E8F8 1,9 +Display 80,30 BCB642A843697EAC24C93E65BD548B2D 1,9 Key ":A--" -Display 80,30 23588A716A8C327CA5BB29B0F391EB58 1,9 +Display 80,30 7A911AEF593FC17E29D5B1B39B19D154 1,9 Key ":C-X" -Display 80,30 6821203991872E2268CE855FB748B630 1,9 +Display 80,30 01EC2055C21E211A34F4A0EEB1C00AC9 1,9 Key "-`" -Display 80,30 5A3D99C44BCE3F01AF08C0ABA187E8F8 1,9 +Display 80,30 BCB642A843697EAC24C93E65BD548B2D 1,9 Key "-`" -Display 80,30 28F045FE67ADE62B92F3A4E02A295234 1,7 +Display 80,30 14302278E63F297EDCB931F482E34BDE 1,7 Key "-`" -Display 80,30 1A236C860DE13BBBC446C143CAF21813 1,6 +Display 80,30 2D5FBF9D6847197E8686AE154C0CA6B2 1,6 Key ":C-X" -Display 80,30 8710264955CE9B1E9FDE8137F8435A4F 1,6 +Display 80,30 77F1C291B9214AE59842D4BD18F6A05F 1,6 Key ":C-F" -Display 80,30 E0392781F1477405B591F751E22B806E 53,13 +Display 80,30 1E7384AE76BB991FAFA7F02E7DD3EEEB 53,13 Key ":Backspace" -Display 80,30 05C7C6F7453F37042098818395938252 52,13 +Display 80,30 35348689E9324FAFFBBE96CA75ACC343 52,13 Key ":Backspace" -Display 80,30 A6C7DF0EEA1D2267C1CA174AFBFB1DDE 51,13 +Display 80,30 EDD2BA2F188B83EB303752022182BD67 51,13 Key ":Backspace" -Display 80,30 9E6ED319D3AEC31ABA74A237746020D7 50,13 +Display 80,30 4D15F5967422B54DD7F304F81681E7EB 50,13 Key ":Backspace" -Display 80,30 9A43E6961B7CC401A14C3329A66A75E9 49,13 +Display 80,30 B330CA9B8C5C00592DC1CB634BB76B98 49,13 Key ":Enter" -Display 80,30 D8C8FB1FCA3B454D26ECA5F0F8C73332 1,1 +Display 80,30 AECF9530714EDA1396E5EE297A285515 1,1 Key ":A-x" -Display 80,30 130F4BD0560C5B628E1872D1E1F15E7F 26,13 +Display 80,30 23BE555E2A71C84D10CDBEA655E0FDED 26,13 Key "-g" -Display 80,30 9F4229F6DB56268B8E16B3228B2D146E 27,13 +Display 80,30 33FB289B03AAAB6513425C7C8E84F666 27,13 Key "-r" -Display 80,30 6678DA2D6D2AE75D81E9F4726B5FAD04 28,13 +Display 80,30 CA112C801D96F486C4BDF8DC701BD084 28,13 Key "-e" -Display 80,30 495FAF1FD56212D6FAFCB4536C8C51B3 29,13 +Display 80,30 B288D3231EB83BF3DA9079B5C514399B 29,13 Key "-p" -Display 80,30 D465905309000463FAB5DB288CA22BDD 30,13 +Display 80,30 EA6525B171573E8EC86616CF09256CC1 30,13 Key ":Enter" -Display 80,30 886493CD557ACA404CA2DE3BE2775755 44,13 +Display 80,30 B4700025345C83B2D3080D8BDEE24002 44,13 Key "-w" -Display 80,30 19D7A430BE3252936B88B0DA6C0221F6 45,13 +Display 80,30 152D7736769A61A3D21A1FE9B78A4C48 45,13 Key "-i" -Display 80,30 7D73517D44CAABA514D62A490C778799 46,13 +Display 80,30 8D03A6F7F665D9C36121FDAA89D4CFA5 46,13 Key "-n" -Display 80,30 45A6D1257C2E5F8E472898D6FCB23F87 47,13 +Display 80,30 766182A0B37F539B26C93064825FBFE5 47,13 Key "-d" -Display 80,30 1C616B6400B620C172C4B2EE92FA9772 48,13 +Display 80,30 B39EA5064872791E64B3C76483A548FB 48,13 Key "-o" -Display 80,30 1FBA12433A070016D5C6EB48E85FE9DF 49,13 +Display 80,30 F173DC941BF78DC00C3BE284428FB8CC 49,13 Key "-w" -Display 80,30 01B616E5FC1C6E5C3319BDD67DCD467E 50,13 +Display 80,30 D8E62A85F59F768797BC1BAAA4EE65D5 50,13 Key "- " -Display 80,30 01B616E5FC1C6E5C3319BDD67DCD467E 51,13 +Display 80,30 D8E62A85F59F768797BC1BAAA4EE65D5 51,13 Key "-*" -Display 80,30 51599B8AFDF8F59384CBF9EA76E40944 52,13 +Display 80,30 03235403ED46661F0CE073C0E7D171E8 52,13 Key "-." -Display 80,30 E91C5809890A6029A5AAD5EF4B51947E 53,13 +Display 80,30 D4C9EF28C1BC7C6B7B65CCDCAF516479 53,13 Key "-c" -Display 80,30 A02C8F9C87AFBA88C1747360F3E89931 54,13 +Display 80,30 319AF12A183FDD7D5B4FC0C6E218D1CA 54,13 Key ":Enter" -Display 80,30 6FC9201493F2B4AA8301B257BCD2177E 11,10 -Display 80,30 3F11378374AB743F15EEAA73544864F1 11,10 +Display 80,30 D24CF94877A55DB6B922A31361C6AA7A 11,10 +Display 80,30 C1BCF5F3004964015667E6B86738CFD9 11,10 Key ":C-N" -Display 80,30 3F11378374AB743F15EEAA73544864F1 11,11 +Display 80,30 C1BCF5F3004964015667E6B86738CFD9 11,11 Key ":C-N" -Display 80,30 3F11378374AB743F15EEAA73544864F1 11,12 +Display 80,30 C1BCF5F3004964015667E6B86738CFD9 11,12 Key ":C-N" -Display 80,30 3F11378374AB743F15EEAA73544864F1 11,13 +Display 80,30 C1BCF5F3004964015667E6B86738CFD9 11,13 Key ":C-N" -Display 80,30 3F11378374AB743F15EEAA73544864F1 11,14 +Display 80,30 C1BCF5F3004964015667E6B86738CFD9 11,14 Key ":C-N" -Display 80,30 3F11378374AB743F15EEAA73544864F1 11,15 +Display 80,30 C1BCF5F3004964015667E6B86738CFD9 11,15 Key ":C-N" -Display 80,30 3F11378374AB743F15EEAA73544864F1 11,16 +Display 80,30 C1BCF5F3004964015667E6B86738CFD9 11,16 Key "-f" -Display 80,30 A73A6090F8B6FE5421867051742AF0B6 11,12 +Display 80,30 0662203642222B15195944D33E42B0CB 11,12 Key ":C-V" -Display 80,30 BD854B0497808D377B3CCAD6C7B119F7 11,7 +Display 80,30 7542B2673CB816613E5AFA3EFF7E8680 11,7 Key ":C-V" -Display 80,30 185265E51CAB0A8F427E4E649B95C80E 11,7 +Display 80,30 EF9D9BE6379CA61FFF5700271DCB6BB4 11,7 Key ":C-V" -Display 80,30 8B3A348574A918BDEDE51730B797717B 11,7 +Display 80,30 61721B5272A51EDF6B45450D660374EB 11,7 Key ":A-B" -Display 80,30 D8C8FB1FCA3B454D26ECA5F0F8C73332 1,1 +Display 80,30 AECF9530714EDA1396E5EE297A285515 1,1 Key ":C-X" -Display 80,30 E9EA03CE59D6B146608BFE19C64FF24E 1,1 +Display 80,30 ED0B24C0BE5F7005C9F3E8287F13E4B1 1,1 Key "-`" Display 80,30 8557455273011DFCCAB6707018F20080 1,6 Key "-`" @@ -242,4 +242,4 @@ Key ":C-X" Display 80,30 1B93FE4A0F3F6D0DA9A9A7767239F356 1,6 Key ":C-C" Display 80,30 010E4E8994BB534A4F27DD543E023E74 1,6 -Close 909 +Close 908 diff --git a/tests.d/02-presenter b/tests.d/02-presenter index ae2a3169..5b599c8c 100644 --- a/tests.d/02-presenter +++ b/tests.d/02-presenter @@ -212,9 +212,9 @@ Display 80,30 1D01CD6F5882A920FA950B64648868B1 41,2 Key ":C-P" Display 80,30 0AEE37672B46ACD5B40CF7858A4AC027 41,1 Key ":C-P" -Display 80,30 856629CF797E687B1CF405673E5548D2 41,-1 +Display 80,30 43AAFD0E7799B8A170552941FCFFC6FA 41,0 Key ":C-P" -Display 80,30 A9438640D4D27E7DA1530B425E1BCDA7 79,27 +Display 80,30 F6421EC5A0230B9D2706E9A9324138E7 41,0 Key ":C-L" Display 80,30 2C2BCA9050E59298FEDEB5EFAF528EAE 41,13 Key ":C-X" -- 2.39.5