Convert the BPoint to screen coordinates respecting the scale
(using ConvertToScreenForDrawing()) before drawing a BPicture, both directly and inside another BPicture. Restore the drawing origin when drawing a nested BPicture (like we already do when drawing it directly). Fixes #6008. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37824 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Marc Flerackers ([email protected])
|
* Marc Flerackers ([email protected])
|
||||||
* Stefano Ceccherini ([email protected])
|
* Stefano Ceccherini ([email protected])
|
||||||
* Marcus Overhagen <[email protected]>
|
* Marcus Overhagen <[email protected]>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -515,11 +515,13 @@ draw_picture(View* view, BPoint where, int32 token)
|
|||||||
ServerPicture* picture
|
ServerPicture* picture
|
||||||
= view->Window()->ServerWindow()->App()->GetPicture(token);
|
= view->Window()->ServerWindow()->App()->GetPicture(token);
|
||||||
if (picture != NULL) {
|
if (picture != NULL) {
|
||||||
|
BPoint origin = view->DrawingOrigin();
|
||||||
|
view->ConvertToScreenForDrawing(&where);
|
||||||
view->SetDrawingOrigin(where);
|
view->SetDrawingOrigin(where);
|
||||||
view->PushState();
|
view->PushState();
|
||||||
picture->Play(view);
|
picture->Play(view);
|
||||||
view->PopState();
|
view->PopState();
|
||||||
|
view->SetDrawingOrigin(origin);
|
||||||
picture->ReleaseReference();
|
picture->ReleaseReference();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2786,6 +2786,7 @@ ServerWindow::_DispatchViewDrawingMessage(int32 code,
|
|||||||
// state makes sure that everything the picture
|
// state makes sure that everything the picture
|
||||||
// does is relative to the global picture offset.
|
// does is relative to the global picture offset.
|
||||||
BPoint origin = fCurrentView->DrawingOrigin();
|
BPoint origin = fCurrentView->DrawingOrigin();
|
||||||
|
fCurrentView->ConvertToScreenForDrawing(&where);
|
||||||
fCurrentView->SetDrawingOrigin(where);
|
fCurrentView->SetDrawingOrigin(where);
|
||||||
|
|
||||||
fCurrentView->PushState();
|
fCurrentView->PushState();
|
||||||
|
|||||||
Reference in New Issue
Block a user