GetClippingRegion() was implemented wrongly on the app_server side. It needs
to take the current effective drawing region of the view, but converted to local coordinate space. Untested as of yet. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24361 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1787,8 +1787,10 @@ fDesktop->LockSingleWindow();
|
|||||||
BRegion empty;
|
BRegion empty;
|
||||||
fLink.AttachRegion(empty);
|
fLink.AttachRegion(empty);
|
||||||
} else {
|
} else {
|
||||||
BRegion drawingRegion = fCurrentView->LocalClipping();
|
_UpdateCurrentDrawingRegion();
|
||||||
fLink.AttachRegion(drawingRegion);
|
BRegion region(fCurrentDrawingRegion);
|
||||||
|
fCurrentView->ConvertFromScreen(®ion);
|
||||||
|
fLink.AttachRegion(region);
|
||||||
}
|
}
|
||||||
fLink.Flush();
|
fLink.Flush();
|
||||||
|
|
||||||
@@ -2047,11 +2049,7 @@ ServerWindow::_DispatchViewDrawingMessage(int32 code, BPrivate::LinkReceiver &li
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fCurrentDrawingRegionValid || fWindow->DrawingRegionChanged(fCurrentView)) {
|
_UpdateCurrentDrawingRegion();
|
||||||
fWindow->GetEffectiveDrawingRegion(fCurrentView, fCurrentDrawingRegion);
|
|
||||||
fCurrentDrawingRegionValid = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fCurrentDrawingRegion.CountRects() <= 0) {
|
if (fCurrentDrawingRegion.CountRects() <= 0) {
|
||||||
if (link.NeedsReply()) {
|
if (link.NeedsReply()) {
|
||||||
// the client is now blocking and waiting for a reply!
|
// the client is now blocking and waiting for a reply!
|
||||||
@@ -3181,6 +3179,18 @@ ServerWindow::_UpdateDrawState(View* view)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ServerWindow::_UpdateCurrentDrawingRegion()
|
||||||
|
{
|
||||||
|
if (!fCurrentDrawingRegionValid
|
||||||
|
|| fWindow->DrawingRegionChanged(fCurrentView)) {
|
||||||
|
fWindow->GetEffectiveDrawingRegion(fCurrentView,
|
||||||
|
fCurrentDrawingRegion);
|
||||||
|
fCurrentDrawingRegionValid = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ServerWindow::_MessageNeedsAllWindowsLocked(uint32 code) const
|
ServerWindow::_MessageNeedsAllWindowsLocked(uint32 code) const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -128,6 +128,7 @@ private:
|
|||||||
|
|
||||||
void _SetCurrentView(View* view);
|
void _SetCurrentView(View* view);
|
||||||
void _UpdateDrawState(View* view);
|
void _UpdateDrawState(View* view);
|
||||||
|
void _UpdateCurrentDrawingRegion();
|
||||||
|
|
||||||
bool _MessageNeedsAllWindowsLocked(uint32 code) const;
|
bool _MessageNeedsAllWindowsLocked(uint32 code) const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user