]> git.sesse.net Git - pr0n/blobdiff - files/pr0n-fullscreen.js
Fix infobox placement in edge cases on high-DPI screens.
[pr0n] / files / pr0n-fullscreen.js
index 75ef1f81ac49895bcb9e14e8d65b24cc28bf825b..ecabed06e0e60a6dad8d1b2b48ee65dc785db935 100644 (file)
@@ -135,8 +135,8 @@ function display_image(url, backend_width, backend_height, elem_id, offset)
                // scroll offset completely off.
                img.style.display = 'none';
                setTimeout(function() {
+                       img.style.display = null;  // Must be done before position_image(), for measurement.
                        position_image(img, backend_width, backend_height, offset, false);
-                       img.style.display = null;
                }, 1);
        }
 }
@@ -164,8 +164,8 @@ function display_infobox(html, backend_width, backend_height, elem_id, offset)
                // scroll offset completely off.
                box.style.display = 'none';
                setTimeout(function() {
+                       box.style.display = null;  // Must be done before position_image(), for measurement.
                        position_image(box, backend_width, backend_height, offset, true);
-                       box.style.display = null;
                }, 1);
        }
 }
@@ -274,14 +274,12 @@ function position_image(img, backend_width, backend_height, offset, box)
        img.style.transform = "translate(" + extra_x_offset + "px,0px)";
 
        if (box) {
-               img.style.top = Math.min(top + height, screen_size[1] - 24) / dpr + "px";
+               img.style.top = Math.min(top + height, screen_size[1] - 24 * dpr) / dpr + "px";
                img.style.height = "24px";
                img.style.width = null;
                img.style.whiteSpace = 'nowrap';
-               if (offset == 0) {
-                       // Hide the box if there's no room for all the text.
-                       img.style.opacity = (img.clientWidth < width / dpr + 10) ? null : 0.0;
-               }
+               // Hide the box if there's no room for all the text.
+               img.style.opacity = (img.clientWidth < width / dpr + 10) ? null : 0.0;
                img.style.width = (width / dpr) + "px";
        } else {
                img.style.top = (top / dpr) + "px";
@@ -317,7 +315,7 @@ function update_shown_images()
                //    inum !== global_image_num + 1) {
                //      to_remove.push(child);
                //}
-               if (inum !== global_image_num) {
+               if (inum !== global_image_num || (child.className === "fsbox" && !global_infobox)) {
                        to_remove.push(child);
                }
        }