From 568bdbf7192e5694fb683abcbae738c59c80dbb5 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Fri, 30 Jul 2010 20:46:29 +0000 Subject: [PATCH] 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 --- src/servers/app/ServerPicture.cpp | 6 ++++-- src/servers/app/ServerWindow.cpp | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/servers/app/ServerPicture.cpp b/src/servers/app/ServerPicture.cpp index 347df1b6dd..8c699bf7f9 100644 --- a/src/servers/app/ServerPicture.cpp +++ b/src/servers/app/ServerPicture.cpp @@ -4,7 +4,7 @@ * * Authors: * Marc Flerackers (mflerackers@androme.be) - * Stefano Ceccherini (burton666@libero.it) + * Stefano Ceccherini (stefano.ceccherini@gmail.com) * Marcus Overhagen */ @@ -515,11 +515,13 @@ draw_picture(View* view, BPoint where, int32 token) ServerPicture* picture = view->Window()->ServerWindow()->App()->GetPicture(token); if (picture != NULL) { + BPoint origin = view->DrawingOrigin(); + view->ConvertToScreenForDrawing(&where); view->SetDrawingOrigin(where); view->PushState(); picture->Play(view); view->PopState(); - + view->SetDrawingOrigin(origin); picture->ReleaseReference(); } } diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index cb1f0a8e00..3ab7be0158 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -2786,6 +2786,7 @@ ServerWindow::_DispatchViewDrawingMessage(int32 code, // state makes sure that everything the picture // does is relative to the global picture offset. BPoint origin = fCurrentView->DrawingOrigin(); + fCurrentView->ConvertToScreenForDrawing(&where); fCurrentView->SetDrawingOrigin(where); fCurrentView->PushState();