diff --git a/src/core/environment.js b/src/core/environment.js index 06e678c6b9..0de830c7c4 100644 --- a/src/core/environment.js +++ b/src/core/environment.js @@ -772,6 +772,11 @@ p5.prototype.windowHeight = 0; p5.prototype._onresize = function(e) { this._setProperty('windowWidth', getWindowWidth()); this._setProperty('windowHeight', getWindowHeight()); + // Update mouse coordinates when window resizes + // This ensures mouseX/mouseY reflect the mouse position relative to the new canvas size + if (this._hasMouseInteracted && this._lastMouseEvent) { + this._updateNextMouseCoords(this._lastMouseEvent); + } const context = this._isGlobal ? window : this; let executeDefault; if (typeof context.windowResized === 'function') { diff --git a/src/events/mouse.js b/src/events/mouse.js index 7d83626962..34a9b848c5 100644 --- a/src/events/mouse.js +++ b/src/events/mouse.js @@ -820,6 +820,8 @@ p5.prototype._updateNextMouseCoords = function(e) { e ); + // Store the last mouse event for recalculating coordinates on resize + this._setProperty('_lastMouseEvent', e); this._setProperty('mouseX', mousePos.x); this._setProperty('mouseY', mousePos.y);