diff --git a/src/plugins/glsleditor/GLSLEditor.mimetypes.xml b/src/plugins/glsleditor/GLSLEditor.mimetypes.xml index d9fa822b01e1f3ccb698f7ca7b2ce1ea82806a1e..5d63307c03d4a08579552b31d1fa7df6cea9973b 100644 --- a/src/plugins/glsleditor/GLSLEditor.mimetypes.xml +++ b/src/plugins/glsleditor/GLSLEditor.mimetypes.xml @@ -1,14 +1,26 @@ <?xml version="1.0"?> <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> + <mime-type type="application/x-glsl"> <alias type="text/x-glsl"/> <sub-class-of type="text/plain"/> - <comment>GLSL file</comment> + <comment>GLSL Shader file</comment> <glob pattern="*.glsl"/> <glob pattern="*.shader"/> + </mime-type> + + <mime-type type="text/x-glsl-frag"> + <sub-class-of type="text/x-glsl"/> + <comment>GLSL Fragment Shader file</comment> <glob pattern="*.frag"/> - <glob pattern="*.vert"/> <glob pattern="*.fsh"/> + </mime-type> + + <mime-type type="text/x-glsl-vert"> + <sub-class-of type="text/x-glsl"/> + <comment>GLSL Fragment Shader file</comment> + <glob pattern="*.vert"/> <glob pattern="*.vsh"/> </mime-type> + </mime-info> diff --git a/src/plugins/glsleditor/glsleditor.cpp b/src/plugins/glsleditor/glsleditor.cpp index 7d8fcc51ae3b4f5c6a3b498c4bac9123a82be0c8..bd782cca0be24408bee59173e71ffc4f7f3cbf5b 100644 --- a/src/plugins/glsleditor/glsleditor.cpp +++ b/src/plugins/glsleditor/glsleditor.cpp @@ -276,8 +276,10 @@ void GLSLTextEditor::updateDocumentNow() Semantic sem; Scope *globalScope = engine.newNamespace(); sem.translationUnit(plugin->shaderInit()->ast, globalScope, plugin->shaderInit()->engine); - sem.translationUnit(plugin->vertexShaderInit()->ast, globalScope, plugin->vertexShaderInit()->engine); - sem.translationUnit(plugin->fragmentShaderInit()->ast, globalScope, plugin->fragmentShaderInit()->engine); + if (isVertexShader()) + sem.translationUnit(plugin->vertexShaderInit()->ast, globalScope, plugin->vertexShaderInit()->engine); + if (isFragmentShader()) + sem.translationUnit(plugin->fragmentShaderInit()->ast, globalScope, plugin->fragmentShaderInit()->engine); sem.translationUnit(ast, globalScope, &engine); QTextCharFormat errorFormat; @@ -314,3 +316,13 @@ void GLSLTextEditor::updateDocumentNow() // refresh the identifiers. m_identifiers = engine.identifiers(); } + +bool GLSLTextEditor::isVertexShader() const +{ + return mimeType() == QLatin1String("text/x-glsl-vert"); +} + +bool GLSLTextEditor::isFragmentShader() const +{ + return mimeType() == QLatin1String("text/x-glsl-frag"); +} diff --git a/src/plugins/glsleditor/glsleditor.h b/src/plugins/glsleditor/glsleditor.h index f1847802eee26f164f7d1eb1ecfdec6cf11681d1..9f126199bb01bf16f3d570803fb080afa6c6be3d 100644 --- a/src/plugins/glsleditor/glsleditor.h +++ b/src/plugins/glsleditor/glsleditor.h @@ -65,6 +65,9 @@ public: QSet<QString> identifiers() const; + bool isVertexShader() const; + bool isFragmentShader() const; + public slots: virtual void setFontSettings(const TextEditor::FontSettings &);