Mercurial > hg > easyhg
comparison panned.cpp @ 133:aaeab914f2a3
* Better attempt at retaining current visible area when history scene changes; first cut at highlighting new items
author | Chris Cannam |
---|---|
date | Tue, 30 Nov 2010 12:45:34 +0000 |
parents | 16ceeee30e2a |
children | 4bad3c5c053a |
comparison
equal
deleted
inserted
replaced
132:16ceeee30e2a | 133:aaeab914f2a3 |
---|---|
42 QGraphicsView::resizeEvent(ev); | 42 QGraphicsView::resizeEvent(ev); |
43 | 43 |
44 if (pr != m_pannedRect) { | 44 if (pr != m_pannedRect) { |
45 DEBUG << "Panned: setting panned rect to " << pr << endl; | 45 DEBUG << "Panned: setting panned rect to " << pr << endl; |
46 m_pannedRect = pr; | 46 m_pannedRect = pr; |
47 centerOn(pr.center()); | |
48 emit pannedRectChanged(pr); | |
49 } | |
50 } | |
51 | |
52 void | |
53 Panned::setScene(QGraphicsScene *s) | |
54 { | |
55 if (!scene()) { | |
56 QGraphicsView::setScene(s); | |
57 return; | |
58 } | |
59 | |
60 QPointF nearpt = mapToScene(0, 0); | |
61 QPointF farpt = mapToScene(width(), height()); | |
62 QSizeF sz(farpt.x()-nearpt.x(), farpt.y()-nearpt.y()); | |
63 QRectF pr(nearpt, sz); | |
64 | |
65 QGraphicsView::setScene(s); | |
66 | |
67 DEBUG << "Panned::setScene: pr = " << pr << ", sceneRect = " << sceneRect() << endl; | |
68 | |
69 if (scene() && sceneRect().intersects(pr)) { | |
70 DEBUG << "Panned::setScene: restoring old rect " << pr << endl; | |
71 m_pannedRect = pr; | |
72 centerOn(pr.center()); | |
47 emit pannedRectChanged(pr); | 73 emit pannedRectChanged(pr); |
48 } | 74 } |
49 } | 75 } |
50 | 76 |
51 void | 77 void |
61 QPointF farpt = mapToScene(width(), height()); | 87 QPointF farpt = mapToScene(width(), height()); |
62 QSizeF sz(farpt.x()-nearpt.x(), farpt.y()-nearpt.y()); | 88 QSizeF sz(farpt.x()-nearpt.x(), farpt.y()-nearpt.y()); |
63 QRectF pr(nearpt, sz); | 89 QRectF pr(nearpt, sz); |
64 | 90 |
65 if (pr != m_pannedRect) { | 91 if (pr != m_pannedRect) { |
92 DEBUG << "Panned::drawForeground: visible rect " << pr << " differs from panned rect " << m_pannedRect << ", updating panned rect" <<endl; | |
66 if (pr.x() != m_pannedRect.x()) emit pannedContentsScrolled(); | 93 if (pr.x() != m_pannedRect.x()) emit pannedContentsScrolled(); |
67 m_pannedRect = pr; | 94 m_pannedRect = pr; |
68 emit pannedRectChanged(pr); | 95 emit pannedRectChanged(pr); |
69 } | 96 } |
70 } | 97 } |