summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/controls/ComboBox.qml1
-rw-r--r--src/controls/Private/FastGlow.qml133
-rw-r--r--src/controls/Private/qquicksceneposlistener.cpp2
-rw-r--r--src/controls/Private/qquicksceneposlistener_p.h8
-rw-r--r--src/controls/Private/qquickstyleitem.cpp125
-rw-r--r--src/controls/Shaders/+glslcore/blur.frag19
-rw-r--r--src/controls/Shaders/+glslcore/blur.vert21
-rw-r--r--src/controls/Shaders/+glslcore/glow.frag33
-rw-r--r--src/controls/Shaders/+hlsl/blur.frag19
-rw-r--r--src/controls/Shaders/+hlsl/blur.vert30
-rw-r--r--src/controls/Shaders/+hlsl/glow.frag39
-rw-r--r--src/controls/Shaders/blur.frag15
-rw-r--r--src/controls/Shaders/blur.vert19
-rw-r--r--src/controls/Shaders/glow.frag29
-rw-r--r--src/controls/Shaders/shaders.pri10
-rw-r--r--src/controls/controls.pro7
-rw-r--r--src/dialogs/Private/qquickfontlistmodel.cpp2
-rw-r--r--src/dialogs/plugin.cpp2
-rw-r--r--src/dialogs/plugins.qmltypes2
-rw-r--r--src/dialogs/qquickabstractcolordialog.cpp2
-rw-r--r--src/dialogs/qquickabstractdialog_p.h2
-rw-r--r--src/dialogs/qquickabstractfiledialog.cpp2
-rw-r--r--src/dialogs/qquickabstractfontdialog.cpp2
-rw-r--r--src/dialogs/qquickabstractmessagedialog.cpp2
-rw-r--r--src/dialogs/qquickdialog.cpp30
-rw-r--r--src/dialogs/qquickdialog_p.h10
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