From 11a8256d3ff8de71259c7471e1ceb22eaf09baa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=99=8D=EC=84=B1=EC=A4=80?= Date: Tue, 5 Sep 2023 21:22:35 +0900 Subject: [PATCH] When resizing, window moves when the width or height is less than the minimum --- es/DockPanel.js | 14 ++++++++------ lib/DockPanel.js | 14 ++++++++------ src/DockPanel.tsx | 15 +++++++++------ 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/es/DockPanel.js b/es/DockPanel.js index c1843c90..9ca8e5f1 100644 --- a/es/DockPanel.js +++ b/es/DockPanel.js @@ -138,9 +138,11 @@ export class DockPanel extends React.PureComponent { dy = height - 16 - this._movingY; } } + const maxX = this._movingX + this._movingW - (panelData.minWidth || 0); + const maxY = this._movingY + this._movingH - (panelData.minHeight || 0); switch (this._movingCorner) { case 't': { - panelData.y = this._movingY + dy; + panelData.y = Math.min(maxY, this._movingY + dy); panelData.h = this._movingH - dy; break; } @@ -149,7 +151,7 @@ export class DockPanel extends React.PureComponent { break; } case 'l': { - panelData.x = this._movingX + dx; + panelData.x = Math.min(maxX, this._movingX + dx); panelData.w = this._movingW - dx; break; } @@ -158,20 +160,20 @@ export class DockPanel extends React.PureComponent { break; } case 'tl': { - panelData.x = this._movingX + dx; + panelData.x = Math.min(maxX, this._movingX + dx); panelData.w = this._movingW - dx; - panelData.y = this._movingY + dy; + panelData.y = Math.min(maxY, this._movingY + dy); panelData.h = this._movingH - dy; break; } case 'tr': { panelData.w = this._movingW + dx; - panelData.y = this._movingY + dy; + panelData.y = Math.min(maxY, this._movingY + dy); panelData.h = this._movingH - dy; break; } case 'bl': { - panelData.x = this._movingX + dx; + panelData.x = Math.min(maxX, this._movingX + dx); panelData.w = this._movingW - dx; panelData.h = this._movingH + dy; break; diff --git a/lib/DockPanel.js b/lib/DockPanel.js index 4f254957..09f26a0c 100644 --- a/lib/DockPanel.js +++ b/lib/DockPanel.js @@ -163,9 +163,11 @@ class DockPanel extends React.PureComponent { dy = height - 16 - this._movingY; } } + const maxX = this._movingX + this._movingW - (panelData.minWidth || 0); + const maxY = this._movingY + this._movingH - (panelData.minHeight || 0); switch (this._movingCorner) { case 't': { - panelData.y = this._movingY + dy; + panelData.y = Math.min(maxY, this._movingY + dy); panelData.h = this._movingH - dy; break; } @@ -174,7 +176,7 @@ class DockPanel extends React.PureComponent { break; } case 'l': { - panelData.x = this._movingX + dx; + panelData.x = Math.min(maxX, this._movingX + dx); panelData.w = this._movingW - dx; break; } @@ -183,20 +185,20 @@ class DockPanel extends React.PureComponent { break; } case 'tl': { - panelData.x = this._movingX + dx; + panelData.x = Math.min(maxX, this._movingX + dx); panelData.w = this._movingW - dx; - panelData.y = this._movingY + dy; + panelData.y = Math.min(maxY, this._movingY + dy); panelData.h = this._movingH - dy; break; } case 'tr': { panelData.w = this._movingW + dx; - panelData.y = this._movingY + dy; + panelData.y = Math.min(maxY, this._movingY + dy); panelData.h = this._movingH - dy; break; } case 'bl': { - panelData.x = this._movingX + dx; + panelData.x = Math.min(maxX, this._movingX + dx); panelData.w = this._movingW - dx; panelData.h = this._movingH + dy; break; diff --git a/src/DockPanel.tsx b/src/DockPanel.tsx index d3e58e34..646763d5 100644 --- a/src/DockPanel.tsx +++ b/src/DockPanel.tsx @@ -187,9 +187,12 @@ export class DockPanel extends React.PureComponent { } } + const maxX = this._movingX + this._movingW - (panelData.minWidth || 0) + const maxY = this._movingY + this._movingH - (panelData.minHeight || 0) + switch (this._movingCorner) { case 't': { - panelData.y = this._movingY + dy; + panelData.y = Math.min(maxY, this._movingY + dy); panelData.h = this._movingH - dy; break; } @@ -198,7 +201,7 @@ export class DockPanel extends React.PureComponent { break; } case 'l': { - panelData.x = this._movingX + dx; + panelData.x = Math.min(maxX, this._movingX + dx); panelData.w = this._movingW - dx; break; } @@ -207,20 +210,20 @@ export class DockPanel extends React.PureComponent { break; } case 'tl': { - panelData.x = this._movingX + dx; + panelData.x = Math.min(maxX, this._movingX + dx); panelData.w = this._movingW - dx; - panelData.y = this._movingY + dy; + panelData.y = Math.min(maxY, this._movingY + dy); panelData.h = this._movingH - dy; break; } case 'tr': { panelData.w = this._movingW + dx; - panelData.y = this._movingY + dy; + panelData.y = Math.min(maxY, this._movingY + dy); panelData.h = this._movingH - dy; break; } case 'bl': { - panelData.x = this._movingX + dx; + panelData.x = Math.min(maxX, this._movingX + dx); panelData.w = this._movingW - dx; panelData.h = this._movingH + dy; break;