From 28d72550d3550df1484b580c27f6ac3e776d1062 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Wed, 10 Feb 2010 10:47:34 +0100
Subject: [PATCH] Removed static QIcon instances.

thus fixing the exit warning:
"~QX11PixmapData(): QPixmap objects must be destroyed..."

Acked-by: con
---
 src/libs/extensionsystem/pluginview.cpp       |  8 ++--
 .../coreplugin/editormanager/editorview.cpp   |  7 +--
 .../editormanager/openeditorsmodel.cpp        | 20 ++++++++-
 .../editormanager/openeditorsmodel.h          | 11 ++++-
 .../editormanager/openeditorswindow.cpp       | 12 +++---
 .../editormanager/openeditorswindow.h         | 15 ++++---
 src/plugins/coreplugin/manhattanstyle.cpp     | 40 ++++++++---------
 src/plugins/debugger/breakhandler.cpp         | 43 +++++++++----------
 src/plugins/debugger/breakhandler.h           |  9 ++++
 src/plugins/debugger/debuggeragents.cpp       |  8 +---
 src/plugins/debugger/debuggermanager.cpp      | 32 +++++++++-----
 src/plugins/debugger/debuggermanager.h        |  5 +++
 src/plugins/debugger/debuggerplugin.cpp       |  8 +---
 src/plugins/debugger/debuggerrunner.cpp       |  2 +-
 src/plugins/debugger/moduleshandler.cpp       |  3 --
 src/plugins/debugger/sourcefileswindow.cpp    |  3 --
 .../projectexplorer/doubletabwidget.cpp       | 16 +++----
 src/plugins/projectexplorer/doubletabwidget.h |  6 +++
 .../projectexplorer/targetselector.cpp        | 16 +++----
 src/plugins/projectexplorer/targetselector.h  |  8 +++-
 src/plugins/qmldesigner/designmodewidget.cpp  |  7 +--
 src/plugins/qt4projectmanager/qt4target.cpp   | 12 +++---
 src/plugins/qt4projectmanager/qt4target.h     |  7 ++-
 23 files changed, 169 insertions(+), 129 deletions(-)

diff --git a/src/libs/extensionsystem/pluginview.cpp b/src/libs/extensionsystem/pluginview.cpp
index 2ac3dec9feb..381188c1855 100644
--- a/src/libs/extensionsystem/pluginview.cpp
+++ b/src/libs/extensionsystem/pluginview.cpp
@@ -114,16 +114,16 @@ PluginSpec *PluginView::currentPlugin() const
 
 void PluginView::updateList()
 {
-    static QIcon okIcon(":/extensionsystem/images/ok.png");
-    static QIcon errorIcon(":/extensionsystem/images/error.png");
+    const QIcon okIcon(QLatin1String(":/extensionsystem/images/ok.png"));
+    const QIcon errorIcon(QLatin1String(":/extensionsystem/images/error.png"));
     QList<QTreeWidgetItem *> items;
     QTreeWidgetItem *currentItem = 0;
     PluginSpec *currPlugin = currentPlugin();
     foreach (PluginSpec *spec, p->manager->plugins()) {
         QTreeWidgetItem *item = new QTreeWidgetItem(QStringList()
-            << ""
+            << QString()
             << spec->name()
-            << QString("%1 (%2)").arg(spec->version()).arg(spec->compatVersion())
+            << QString::fromLatin1("%1 (%2)").arg(spec->version(), spec->compatVersion())
             << spec->vendor()
             << QDir::toNativeSeparators(spec->filePath()));
         item->setToolTip(4, QDir::toNativeSeparators(spec->filePath()));
diff --git a/src/plugins/coreplugin/editormanager/editorview.cpp b/src/plugins/coreplugin/editormanager/editorview.cpp
index 9d9e6114521..a6c7fcd11a5 100644
--- a/src/plugins/coreplugin/editormanager/editorview.cpp
+++ b/src/plugins/coreplugin/editormanager/editorview.cpp
@@ -375,9 +375,6 @@ void EditorView::checkEditorStatus()
 
 void EditorView::updateEditorStatus(IEditor *editor)
 {
-    static const QIcon lockedIcon(QLatin1String(":/core/images/locked.png"));
-    static const QIcon unlockedIcon(QLatin1String(":/core/images/unlocked.png"));
-
     m_lockButton->setVisible(editor != 0);
 
     if (!editor) {
@@ -386,11 +383,11 @@ void EditorView::updateEditorStatus(IEditor *editor)
     }
 
     if (editor->file()->isReadOnly()) {
-        m_lockButton->setIcon(lockedIcon);
+        m_lockButton->setIcon(m_model->lockedIcon());
         m_lockButton->setEnabled(!editor->file()->fileName().isEmpty());
         m_lockButton->setToolTip(tr("Make writable"));
     } else {
-        m_lockButton->setIcon(unlockedIcon);
+        m_lockButton->setIcon(m_model->unlockedIcon());
         m_lockButton->setEnabled(false);
         m_lockButton->setToolTip(tr("File is writable"));
     }
diff --git a/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp b/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp
index 28e0afe1bb6..909a3d8da1c 100644
--- a/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp
+++ b/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp
@@ -38,6 +38,23 @@ Q_DECLARE_METATYPE(Core::IEditor*)
 
 namespace Core {
 
+OpenEditorsModel::OpenEditorsModel(QObject *parent) :
+    QAbstractItemModel(parent),
+    m_lockedIcon(QLatin1String(":/core/images/locked.png")),
+    m_unlockedIcon(QLatin1String(":/core/images/unlocked.png"))
+{
+}
+
+QIcon OpenEditorsModel::lockedIcon() const
+{
+    return m_lockedIcon;
+}
+
+QIcon OpenEditorsModel::unlockedIcon() const
+{
+    return m_unlockedIcon;
+}
+
 QString OpenEditorsModel::Entry::fileName() const {
     return editor ? editor->file()->fileName() : m_fileName;
 }
@@ -265,8 +282,7 @@ QVariant OpenEditorsModel::data(const QModelIndex &index, int role) const
                 : e.displayName();
     case Qt::DecorationRole:
         return (e.editor && e.editor->file()->isReadOnly())
-                ? QIcon(QLatin1String(":/core/images/locked.png"))
-                : QIcon();
+                ? m_lockedIcon : QIcon();
     case Qt::ToolTipRole:
         return e.fileName().isEmpty()
                 ? e.displayName()
diff --git a/src/plugins/coreplugin/editormanager/openeditorsmodel.h b/src/plugins/coreplugin/editormanager/openeditorsmodel.h
index 843b108f547..48384d51705 100644
--- a/src/plugins/coreplugin/editormanager/openeditorsmodel.h
+++ b/src/plugins/coreplugin/editormanager/openeditorsmodel.h
@@ -33,6 +33,7 @@
 #include "../core_global.h"
 
 #include <QtCore/QAbstractItemModel>
+#include <QtGui/QIcon>
 
 namespace Core {
 
@@ -43,7 +44,11 @@ class CORE_EXPORT OpenEditorsModel : public QAbstractItemModel
 {
     Q_OBJECT
 public:
-    OpenEditorsModel(QObject *parent) : QAbstractItemModel(parent) {}
+    explicit OpenEditorsModel(QObject *parent);
+
+    QIcon lockedIcon() const;
+    QIcon unlockedIcon() const;
+
     int columnCount(const QModelIndex &parent = QModelIndex()) const;
     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
     QModelIndex parent(const QModelIndex &/*index*/) const { return QModelIndex(); }
@@ -91,6 +96,10 @@ private:
     void addEntry(const Entry &entry);
     int findEditor(IEditor *editor) const;
     int findFileName(const QString &filename) const;
+
+    const QIcon m_lockedIcon;
+    const QIcon m_unlockedIcon;
+
     QList<Entry> m_editors;
     QList<IEditor *>m_duplicateEditors;
 };
diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp
index 74cf587787d..bf3766656e3 100644
--- a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp
+++ b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp
@@ -35,6 +35,8 @@
 #include <utils/qtcassert.h>
 
 #include <QtGui/QHeaderView>
+#include <QtGui/QTreeWidget>
+#include <QtGui/QFocusEvent>
 
 Q_DECLARE_METATYPE(Core::Internal::EditorView*)
 Q_DECLARE_METATYPE(Core::IFile *)
@@ -48,6 +50,7 @@ const int OpenEditorsWindow::MARGIN = 4;
 
 OpenEditorsWindow::OpenEditorsWindow(QWidget *parent) :
     QWidget(parent, Qt::Popup),
+    m_emptyIcon(QLatin1String(":/core/images/empty14.png")),
     m_editorList(new QTreeWidget(this))
 {
     resize(QSize(WIDTH, HEIGHT));
@@ -184,9 +187,6 @@ void OpenEditorsWindow::centerOnItem(int selectedIndex)
 
 void OpenEditorsWindow::setEditors(EditorView *mainView, EditorView *view, OpenEditorsModel *model)
 {
-    static const QIcon lockedIcon(QLatin1String(":/core/images/locked.png"));
-    static const QIcon emptyIcon(QLatin1String(":/core/images/empty14.png"));
-
     m_editorList->clear();
     bool first = true;
 
@@ -200,7 +200,7 @@ void OpenEditorsWindow::setEditors(EditorView *mainView, EditorView *view, OpenE
         QTreeWidgetItem *item = new QTreeWidgetItem();
         if (hi.file->isModified())
             title += tr("*");
-        item->setIcon(0, hi.file->isReadOnly() ? lockedIcon : emptyIcon);
+        item->setIcon(0, hi.file->isReadOnly() ? model->lockedIcon() : m_emptyIcon);
         item->setText(0, title);
         item->setToolTip(0, hi.file->fileName());
         item->setData(0, Qt::UserRole, QVariant::fromValue(hi.file.data()));
@@ -227,7 +227,7 @@ void OpenEditorsWindow::setEditors(EditorView *mainView, EditorView *view, OpenE
             QString title = model->displayNameForFile(hi.file);
             if (hi.file->isModified())
                 title += tr("*");
-            item->setIcon(0, hi.file->isReadOnly() ? lockedIcon : emptyIcon);
+            item->setIcon(0, hi.file->isReadOnly() ? model->lockedIcon() : m_emptyIcon);
             item->setText(0, title);
             item->setToolTip(0, hi.file->fileName());
             item->setData(0, Qt::UserRole, QVariant::fromValue(hi.file.data()));
@@ -250,7 +250,7 @@ void OpenEditorsWindow::setEditors(EditorView *mainView, EditorView *view, OpenE
             continue;
         QTreeWidgetItem *item = new QTreeWidgetItem();
         QString title = entry.displayName();
-        item->setIcon(0, emptyIcon);
+        item->setIcon(0, m_emptyIcon);
         item->setText(0, title);
         item->setToolTip(0, entry.fileName());
         item->setData(0, Qt::UserRole+2, QVariant::fromValue(entry.id()));
diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.h b/src/plugins/coreplugin/editormanager/openeditorswindow.h
index b883170f06d..56d83d616ab 100644
--- a/src/plugins/coreplugin/editormanager/openeditorswindow.h
+++ b/src/plugins/coreplugin/editormanager/openeditorswindow.h
@@ -30,12 +30,13 @@
 #ifndef OPENEDITORSWINDOW_H
 #define OPENEDITORSWINDOW_H
 
-#include <QtCore/QTimer>
 #include <QtGui/QWidget>
-#include <QtGui/QKeyEvent>
-#include <QtGui/QFocusEvent>
-#include <QtGui/QTreeWidget>
-#include <QtDebug>
+#include <QtGui/QIcon>
+
+QT_BEGIN_NAMESPACE
+class QTreeWidgetItem;
+class QTreeWidget;
+QT_END_NAMESPACE
 
 namespace Core {
 
@@ -54,8 +55,7 @@ class OpenEditorsWindow : public QWidget
 public:
     enum Mode {ListMode, HistoryMode };
 
-    OpenEditorsWindow(QWidget *parent = 0);
-    ~OpenEditorsWindow() {}
+    explicit OpenEditorsWindow(QWidget *parent = 0);
 
     void setEditors(EditorView *mainView, EditorView *view, OpenEditorsModel *model);
 
@@ -85,6 +85,7 @@ private:
 
     bool isSameFile(IEditor *editorA, IEditor *editorB) const;
 
+    const QIcon m_emptyIcon;
     QTreeWidget *m_editorList;
 };
 
diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp
index 18c00e879b6..d79c7b3e1b0 100644
--- a/src/plugins/coreplugin/manhattanstyle.cpp
+++ b/src/plugins/coreplugin/manhattanstyle.cpp
@@ -99,14 +99,7 @@ bool panelWidget(const QWidget *widget)
 class ManhattanStylePrivate
 {
 public:
-    ManhattanStylePrivate(const QString &baseStyleName)
-    {
-        style = QStyleFactory::create(baseStyleName);
-        QTC_ASSERT(style, /**/);
-
-        lineeditImage = QImage(":/core/images/inputfield.png");
-        lineeditImage_disabled = QImage(":/core/images/inputfield_disabled.png");
-    }
+    explicit ManhattanStylePrivate(const QString &baseStyleName);
 
     ~ManhattanStylePrivate()
     {
@@ -118,12 +111,23 @@ public:
 
 public:
     QStyle *style;
-    QImage lineeditImage;
-    QImage lineeditImage_disabled;
-
+    const QImage lineeditImage;
+    const QImage lineeditImage_disabled;
+    const QPixmap extButtonPixmap;
+    const QPixmap closeButtonPixmap;
     StyleAnimator animator;
 };
 
+ManhattanStylePrivate::ManhattanStylePrivate(const QString &baseStyleName) :
+    style(QStyleFactory::create(baseStyleName)),
+    lineeditImage(QLatin1String(":/core/images/inputfield.png")),
+    lineeditImage_disabled(QLatin1String(":/core/images/inputfield_disabled.png")),
+    extButtonPixmap(QLatin1String(":/core/images/extension.png")),
+    closeButtonPixmap(QLatin1String(":/core/images/closebutton.png"))
+{
+    QTC_ASSERT(style, /**/);
+}
+
 ManhattanStyle::ManhattanStyle(const QString &baseStyleName)
     : QWindowsStyle(), d(new ManhattanStylePrivate(baseStyleName))
 {
@@ -376,23 +380,19 @@ QPixmap ManhattanStyle::standardPixmap(StandardPixmap standardPixmap, const QSty
 
     QPixmap pixmap;
     switch (standardPixmap) {
-    case QStyle::SP_ToolBarHorizontalExtensionButton: {
-            static const QPixmap extButton(":/core/images/extension.png");
-            pixmap = extButton;
-        }
+    case QStyle::SP_ToolBarHorizontalExtensionButton:
+        pixmap = d->extButtonPixmap;
         break;
-    case QStyle::SP_TitleBarCloseButton: {
-            static const QPixmap closeButton(":/core/images/closebutton.png");
-            pixmap = closeButton;
-        }
+    case QStyle::SP_TitleBarCloseButton:
+        pixmap = d->closeButtonPixmap;
         break;
     default:
         pixmap = d->style->standardPixmap(standardPixmap, opt, widget);
+        break;
     }
     return pixmap;
 }
 
-
 int ManhattanStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget,
                               QStyleHintReturn *returnData) const
 {
diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index decc1c0dfaf..fab4f0aaac3 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -86,15 +86,10 @@ public:
 
     QIcon icon() const
     {
-        return icon(m_pending, m_enabled);
-    }
-
-    static const QIcon &icon(bool pending, bool enabled)
-    {
-        static const QIcon icon(":/debugger/images/breakpoint.svg");
-        static const QIcon icon1(":/debugger/images/breakpoint_disabled.svg");
-        static const QIcon icon2(":/debugger/images/breakpoint_pending.svg");
-        return enabled ? (pending ? icon2 : icon) : icon1;
+        const BreakHandler *handler = DebuggerManager::instance()->breakHandler();
+        if (!m_enabled)
+            return handler->disabledBreakpointIcon();
+        return m_pending ? handler->pendingBreakPointIcon() : handler->breakpointIcon();
     }
 
     void setPending(bool pending, bool enabled)
@@ -289,9 +284,14 @@ bool BreakpointData::conditionsMatch() const
 //
 //////////////////////////////////////////////////////////////////
 
-BreakHandler::BreakHandler(DebuggerManager *manager, QObject *parent)
-    : QAbstractTableModel(parent), m_manager(manager)
-{}
+BreakHandler::BreakHandler(DebuggerManager *manager, QObject *parent) :
+    QAbstractTableModel(parent),
+    m_breakpointIcon(QLatin1String(":/debugger/images/breakpoint.svg")),
+    m_disabledBreakpointIcon(QLatin1String(":/debugger/images/breakpoint_disabled.svg")),
+    m_pendingBreakPointIcon(QLatin1String(":/debugger/images/breakpoint_pending.svg")),
+    m_manager(manager)
+{
+}
 
 BreakHandler::~BreakHandler()
 {
@@ -488,19 +488,20 @@ QVariant BreakHandler::data(const QModelIndex &mi, int role) const
     switch (mi.column()) {
         case 0:
             if (role == Qt::DisplayRole) {
-                QString str = data->bpNumber;
+                const QString str = data->bpNumber;
                 return str.isEmpty() ? empty : str;
             }
-            //if (role == Qt::CheckStateRole)
-            //    return data->enabled ? Qt::Checked : Qt::Unchecked;
             if (role == Qt::UserRole)
                 return data->enabled;
-            if (role == Qt::DecorationRole)
-                return BreakpointMarker::icon(data->pending, data->enabled);
+            if (role == Qt::DecorationRole) {
+                if (!data->enabled)
+                    return m_disabledBreakpointIcon;
+                return data->pending ? m_pendingBreakPointIcon : m_breakpointIcon;
+            }
             break;
         case 1:
             if (role == Qt::DisplayRole) {
-                QString str = data->pending ? data->funcName : data->bpFuncName;
+                const QString str = data->pending ? data->funcName : data->bpFuncName;
                 return str.isEmpty() ? empty : str;
             }
             break;
@@ -508,8 +509,6 @@ QVariant BreakHandler::data(const QModelIndex &mi, int role) const
             if (role == Qt::DisplayRole) {
                 QString str = data->pending ? data->fileName : data->bpFileName;
                 str = QFileInfo(str).fileName();
-                //if (data->bpMultiple && str.isEmpty() && !data->markerFileName.isEmpty())
-                //    str = data->markerFileName;
                 str = str.isEmpty() ? empty : str;
                 if (data->useFullPath)
                     str = "/.../" + str;
@@ -520,9 +519,7 @@ QVariant BreakHandler::data(const QModelIndex &mi, int role) const
             break;
         case 3:
             if (role == Qt::DisplayRole) {
-                QString str = data->pending ? data->lineNumber : data->bpLineNumber;
-                //if (data->bpMultiple && str.isEmpty() && !data->markerFileName.isEmpty())
-                //    str = data->markerLineNumber;
+                const QString str = data->pending ? data->lineNumber : data->bpLineNumber;
                 return str.isEmpty() ? empty : str;
             }
             break;
diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h
index f2119119f98..00bbc2628e5 100644
--- a/src/plugins/debugger/breakhandler.h
+++ b/src/plugins/debugger/breakhandler.h
@@ -34,6 +34,7 @@
 
 #include <QtCore/QObject>
 #include <QtCore/QAbstractTableModel>
+#include <QtGui/QIcon>
 
 namespace Debugger {
 class DebuggerManager;
@@ -143,6 +144,10 @@ public:
     QList<BreakpointData *> takeEnabledBreakpoints(); // not owned
     QList<BreakpointData *> takeDisabledBreakpoints(); // not owned
 
+    QIcon breakpointIcon() const         { return m_breakpointIcon; }
+    QIcon disabledBreakpointIcon() const { return m_disabledBreakpointIcon; }
+    QIcon pendingBreakPointIcon() const  { return m_pendingBreakPointIcon; }
+
 public slots:
     void setBreakpoint(const QString &fileName, int lineNumber);
     void toggleBreakpointEnabled(BreakpointData *data);
@@ -168,6 +173,10 @@ private:
     void resetBreakpoints();
     void removeBreakpointHelper(int index);
 
+    const QIcon m_breakpointIcon;
+    const QIcon m_disabledBreakpointIcon;
+    const QIcon m_pendingBreakPointIcon;
+
     DebuggerManager *m_manager; // not owned
     QList<BreakpointData *> m_bp;
     QList<BreakpointData *> m_inserted; // lately inserted breakpoints
diff --git a/src/plugins/debugger/debuggeragents.cpp b/src/plugins/debugger/debuggeragents.cpp
index d76b6f386bf..7874c204dd3 100644
--- a/src/plugins/debugger/debuggeragents.cpp
+++ b/src/plugins/debugger/debuggeragents.cpp
@@ -132,19 +132,13 @@ void MemoryViewAgent::addLazyData(quint64 addr, const QByteArray &ba)
 //
 ///////////////////////////////////////////////////////////////////////
 
-static QIcon locationMarkIcon()
-{
-    static const QIcon icon(":/debugger/images/location.svg");
-    return icon;
-}
-
 // Used for the disassembler view
 class LocationMark2 : public TextEditor::ITextMark
 {
 public:
     LocationMark2() {}
 
-    QIcon icon() const { return locationMarkIcon(); }
+    QIcon icon() const { return DebuggerManager::instance()->locationMarkIcon(); }
     void updateLineNumber(int /*lineNumber*/) {}
     void updateBlock(const QTextBlock & /*block*/) {}
     void removedFromEditor() {}
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index a89ce8820a8..06ad5e68cc0 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -247,10 +247,14 @@ static Debugger::Internal::IDebuggerEngine *winEngine = 0;
 
 struct DebuggerManagerPrivate
 {
-    DebuggerManagerPrivate(DebuggerManager *manager);
+    explicit DebuggerManagerPrivate(DebuggerManager *manager);
 
     static DebuggerManager *instance;
 
+    const QIcon m_stopSmallIcon;
+    const QIcon m_interruptSmallIcon;
+    const QIcon m_locationMarkIcon;
+
     // FIXME: Remove engine-specific state
     DebuggerStartParametersPtr m_startParameters;
     qint64 m_inferiorPid;
@@ -303,12 +307,15 @@ struct DebuggerManagerPrivate
 
 DebuggerManager *DebuggerManagerPrivate::instance = 0;
 
-DebuggerManagerPrivate::DebuggerManagerPrivate(DebuggerManager *manager)
-  : m_startParameters(new DebuggerStartParameters),
-    m_disassemblerViewAgent(manager),
-    m_engine(0)
+DebuggerManagerPrivate::DebuggerManagerPrivate(DebuggerManager *manager) :
+   m_stopSmallIcon(QLatin1String(":/debugger/images/debugger_stop_small.png")),
+   m_interruptSmallIcon(QLatin1String(":/debugger/images/debugger_interrupt_small.png")),
+   m_locationMarkIcon(QLatin1String(":/debugger/images/location.svg")),
+   m_startParameters(new DebuggerStartParameters),
+   m_inferiorPid(0),
+   m_disassemblerViewAgent(manager),
+   m_engine(0)
 {
-    m_inferiorPid = 0;
 }
 
 DebuggerManager::DebuggerManager()
@@ -460,7 +467,7 @@ void DebuggerManager::init()
     d->m_actions.continueAction->setIcon(QIcon(":/debugger/images/debugger_continue_small.png"));
 
     d->m_actions.stopAction = new QAction(tr("Interrupt"), this);
-    d->m_actions.stopAction->setIcon(QIcon(":/debugger/images/debugger_interrupt_small.png"));
+    d->m_actions.stopAction->setIcon(d->m_interruptSmallIcon);
 
     d->m_actions.resetAction = new QAction(tr("Reset Debugger"), this);
 
@@ -1736,12 +1743,10 @@ void DebuggerManager::setState(DebuggerState state, bool forced)
 
     const bool interruptIsExit = !running;
     if (interruptIsExit) {
-        static QIcon icon(":/debugger/images/debugger_stop_small.png");
-        d->m_actions.stopAction->setIcon(icon);
+        d->m_actions.stopAction->setIcon(d->m_stopSmallIcon);
         d->m_actions.stopAction->setText(tr("Stop Debugger"));
     } else {
-        static QIcon icon(":/debugger/images/debugger_interrupt_small.png");
-        d->m_actions.stopAction->setIcon(icon);
+        d->m_actions.stopAction->setIcon(d->m_interruptSmallIcon);
         d->m_actions.stopAction->setText(tr("Interrupt"));
     }
 
@@ -1860,6 +1865,11 @@ void DebuggerManager::ensureLogVisible()
         action->trigger();
 }
 
+QIcon DebuggerManager::locationMarkIcon() const
+{
+    return d->m_locationMarkIcon;
+}
+
 QDebug operator<<(QDebug d, DebuggerState state)
 {
     return d << DebuggerManager::stateName(state) << '(' << int(state) << ')';
diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h
index c8275db6f5a..7a884976a2e 100644
--- a/src/plugins/debugger/debuggermanager.h
+++ b/src/plugins/debugger/debuggermanager.h
@@ -47,6 +47,7 @@ class QLabel;
 class QMessageBox;
 class QPoint;
 class QVariant;
+class QIcon;
 QT_END_NAMESPACE
 
 namespace Core {
@@ -97,6 +98,7 @@ class GdbEngine;
 class CdbDebugEngine;
 class CdbDebugEnginePrivate;
 class TrkGdbAdapter;
+class BreakpointMarker;
 } // namespace Internal
 
 class DEBUGGER_EXPORT DebuggerStartParameters
@@ -173,6 +175,7 @@ public:
     friend class Internal::CdbDebugEngine;
     friend class Internal::CdbDebugEnginePrivate;
     friend class Internal::TrkGdbAdapter;
+    friend class Internal::BreakpointMarker;
 
     DebuggerState state() const;
     QList<Core::IOptionsPage*> initializeEngines(unsigned enabledTypeFlags);
@@ -197,6 +200,8 @@ public:
 
     const CPlusPlus::Snapshot &cppCodeModelSnapshot() const;
 
+    QIcon locationMarkIcon() const;
+
     static DebuggerManager *instance();
 
 public slots:
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 5b964996aed..8a71f6f2434 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -280,12 +280,6 @@ bool DebuggerListener::coreAboutToClose()
 namespace Debugger {
 namespace Internal {
 
-static QIcon locationMarkIcon()
-{
-    static const QIcon icon(":/debugger/images/location.svg");
-    return icon;
-}
-
 // Used in "real" editors
 class LocationMark : public TextEditor::BaseTextMark
 {
@@ -296,7 +290,7 @@ public:
         : BaseTextMark(fileName, linenumber)
     {}
 
-    QIcon icon() const { return locationMarkIcon(); }
+    QIcon icon() const { return DebuggerManager::instance()->locationMarkIcon(); }
     void updateLineNumber(int /*lineNumber*/) {}
     void updateBlock(const QTextBlock & /*block*/) {}
     void removedFromEditor() {}
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index bf578e1d2e6..f811438f2b0 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -131,7 +131,7 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager,
     default:
         break;
     }
-    if (const ProjectExplorer::Project *project = runConfiguration->target()->project()) {
+    if (runConfiguration->target()->project()) {
         m_startParameters->buildDir =
             runConfiguration->target()->activeBuildConfiguration()->buildDirectory();
     }
diff --git a/src/plugins/debugger/moduleshandler.cpp b/src/plugins/debugger/moduleshandler.cpp
index 0a754750327..1461031df27 100644
--- a/src/plugins/debugger/moduleshandler.cpp
+++ b/src/plugins/debugger/moduleshandler.cpp
@@ -96,9 +96,6 @@ QVariant ModulesModel::headerData(int section,
 
 QVariant ModulesModel::data(const QModelIndex &index, int role) const
 {
-    //static const QIcon icon(":/debugger/images/breakpoint.svg");
-    //static const QIcon icon2(":/debugger/images/breakpoint_pending.svg");
-
     int row = index.row();
     if (row < 0 || row >= m_modules.size())
         return QVariant();
diff --git a/src/plugins/debugger/sourcefileswindow.cpp b/src/plugins/debugger/sourcefileswindow.cpp
index f429320fe19..b2f8323350b 100644
--- a/src/plugins/debugger/sourcefileswindow.cpp
+++ b/src/plugins/debugger/sourcefileswindow.cpp
@@ -113,9 +113,6 @@ Qt::ItemFlags SourceFilesModel::flags(const QModelIndex &index) const
 
 QVariant SourceFilesModel::data(const QModelIndex &index, int role) const
 {
-    //static const QIcon icon(":/gdbdebugger/images/breakpoint.svg");
-    //static const QIcon icon2(":/gdbdebugger/images/breakpoint_pending.svg");
-
     int row = index.row();
     if (row < 0 || row >= m_shortNames.size())
         return QVariant();
diff --git a/src/plugins/projectexplorer/doubletabwidget.cpp b/src/plugins/projectexplorer/doubletabwidget.cpp
index c6db9901be9..af256a045f3 100644
--- a/src/plugins/projectexplorer/doubletabwidget.cpp
+++ b/src/plugins/projectexplorer/doubletabwidget.cpp
@@ -56,6 +56,9 @@ static void drawSecondLevelSeparator(QPainter *painter, QPoint top, QPoint botto
 
 DoubleTabWidget::DoubleTabWidget(QWidget *parent) :
     QWidget(parent),
+    m_left(QLatin1String(":/projectexplorer/images/leftselection.png")),
+    m_mid(QLatin1String(":/projectexplorer/images/midselection.png")),
+    m_right(QLatin1String(":/projectexplorer/images/rightselection.png")),
     ui(new Ui::DoubleTabWidget),
     m_currentIndex(-1),
     m_lastVisibleIndex(-1)
@@ -358,12 +361,9 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event)
     }
 
     // second level tabs
-    static QPixmap left(":/projectexplorer/images/leftselection.png");
-    static QPixmap mid(":/projectexplorer/images/midselection.png");
-    static QPixmap right(":/projectexplorer/images/rightselection.png");
     if (m_currentIndex != -1) {
-        int y = r.height() + (OTHER_HEIGHT - left.height()) / 2.;
-        int imageHeight = left.height();
+        int y = r.height() + (OTHER_HEIGHT - m_left.height()) / 2.;
+        int imageHeight = m_left.height();
         Tab currentTab = m_tabs.at(m_currentIndex);
         QStringList subTabs = currentTab.subTabs;
         x = 0;
@@ -372,11 +372,11 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event)
             int textWidth = fm.width(subTabs.at(i));
             if (currentTab.currentSubTab == i) {
                 painter.setPen(Qt::white);
-                painter.drawPixmap(x, y, left);
+                painter.drawPixmap(x, y, m_left);
                 painter.drawPixmap(QRect(x + SELECTION_IMAGE_WIDTH, y,
                                          textWidth, imageHeight),
-                                   mid, QRect(0, 0, mid.width(), mid.height()));
-                painter.drawPixmap(x + SELECTION_IMAGE_WIDTH + textWidth, y, right);
+                                   m_mid, QRect(0, 0, m_mid.width(), m_mid.height()));
+                painter.drawPixmap(x + SELECTION_IMAGE_WIDTH + textWidth, y, m_right);
             } else {
                 painter.setPen(Qt::black);
             }
diff --git a/src/plugins/projectexplorer/doubletabwidget.h b/src/plugins/projectexplorer/doubletabwidget.h
index 15d2f4bb6c2..03717a354e0 100644
--- a/src/plugins/projectexplorer/doubletabwidget.h
+++ b/src/plugins/projectexplorer/doubletabwidget.h
@@ -3,6 +3,7 @@
 
 #include <QtCore/QVector>
 #include <QtGui/QWidget>
+#include <QtGui/QPixmap>
 
 namespace ProjectExplorer {
 namespace Internal {
@@ -41,8 +42,13 @@ private:
         int currentSubTab;
     };
 
+    const QPixmap m_left;
+    const QPixmap m_mid;
+    const QPixmap m_right;
+
     Ui::DoubleTabWidget *ui;
 
+
     QString m_title;
     QList<Tab> m_tabs;
     int m_currentIndex;
diff --git a/src/plugins/projectexplorer/targetselector.cpp b/src/plugins/projectexplorer/targetselector.cpp
index 869c236c1f9..f58319929d0 100644
--- a/src/plugins/projectexplorer/targetselector.cpp
+++ b/src/plugins/projectexplorer/targetselector.cpp
@@ -12,6 +12,10 @@ using namespace ProjectExplorer::Internal;
 
 TargetSelector::TargetSelector(QWidget *parent) :
     QWidget(parent),
+    m_unselected(QLatin1String(":/projectexplorer/images/targetunselected.png")),
+    m_runselected(QLatin1String(":/projectexplorer/images/targetrunselected.png")),
+    m_buildselected(QLatin1String(":/projectexplorer/images/targetbuildselected.png")),
+    m_targetaddbutton(QLatin1String(":/projectexplorer/images/targetaddbutton.png")),
     m_currentTargetIndex(-1)
 {
     QFont f = font();
@@ -125,10 +129,6 @@ void TargetSelector::mousePressEvent(QMouseEvent *event)
 
 void TargetSelector::paintEvent(QPaintEvent *event)
 {
-    static QPixmap unselected(":/projectexplorer/images/targetunselected.png");
-    static QPixmap runselected(":/projectexplorer/images/targetrunselected.png");
-    static QPixmap buildselected(":/projectexplorer/images/targetbuildselected.png");
-    static QPixmap targetaddbutton(":/projectexplorer/images/targetaddbutton.png");
     Q_UNUSED(event)
 
     QPainter p(this);
@@ -144,13 +144,13 @@ void TargetSelector::paintEvent(QPaintEvent *event)
     int index = 0;
     QFontMetrics fm(font());
     foreach (const Target &target, m_targets) {
-        QPixmap *pixmap = &unselected;
+        const QPixmap *pixmap = &m_unselected;
         if (index == m_currentTargetIndex) {
             p.setPen(QColor(255, 255, 255));
             if (target.currentSubIndex == 0) {
-                pixmap = &buildselected;
+                pixmap = &m_buildselected;
             } else {
-                pixmap = &runselected;
+                pixmap = &m_runselected;
             }
         } else {
             p.setPen(QColor(0, 0, 0));
@@ -169,5 +169,5 @@ void TargetSelector::paintEvent(QPaintEvent *event)
         ++index;
     }
     // draw add button
-    p.drawPixmap(x, 1, targetaddbutton);
+    p.drawPixmap(x, 1, m_targetaddbutton);
 }
diff --git a/src/plugins/projectexplorer/targetselector.h b/src/plugins/projectexplorer/targetselector.h
index 1459d3dc623..824e6c1f567 100644
--- a/src/plugins/projectexplorer/targetselector.h
+++ b/src/plugins/projectexplorer/targetselector.h
@@ -1,7 +1,8 @@
 #ifndef TARGETSELECTOR_H
 #define TARGETSELECTOR_H
 
-#include <QWidget>
+#include <QtGui/QWidget>
+#include <QtGui/QPixmap>
 
 namespace ProjectExplorer {
 namespace Internal {
@@ -41,6 +42,11 @@ protected:
     void mousePressEvent(QMouseEvent *event);
 
 private:
+    const QPixmap m_unselected;
+    const QPixmap m_runselected;
+    const QPixmap m_buildselected;
+    const QPixmap m_targetaddbutton;
+
     QList<Target> m_targets;
 
     int m_currentTargetIndex;
diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp
index d075d28ee52..827f51e427a 100644
--- a/src/plugins/qmldesigner/designmodewidget.cpp
+++ b/src/plugins/qmldesigner/designmodewidget.cpp
@@ -182,15 +182,12 @@ void DocumentToolBar::updateEditorStatus()
 {
     Core::IEditor *editor = m_documentWidget->textEditor();
 
-    static const QIcon lockedIcon(QLatin1String(":/core/images/locked.png"));
-    static const QIcon unlockedIcon(QLatin1String(":/core/images/unlocked.png"));
-
     if (editor->file()->isReadOnly()) {
-        m_lockButton->setIcon(lockedIcon);
+        m_lockButton->setIcon(Core::ICore::instance()->editorManager()->openedEditorsModel()->lockedIcon());
         m_lockButton->setEnabled(!editor->file()->fileName().isEmpty());
         m_lockButton->setToolTip(tr("Make writable"));
     } else {
-        m_lockButton->setIcon(unlockedIcon);
+        m_lockButton->setIcon(Core::ICore::instance()->editorManager()->openedEditorsModel()->unlockedIcon());
         m_lockButton->setEnabled(false);
         m_lockButton->setToolTip(tr("File is writable"));
     }
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index a83d01eadbf..03aac13528b 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -178,6 +178,8 @@ Qt4Target *Qt4TargetFactory::restore(ProjectExplorer::Project *parent, const QVa
 
 Qt4Target::Qt4Target(Qt4Project *parent, const QString &id) :
     ProjectExplorer::Target(parent, id),
+    m_connectedPixmap(QLatin1String(":/qt4projectmanager/images/connected.png")),
+    m_disconnectedPixmap(QLatin1String(":/qt4projectmanager/images/notconnected.png")),
     m_buildConfigurationFactory(new Qt4BuildConfigurationFactory(this))
 {
     connect(project(), SIGNAL(supportedTargetIdsChanged()),
@@ -413,8 +415,6 @@ void Qt4Target::slotUpdateDeviceInformation()
 
 void Qt4Target::updateToolTipAndIcon()
 {
-    static const QPixmap connected(":/qt4projectmanager/images/connected.png");
-    static const QPixmap notconnected(":/qt4projectmanager/images/notconnected.png");
     S60DeviceRunConfiguration *deviceRc(qobject_cast<S60DeviceRunConfiguration *>(activeRunConfiguration()));
     if (!deviceRc) {
         setToolTip(QString());
@@ -434,12 +434,12 @@ void Qt4Target::updateToolTipAndIcon()
         if (!friendlyPortName.isEmpty()) {
             // device connected
             setToolTip(tr("<b>Device:</b> %1").arg(friendlyPortName));
-            painter.drawPixmap(Core::Constants::TARGET_ICON_SIZE - connected.width(),
-                               connected.height(), connected);
+            painter.drawPixmap(Core::Constants::TARGET_ICON_SIZE - m_connectedPixmap.width(),
+                               m_connectedPixmap.height(), m_connectedPixmap);
         } else {
             setToolTip(tr("<b>Device:</b> Not connected"));
-            painter.drawPixmap(Core::Constants::TARGET_ICON_SIZE - notconnected.width(),
-                               notconnected.height(), notconnected);
+            painter.drawPixmap(Core::Constants::TARGET_ICON_SIZE - m_disconnectedPixmap.width(),
+                               m_disconnectedPixmap.height(), m_disconnectedPixmap);
         }
         setIcon(QIcon(pixmap));
     }
diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h
index aa91ae50deb..7bd3e0a4915 100644
--- a/src/plugins/qt4projectmanager/qt4target.h
+++ b/src/plugins/qt4projectmanager/qt4target.h
@@ -36,6 +36,8 @@
 
 #include <projectexplorer/target.h>
 
+#include <QtGui/QPixmap>
+
 namespace Qt4ProjectManager {
 
 class Qt4Project;
@@ -72,7 +74,7 @@ class Qt4Target : public ProjectExplorer::Target
     friend class Qt4TargetFactory;
 
 public:
-    Qt4Target(Qt4Project *parent, const QString &id);
+    explicit Qt4Target(Qt4Project *parent, const QString &id);
     virtual ~Qt4Target();
 
     Qt4BuildConfiguration *activeBuildConfiguration() const;
@@ -107,6 +109,9 @@ private slots:
     void updateToolTipAndIcon();
 
 private:
+    const QPixmap m_connectedPixmap;
+    const QPixmap m_disconnectedPixmap;
+
     Internal::Qt4BuildConfigurationFactory *m_buildConfigurationFactory;
 };
 
-- 
GitLab