hgweb: position the "followlines" box close to latest cursor position
authorDenis Laxalde <denis.laxalde@logilab.fr>
Thu, 06 Apr 2017 19:24:04 +0200
changeset 31849 5c1abb4bd3ee
parent 31848 7160bdd56b84
child 31850 f0d719e513fc
hgweb: position the "followlines" box close to latest cursor position
mercurial/templates/static/followlines.js
mercurial/templates/static/style-paper.css
--- a/mercurial/templates/static/followlines.js	Thu Apr 06 19:15:09 2017 +0200
+++ b/mercurial/templates/static/followlines.js	Thu Apr 06 19:24:04 2017 +0200
@@ -25,6 +25,14 @@
     tooltip.textContent = initTooltipText;
     sourcelines.appendChild(tooltip);
 
+    //* position "element" on top-right of cursor */
+    function positionTopRight(element, event) {
+        var x = (event.clientX + 10) + 'px',
+            y = (event.clientY - 20) + 'px';
+        element.style.top = y;
+        element.style.left = x;
+    }
+
     var tooltipTimeoutID;
     //* move the "tooltip" with cursor (top-right) and show it after 1s */
     function moveAndShowTooltip(e) {
@@ -33,10 +41,7 @@
             window.clearTimeout(tooltipTimeoutID);
         }
         tooltip.classList.add('hidden');
-        var x = (e.clientX + 10) + 'px',
-            y = (e.clientY - 20) + 'px';
-        tooltip.style.top = y;
-        tooltip.style.left = x;
+        positionTopRight(tooltip, e);
         tooltipTimeoutID = window.setTimeout(function() {
             tooltip.classList.remove('hidden');
         }, 1000);
@@ -152,6 +157,8 @@
             var div = divAndButton[0],
                 button = divAndButton[1];
             inviteElement.appendChild(div);
+            // set position close to cursor (top-right)
+            positionTopRight(div, e);
 
             //** event handler for cancelling selection */
             function cancel() {
--- a/mercurial/templates/static/style-paper.css	Thu Apr 06 19:15:09 2017 +0200
+++ b/mercurial/templates/static/style-paper.css	Thu Apr 06 19:24:04 2017 +0200
@@ -293,7 +293,7 @@
   border: 1px solid #CCC;
   border-radius: 5px;
   padding: 4px;
-  position: absolute;
+  position: fixed;
 }
 
 div.followlines-cancel {