diff options
Diffstat (limited to 'src')
26 files changed, 280 insertions, 286 deletions
diff --git a/src/controls/ComboBox.qml b/src/controls/ComboBox.qml index 5fcba71b..bd42f76b 100644 --- a/src/controls/ComboBox.qml +++ b/src/controls/ComboBox.qml @@ -615,6 +615,7 @@ Control { activated(index) comboBox.editText = text } + onTextChanged: if (index === currentIndex) popup.updateSelectedText(); checkable: true exclusiveGroup: eg } diff --git a/src/controls/Private/FastGlow.qml b/src/controls/Private/FastGlow.qml index a94a3de6..1a8b7a81 100644 --- a/src/controls/Private/FastGlow.qml +++ b/src/controls/Private/FastGlow.qml @@ -63,75 +63,9 @@ Item { hideSource: visible } - property string __internalBlurVertexShader: OpenGLInfo.profile === OpenGLInfo.CoreProfile ? "#version 150 - in vec4 qt_Vertex; - in vec2 qt_MultiTexCoord0; - uniform mat4 qt_Matrix; - uniform float yStep; - uniform float xStep; - out vec2 qt_TexCoord0; - out vec2 qt_TexCoord1; - out vec2 qt_TexCoord2; - out vec2 qt_TexCoord3; - - void main() { - qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); - qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); - qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); - qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); - gl_Position = qt_Matrix * qt_Vertex; - } - " : " - attribute highp vec4 qt_Vertex; - attribute highp vec2 qt_MultiTexCoord0; - uniform highp mat4 qt_Matrix; - uniform highp float yStep; - uniform highp float xStep; - varying highp vec2 qt_TexCoord0; - varying highp vec2 qt_TexCoord1; - varying highp vec2 qt_TexCoord2; - varying highp vec2 qt_TexCoord3; - - void main() { - qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); - qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); - qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); - qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); - gl_Position = qt_Matrix * qt_Vertex; - } - " - property string __internalBlurFragmentShader: OpenGLInfo.profile === OpenGLInfo.CoreProfile ? "#version 150 - uniform sampler2D source; - uniform float qt_Opacity; - in vec2 qt_TexCoord0; - in vec2 qt_TexCoord1; - in vec2 qt_TexCoord2; - in vec2 qt_TexCoord3; - out vec4 fragColor; - - void main() { - vec4 sourceColor = (texture(source, qt_TexCoord0) + - texture(source, qt_TexCoord1) + - texture(source, qt_TexCoord2) + - texture(source, qt_TexCoord3)) * 0.25; - fragColor = sourceColor * qt_Opacity; - } - " : " - uniform lowp sampler2D source; - uniform lowp float qt_Opacity; - varying highp vec2 qt_TexCoord0; - varying highp vec2 qt_TexCoord1; - varying highp vec2 qt_TexCoord2; - varying highp vec2 qt_TexCoord3; - - void main() { - highp vec4 sourceColor = (texture2D(source, qt_TexCoord0) + - texture2D(source, qt_TexCoord1) + - texture2D(source, qt_TexCoord2) + - texture2D(source, qt_TexCoord3)) * 0.25; - gl_FragColor = sourceColor * qt_Opacity; - } - " + property string __internalBlurVertexShader: "qrc:/QtQuick/Controls/Shaders/blur.vert" + + property string __internalBlurFragmentShader: "qrc:/QtQuick/Controls/Shaders/blur.frag" ShaderEffect { id: level0 @@ -391,65 +325,6 @@ Item { onLodChanged: calculateWeights() - fragmentShader: rootItem.OpenGLInfo.profile === OpenGLInfo.CoreProfile ? "#version 150 - uniform sampler2D source1; - uniform sampler2D source2; - uniform sampler2D source3; - uniform sampler2D source4; - uniform sampler2D source5; - uniform float weight1; - uniform float weight2; - uniform float weight3; - uniform float weight4; - uniform float weight5; - uniform vec4 color; - uniform float spread; - uniform float qt_Opacity; - in vec2 qt_TexCoord0; - out vec4 fragColor; - - float linearstep(float e0, float e1, float x) { - return clamp((x - e0) / (e1 - e0), 0.0, 1.0); - } - - void main() { - vec4 sourceColor = texture(source1, qt_TexCoord0) * weight1; - sourceColor += texture(source2, qt_TexCoord0) * weight2; - sourceColor += texture(source3, qt_TexCoord0) * weight3; - sourceColor += texture(source4, qt_TexCoord0) * weight4; - sourceColor += texture(source5, qt_TexCoord0) * weight5; - sourceColor = mix(vec4(0), color, linearstep(0.0, spread, sourceColor.a)); - fragColor = sourceColor * qt_Opacity; - } - " : " - uniform lowp sampler2D source1; - uniform lowp sampler2D source2; - uniform lowp sampler2D source3; - uniform lowp sampler2D source4; - uniform lowp sampler2D source5; - uniform mediump float weight1; - uniform mediump float weight2; - uniform mediump float weight3; - uniform mediump float weight4; - uniform mediump float weight5; - uniform highp vec4 color; - uniform highp float spread; - uniform lowp float qt_Opacity; - varying mediump vec2 qt_TexCoord0; - - highp float linearstep(highp float e0, highp float e1, highp float x) { - return clamp((x - e0) / (e1 - e0), 0.0, 1.0); - } - - void main() { - lowp vec4 sourceColor = texture2D(source1, qt_TexCoord0) * weight1; - sourceColor += texture2D(source2, qt_TexCoord0) * weight2; - sourceColor += texture2D(source3, qt_TexCoord0) * weight3; - sourceColor += texture2D(source4, qt_TexCoord0) * weight4; - sourceColor += texture2D(source5, qt_TexCoord0) * weight5; - sourceColor = mix(vec4(0), color, linearstep(0.0, spread, sourceColor.a)); - gl_FragColor = sourceColor * qt_Opacity; - } - " + fragmentShader: "qrc:/QtQuick/Controls/Shaders/glow.frag" } } diff --git a/src/controls/Private/qquicksceneposlistener.cpp b/src/controls/Private/qquicksceneposlistener.cpp index 4e5a4a5e..872f1bf9 100644 --- a/src/controls/Private/qquicksceneposlistener.cpp +++ b/src/controls/Private/qquicksceneposlistener.cpp @@ -124,7 +124,7 @@ void QQuickScenePosListener1::setEnabled(bool enabled) emit enabledChanged(); } -void QQuickScenePosListener1::itemGeometryChanged(QQuickItem *, const QRectF &, const QRectF &) +void QQuickScenePosListener1::itemGeometryChanged(QQuickItem *, QQuickGeometryChange, const QRectF &) { updateScenePos(); } diff --git a/src/controls/Private/qquicksceneposlistener_p.h b/src/controls/Private/qquicksceneposlistener_p.h index f66930e7..61447c7d 100644 --- a/src/controls/Private/qquicksceneposlistener_p.h +++ b/src/controls/Private/qquicksceneposlistener_p.h @@ -73,10 +73,10 @@ Q_SIGNALS: void enabledChanged(); protected: - void itemGeometryChanged(QQuickItem *, const QRectF &, const QRectF &); - void itemParentChanged(QQuickItem *, QQuickItem *parent); - void itemChildRemoved(QQuickItem *, QQuickItem *child); - void itemDestroyed(QQuickItem *item); + void itemGeometryChanged(QQuickItem *, QQuickGeometryChange, const QRectF &) override; + void itemParentChanged(QQuickItem *, QQuickItem *parent) override; + void itemChildRemoved(QQuickItem *, QQuickItem *child) override; + void itemDestroyed(QQuickItem *item) override; private: void updateScenePos(); diff --git a/src/controls/Private/qquickstyleitem.cpp b/src/controls/Private/qquickstyleitem.cpp index 95722f93..1d79d634 100644 --- a/src/controls/Private/qquickstyleitem.cpp +++ b/src/controls/Private/qquickstyleitem.cpp @@ -45,12 +45,12 @@ #include <qstyle.h> #include <qstyleoption.h> #include <qapplication.h> -#include <qsgsimpletexturenode.h> #include <qquickwindow.h> #include "private/qguiapplication_p.h" #include <QtQuick/private/qquickwindow_p.h> #include <QtQuick/private/qquickitem_p.h> #include <QtGui/qpa/qplatformtheme.h> +#include <QtQuick/qsgninepatchnode.h> #include "../qquickmenuitem_p.h" QT_BEGIN_NAMESPACE @@ -96,122 +96,6 @@ CGContextRef qt_mac_cg_context(const QPaintDevice *pdev) #endif -class QQuickStyleNode1 : public QSGNinePatchNode -{ -public: - QQuickStyleNode1() - : m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4) - { - m_geometry.setDrawingMode(GL_TRIANGLE_STRIP); - setGeometry(&m_geometry); - // The texture material has mipmap filtering set to Nearest by default. This is not ideal. - m_material.setMipmapFiltering(QSGTexture::None); - setMaterial(&m_material); - } - - ~QQuickStyleNode1() - { - delete m_material.texture(); - } - - virtual void setTexture(QSGTexture *texture) - { - delete m_material.texture(); - m_material.setTexture(texture); - } - - virtual void setBounds(const QRectF &bounds) - { - m_bounds = bounds; - } - - virtual void setDevicePixelRatio(qreal ratio) - { - m_devicePixelRatio = ratio; - } - - virtual void setPadding(qreal left, qreal top, qreal right, qreal bottom) - { - m_paddingLeft = left; - m_paddingTop = top; - m_paddingRight = right; - m_paddingBottom = bottom; - } - - virtual void update() { - QSGTexture *texture = m_material.texture(); - - if (m_paddingLeft <= 0 && m_paddingTop <= 0 && m_paddingRight <= 0 && m_paddingBottom <= 0) { - m_geometry.allocate(4, 0); - QSGGeometry::updateTexturedRectGeometry(&m_geometry, m_bounds, texture->normalizedTextureSubRect()); - markDirty(QSGNode::DirtyGeometry | QSGNode::DirtyMaterial); - return; - } - - QRectF tc = texture->normalizedTextureSubRect(); - QSize ts = texture->textureSize(); - ts.setHeight(ts.height() / m_devicePixelRatio); - ts.setWidth(ts.width() / m_devicePixelRatio); - - qreal invtw = tc.width() / ts.width(); - qreal invth = tc.height() / ts.height(); - - struct Coord { qreal p; qreal t; }; - Coord cx[4] = { { m_bounds.left(), tc.left() }, - { m_bounds.left() + m_paddingLeft, tc.left() + m_paddingLeft * invtw }, - { m_bounds.right() - m_paddingRight, tc.right() - m_paddingRight * invtw }, - { m_bounds.right(), tc.right() } - }; - Coord cy[4] = { { m_bounds.top(), tc.top() }, - { m_bounds.top() + m_paddingTop, tc.top() + m_paddingTop * invth }, - { m_bounds.bottom() - m_paddingBottom, tc.bottom() - m_paddingBottom * invth }, - { m_bounds.bottom(), tc.bottom() } - }; - - m_geometry.allocate(16, 28); - QSGGeometry::TexturedPoint2D *v = m_geometry.vertexDataAsTexturedPoint2D(); - for (int y=0; y<4; ++y) { - for (int x=0; x<4; ++x) { - v->set(cx[x].p, cy[y].p, cx[x].t, cy[y].t); - ++v; - } - } - - quint16 *i = m_geometry.indexDataAsUShort(); - for (int r=0; r<3; ++r) { - if (r > 0) - *i++ = 4 * r; - for (int c=0; c<4; ++c) { - i[0] = 4 * r + c; - i[1] = 4 * r + c + 4; - i+=2; - } - if (r < 2) - *i++ = 4 * r + 3 + 4; - } - - markDirty(QSGNode::DirtyGeometry | QSGNode::DirtyMaterial); - -// v = m_geometry.vertexDataAsTexturedPoint2D(); -// for (int j=0; j<m_geometry.vertexCount(); ++j) -// qDebug() << v[j].x << v[j].y << v[j].tx << v[j].ty; - -// i = m_geometry.indexDataAsUShort(); -// for (int j=0; j<m_geometry.indexCount(); ++j) -// qDebug() << i[j]; - - } - - QRectF m_bounds; - qreal m_devicePixelRatio; - qreal m_paddingLeft; - qreal m_paddingTop; - qreal m_paddingRight; - qreal m_paddingBottom; - QSGGeometry m_geometry; - QSGTextureMaterial m_material; -}; - QQuickStyleItem1::QQuickStyleItem1(QQuickItem *parent) : QQuickItem(parent), m_styleoption(0), @@ -1860,11 +1744,8 @@ QSGNode *QQuickStyleItem1::updatePaintNode(QSGNode *node, UpdatePaintNodeData *) } QSGNinePatchNode *styleNode = static_cast<QSGNinePatchNode *>(node); - if (!styleNode) { - styleNode = QQuickItemPrivate::get(this)->sceneGraphContext()->createNinePatchNode(); - if (!styleNode) - styleNode = new QQuickStyleNode1; - } + if (!styleNode) + styleNode = window()->createNinePatchNode(); #ifdef QSG_RUNTIME_DESCRIPTION qsgnode_set_description(styleNode, diff --git a/src/controls/Shaders/+glslcore/blur.frag b/src/controls/Shaders/+glslcore/blur.frag new file mode 100644 index 00000000..38895e10 --- /dev/null +++ b/src/controls/Shaders/+glslcore/blur.frag @@ -0,0 +1,19 @@ +#version 150 + +uniform sampler2D source; +uniform float qt_Opacity; + +in vec2 qt_TexCoord0; +in vec2 qt_TexCoord1; +in vec2 qt_TexCoord2; +in vec2 qt_TexCoord3; + +out vec4 fragColor; + +void main() { + vec4 sourceColor = (texture(source, qt_TexCoord0) + + texture(source, qt_TexCoord1) + + texture(source, qt_TexCoord2) + + texture(source, qt_TexCoord3)) * 0.25; + fragColor = sourceColor * qt_Opacity; +} diff --git a/src/controls/Shaders/+glslcore/blur.vert b/src/controls/Shaders/+glslcore/blur.vert new file mode 100644 index 00000000..1204c5fa --- /dev/null +++ b/src/controls/Shaders/+glslcore/blur.vert @@ -0,0 +1,21 @@ +#version 150 + +in vec4 qt_Vertex; +in vec2 qt_MultiTexCoord0; + +uniform mat4 qt_Matrix; +uniform float yStep; +uniform float xStep; + +out vec2 qt_TexCoord0; +out vec2 qt_TexCoord1; +out vec2 qt_TexCoord2; +out vec2 qt_TexCoord3; + +void main() { + qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); + qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); + qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); + qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); + gl_Position = qt_Matrix * qt_Vertex; +} diff --git a/src/controls/Shaders/+glslcore/glow.frag b/src/controls/Shaders/+glslcore/glow.frag new file mode 100644 index 00000000..e1b6b07f --- /dev/null +++ b/src/controls/Shaders/+glslcore/glow.frag @@ -0,0 +1,33 @@ +#version 150 + +uniform sampler2D source1; +uniform sampler2D source2; +uniform sampler2D source3; +uniform sampler2D source4; +uniform sampler2D source5; +uniform float weight1; +uniform float weight2; +uniform float weight3; +uniform float weight4; +uniform float weight5; +uniform vec4 color; +uniform float spread; +uniform float qt_Opacity; + +in vec2 qt_TexCoord0; + +out vec4 fragColor; + +float linearstep(float e0, float e1, float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); +} + +void main() { + vec4 sourceColor = texture(source1, qt_TexCoord0) * weight1; + sourceColor += texture(source2, qt_TexCoord0) * weight2; + sourceColor += texture(source3, qt_TexCoord0) * weight3; + sourceColor += texture(source4, qt_TexCoord0) * weight4; + sourceColor += texture(source5, qt_TexCoord0) * weight5; + sourceColor = mix(vec4(0), color, linearstep(0.0, spread, sourceColor.a)); + fragColor = sourceColor * qt_Opacity; +} diff --git a/src/controls/Shaders/+hlsl/blur.frag b/src/controls/Shaders/+hlsl/blur.frag new file mode 100644 index 00000000..3dbf6556 --- /dev/null +++ b/src/controls/Shaders/+hlsl/blur.frag @@ -0,0 +1,19 @@ +cbuffer ConstantBuffer : register(b0) +{ + float4x4 qt_Matrix; + float qt_Opacity; + float2 delta; +}; + +Texture2D source : register(t0); +SamplerState sourceSampler : register(s0); + +float4 main(float4 position : SV_POSITION, + float2 coord0 : TEXCOORD0, + float2 coord1 : TEXCOORD1, + float2 coord2 : TEXCOORD2, + float2 coord3 : TEXCOORD3) : SV_TARGET +{ + return (source.Sample(sourceSampler, coord0) + source.Sample(sourceSampler, coord1) + + source.Sample(sourceSampler, coord2) + source.Sample(sourceSampler, coord3)) * 0.25 * qt_Opacity; +} diff --git a/src/controls/Shaders/+hlsl/blur.vert b/src/controls/Shaders/+hlsl/blur.vert new file mode 100644 index 00000000..08ff3cf3 --- /dev/null +++ b/src/controls/Shaders/+hlsl/blur.vert @@ -0,0 +1,30 @@ +cbuffer ConstantBuffer : register(b0) +{ + float4x4 qt_Matrix; + float qt_Opacity; + float xStep; + float yStep; +}; + +struct PSInput +{ + float4 position : SV_POSITION; + float2 coord0 : TEXCOORD0; + float2 coord1 : TEXCOORD1; + float2 coord2 : TEXCOORD2; + float2 coord3 : TEXCOORD3; +}; + +PSInput main(float4 position : POSITION, float2 coord : TEXCOORD0) +{ + PSInput result; + + result.position = mul(qt_Matrix, position); + + result.coord0 = float2(coord.x + xStep, coord.y + yStep * 0.36); + result.coord1 = float2(coord.x + xStep * 0.36, coord.y - yStep); + result.coord2 = float2(coord.x - xStep * 0.36, coord.y + yStep); + result.coord3 = float2(coord.x - xStep, coord.y - yStep * 0.36); + + return result; +} diff --git a/src/controls/Shaders/+hlsl/glow.frag b/src/controls/Shaders/+hlsl/glow.frag new file mode 100644 index 00000000..887d2087 --- /dev/null +++ b/src/controls/Shaders/+hlsl/glow.frag @@ -0,0 +1,39 @@ +cbuffer ConstantBuffer : register(b0) +{ + float4x4 qt_Matrix; + float qt_Opacity; + float weight1; + float weight2; + float weight3; + float weight4; + float weight5; + float spread; + float4 color; +}; + +Texture2D source1 : register(t0); +SamplerState sourceSampler1 : register(s0); +Texture2D source2 : register(t1); +SamplerState sourceSampler2 : register(s1); +Texture2D source3 : register(t2); +SamplerState sourceSampler3 : register(s2); +Texture2D source4 : register(t3); +SamplerState sourceSampler4 : register(s3); +Texture2D source5 : register(t4); +SamplerState sourceSampler5 : register(s4); + +float linearstep(float e0, float e1, float x) +{ + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); +} + +float4 main(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET +{ + float4 sourceColor = source1.Sample(sourceSampler1, coord) * weight1; + sourceColor += source2.Sample(sourceSampler2, coord) * weight2; + sourceColor += source3.Sample(sourceSampler3, coord) * weight3; + sourceColor += source4.Sample(sourceSampler4, coord) * weight4; + sourceColor += source5.Sample(sourceSampler5, coord) * weight5; + sourceColor = lerp(float4(0.0, 0.0, 0.0, 0.0), color, linearstep(0.0, spread, sourceColor.a)); + return sourceColor * qt_Opacity; +} diff --git a/src/controls/Shaders/blur.frag b/src/controls/Shaders/blur.frag new file mode 100644 index 00000000..54939d84 --- /dev/null +++ b/src/controls/Shaders/blur.frag @@ -0,0 +1,15 @@ +uniform lowp sampler2D source; +uniform lowp float qt_Opacity; + +varying highp vec2 qt_TexCoord0; +varying highp vec2 qt_TexCoord1; +varying highp vec2 qt_TexCoord2; +varying highp vec2 qt_TexCoord3; + +void main() { + highp vec4 sourceColor = (texture2D(source, qt_TexCoord0) + + texture2D(source, qt_TexCoord1) + + texture2D(source, qt_TexCoord2) + + texture2D(source, qt_TexCoord3)) * 0.25; + gl_FragColor = sourceColor * qt_Opacity; +} diff --git a/src/controls/Shaders/blur.vert b/src/controls/Shaders/blur.vert new file mode 100644 index 00000000..d7862dda --- /dev/null +++ b/src/controls/Shaders/blur.vert @@ -0,0 +1,19 @@ +attribute highp vec4 qt_Vertex; +attribute highp vec2 qt_MultiTexCoord0; + +uniform highp mat4 qt_Matrix; +uniform highp float yStep; +uniform highp float xStep; + +varying highp vec2 qt_TexCoord0; +varying highp vec2 qt_TexCoord1; +varying highp vec2 qt_TexCoord2; +varying highp vec2 qt_TexCoord3; + +void main() { + qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); + qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); + qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); + qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); + gl_Position = qt_Matrix * qt_Vertex; +} diff --git a/src/controls/Shaders/glow.frag b/src/controls/Shaders/glow.frag new file mode 100644 index 00000000..56216cd6 --- /dev/null +++ b/src/controls/Shaders/glow.frag @@ -0,0 +1,29 @@ +uniform lowp sampler2D source1; +uniform lowp sampler2D source2; +uniform lowp sampler2D source3; +uniform lowp sampler2D source4; +uniform lowp sampler2D source5; +uniform mediump float weight1; +uniform mediump float weight2; +uniform mediump float weight3; +uniform mediump float weight4; +uniform mediump float weight5; +uniform highp vec4 color; +uniform highp float spread; +uniform lowp float qt_Opacity; + +varying mediump vec2 qt_TexCoord0; + +highp float linearstep(highp float e0, highp float e1, highp float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); +} + +void main() { + lowp vec4 sourceColor = texture2D(source1, qt_TexCoord0) * weight1; + sourceColor += texture2D(source2, qt_TexCoord0) * weight2; + sourceColor += texture2D(source3, qt_TexCoord0) * weight3; + sourceColor += texture2D(source4, qt_TexCoord0) * weight4; + sourceColor += texture2D(source5, qt_TexCoord0) * weight5; + sourceColor = mix(vec4(0), color, linearstep(0.0, spread, sourceColor.a)); + gl_FragColor = sourceColor * qt_Opacity; +} diff --git a/src/controls/Shaders/shaders.pri b/src/controls/Shaders/shaders.pri new file mode 100644 index 00000000..197fd11e --- /dev/null +++ b/src/controls/Shaders/shaders.pri @@ -0,0 +1,10 @@ +SHADER_FILES = \ + $$PWD/blur.vert \ + $$PWD/blur.frag \ + $$PWD/glow.frag \ + $$PWD/+glslcore/blur.vert \ + $$PWD/+glslcore/blur.frag \ + $$PWD/+glslcore/glow.frag \ + $$PWD/+hlsl/blur.vert \ + $$PWD/+hlsl/blur.frag \ + $$PWD/+hlsl/glow.frag diff --git a/src/controls/controls.pro b/src/controls/controls.pro index e2ecacd8..63d055d6 100644 --- a/src/controls/controls.pro +++ b/src/controls/controls.pro @@ -51,6 +51,7 @@ OTHER_FILES += doc/src/* include(plugin.pri) include(Private/private.pri) include(Styles/styles.pri) +include(Shaders/shaders.pri) osx: LIBS_PRIVATE += -framework Carbon @@ -61,7 +62,8 @@ osx: LIBS_PRIVATE += -framework Carbon INCLUDED_RESOURCE_FILES = \ $$CONTROLS_QML_FILES \ $$PRIVATE_QML_FILES \ - $$STYLES_QML_FILES + $$STYLES_QML_FILES \ + $$SHADER_FILES RESOURCE_CONTENT = \ "<RCC>" \ @@ -84,7 +86,8 @@ osx: LIBS_PRIVATE += -framework Carbon } else { QML_FILES *= $$CONTROLS_QML_FILES \ $$PRIVATE_QML_FILES \ - $$STYLES_QML_FILES + $$STYLES_QML_FILES \ + $$SHADER_FILES OTHER_FILES += $$QML_FILES } diff --git a/src/dialogs/Private/qquickfontlistmodel.cpp b/src/dialogs/Private/qquickfontlistmodel.cpp index af318f3b..18bcd884 100644 --- a/src/dialogs/Private/qquickfontlistmodel.cpp +++ b/src/dialogs/Private/qquickfontlistmodel.cpp @@ -52,7 +52,7 @@ class QQuickFontListModelPrivate public: QQuickFontListModelPrivate(QQuickFontListModel *q) : q_ptr(q), ws(QFontDatabase::Any) - , options(QSharedPointer<QFontDialogOptions>(new QFontDialogOptions())) + , options(QFontDialogOptions::create()) {} QQuickFontListModel *q_ptr; diff --git a/src/dialogs/plugin.cpp b/src/dialogs/plugin.cpp index 23eeac38..5a13bc9b 100644 --- a/src/dialogs/plugin.cpp +++ b/src/dialogs/plugin.cpp @@ -177,7 +177,7 @@ public: // Dialog { // @uri QtQuick.Dialogs.AbstractDialog - qmlRegisterType<QQuickDialog>(uri, 1, 2, "AbstractDialog"); // implementation wrapper + qmlRegisterType<QQuickDialog1>(uri, 1, 2, "AbstractDialog"); // implementation wrapper QUrl dialogQmlPath = m_useResources ? QUrl("qrc:/QtQuick/Dialogs/DefaultDialogWrapper.qml") : #ifndef QT_STATIC diff --git a/src/dialogs/plugins.qmltypes b/src/dialogs/plugins.qmltypes index 6e21c16f..82c910ed 100644 --- a/src/dialogs/plugins.qmltypes +++ b/src/dialogs/plugins.qmltypes @@ -325,7 +325,7 @@ Module { Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } } Component { - name: "QQuickDialog" + name: "QQuickDialog1" defaultProperty: "contentItem" prototype: "QQuickAbstractDialog" exports: ["QtQuick.Dialogs/AbstractDialog 1.2"] diff --git a/src/dialogs/qquickabstractcolordialog.cpp b/src/dialogs/qquickabstractcolordialog.cpp index 44c203df..a558b12c 100644 --- a/src/dialogs/qquickabstractcolordialog.cpp +++ b/src/dialogs/qquickabstractcolordialog.cpp @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE QQuickAbstractColorDialog::QQuickAbstractColorDialog(QObject *parent) : QQuickAbstractDialog(parent) , m_dlgHelper(0) - , m_options(QSharedPointer<QColorDialogOptions>(new QColorDialogOptions())) + , m_options(QColorDialogOptions::create()) { // On the Mac, modality doesn't work unless you call exec(). But this is a reasonable default anyway. m_modality = Qt::NonModal; diff --git a/src/dialogs/qquickabstractdialog_p.h b/src/dialogs/qquickabstractdialog_p.h index 0a761bf3..54dbaace 100644 --- a/src/dialogs/qquickabstractdialog_p.h +++ b/src/dialogs/qquickabstractdialog_p.h @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE class QQuickAbstractDialog : public QObject { Q_OBJECT - // TODO move the enum to QQuickDialog at the same time that QQuickMessageDialog inherits from it + // TODO move the enum to QQuickDialog1 at the same time that QQuickMessageDialog inherits from it Q_ENUMS(StandardButton) Q_FLAGS(StandardButtons) Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibilityChanged) diff --git a/src/dialogs/qquickabstractfiledialog.cpp b/src/dialogs/qquickabstractfiledialog.cpp index 4303ac3a..c0b3400c 100644 --- a/src/dialogs/qquickabstractfiledialog.cpp +++ b/src/dialogs/qquickabstractfiledialog.cpp @@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE QQuickAbstractFileDialog::QQuickAbstractFileDialog(QObject *parent) : QQuickAbstractDialog(parent) , m_dlgHelper(0) - , m_options(QSharedPointer<QFileDialogOptions>(new QFileDialogOptions())) + , m_options(QFileDialogOptions::create()) , m_selectExisting(true) , m_selectMultiple(false) , m_selectFolder(false) diff --git a/src/dialogs/qquickabstractfontdialog.cpp b/src/dialogs/qquickabstractfontdialog.cpp index 0886449b..f94a36a0 100644 --- a/src/dialogs/qquickabstractfontdialog.cpp +++ b/src/dialogs/qquickabstractfontdialog.cpp @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE QQuickAbstractFontDialog::QQuickAbstractFontDialog(QObject *parent) : QQuickAbstractDialog(parent) , m_dlgHelper(0) - , m_options(QSharedPointer<QFontDialogOptions>(new QFontDialogOptions())) + , m_options(QFontDialogOptions::create()) { // On the Mac, modality doesn't work unless you call exec(). But this is a reasonable default anyway. m_modality = Qt::NonModal; diff --git a/src/dialogs/qquickabstractmessagedialog.cpp b/src/dialogs/qquickabstractmessagedialog.cpp index 8d80bb3a..ce0b17ea 100644 --- a/src/dialogs/qquickabstractmessagedialog.cpp +++ b/src/dialogs/qquickabstractmessagedialog.cpp @@ -45,7 +45,7 @@ QT_BEGIN_NAMESPACE QQuickAbstractMessageDialog::QQuickAbstractMessageDialog(QObject *parent) : QQuickAbstractDialog(parent) , m_dlgHelper(0) - , m_options(QSharedPointer<QMessageDialogOptions>(new QMessageDialogOptions())) + , m_options(QMessageDialogOptions::create()) , m_clickedButton(NoButton) { } diff --git a/src/dialogs/qquickdialog.cpp b/src/dialogs/qquickdialog.cpp index 33e3b02b..485eeb43 100644 --- a/src/dialogs/qquickdialog.cpp +++ b/src/dialogs/qquickdialog.cpp @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE /*! \qmltype Dialog - \instantiates QQuickDialog + \instantiates QQuickDialog1 \inqmlmodule QtQuick.Dialogs \ingroup qtquickdialogs \brief A generic QtQuick dialog wrapper with standard buttons. @@ -203,11 +203,11 @@ QT_BEGIN_NAMESPACE */ /*! - \class QQuickDialog + \class QQuickDialog1 \inmodule QtQuick.Dialogs \internal - The QQuickDialog class represents a container for arbitrary + The QQuickDialog1 class represents a container for arbitrary dialog contents. \since 5.3 @@ -216,7 +216,7 @@ QT_BEGIN_NAMESPACE /*! Constructs a dialog wrapper with parent window \a parent. */ -QQuickDialog::QQuickDialog(QObject *parent) +QQuickDialog1::QQuickDialog1(QObject *parent) : QQuickAbstractDialog(parent) , m_enabledButtons(Ok) , m_clickedButton(NoButton) @@ -227,30 +227,30 @@ QQuickDialog::QQuickDialog(QObject *parent) /*! Destroys the dialog wrapper. */ -QQuickDialog::~QQuickDialog() +QQuickDialog1::~QQuickDialog1() { } -QJSValue QQuickDialog::__standardButtonsLeftModel() +QJSValue QQuickDialog1::__standardButtonsLeftModel() { updateStandardButtons(); return m_standardButtonsLeftModel; } -QJSValue QQuickDialog::__standardButtonsRightModel() +QJSValue QQuickDialog1::__standardButtonsRightModel() { updateStandardButtons(); return m_standardButtonsRightModel; } -void QQuickDialog::setVisible(bool v) +void QQuickDialog1::setVisible(bool v) { if (v) m_clickedButton = NoButton; QQuickAbstractDialog::setVisible(v); } -void QQuickDialog::updateStandardButtons() +void QQuickDialog1::updateStandardButtons() { if (m_standardButtonsRightModel.isUndefined()) { QJSEngine *engine = qmlEngine(this); @@ -293,7 +293,7 @@ void QQuickDialog::updateStandardButtons() } } -void QQuickDialog::setTitle(const QString &arg) +void QQuickDialog1::setTitle(const QString &arg) { if (m_title != arg) { m_title = arg; @@ -301,7 +301,7 @@ void QQuickDialog::setTitle(const QString &arg) } } -void QQuickDialog::setStandardButtons(StandardButtons buttons) +void QQuickDialog1::setStandardButtons(StandardButtons buttons) { m_enabledButtons = buttons; m_standardButtonsLeftModel = QJSValue(); @@ -339,7 +339,7 @@ void QQuickDialog::setStandardButtons(StandardButtons buttons) \endqml */ -void QQuickDialog::click(QPlatformDialogHelper::StandardButton button, QPlatformDialogHelper::ButtonRole role) +void QQuickDialog1::click(QPlatformDialogHelper::StandardButton button, QPlatformDialogHelper::ButtonRole role) { m_clickedButton = static_cast<StandardButton>(button); emit buttonClicked(); @@ -378,21 +378,21 @@ void QQuickDialog::click(QPlatformDialogHelper::StandardButton button, QPlatform } } -void QQuickDialog::click(QQuickAbstractDialog::StandardButton button) +void QQuickDialog1::click(QQuickAbstractDialog::StandardButton button) { click(static_cast<QPlatformDialogHelper::StandardButton>(button), static_cast<QPlatformDialogHelper::ButtonRole>( QPlatformDialogHelper::buttonRole(static_cast<QPlatformDialogHelper::StandardButton>(button)))); } -void QQuickDialog::accept() { +void QQuickDialog1::accept() { // enter key is treated like OK if (m_clickedButton == NoButton) m_clickedButton = Ok; QQuickAbstractDialog::accept(); } -void QQuickDialog::reject() { +void QQuickDialog1::reject() { // escape key is treated like cancel if (m_clickedButton == NoButton) m_clickedButton = Cancel; diff --git a/src/dialogs/qquickdialog_p.h b/src/dialogs/qquickdialog_p.h index 262ddb63..fec4ec9a 100644 --- a/src/dialogs/qquickdialog_p.h +++ b/src/dialogs/qquickdialog_p.h @@ -56,7 +56,7 @@ QT_BEGIN_NAMESPACE -class QQuickDialog : public QQuickAbstractDialog +class QQuickDialog1 : public QQuickAbstractDialog { Q_OBJECT @@ -70,8 +70,8 @@ class QQuickDialog : public QQuickAbstractDialog Q_CLASSINFO("DefaultProperty", "contentItem") // Dialog in QML can have only one child public: - explicit QQuickDialog(QObject *parent = 0); - ~QQuickDialog(); + explicit QQuickDialog1(QObject *parent = 0); + ~QQuickDialog1(); StandardButtons standardButtons() const { return m_enabledButtons; } StandardButton clickedButton() const { return m_clickedButton; } @@ -114,11 +114,11 @@ private: StandardButton m_clickedButton; QJSValue m_standardButtonsLeftModel; QJSValue m_standardButtonsRightModel; - Q_DISABLE_COPY(QQuickDialog) + Q_DISABLE_COPY(QQuickDialog1) }; QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickDialog *) +QML_DECLARE_TYPE(QQuickDialog1 *) #endif // QQUICKDIALOG_P_H |