Commit 92298a5c authored by Thorbjørn Lindeijer's avatar Thorbjørn Lindeijer Committed by Kai Koehne
Browse files

DeclarativeObserver: Don't fade in the highlight edge

It feels more responsive when the highlight is immediately visible.

Change-Id: Ie3dd0693ecc38f33b001c86970b220b45b37fdfc
Reviewed-by: Kai Koehne
(cherry picked from Qt 4.8 commit 0b4e028ec294992df01430bdf978982835c7df5c)
Reviewed-on: http://codereview.qt.nokia.com/248


Reviewed-by: default avatarQt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: default avatarKai Koehne <kai.koehne@nokia.com>
parent 335f6ad0
......@@ -42,10 +42,6 @@
namespace QmlJSDebugger {
const qreal AnimDelta = 0.025f;
const int AnimInterval = 30;
const int AnimFrames = 10;
BoundingBox::BoundingBox(QGraphicsObject *itemToHighlight, QGraphicsItem *parentItem,
QObject *parent)
: QObject(parent),
......@@ -83,12 +79,8 @@ int BoundingBoxPolygonItem::type() const
BoundingRectHighlighter::BoundingRectHighlighter(QDeclarativeViewInspector *view) :
LiveLayerItem(view->declarativeView()->scene()),
m_view(view),
m_animFrame(0)
m_view(view)
{
m_animTimer = new QTimer(this);
m_animTimer->setInterval(AnimInterval);
connect(m_animTimer, SIGNAL(timeout()), SLOT(animTimeout()));
}
BoundingRectHighlighter::~BoundingRectHighlighter()
......@@ -96,37 +88,17 @@ BoundingRectHighlighter::~BoundingRectHighlighter()
}
void BoundingRectHighlighter::animTimeout()
{
++m_animFrame;
if (m_animFrame == AnimFrames) {
m_animTimer->stop();
}
qreal alpha = m_animFrame / float(AnimFrames);
foreach (BoundingBox *box, m_boxes) {
box->highlightPolygonEdge->setOpacity(alpha);
}
}
void BoundingRectHighlighter::clear()
{
if (m_boxes.length()) {
m_animTimer->stop();
foreach (BoundingBox *box, m_boxes) {
freeBoundingBox(box);
}
}
foreach (BoundingBox *box, m_boxes)
freeBoundingBox(box);
}
BoundingBox *BoundingRectHighlighter::boxFor(QGraphicsObject *item) const
{
foreach (BoundingBox *box, m_boxes) {
if (box->highlightedObject.data() == item) {
if (box->highlightedObject.data() == item)
return box;
}
}
return 0;
}
......@@ -136,15 +108,11 @@ void BoundingRectHighlighter::highlight(QList<QGraphicsObject*> items)
if (items.isEmpty())
return;
bool animate = false;
QList<BoundingBox *> newBoxes;
foreach (QGraphicsObject *itemToHighlight, items) {
BoundingBox *box = boxFor(itemToHighlight);
if (!box) {
if (!box)
box = createBoundingBox(itemToHighlight);
animate = true;
}
newBoxes << box;
}
......@@ -155,7 +123,7 @@ void BoundingRectHighlighter::highlight(QList<QGraphicsObject*> items)
m_boxes << newBoxes;
}
highlightAll(animate);
highlightAll();
}
void BoundingRectHighlighter::highlight(QGraphicsObject* itemToHighlight)
......@@ -163,17 +131,14 @@ void BoundingRectHighlighter::highlight(QGraphicsObject* itemToHighlight)
if (!itemToHighlight)
return;
bool animate = false;
BoundingBox *box = boxFor(itemToHighlight);
if (!box) {
box = createBoundingBox(itemToHighlight);
m_boxes << box;
animate = true;
qSort(m_boxes);
}
highlightAll(animate);
highlightAll();
}
BoundingBox *BoundingRectHighlighter::createBoundingBox(QGraphicsObject *itemToHighlight)
......@@ -234,7 +199,7 @@ void BoundingRectHighlighter::itemDestroyed(QObject *obj)
}
}
void BoundingRectHighlighter::highlightAll(bool animate)
void BoundingRectHighlighter::highlightAll()
{
foreach (BoundingBox *box, m_boxes) {
if (box && box->highlightedObject.isNull()) {
......@@ -252,21 +217,13 @@ void BoundingRectHighlighter::highlightAll(bool animate)
box->highlightPolygon->setPolygon(QPolygonF(bboxRect));
box->highlightPolygonEdge->setPolygon(QPolygonF(edgeRect));
if (animate)
box->highlightPolygonEdge->setOpacity(0);
}
if (animate) {
m_animFrame = 0;
m_animTimer->start();
}
}
void BoundingRectHighlighter::refresh()
{
if (!m_boxes.isEmpty())
highlightAll(true);
highlightAll();
}
......
......@@ -61,12 +61,11 @@ public:
private slots:
void refresh();
void animTimeout();
void itemDestroyed(QObject *);
private:
BoundingBox *boxFor(QGraphicsObject *item) const;
void highlightAll(bool animate);
void highlightAll();
BoundingBox *createBoundingBox(QGraphicsObject *itemToHighlight);
void removeBoundingBox(BoundingBox *box);
void freeBoundingBox(BoundingBox *box);
......@@ -77,10 +76,6 @@ private:
QDeclarativeViewInspector *m_view;
QList<BoundingBox* > m_boxes;
QList<BoundingBox* > m_freeBoxes;
QTimer *m_animTimer;
qreal m_animScale;
int m_animFrame;
};
class BoundingBox : public QObject
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment