From 4201046b9be1f683d3805e3a91651b8f23d0cd25 Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Thu, 11 Nov 2010 10:50:06 +0100
Subject: [PATCH] QmlObserver: Remove breadcrumb widget in observer mode

I wasn't able to get it working on Mac OS X: Putting it on top
of the QGraphicsView doesn't work because Cocoa doesn't allow a
widget to be on top of OpenGL viewport. Embedding it as a
QGraphicsProxyWidget produces lots of Cocoa warnings (raster engine related).

Anyhow, the same widget shows up in the Debugger/Observer tab of
Qt Creator.

Reviewed-by: Lasse Holmstedt
---
 .../qtcreator/qml/qmlobserver/crumblepath.cpp | 389 ------------------
 share/qtcreator/qml/qmlobserver/crumblepath.h |  70 ----
 .../qtcreator/qml/qmlobserver/crumblepath.qrc |  10 -
 .../images/crumblepath-segment-end.png        | Bin 2957 -> 0 bytes
 .../images/crumblepath-segment-hover-end.png  | Bin 2970 -> 0 bytes
 .../images/crumblepath-segment-hover.png      | Bin 3384 -> 0 bytes
 .../crumblepath-segment-selected-end.png      | Bin 2944 -> 0 bytes
 .../images/crumblepath-segment-selected.png   | Bin 3356 -> 0 bytes
 .../images/crumblepath-segment.png            | Bin 3379 -> 0 bytes
 share/qtcreator/qml/qmlobserver/qml.pri       |   9 +-
 .../qtcreator/qml/qmlobserver/qmlruntime.cpp  |  47 ---
 share/qtcreator/qml/qmlobserver/qmlruntime.h  |   3 -
 .../qt4projectmanager/qmlobservertool.cpp     |   7 +-
 13 files changed, 4 insertions(+), 531 deletions(-)
 delete mode 100644 share/qtcreator/qml/qmlobserver/crumblepath.cpp
 delete mode 100644 share/qtcreator/qml/qmlobserver/crumblepath.h
 delete mode 100644 share/qtcreator/qml/qmlobserver/crumblepath.qrc
 delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment-end.png
 delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment-hover-end.png
 delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment-hover.png
 delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment-selected-end.png
 delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment-selected.png
 delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment.png

diff --git a/share/qtcreator/qml/qmlobserver/crumblepath.cpp b/share/qtcreator/qml/qmlobserver/crumblepath.cpp
deleted file mode 100644
index 47f471f3c11..00000000000
--- a/share/qtcreator/qml/qmlobserver/crumblepath.cpp
+++ /dev/null
@@ -1,389 +0,0 @@
-/**************************************************************************
-**
-** This file is part of Qt Creator
-**
-** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-**
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** Commercial Usage
-**
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-**
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-**
-**************************************************************************/
-
-#include "crumblepath.h"
-
-#include <QtCore/QList>
-#include <QtGui/QHBoxLayout>
-#include <QtGui/QPushButton>
-#include <QtGui/QStyle>
-#include <QtGui/QResizeEvent>
-#include <QtGui/QPainter>
-#include <QtGui/QImage>
-
-static const int ArrowBorderSize = 12;
-
-// Draws a CSS-like border image where the defined borders are not stretched
-static void drawCornerImage(const QImage &img, QPainter *painter, QRect rect,
-                                  int left, int top, int right, int bottom)
-{
-    QSize size = img.size();
-    if (top > 0) { //top
-        painter->drawImage(QRect(rect.left() + left, rect.top(), rect.width() -right - left, top), img,
-                           QRect(left, 0, size.width() -right - left, top));
-        if (left > 0) //top-left
-            painter->drawImage(QRect(rect.left(), rect.top(), left, top), img,
-                               QRect(0, 0, left, top));
-        if (right > 0) //top-right
-            painter->drawImage(QRect(rect.left() + rect.width() - right, rect.top(), right, top), img,
-                               QRect(size.width() - right, 0, right, top));
-    }
-    //left
-    if (left > 0)
-        painter->drawImage(QRect(rect.left(), rect.top()+top, left, rect.height() - top - bottom), img,
-                           QRect(0, top, left, size.height() - bottom - top));
-    //center
-    painter->drawImage(QRect(rect.left() + left, rect.top()+top, rect.width() -right - left,
-                             rect.height() - bottom - top), img,
-                       QRect(left, top, size.width() -right -left,
-                             size.height() - bottom - top));
-    if (right > 0) //right
-        painter->drawImage(QRect(rect.left() +rect.width() - right, rect.top()+top, right, rect.height() - top - bottom), img,
-                           QRect(size.width() - right, top, right, size.height() - bottom - top));
-    if (bottom > 0) { //bottom
-        painter->drawImage(QRect(rect.left() +left, rect.top() + rect.height() - bottom,
-                                 rect.width() - right - left, bottom), img,
-                           QRect(left, size.height() - bottom,
-                                 size.width() - right - left, bottom));
-    if (left > 0) //bottom-left
-        painter->drawImage(QRect(rect.left(), rect.top() + rect.height() - bottom, left, bottom), img,
-                           QRect(0, size.height() - bottom, left, bottom));
-    if (right > 0) //bottom-right
-        painter->drawImage(QRect(rect.left() + rect.width() - right, rect.top() + rect.height() - bottom, right, bottom), img,
-                           QRect(size.width() - right, size.height() - bottom, right, bottom));
-    }
-}
-
-// Tints an image with tintColor, while preserving alpha and lightness
-static void tintImage(QImage &img, const QColor &tintColor)
-{
-    QPainter p(&img);
-    p.setCompositionMode(QPainter::CompositionMode_Screen);
-
-    for (int x = 0; x < img.width(); ++x) {
-        for (int y = 0; y < img.height(); ++y) {
-            QRgb rgbColor = img.pixel(x, y);
-            int alpha = qAlpha(rgbColor);
-            QColor c = QColor(rgbColor);
-
-            if (alpha > 0) {
-                c.toHsl();
-                qreal l = c.lightnessF();
-                QColor newColor = QColor::fromHslF(tintColor.hslHueF(), tintColor.hslSaturationF(), l);
-                newColor.setAlpha(alpha);
-                img.setPixel(x, y, newColor.rgba());
-            }
-        }
-    }
-}
-
-class CrumblePathButton : public QPushButton
-{
-public:
-    enum SegmentType {
-        LastSegment = 1,
-        MiddleSegment = 2,
-        FirstSegment = 4
-    };
-
-    explicit CrumblePathButton(const QString &title, QWidget *parent = 0);
-    void setSegmentType(int type);
-protected:
-    void paintEvent(QPaintEvent *);
-    void mouseMoveEvent(QMouseEvent *e);
-    void leaveEvent(QEvent *);
-    void mousePressEvent(QMouseEvent *e);
-    void mouseReleaseEvent(QMouseEvent *e);
-
-private:
-    void tintImages();
-
-private:
-    bool m_isHovering;
-    bool m_isPressed;
-    bool m_isEnd;
-    QColor m_baseColor;
-    QImage m_segment;
-    QImage m_segmentEnd;
-    QImage m_segmentSelected;
-    QImage m_segmentSelectedEnd;
-    QImage m_segmentHover;
-    QImage m_segmentHoverEnd;
-    QPoint m_textPos;
-};
-
-CrumblePathButton::CrumblePathButton(const QString &title, QWidget *parent)
-    : QPushButton(title, parent), m_isHovering(false), m_isPressed(false), m_isEnd(true)
-{
-    setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-    setToolTip(title);
-    setMinimumHeight(24);
-    setMaximumHeight(24);
-    setMouseTracking(true);
-    m_textPos.setX(18);
-    m_textPos.setY(height());
-    m_baseColor = QColor(0x666666);
-
-    m_segment = QImage(":/crumblepath/images/crumblepath-segment.png");
-    m_segmentSelected = QImage(":/crumblepath/images/crumblepath-segment-selected.png");
-    m_segmentHover = QImage(":/crumblepath/images/crumblepath-segment-hover.png");
-    m_segmentEnd = QImage(":/crumblepath/images/crumblepath-segment-end.png");
-    m_segmentSelectedEnd = QImage(":/crumblepath/images/crumblepath-segment-selected-end.png");
-    m_segmentHoverEnd = QImage(":/crumblepath/images/crumblepath-segment-hover-end.png");
-
-    tintImages();
-}
-
-void CrumblePathButton::paintEvent(QPaintEvent *)
-{
-    QPainter p(this);
-    QRect geom(0, 0, geometry().width(), geometry().height());
-
-    if (m_isEnd) {
-        if (m_isPressed) {
-            drawCornerImage(m_segmentSelectedEnd, &p, geom, 2, 0, 2, 0);
-        } else if (m_isHovering) {
-            drawCornerImage(m_segmentHoverEnd, &p, geom, 2, 0, 2, 0);
-        } else {
-            drawCornerImage(m_segmentEnd, &p, geom, 2, 0, 2, 0);
-        }
-    } else {
-        if (m_isPressed) {
-            drawCornerImage(m_segmentSelected, &p, geom, 2, 0, 12, 0);
-        } else if (m_isHovering) {
-            drawCornerImage(m_segmentHover, &p, geom, 2, 0, 12, 0);
-        } else {
-            drawCornerImage(m_segment, &p, geom, 2, 0, 12, 0);
-        }
-    }
-    p.setPen(QColor(Qt::white));
-    QFontMetrics fm(p.font());
-    QString textToDraw = fm.elidedText(text(), Qt::ElideRight, geom.width() - m_textPos.x());
-
-    p.drawText(QRectF(m_textPos.x(), 4, geom.width(), geom.height()), textToDraw);
-}
-
-void CrumblePathButton::tintImages()
-{
-    tintImage(m_segmentEnd, m_baseColor);
-    tintImage(m_segmentSelectedEnd, m_baseColor);
-    tintImage(m_segmentHoverEnd, m_baseColor);
-    tintImage(m_segmentSelected, m_baseColor);
-    tintImage(m_segmentHover, m_baseColor);
-    tintImage(m_segment, m_baseColor);
-}
-
-void CrumblePathButton::leaveEvent(QEvent *e)
-{
-    QPushButton::leaveEvent(e);
-    m_isHovering = false;
-    update();
-}
-
-void CrumblePathButton::mouseMoveEvent(QMouseEvent *e)
-{
-    QPushButton::mouseMoveEvent(e);
-    m_isHovering = true;
-    update();
-}
-
-void CrumblePathButton::mousePressEvent(QMouseEvent *e)
-{
-    QPushButton::mousePressEvent(e);
-    m_isPressed = true;
-    update();
-}
-
-void CrumblePathButton::mouseReleaseEvent(QMouseEvent *e)
-{
-    QPushButton::mouseReleaseEvent(e);
-    m_isPressed = false;
-    update();
-}
-
-void CrumblePathButton::setSegmentType(int type)
-{
-    bool useLeftPadding = !(type & FirstSegment);
-    m_isEnd = (type & LastSegment);
-    m_textPos.setX(useLeftPadding ? 18 : 4);
-}
-
-struct CrumblePathPrivate {
-    explicit CrumblePathPrivate(CrumblePath *q);
-
-    QColor m_baseColor;
-    QList<CrumblePathButton*> m_buttons;
-    QWidget *m_background;
-};
-
-CrumblePathPrivate::CrumblePathPrivate(CrumblePath *q) :
-    m_baseColor(0x666666),
-    m_background(new QWidget(q))
-{
-}
-
-//
-// CrumblePath
-//
-CrumblePath::CrumblePath(QWidget *parent) :
-    QWidget(parent), d(new CrumblePathPrivate(this))
-{
-    setMinimumHeight(25);
-    setMaximumHeight(25);
-    setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
-
-    setBackgroundStyle();
-    d->m_background->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
-}
-
-CrumblePath::~CrumblePath()
-{
-    qDeleteAll(d->m_buttons);
-    d->m_buttons.clear();
-}
-
-void CrumblePath::setBackgroundStyle()
-{
-    d->m_background->setStyleSheet("QWidget { background-color:" + d->m_baseColor.name() + ";}");
-}
-
-void CrumblePath::pushElement(const QString &title)
-{
-    CrumblePathButton *newButton = new CrumblePathButton(title, this);
-    newButton->hide();
-    connect(newButton, SIGNAL(clicked()), SLOT(mapClickToIndex()));
-    connect(newButton, SIGNAL(customContextMenuRequested(QPoint)), SLOT(mapContextMenuRequestToIndex()));
-
-    int segType = CrumblePathButton::MiddleSegment;
-    if (!d->m_buttons.isEmpty()) {
-        if (d->m_buttons.length() == 1)
-            segType = segType | CrumblePathButton::FirstSegment;
-        d->m_buttons.last()->setSegmentType(segType);
-    } else {
-        segType = CrumblePathButton::FirstSegment | CrumblePathButton::LastSegment;
-        newButton->setSegmentType(segType);
-    }
-    d->m_buttons.append(newButton);
-
-    resizeButtons();
-}
-
-void CrumblePath::popElement()
-{
-    QWidget *last = d->m_buttons.last();
-    d->m_buttons.removeLast();
-    last->setParent(0);
-    last->deleteLater();
-
-    int segType = CrumblePathButton::MiddleSegment | CrumblePathButton::LastSegment;
-    if (!d->m_buttons.isEmpty()) {
-        if (d->m_buttons.length() == 1)
-            segType = CrumblePathButton::FirstSegment | CrumblePathButton::LastSegment;
-        d->m_buttons.last()->setSegmentType(segType);
-    }
-    resizeButtons();
-}
-
-void CrumblePath::clear()
-{
-    while (!d->m_buttons.isEmpty()) {
-        popElement();
-    }
-}
-
-void CrumblePath::resizeEvent(QResizeEvent *)
-{
-    resizeButtons();
-}
-
-void CrumblePath::resizeButtons()
-{
-    int buttonMinWidth = 0;
-    int buttonMaxWidth = 0;
-    int totalWidthLeft = width();
-
-    if (d->m_buttons.length() >= 1) {
-        QPoint nextElementPosition(0,0);
-
-        d->m_buttons[0]->raise();
-        // rearrange all items so that the first item is on top (added last).
-        for(int i = 0; i < d->m_buttons.length() ; ++i) {
-            CrumblePathButton *button = d->m_buttons[i];
-
-            QFontMetrics fm(button->font());
-            buttonMinWidth = ArrowBorderSize + fm.width(button->text()) + ArrowBorderSize * 2 ;
-            buttonMaxWidth = (totalWidthLeft + ArrowBorderSize * (d->m_buttons.length() - i)) / (d->m_buttons.length() - i);
-
-            if (buttonMinWidth > buttonMaxWidth && i < d->m_buttons.length() - 1) {
-                buttonMinWidth = buttonMaxWidth;
-            } else if (i > 3 && (i == d->m_buttons.length() - 1)) {
-                buttonMinWidth = width() - nextElementPosition.x();
-                buttonMaxWidth = buttonMinWidth;
-            }
-
-            button->setMinimumWidth(buttonMinWidth);
-            button->setMaximumWidth(buttonMaxWidth);
-            button->move(nextElementPosition);
-
-            nextElementPosition.rx() += button->width() - ArrowBorderSize;
-            totalWidthLeft -= button->width();
-
-            button->show();
-            if (i > 0)
-                button->stackUnder(d->m_buttons[i - 1]);
-        }
-
-    }
-
-    d->m_background->setGeometry(0,0, width(), height());
-    d->m_background->update();
-}
-
-void CrumblePath::mapClickToIndex()
-{
-    QObject *element = sender();
-    for (int i = 0; i < d->m_buttons.length(); ++i) {
-        if (d->m_buttons[i] == element) {
-            emit elementClicked(i);
-            return;
-        }
-    }
-}
-
-void CrumblePath::mapContextMenuRequestToIndex()
-{
-    QObject *element = sender();
-    for (int i = 0; i < d->m_buttons.length(); ++i) {
-        if (d->m_buttons[i] == element) {
-            emit elementContextMenuRequested(i);
-            return;
-        }
-    }
-}
-
diff --git a/share/qtcreator/qml/qmlobserver/crumblepath.h b/share/qtcreator/qml/qmlobserver/crumblepath.h
deleted file mode 100644
index 188992db352..00000000000
--- a/share/qtcreator/qml/qmlobserver/crumblepath.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/**************************************************************************
-**
-** This file is part of Qt Creator
-**
-** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-**
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** Commercial Usage
-**
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-**
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-**
-**************************************************************************/
-
-#ifndef CRUMBLEPATH_H
-#define CRUMBLEPATH_H
-
-#include <QtGui/QWidget>
-
-QT_FORWARD_DECLARE_CLASS(QResizeEvent);
-
-struct CrumblePathPrivate;
-
-class CrumblePath : public QWidget
-{
-    Q_OBJECT
-public:
-    explicit CrumblePath(QWidget *parent = 0);
-    ~CrumblePath();
-
-public slots:
-    void pushElement(const QString &title);
-    void popElement();
-    void clear();
-
-signals:
-    void elementClicked(int index);
-    void elementContextMenuRequested(int index);
-
-protected:
-    void resizeEvent(QResizeEvent *);
-
-private slots:
-    void mapClickToIndex();
-    void mapContextMenuRequestToIndex();
-
-private:
-    void resizeButtons();
-    void setBackgroundStyle();
-
-private:
-    QScopedPointer<CrumblePathPrivate> d;
-};
-
-#endif // CRUMBLEPATH_H
diff --git a/share/qtcreator/qml/qmlobserver/crumblepath.qrc b/share/qtcreator/qml/qmlobserver/crumblepath.qrc
deleted file mode 100644
index 1c0897973c1..00000000000
--- a/share/qtcreator/qml/qmlobserver/crumblepath.qrc
+++ /dev/null
@@ -1,10 +0,0 @@
-<RCC>
-    <qresource prefix="/crumblepath">
-        <file>images/crumblepath-segment-end.png</file>
-        <file>images/crumblepath-segment-hover-end.png</file>
-        <file>images/crumblepath-segment-hover.png</file>
-        <file>images/crumblepath-segment-selected-end.png</file>
-        <file>images/crumblepath-segment-selected.png</file>
-        <file>images/crumblepath-segment.png</file>
-    </qresource>
-</RCC>
diff --git a/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-end.png b/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-end.png
deleted file mode 100644
index 1fc371cfec1a632e8ae5a20a19f5412f7c74cb09..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2957
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
DrxbvF

diff --git a/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-hover-end.png b/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-hover-end.png
deleted file mode 100644
index 5663d29ee67512937d555536f2dbfe4006ba1652..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2970
zcmV;L3uW|)P)<h;3K|Lk000e1NJLTq000F5000;W1^@s6GAB2n00009a7bBm000XU
z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+<Lqi~Na&Km7Y-Iodc-oy)XH-+^7Crag
z^g>IBfRsybQWXdwQbLP>6p<z>Aqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uh<iVD~V
z<RPMtgQJLw%KPDaqifc@_vX$1wbwr9tn;0-&j-K=43<bUQ8j=JsX`tR;Dg7+#^K~H
zK!FM*Z~zbpvt%K2{UZSY_<lS*D<Z%Lz5oGu(+dayz)hRLFdT>f59&ghTmgWD0l;*T
zI7<kC6aYYajzXpYKt=(8otP$50H6c_V9R4-;{Z@C0AMG7=F<Rxo%or10RUT+Ar%3j
zkpLhQWr#!oXgdI`&sK^>09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p
z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-<?i
z0%4j!F2Z@488U%158(66005wo6%pWr^Zj_v4zAA5HjcIqUoGmt2LB>rV&neh&#Q1i
z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_<lS*MWK+n+1cgf
z<k(8YLR(?VSAG6x!e78w{cQPuJpA|d;J)G{fihizM+Erb!p!tcr5w+a34~(Y=8s4G
zw+sLL9n&JjNn*KJDiq^U5^;`1nvC-@r6P$!k}1U{(*I=Q-z@tBKHoI}uxdU5dyy@u
zU1J0GOD7Ombim^G008p4Z^6_k2m^p<gW=D2|L;HjN1!DDfM!XOaR2~bL?kX$%CkSm
z2mk;?pn)o|K^yeJ7%adB9Ki+L!3+FgHiSYX#KJ-lLJDMn9CBbOtb#%)hRv`YDqt_v
zKpix|QD}yfa1JiQRk#j4a1Z)n2%f<xynzV>LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW
zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifq<Ex{*7`05XF7hP+2Hl!3BQJ=6@fL%FCo
z8iYoo3(#bAF`ADSpqtQgv>H8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X
zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ<AYmRsNLWl*PS{AOARHt#5!wki2?K;t
z!Y3k=s7tgax)J%r7-BLphge7~Bi0g+6E6^Zh(p9TBoc{3GAFr^0!gu?RMHaCM$&Fl
zBk3%un>0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4
z<uv66WtcKSRim0x-Ke2d5jBrmLam{;Qm;{ms1r1GnmNsb7D-E`t)i9F8fX`2_i3-_
zbh;7Ul^#x)&{xvS=|||7=mYe33=M`AgU5(xC>fg=2N-7=cNnjjOr{yriy6mMFgG#l
znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U
zt5vF<Q0r40Q)j6=sE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*SAPZv|vv@2aYYnT0
zb%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5cP6_8Ir<e17iry6O
zDdH&`rZh~sF=bq9s+O0QSgS~@QL9Jmy*94xr=6y~MY~!1fet~(N+(<=M`w@D1)b+p
z*;C!83a1uLJv#NSE~;y#8=<>IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?
z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y
zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB
zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt
z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a<fJbF^|4I#xQ~n$Dc=
zKYhjYmgz5NSkDm8*fZm{6U!;YX`NG>(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C
z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB
zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe
zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0
z?2xS?_ve_-k<Mujg;0Lz*3buG=3$G&ehepthlN*$KaOySSQ^nWmo<0M+(UEUMEXRQ
zMBbZcF;6+KElM>iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$
z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4
z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu
zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu
z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E
ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw
zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX
z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i&
z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01
z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R
z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw
zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD
zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3|
zawq-H%e&ckC+@AhPrP6BK<z=<L*0kfKU@CX*zeqbYQT4(^U>T#_XdT7&;F71j}Joy
zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z
zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot<a{81DF0~rvGr5Xr~8u`lav1h
z1DNytV>2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F}
z0002RNkl<Zc-nN3%Z<b^3`6P9(J3RHq?h!Vj(iFR2?AJ_=s7IxO=fop_(DI5g50{U
z4NtuyNi55PloGD%!nSSj&N+k-kaI=|0RWsQ2~|a{6=nvK@FZbosI@{>f6Q)($e_KM
zK}1kWd77mZlu{rfFf&9m!@lpxIU~jhlF_RwT5IEt_+6v@PLhOIRrC)4zwu5y$h#gz
ze`faRW2O7NaixFv?8JzFlC8Bb?frBlAtF%K=H_{BDJ4wPgyT4Hp6Ba503O8=YRqdP
QO#lD@07*qoM6N<$f>f7;M*si-

diff --git a/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-hover.png b/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-hover.png
deleted file mode 100644
index 741f0575dd7467301e491839628317a648a8b64a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3384
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
O0000<MNUMnLSTa6<WM63

diff --git a/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-selected-end.png b/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-selected-end.png
deleted file mode 100644
index 6ef4e05b45f29c3db82c14b01a8fcb82612b0f93..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2944
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

diff --git a/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-selected.png b/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-selected.png
deleted file mode 100644
index c674099b5a18ef978baf32c7e6b9614affb433f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3356
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

diff --git a/share/qtcreator/qml/qmlobserver/images/crumblepath-segment.png b/share/qtcreator/qml/qmlobserver/images/crumblepath-segment.png
deleted file mode 100644
index ad6e7165f6c1025fbbfe918fd104821b430c7634..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3379
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
JPDHLkV1ie=QE~tP

diff --git a/share/qtcreator/qml/qmlobserver/qml.pri b/share/qtcreator/qml/qmlobserver/qml.pri
index 08da6e4cfe9..7e485d3984c 100644
--- a/share/qtcreator/qml/qmlobserver/qml.pri
+++ b/share/qtcreator/qml/qmlobserver/qml.pri
@@ -15,18 +15,15 @@ HEADERS += $$PWD/qmlruntime.h \
            $$PWD/proxysettings.h \
            $$PWD/qdeclarativetester.h \
            $$PWD/deviceorientation.h \
-           $$PWD/loggerwidget.h \
-           $$PWD/crumblepath.h
+           $$PWD/loggerwidget.h
 
 
 SOURCES += $$PWD/qmlruntime.cpp \
            $$PWD/proxysettings.cpp \
            $$PWD/qdeclarativetester.cpp \
-           $$PWD/loggerwidget.cpp \
-           $$PWD/crumblepath.cpp
+           $$PWD/loggerwidget.cpp
 
-RESOURCES += $$PWD/qmlruntime.qrc \
-    crumblepath.qrc
+RESOURCES += $$PWD/qmlruntime.qrc
 
 OTHER_FILES += toolbarstyle.css
 
diff --git a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp
index 36d83d9a009..d35c18d4a96 100644
--- a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp
+++ b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp
@@ -57,7 +57,6 @@
 #include <qdeclarativeviewobserver.h>
 #include <qdeclarativeobserverservice.h>
 
-#include "crumblepath.h"
 #include "qmlruntime.h"
 #include <qdeclarativecontext.h>
 #include <qdeclarativeengine.h>
@@ -534,32 +533,6 @@ QNetworkAccessManager *NetworkAccessManagerFactory::create(QObject *parent)
     return manager;
 }
 
-//
-// Event filter that ensures the crumble path width is always the canvas width
-//
-class CrumblePathResizer : public QObject
-{
-    Q_OBJECT
-public:
-    CrumblePathResizer(CrumblePath *crumblePathWidget, QObject *parent = 0) :
-        QObject(parent),
-        m_crumblePathWidget(crumblePathWidget)
-    {
-    }
-
-    bool eventFilter(QObject *obj, QEvent *event)
-    {
-        if (event->type() == QEvent::Resize) {
-            QResizeEvent *resizeEvent = static_cast<QResizeEvent *>(event);
-            m_crumblePathWidget->resize(resizeEvent->size().width(), m_crumblePathWidget->height());
-        }
-        return QObject::eventFilter(obj, event);
-    }
-
-private:
-    QWidget *m_crumblePathWidget;
-};
-
 QString QDeclarativeViewer::getVideoFileName()
 {
     QString title = convertAvailable || ffmpegAvailable ? tr("Save Video File") : tr("Save PNG Frames");
@@ -582,7 +555,6 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
       , tester(0)
       , useQmlFileBrowser(true)
       , m_centralWidget(0)
-      , m_crumblePathWidget(0)
       , translator(0)
 {
     QDeclarativeViewer::registerTypes();
@@ -620,18 +592,6 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
     canvas = new QDeclarativeView(this);
     observer = new QmlJSDebugger::QDeclarativeViewObserver(canvas, this);
     new QmlJSDebugger::JSDebuggerAgent(canvas->engine());
-    if (!(flags & Qt::FramelessWindowHint)) {
-        m_crumblePathWidget = new CrumblePath(canvas);
-#ifndef Q_WS_MAC
-        m_crumblePathWidget->setStyleSheet("QWidget { border-bottom: 1px solid black; }");
-#endif
-        m_crumblePathWidget->setVisible(observer->designModeBehavior());
-
-        // CrumblePath is not in a layout, so that it overlays the central widget
-        // The event filter ensures that its width stays in sync nevertheless
-        CrumblePathResizer *resizer = new CrumblePathResizer(m_crumblePathWidget, m_crumblePathWidget);
-        canvas->installEventFilter(resizer);
-    }
 
     m_centralWidget = new QWidget(this);
     QVBoxLayout *layout = new QVBoxLayout(m_centralWidget);
@@ -650,13 +610,6 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
     QObject::connect(observer, SIGNAL(reloadRequested()), this, SLOT(reload()));
     QObject::connect(canvas, SIGNAL(sceneResized(QSize)), this, SLOT(sceneResized(QSize)));
     QObject::connect(canvas, SIGNAL(statusChanged(QDeclarativeView::Status)), this, SLOT(statusChanged()));
-    if (m_crumblePathWidget) {
-        QObject::connect(observer, SIGNAL(inspectorContextCleared()), m_crumblePathWidget, SLOT(clear()));
-        QObject::connect(observer, SIGNAL(inspectorContextPushed(QString)), m_crumblePathWidget, SLOT(pushElement(QString)));
-        QObject::connect(observer, SIGNAL(inspectorContextPopped()), m_crumblePathWidget, SLOT(popElement()));
-        QObject::connect(m_crumblePathWidget, SIGNAL(elementClicked(int)), observer, SLOT(setObserverContext(int)));
-        QObject::connect(observer, SIGNAL(designModeBehaviorChanged(bool)), m_crumblePathWidget, SLOT(setVisible(bool)));
-    }
     QObject::connect(canvas->engine(), SIGNAL(quit()), QCoreApplication::instance (), SLOT(quit()));
 
     QObject::connect(warningsWidget(), SIGNAL(opened()), this, SLOT(warningsWidgetOpened()));
diff --git a/share/qtcreator/qml/qmlobserver/qmlruntime.h b/share/qtcreator/qml/qmlobserver/qmlruntime.h
index 630c30c324b..7c30998dfc1 100644
--- a/share/qtcreator/qml/qmlobserver/qmlruntime.h
+++ b/share/qtcreator/qml/qmlobserver/qmlruntime.h
@@ -53,8 +53,6 @@ namespace QmlJSDebugger {
     class QDeclarativeViewObserver;
 }
 
-class CrumblePath;
-
 QT_BEGIN_NAMESPACE
 
 class QDeclarativeView;
@@ -215,7 +213,6 @@ private:
     bool useQmlFileBrowser;
 
     QWidget *m_centralWidget;
-    CrumblePath *m_crumblePathWidget;
 
     QTranslator *translator;
     void loadTranslationFile(const QString& directory);
diff --git a/src/plugins/qt4projectmanager/qmlobservertool.cpp b/src/plugins/qt4projectmanager/qmlobservertool.cpp
index 623e527d190..5d5bbdf8fb7 100644
--- a/src/plugins/qt4projectmanager/qmlobservertool.cpp
+++ b/src/plugins/qt4projectmanager/qmlobservertool.cpp
@@ -125,7 +125,6 @@ QString QmlObserverTool::copy(const QString &qtInstallData, QString *errorMessag
 
     QStringList files;
     files << QLatin1String("main.cpp") << QLatin1String("qmlobserver.pro")
-          << QLatin1String("crumblepath.cpp") << QLatin1String("crumblepath.h")
           << QLatin1String("deviceorientation.cpp") << QLatin1String("deviceorientation.h")
           << QLatin1String("deviceorientation_maemo5.cpp") << QLatin1String("Info_mac.plist")
           << QLatin1String("loggerwidget.cpp") << QLatin1String("loggerwidget.h")
@@ -140,11 +139,7 @@ QString QmlObserverTool::copy(const QString &qtInstallData, QString *errorMessag
           << QLatin1String("content/Browser.qml") << QLatin1String("content/images/folder.png")
           << QLatin1String("content/images/titlebar.png") << QLatin1String("content/images/titlebar.sci")
           << QLatin1String("content/images/up.png")
-          << QLatin1String("LICENSE.LGPL") << QLatin1String("LGPL_EXCEPTION.TXT")
-          << QLatin1String("crumblepath.qrc") << QLatin1String("images/crumblepath-segment-end.png")
-          << QLatin1String("images/crumblepath-segment-hover-end.png") << QLatin1String("images/crumblepath-segment-hover.png")
-          << QLatin1String("images/crumblepath-segment-selected-end.png") << QLatin1String("images/crumblepath-segment-selected.png")
-          << QLatin1String("images/crumblepath-segment.png");
+          << QLatin1String("LICENSE.LGPL") << QLatin1String("LGPL_EXCEPTION.TXT");
 
     QStringList debuggerLibFiles;
     debuggerLibFiles << QLatin1String("jsdebuggeragent.cpp")
-- 
GitLab