diff --git a/debug_toolbar/static/debug_toolbar/css/toolbar.css b/debug_toolbar/static/debug_toolbar/css/toolbar.css index 6bbfd3d73..13fbbed0a 100644 --- a/debug_toolbar/static/debug_toolbar/css/toolbar.css +++ b/debug_toolbar/static/debug_toolbar/css/toolbar.css @@ -198,7 +198,7 @@ #djDebug #djDebugToolbarHandle { position: fixed; - transform: rotate(-90deg); + transform: translateY(-100%) rotate(-90deg); transform-origin: right bottom; background-color: #fff; border: 1px solid #111; diff --git a/debug_toolbar/static/debug_toolbar/js/toolbar.js b/debug_toolbar/static/debug_toolbar/js/toolbar.js index 579548d4e..c17ee3ea2 100644 --- a/debug_toolbar/static/debug_toolbar/js/toolbar.js +++ b/debug_toolbar/static/debug_toolbar/js/toolbar.js @@ -190,6 +190,7 @@ const djdt = { requestAnimationFrame(function () { djdt.handleDragged = false; }); + djdt.ensure_handle_visibility(); } }); const show = @@ -210,6 +211,15 @@ const djdt = { e.classList.remove("djdt-active"); }); }, + ensure_handle_visibility() { + const handle = document.getElementById("djDebugToolbarHandle"); + // set handle position + const handleTop = Math.min( + localStorage.getItem("djdt.top") || 0, + window.innerHeight - handle.offsetWidth + ); + handle.style.top = handleTop + "px"; + }, hide_toolbar() { djdt.hide_panels(); @@ -217,16 +227,8 @@ const djdt = { const handle = document.getElementById("djDebugToolbarHandle"); $$.show(handle); - // set handle position - let handleTop = localStorage.getItem("djdt.top"); - if (handleTop) { - handleTop = Math.min( - handleTop, - window.innerHeight - handle.offsetHeight - ); - handle.style.top = handleTop + "px"; - } - + djdt.ensure_handle_visibility(); + window.addEventListener("resize", djdt.ensure_handle_visibility); document.removeEventListener("keydown", onKeyDown); localStorage.setItem("djdt.show", "false"); @@ -249,6 +251,7 @@ const djdt = { $$.hide(document.getElementById("djDebugToolbarHandle")); $$.show(document.getElementById("djDebugToolbar")); localStorage.setItem("djdt.show", "true"); + window.removeEventListener("resize", djdt.ensure_handle_visibility); }, cookie: { get(key) { diff --git a/docs/changes.rst b/docs/changes.rst index 435574265..e66c5fd52 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -4,6 +4,8 @@ Change log Next version ------------ +* Ensured that the handle stays within bounds when resizing the window. + 3.2.1 (2021-04-14) ------------------