diff --git a/headers/os/interface/Region.h b/headers/os/interface/Region.h index c7ebce3ad3..668c107c0a 100644 --- a/headers/os/interface/Region.h +++ b/headers/os/interface/Region.h @@ -82,6 +82,8 @@ class BRegion { clipping_rect _Convert(const BRect& rect) const; clipping_rect _ConvertToInternal(const BRect& rect) const; + clipping_rect _ConvertToInternal( + const clipping_rect& rect) const; private: long fCount; diff --git a/src/kits/game/DirectWindow.cpp b/src/kits/game/DirectWindow.cpp index 0a5c83b592..461d3c14ca 100644 --- a/src/kits/game/DirectWindow.cpp +++ b/src/kits/game/DirectWindow.cpp @@ -307,10 +307,12 @@ BDirectWindow::GetClippingRegion(BRegion *region, BPoint *origin) const UnlockDirect(); return B_NO_MEMORY; } - region->fCount = fBufferDesc->clip_list_count; - region->fBounds = fBufferDesc->clip_bounds; - for (uint32 c = 0; c < fBufferDesc->clip_list_count; c++) - region->fData[c] = fBufferDesc->clip_list[c]; + region->fCount = fBufferDesc->clip_list_count; + region->fBounds = region->_ConvertToInternal(fBufferDesc->clip_bounds); + for (uint32 c = 0; c < fBufferDesc->clip_list_count; c++) { + region->fData[c] = region->_ConvertToInternal( + fBufferDesc->clip_list[c]); + } // adjust bounds by the given origin point region->OffsetBy(-originX, -originY); diff --git a/src/kits/interface/Region.cpp b/src/kits/interface/Region.cpp index c49f02ee54..9a457c81d0 100644 --- a/src/kits/interface/Region.cpp +++ b/src/kits/interface/Region.cpp @@ -502,3 +502,11 @@ BRegion::_ConvertToInternal(const BRect& rect) const (int)ceilf(rect.right) + 1, (int)ceilf(rect.bottom) + 1 }; } + +clipping_rect +BRegion::_ConvertToInternal(const clipping_rect& rect) const +{ + return (clipping_rect){ rect.left, rect.top, + rect.right + 1, rect.bottom + 1 }; +} +