diff --git a/src/libs/qmljs/qmljsicontextpane.h b/src/libs/qmljs/qmljsicontextpane.h
index ab66b4bf19817d18dd1c1f0863c81ea7d91f4016..3444fe3daaa2700d3c24f9749ff6e3e36f09ae49 100644
--- a/src/libs/qmljs/qmljsicontextpane.h
+++ b/src/libs/qmljs/qmljsicontextpane.h
@@ -54,6 +54,7 @@ public:
     virtual ~IContextPane() {}
     virtual void apply(TextEditor::BaseTextEditorEditable *editor, Document::Ptr doc, const QmlJS::Snapshot &snapshot, AST::Node *node, bool update, bool force = false) = 0;
     virtual void setEnabled(bool) = 0;
+    virtual bool isAvailable(TextEditor::BaseTextEditorEditable *editor, Document::Ptr doc, const QmlJS::Snapshot &snapshot, AST::Node *node) = 0;
     virtual QWidget* widget() = 0;
 };
 
diff --git a/src/plugins/qmldesigner/qmlcontextpane.cpp b/src/plugins/qmldesigner/qmlcontextpane.cpp
index 8b69e1eea0ed5ca35b5cb0ccc22d54d08e5a921d..0d3b5a7c38058affd794040f2dd88baefd2cab85 100644
--- a/src/plugins/qmldesigner/qmlcontextpane.cpp
+++ b/src/plugins/qmldesigner/qmlcontextpane.cpp
@@ -68,8 +68,10 @@ QmlContextPane::~QmlContextPane()
 
 void QmlContextPane::apply(TextEditor::BaseTextEditorEditable *editor, Document::Ptr doc, const QmlJS::Snapshot &snapshot, AST::Node *node, bool update, bool force)
 {
-    if (!Internal::BauhausPlugin::pluginInstance()->settings().enableContextPane && !force)
+    if (!Internal::BauhausPlugin::pluginInstance()->settings().enableContextPane && !force && !update) {
+        contextWidget()->hide();
         return;
+    }
 
     if (doc.isNull())
         return;
@@ -169,6 +171,36 @@ void QmlContextPane::apply(TextEditor::BaseTextEditorEditable *editor, Document:
 
 }
 
+bool QmlContextPane::isAvailable(TextEditor::BaseTextEditorEditable *, Document::Ptr doc, const QmlJS::Snapshot &snapshot, AST::Node *node)
+{
+    if (doc.isNull())
+        return false;
+
+    if (!node)
+        return false;
+
+        LookupContext::Ptr lookupContext = LookupContext::create(doc, snapshot, QList<Node*>());
+        const Interpreter::ObjectValue *scopeObject = doc->bind()->findQmlObject(node);
+
+        QStringList prototypes;
+
+        while (scopeObject) {
+            prototypes.append(scopeObject->className());
+            scopeObject =  scopeObject->prototype(lookupContext->context());
+        }
+
+        if (prototypes.contains("Rectangle") ||
+            prototypes.contains("Image") ||
+            prototypes.contains("BorderImage") ||
+            prototypes.contains("TextEdit") ||
+            prototypes.contains("TextInput") ||
+            prototypes.contains("PropertyAnimation") ||
+            prototypes.contains("Text"))
+            return true;
+
+        return false;
+}
+
 void QmlContextPane::setProperty(const QString &propertyName, const QVariant &value)
 {
 
diff --git a/src/plugins/qmldesigner/qmlcontextpane.h b/src/plugins/qmldesigner/qmlcontextpane.h
index 04006a38aa68d9a57f5a8303ee641fc2bae5b9b2..eac2aa85ec2a625d341f5a99cbe4bc6da9d81e95 100644
--- a/src/plugins/qmldesigner/qmlcontextpane.h
+++ b/src/plugins/qmldesigner/qmlcontextpane.h
@@ -29,6 +29,7 @@ public:
    QmlContextPane(QObject *parent = 0);
    ~QmlContextPane();
    void apply(TextEditor::BaseTextEditorEditable *editor, QmlJS::Document::Ptr doc, const QmlJS::Snapshot &snapshot, QmlJS::AST::Node *node, bool update, bool force = 0);
+   bool isAvailable(TextEditor::BaseTextEditorEditable *editor, QmlJS::Document::Ptr doc, const QmlJS::Snapshot &snapshot, QmlJS::AST::Node *node);
    void setProperty(const QString &propertyName, const QVariant &value);
    void removeProperty(const QString &propertyName);
    void setEnabled(bool);