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
This commit is contained in:
parent
46f8ab6c60
commit
9fd5bdcbd4
|
@ -527,16 +527,18 @@ BPrintJob::_RecurseView(BView* view, BPoint origin, BPicture* picture,
|
||||||
view->SetHighColor(highColor);
|
view->SetHighColor(highColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
view->fIsPrinting = true;
|
if ((view->Flags() & B_WILL_DRAW) != 0) {
|
||||||
view->Draw(rect);
|
view->fIsPrinting = true;
|
||||||
view->fIsPrinting = false;
|
view->Draw(rect);
|
||||||
|
view->fIsPrinting = false;
|
||||||
|
}
|
||||||
|
|
||||||
view->PopState();
|
view->PopState();
|
||||||
view->EndPicture();
|
view->EndPicture();
|
||||||
|
|
||||||
BView* child = view->ChildAt(0);
|
BView* child = view->ChildAt(0);
|
||||||
while (child != NULL) {
|
while (child != NULL) {
|
||||||
if ((child->Flags() & B_WILL_DRAW) && !child->IsHidden()) {
|
if (!child->IsHidden()) {
|
||||||
BPoint leftTop(view->Bounds().LeftTop() + child->Frame().LeftTop());
|
BPoint leftTop(view->Bounds().LeftTop() + child->Frame().LeftTop());
|
||||||
BRect printRect(rect.OffsetToCopy(rect.LeftTop() - leftTop)
|
BRect printRect(rect.OffsetToCopy(rect.LeftTop() - leftTop)
|
||||||
& child->Bounds());
|
& child->Bounds());
|
||||||
|
|
Loading…
Reference in New Issue