From: NeilBrown Date: Tue, 29 Aug 2023 00:59:21 +0000 (+1000) Subject: lib-renderline: restore preferred positioning of menus X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=a69efeec171083b2dc819b8d3e59269df6d058b1;p=edlib.git lib-renderline: restore preferred positioning of menus When I rewrote lib-renderline I missed a "hack" which allowed menus from mouse-clicks to be placed below the active text. Restore this, and update the spelling test which uses that menu. Signed-off-by: NeilBrown --- diff --git a/lib-renderline.c b/lib-renderline.c index ef34b8a6..bf6e1150 100644 --- a/lib-renderline.c +++ b/lib-renderline.c @@ -895,8 +895,22 @@ static int find_xy(struct pane *p safe, struct pane *focus safe, cr = do_measure(p, ri, splitpos, -1, x - ri->x); if ((splitpos ? ri->wrap_x : ri->x ) + cr.x > x && ri->y + rd->line_height * (1 + splitpos) > y && - xyattr) - *xyattr = ri->attr; + xyattr) { + /* This is a bit of a hack. + * We stick the x,y co-ords of the start + * of the current attr in front of the + * attrs so render-lines can provide a + * good location for a menu + */ + char buf[100]; + struct render_item *ri2; + int ax = ri->x; + for (ri2 = rd->content; ri2 != ri; ri2 = ri2->next) + if (strcmp(ri2->attr, ri->attr) == 0) + ax = ri2->x; + snprintf(buf, sizeof(buf), "%dx%d,", ax, y); + *xyattr = strconcat(p, buf, ri->attr); + } if (cr.s) return cr.s - rd->line; return start + cr.i; diff --git a/tests.d/02-spell b/tests.d/02-spell index 701e7ea2..9954ea56 100644 --- a/tests.d/02-spell +++ b/tests.d/02-spell @@ -185,27 +185,26 @@ Display 80,30 BFEF72C3456345C1FCD4B69E16328CB9 1,0 Display 80,30 FC1EC237835B86277F5612CCB22390A7 1,0 Display 80,30 9B2230AB193991E9CF9B4B3B4F1B78D3 1,0 Display 80,30 28CA57772287120B9CD146B71016A58A 1,0 -Display 80,30 DAE1AFE8DA3FCD0EEAAF2A7CCD0BFB62 1,0 Key ":A-;" -Display 80,30 7AE4E6D8FFE412E58625CA9D13E7E36C 4,0 +Display 80,30 EE7005488CD37E92DF74F19C6AA55E31 4,0 Key ":Right" -Display 80,30 DAE1AFE8DA3FCD0EEAAF2A7CCD0BFB62 5,0 +Display 80,30 28CA57772287120B9CD146B71016A58A 5,0 Key ":A-;" -Display 80,30 9C84D19CB6F4199CF115B2039462DACF 10,0 +Display 80,30 681698DB119141266EA4501A85BB71F8 10,0 Key ":Right" -Display 80,30 DAE1AFE8DA3FCD0EEAAF2A7CCD0BFB62 11,0 +Display 80,30 28CA57772287120B9CD146B71016A58A 11,0 Key ":A-;" -Display 80,30 4DC5DC7B140D90608C0111970997A127 19,0 +Display 80,30 463708D38B1E12ADAD2DC5EB832B163C 19,0 Key ":Right" -Display 80,30 DAE1AFE8DA3FCD0EEAAF2A7CCD0BFB62 20,0 +Display 80,30 28CA57772287120B9CD146B71016A58A 20,0 Key ":A--" -Display 80,30 13DD8B4A5B03CB54BBC9CC65CCB10272 20,0 +Display 80,30 4DE56DF850EC723CB700FCA9BE90CC50 20,0 Key ":A-;" -Display 80,30 187C12D6F0237E56AC725675C438D35D 8,5 +Display 80,30 08AE5E034B21A4EE7D7911A66FA04604 8,5 Key "-0" -Display 80,30 C60B776C161AC49D15E0B343E3A80200 9,8 +Display 80,30 5AE67173629178A971A9A5D29F9C66F3 9,8 Key "-1" -Display 80,30 A7E960EF28E8FBEF8CE1D3934F114A8D 68,8 +Display 80,30 FF9B145B35764F56A7421009A75796DC 68,8 Key "-2" Display 80,30 FBDF992D22B009C514FDF2D2FDDCA4D7 8,15 Key "-0" @@ -213,27 +212,24 @@ Display 80,30 043355AE1F8D1C60B714F84CAC2051DB 13,18 Key "-1" Display 80,30 736A56D79B465AA8A1BACE1DBC411CF9 30,22 Key "- " -Display 80,30 CAA9CDFD50E6851E95BAC003879567A1 6,21 +Display 80,30 A4D198351C6130A03AC0CAD2D7A5078A 59,18 Key "- " -Display 80,30 5E0A22C09D987BE6C6C07940B9B0E578 59,24 +Display 80,30 5DC1D9D47F7F02A75A9016F3F6DC96C1 20,21 Key ":Enter" -Display 80,30 4CC2D06DD5AAC2E00B8700890804A8ED 59,24 +Display 80,30 DF2DA01A7B0DD8388AF4797C43660625 20,21 Key ":C-X" -Display 80,30 9599A4BF3962C00266BB8CF8D9AB3088 59,24 +Display 80,30 D09C55E2CBC37A59452B33F9462D79DB 20,21 Key ":C-S" -Display 80,30 15D263B1D5B3FDF5F97D3428BAC8D27A 59,24 +Display 80,30 A62839B8A8C4B79894A40A116F54EE5A 20,21 Mouse ":Press-3" 26,19 -Display 80,30 6F5B8256777D5528183E96E329DEF02A 26,19 +Display 80,30 0F7C5B693774C4D56D2FA322A22846D3 20,21 Mouse ":Release-3" 28,22 -Display 80,30 27E164C7FF1F619A0449FFCBCD256DBB 59,24 +Display 80,30 C471ABA574FA3E937B74C79387F6D3D4 20,21 Mouse ":Press-3" 2,21 -Display 80,30 C863D1562DFABCF048E1488BC4179421 2,21 +Display 80,30 BD48CEE0571DEC5245F33C1CB4681B64 20,21 Mouse ":Release-3" 5,22 -Display 80,30 27E164C7FF1F619A0449FFCBCD256DBB 59,24 -Display 80,30 7E7D27ABFCF26E6F9024BE8A73EE9EE9 59,24 Key ":C-X" -Display 80,30 120A6A63790E9F0E123CFEC24BDBB033 59,24 +Display 80,30 058EA2C9F282A5E7BA69102EE55E04DF 20,21 Key ":C-C" -Display 80,30 43E0643A1430614E6E43F15DE5008897 21,8 -Key "-q" -Close 680 +Display 80,30 BD48CEE0571DEC5245F33C1CB4681B64 20,21 +Close 624