summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/math_func.hpp11
-rw-r--r--src/window.cpp4
2 files changed, 13 insertions, 2 deletions
diff --git a/src/core/math_func.hpp b/src/core/math_func.hpp
index 92893ed31..42c41abad 100644
--- a/src/core/math_func.hpp
+++ b/src/core/math_func.hpp
@@ -330,6 +330,17 @@ static FORCEINLINE uint CeilDiv(uint a, uint b)
}
/**
+ * Computes ceil(a / b) * b for non-negative a and b.
+ * @param a Numerator
+ * @param b Denominator
+ * @return a rounded up to the nearest multiple of b.
+ */
+static FORCEINLINE uint Ceil(uint a, uint b)
+{
+ return CeilDiv(a, b) * b;
+}
+
+/**
* Computes round(a / b) for signed a and unsigned b.
* @param a Numerator
* @param b Denominator
diff --git a/src/window.cpp b/src/window.cpp
index 285a18711..9241f6c84 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -1675,8 +1675,8 @@ void ResizeWindow(Window *w, int delta_x, int delta_y)
* the resolution clamp it in such a manner that it stays within the bounts. */
int new_right = w->left + w->width + delta_x;
int new_bottom = w->top + w->height + delta_y;
- if (new_right >= (int)_cur_resolution.width) delta_x -= new_right - _cur_resolution.width;
- if (new_bottom >= (int)_cur_resolution.height) delta_y -= new_bottom - _cur_resolution.height;
+ if (new_right >= (int)_cur_resolution.width) delta_x -= Ceil(new_right - _cur_resolution.width, max(1U, w->nested_root->resize_x));
+ if (new_bottom >= (int)_cur_resolution.height) delta_y -= Ceil(new_bottom - _cur_resolution.height, max(1U, w->nested_root->resize_y));
w->SetDirty();