« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/static/js/client/hoverable-tooltip.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/static/js/client/hoverable-tooltip.js')
-rw-r--r--src/static/js/client/hoverable-tooltip.js17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/static/js/client/hoverable-tooltip.js b/src/static/js/client/hoverable-tooltip.js
index f19517ad..99fe14f6 100644
--- a/src/static/js/client/hoverable-tooltip.js
+++ b/src/static/js/client/hoverable-tooltip.js
@@ -671,7 +671,22 @@ export function positionTooltipFromHoverableWithBrains(hoverable) {
   const {numBaselineRects, idealBaseline: baselineRect} = opportunities;
 
   if (baselineRect.contains(tooltipRect)) {
-    return;
+    // ...unless hovering over a rectangle besides the hoverable's first.
+    // An element has multiple rectangles if it's an inline element that
+    // has wrapped across to the next line.
+
+    const hoverableClientRects =
+      Array.from(hoverable.getClientRects())
+        .map(rect => WikiRect.fromRect(rect));
+
+    const mouseRect = WikiRect.fromMouse();
+
+    const hoverableClientRectIndex =
+      hoverableClientRects.findIndex(rect => rect.contains(mouseRect));
+
+    if (hoverableClientRectIndex <= 0) {
+      return;
+    }
   }
 
   const tryDirection = (dir1, dir2, i) => {