direct2d qpa: fix text selection
1cdcf64ad5
recently introduced a rendering
bug whereby certain clips would be handled incorrectly.
Change-Id: I3f486819c66b1d665243c8dc1e9d077dd2f64f25
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
This commit is contained in:
parent
3312ac9169
commit
4918623f76
@ -300,6 +300,14 @@ public:
|
||||
: D2D1_ANTIALIAS_MODE_ALIASED;
|
||||
}
|
||||
|
||||
inline D2D1_LAYER_OPTIONS1 layerOptions() const
|
||||
{
|
||||
if (flags & QWindowsDirect2DPaintEngine::TranslucentTopLevelWindow)
|
||||
return D2D1_LAYER_OPTIONS1_NONE;
|
||||
else
|
||||
return D2D1_LAYER_OPTIONS1_INITIALIZE_FROM_BACKGROUND;
|
||||
}
|
||||
|
||||
void updateTransform(const QTransform &transform)
|
||||
{
|
||||
dc()->SetTransform(to_d2d_matrix_3x2_f(transform));
|
||||
@ -345,7 +353,7 @@ public:
|
||||
D2D1::IdentityMatrix(),
|
||||
1.0,
|
||||
NULL,
|
||||
D2D1_LAYER_OPTIONS1_NONE),
|
||||
layerOptions()),
|
||||
NULL);
|
||||
pushedClips.push(LayerClip);
|
||||
}
|
||||
@ -870,7 +878,7 @@ public:
|
||||
|
||||
const bool antiAlias = bool((q->state()->renderHints & QPainter::TextAntialiasing)
|
||||
&& !(fontDef.styleStrategy & QFont::NoAntialias));
|
||||
const D2D1_TEXT_ANTIALIAS_MODE antialiasMode = (flags & QWindowsDirect2DPaintEngine::UseGrayscaleAntialiasing)
|
||||
const D2D1_TEXT_ANTIALIAS_MODE antialiasMode = (flags & QWindowsDirect2DPaintEngine::TranslucentTopLevelWindow)
|
||||
? D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE : D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE;
|
||||
dc()->SetTextAntialiasMode(antiAlias ? antialiasMode : D2D1_TEXT_ANTIALIAS_MODE_ALIASED);
|
||||
|
||||
@ -956,7 +964,7 @@ bool QWindowsDirect2DPaintEngine::begin(QPaintDevice * pdev)
|
||||
D2D1::IdentityMatrix(),
|
||||
1.0,
|
||||
NULL,
|
||||
D2D1_LAYER_OPTIONS1_NONE),
|
||||
d->layerOptions()),
|
||||
NULL);
|
||||
} else {
|
||||
QRect clip(0, 0, pdev->width(), pdev->height());
|
||||
|
@ -61,7 +61,7 @@ class QWindowsDirect2DPaintEngine : public QPaintEngineEx
|
||||
public:
|
||||
enum Flag {
|
||||
NoFlag = 0,
|
||||
UseGrayscaleAntialiasing = 1,
|
||||
TranslucentTopLevelWindow = 1
|
||||
};
|
||||
Q_DECLARE_FLAGS(Flags, Flag)
|
||||
|
||||
|
@ -310,7 +310,7 @@ void QWindowsDirect2DWindow::setupBitmap()
|
||||
|
||||
QWindowsDirect2DPaintEngine::Flags flags = QWindowsDirect2DPaintEngine::NoFlag;
|
||||
if (!m_directRendering)
|
||||
flags |= QWindowsDirect2DPaintEngine::UseGrayscaleAntialiasing;
|
||||
flags |= QWindowsDirect2DPaintEngine::TranslucentTopLevelWindow;
|
||||
QWindowsDirect2DPlatformPixmap *pp = new QWindowsDirect2DPlatformPixmap(QPlatformPixmap::PixmapType,
|
||||
flags,
|
||||
m_bitmap.data());
|
||||
|
Loading…
Reference in New Issue
Block a user