diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/utils/crumblepath.cpp | 27 | ||||
-rw-r--r-- | src/libs/utils/crumblepath.h | 5 | ||||
-rw-r--r-- | src/plugins/qmljsinspector/qmljscontextcrumblepath.cpp | 6 | ||||
-rw-r--r-- | src/plugins/qmljsinspector/qmljsinspector.cpp | 8 | ||||
-rw-r--r-- | src/plugins/qmljsinspector/qmljsinspector.h | 2 |
5 files changed, 27 insertions, 21 deletions
diff --git a/src/libs/utils/crumblepath.cpp b/src/libs/utils/crumblepath.cpp index 39d3a8a479..28d7a6f94c 100644 --- a/src/libs/utils/crumblepath.cpp +++ b/src/libs/utils/crumblepath.cpp @@ -50,6 +50,8 @@ static const int ArrowBorderSize = 12; class CrumblePathButton : public QPushButton { + Q_OBJECT + public: enum SegmentType { LastSegment = 1, @@ -201,11 +203,10 @@ void CrumblePathButton::mouseReleaseEvent(QMouseEvent *e) update(); } -void CrumblePathButton::changeEvent(QEvent * e) +void CrumblePathButton::changeEvent(QEvent *e) { - if (e && e->type() == QEvent::EnabledChange) { + if (e && e->type() == QEvent::EnabledChange) update(); - } } void CrumblePathButton::select(bool s) @@ -279,7 +280,7 @@ void CrumblePath::pushElement(const QString &title, const QVariant &data) { CrumblePathButton *newButton = new CrumblePathButton(title, this); newButton->hide(); - connect(newButton, SIGNAL(clicked()), SLOT(mapClickToIndex())); + connect(newButton, SIGNAL(clicked()), SLOT(emitElementClicked())); int segType = CrumblePathButton::MiddleSegment; if (!d->m_buttons.isEmpty()) { @@ -298,7 +299,7 @@ void CrumblePath::pushElement(const QString &title, const QVariant &data) void CrumblePath::addChild(const QString &title, const QVariant &data) { - QTC_ASSERT(d->m_buttons.count() > 0,return); + QTC_ASSERT(!d->m_buttons.isEmpty(), return); QPushButton *lastButton = d->m_buttons.last(); @@ -308,7 +309,7 @@ void CrumblePath::addChild(const QString &title, const QVariant &data) QAction *childAction = new QAction(title, lastButton); childAction->setData(data); - connect(childAction, SIGNAL(triggered()), this, SLOT(mapClickToIndex())); + connect(childAction, SIGNAL(triggered()), this, SLOT(emitElementClicked())); childList->addAction(childAction); lastButton->setMenu(childList); } @@ -344,7 +345,7 @@ void CrumblePath::resizeButtons() { int totalWidthLeft = width(); - if (d->m_buttons.length() >= 1) { + if (!d->m_buttons.isEmpty()) { QPoint nextElementPosition(0, 0); d->m_buttons.first()->raise(); @@ -389,13 +390,15 @@ void CrumblePath::resizeButtons() } } -void CrumblePath::mapClickToIndex() +void CrumblePath::emitElementClicked() { QObject *element = sender(); - if (QString("QAction") == element->metaObject()->className()) - emit elementClicked(static_cast<QAction *>(element)->data().toInt()); - else if (QString("QPushButton") == element->metaObject()->className()) - emit elementClicked(static_cast<CrumblePathButton *>(element)->data().toInt()); + if (QAction *action = qobject_cast<QAction*>(element)) + emit elementClicked(action->data()); + else if (CrumblePathButton *button = qobject_cast<CrumblePathButton*>(element)) + emit elementClicked(button->data()); } } // namespace Utils + +#include "crumblepath.moc" diff --git a/src/libs/utils/crumblepath.h b/src/libs/utils/crumblepath.h index e4ff4cc364..855ece72b7 100644 --- a/src/libs/utils/crumblepath.h +++ b/src/libs/utils/crumblepath.h @@ -50,6 +50,7 @@ class QTCREATOR_UTILS_EXPORT CrumblePath : public QWidget public: explicit CrumblePath(QWidget *parent = 0); ~CrumblePath(); + void selectIndex(int index); QVariant dataForIndex(int index) const; @@ -60,13 +61,13 @@ public slots: virtual void clear(); signals: - void elementClicked(int debugId); + void elementClicked(const QVariant &data); protected: void resizeEvent(QResizeEvent *); private slots: - void mapClickToIndex(); + void emitElementClicked(); private: void resizeButtons(); diff --git a/src/plugins/qmljsinspector/qmljscontextcrumblepath.cpp b/src/plugins/qmljsinspector/qmljscontextcrumblepath.cpp index 0132a8319b..308b476add 100644 --- a/src/plugins/qmljsinspector/qmljscontextcrumblepath.cpp +++ b/src/plugins/qmljsinspector/qmljscontextcrumblepath.cpp @@ -52,10 +52,10 @@ void ContextCrumblePath::updateContextPath(const QStringList &path, const QList< m_isEmpty = path.isEmpty(); if (m_isEmpty) { - pushElement(tr("[no context]"),QVariant(-1)); + pushElement(tr("[no context]"), -1); } else { for (int i = 0; i < path.count(); i++) - pushElement(path[i], QVariant(debugIds[i])); + pushElement(path[i], debugIds[i]); } } @@ -63,7 +63,7 @@ void ContextCrumblePath::addChildren(const QStringList &childrenNames, const QLi { Q_ASSERT(childrenNames.count() == childrenDebugIds.count()); for (int i = 0; i < childrenNames.count(); i++) - addChild(childrenNames[i], QVariant(childrenDebugIds[i])); + addChild(childrenNames[i], childrenDebugIds[i]); } void ContextCrumblePath::clear() diff --git a/src/plugins/qmljsinspector/qmljsinspector.cpp b/src/plugins/qmljsinspector/qmljsinspector.cpp index febc1cf72f..527898e45c 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.cpp +++ b/src/plugins/qmljsinspector/qmljsinspector.cpp @@ -726,7 +726,7 @@ void InspectorUi::setupDockWidgets() m_crumblePath = new ContextCrumblePath; m_crumblePath->setObjectName("QmlContextPath"); m_crumblePath->setWindowTitle(tr("Context Path")); - connect(m_crumblePath, SIGNAL(elementClicked(int)), SLOT(crumblePathElementClicked(int))); + connect(m_crumblePath, SIGNAL(elementClicked(QVariant)), SLOT(crumblePathElementClicked(QVariant))); m_propertyInspector = new QmlJSPropertyInspector; @@ -759,9 +759,11 @@ void InspectorUi::setupDockWidgets() dock->setTitleBarWidget(new QWidget(dock)); } -void InspectorUi::crumblePathElementClicked(int debugId) +void InspectorUi::crumblePathElementClicked(const QVariant &data) { - if (debugId == -1) + bool ok; + const int debugId = data.toInt(&ok); + if (!ok || debugId == -1) return; QList<int> debugIds; diff --git a/src/plugins/qmljsinspector/qmljsinspector.h b/src/plugins/qmljsinspector/qmljsinspector.h index 2912161397..3e0077226d 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.h +++ b/src/plugins/qmljsinspector/qmljsinspector.h @@ -129,7 +129,7 @@ private slots: QmlJSLiveTextPreview *createPreviewForEditor(Core::IEditor *newEditor); void disableLivePreview(); - void crumblePathElementClicked(int); + void crumblePathElementClicked(const QVariant &data); void currentDebugProjectRemoved(); void updatePendingPreviewDocuments(QmlJS::Document::Ptr doc); |