From 9fd5bdcbd434d4b5940575d7580e31b2bcd08956 Mon Sep 17 00:00:00 2001 From: Philippe Houdoin Date: Fri, 11 Feb 2011 17:06:41 +0000 Subject: [PATCH] Made BPrintJob layout aware: while drawing recursively, we can't anymore assume that all children B_WILL_DRAW. Also call Draw() only when the view said it will. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40439 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/PrintJob.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/kits/interface/PrintJob.cpp b/src/kits/interface/PrintJob.cpp index 279ab388b1..dcc102ab87 100644 --- a/src/kits/interface/PrintJob.cpp +++ b/src/kits/interface/PrintJob.cpp @@ -527,16 +527,18 @@ BPrintJob::_RecurseView(BView* view, BPoint origin, BPicture* picture, view->SetHighColor(highColor); } - view->fIsPrinting = true; - view->Draw(rect); - view->fIsPrinting = false; + if ((view->Flags() & B_WILL_DRAW) != 0) { + view->fIsPrinting = true; + view->Draw(rect); + view->fIsPrinting = false; + } view->PopState(); view->EndPicture(); BView* child = view->ChildAt(0); while (child != NULL) { - if ((child->Flags() & B_WILL_DRAW) && !child->IsHidden()) { + if (!child->IsHidden()) { BPoint leftTop(view->Bounds().LeftTop() + child->Frame().LeftTop()); BRect printRect(rect.OffsetToCopy(rect.LeftTop() - leftTop) & child->Bounds());