|
|
@@ -210,16 +210,16 @@ bool ElementUtilities::GetClippingRegion(Vector2i& clip_origin, Vector2i& clip_d
|
|
|
// Ignore nodes that don't clip.
|
|
|
if (clipping_element->GetClientWidth() < clipping_element->GetScrollWidth()
|
|
|
|| clipping_element->GetClientHeight() < clipping_element->GetScrollHeight())
|
|
|
- {
|
|
|
+ {
|
|
|
Vector2f element_origin_f = clipping_element->GetAbsoluteOffset(Box::CONTENT);
|
|
|
Vector2f element_dimensions_f = clipping_element->GetBox().GetSize(Box::CONTENT);
|
|
|
-
|
|
|
+
|
|
|
Vector2i element_origin(Math::RealToInteger(element_origin_f.x), Math::RealToInteger(element_origin_f.y));
|
|
|
Vector2i element_dimensions(Math::RealToInteger(element_dimensions_f.x), Math::RealToInteger(element_dimensions_f.y));
|
|
|
-
|
|
|
- bool clip_x = element->GetProperty(OVERFLOW_X)->Get< int >() != OVERFLOW_VISIBLE;
|
|
|
- bool clip_y = element->GetProperty(OVERFLOW_Y)->Get< int >() != OVERFLOW_VISIBLE;
|
|
|
- ROCKET_ASSERT(!clip_x || !clip_y || (clip_x && clip_y));
|
|
|
+
|
|
|
+ bool clip_x = clipping_element->GetProperty(OVERFLOW_X)->Get< int >() != OVERFLOW_VISIBLE;
|
|
|
+ bool clip_y = clipping_element->GetProperty(OVERFLOW_Y)->Get< int >() != OVERFLOW_VISIBLE;
|
|
|
+ ROCKET_ASSERT(clip_x || clip_y);
|
|
|
|
|
|
if (!clip_x)
|
|
|
{
|
|
|
@@ -231,7 +231,7 @@ bool ElementUtilities::GetClippingRegion(Vector2i& clip_origin, Vector2i& clip_d
|
|
|
element_origin.y = 0;
|
|
|
element_dimensions.y = clip_dimensions.y < 0 ? element->GetContext()->GetDimensions().y : clip_dimensions.y;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (clip_dimensions == Vector2i(-1, -1))
|
|
|
{
|
|
|
clip_origin = element_origin;
|
|
|
@@ -241,10 +241,10 @@ bool ElementUtilities::GetClippingRegion(Vector2i& clip_origin, Vector2i& clip_d
|
|
|
{
|
|
|
Vector2i top_left(Math::Max(clip_origin.x, element_origin.x),
|
|
|
Math::Max(clip_origin.y, element_origin.y));
|
|
|
-
|
|
|
+
|
|
|
Vector2i bottom_right(Math::Min(clip_origin.x + clip_dimensions.x, element_origin.x + element_dimensions.x),
|
|
|
Math::Min(clip_origin.y + clip_dimensions.y, element_origin.y + element_dimensions.y));
|
|
|
-
|
|
|
+
|
|
|
clip_origin = top_left;
|
|
|
clip_dimensions.x = Math::Max(0, bottom_right.x - top_left.x);
|
|
|
clip_dimensions.y = Math::Max(0, bottom_right.y - top_left.y);
|