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 }