/** * @file Move windows on mouse drag. * * @licstart The following is the entire license notice for the JavaScript code * in this page. * * Copyright (C) 2026 Madison L. * * The JavaScript code in this page is free software: you can redistribute it * and/or modify it under the terms of the GNU General Public License (GNU GPL) * as published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. The code is distributed * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. * * As additional permission under GNU GPL version 3 section 7, you may * distribute non-source (e.g., minimized or compacted) forms of that code * without the copy of the GNU GPL normally required by section 4, provided you * include this license notice and a URL through which recipients can access the * Corresponding Source. * * @licend The above is the entire license notice for the JavaScript code in * this page. */ // TODO: Rewrite to support more than one window per page. const subwindow = document.getElementById("window"); const titlebar = document.getElementById("window-titlebar"); let dragging = false; let prevPosX; let prevPosY; titlebar.addEventListener("mousedown", (event) => { dragging = true; prevPosX = event.clientX; prevPosY = event.clientY; }); window.addEventListener("mousemove", (event) => { if (!dragging) return; const newPosX = subwindow.offsetLeft - (prevPosX - event.clientX); const newPosY = subwindow.offsetTop - (prevPosY - event.clientY); subwindow.style.left = newPosX + "px"; subwindow.style.top = newPosY + "px"; prevPosX = event.clientX; prevPosY = event.clientY; }); window.addEventListener("mouseup", (_event) => { dragging = false; });