Escher: Fix absoluteDrawingArea

It needed to compute the absoluteOrigin independently

Change-Id: I5aadf4f03da1af965285fc5ae675ddcfbcd34ed0
This commit is contained in:
Romain Goyet
2016-06-15 13:28:55 +02:00
parent e6c1c3c8ee
commit dc34ce10d2
2 changed files with 12 additions and 2 deletions

View File

@@ -58,6 +58,7 @@ protected:
KDRect m_frame;
private:
void redraw(KDRect rect);
KDPoint absoluteOrigin() const;
KDRect absoluteDrawingArea() const;
bool m_needsRedraw;

View File

@@ -133,15 +133,24 @@ KDRect View::bounds() const {
return bounds;
}
KDPoint View::absoluteOrigin() const {
if (m_superview == nullptr) {
assert(this == (View *)window());
return m_frame.origin;
} else {
return KDPointTranslate(m_frame.origin, m_superview->absoluteOrigin());
}
}
KDRect View::absoluteDrawingArea() const {
if (m_superview == nullptr) {
assert(this == (View *)window());
return m_frame;
} else {
KDRect parentDrawingArea = m_superview->absoluteDrawingArea();
KDRect absoluteFrame = m_frame;
absoluteFrame.x += parentDrawingArea.x;
absoluteFrame.y += parentDrawingArea.y;
absoluteFrame.origin = absoluteOrigin();
return KDRectIntersection(absoluteFrame, parentDrawingArea);
}