]> git.neil.brown.name Git - edlib.git/commitdiff
lib-renderline: restore preferred positioning of menus
authorNeilBrown <neil@brown.name>
Tue, 29 Aug 2023 00:59:21 +0000 (10:59 +1000)
committerNeilBrown <neil@brown.name>
Tue, 29 Aug 2023 00:59:21 +0000 (10:59 +1000)
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 <neil@brown.name>
lib-renderline.c
tests.d/02-spell

index ef34b8a68a57769ee90a9c71f467862624e51659..bf6e11505ab9cf40a11eece1cded28ec7c1d51c9 100644 (file)
@@ -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;
index 701e7ea2f589b584f5e0ea7ebd4a2d0af27b4d40..9954ea56d9f96a05e99b9b9f1b51e6d49e5e9fbb 100644 (file)
@@ -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