forked from github_mirror/framelesshelper
Win32: Fix the flickering issue when resizing
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
parent
f188c0f88d
commit
16f7d78035
|
@ -412,6 +412,13 @@ bool FramelessHelperWin::nativeEventFilter(const QByteArray &eventType, void *me
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Fix the flickering issue while resizing.
|
||||||
|
// "clientRect->right += 1;" also works.
|
||||||
|
// The only draw back of this small trick is it will affect
|
||||||
|
// Qt's coordinate system. It makes the "canvas" of the window
|
||||||
|
// larger than it should be. Be careful if you need to paint
|
||||||
|
// something manually either through QPainter or Qt Quick.
|
||||||
|
clientRect->bottom += 1;
|
||||||
// If the window bounds change, we're going to relayout and repaint
|
// If the window bounds change, we're going to relayout and repaint
|
||||||
// anyway. Returning WVR_REDRAW avoids an extra paint before that of
|
// anyway. Returning WVR_REDRAW avoids an extra paint before that of
|
||||||
// the old client pixels in the (now wrong) location, and thus makes
|
// the old client pixels in the (now wrong) location, and thus makes
|
||||||
|
|
|
@ -250,13 +250,19 @@ void QtAcrylicEffectHelper::paintWindowFrame(QPainter *painter, const QRect &rec
|
||||||
const int width = rect.isValid() ? rect.width() : m_window->width();
|
const int width = rect.isValid() ? rect.width() : m_window->width();
|
||||||
const int height = rect.isValid() ? rect.height() : m_window->height();
|
const int height = rect.isValid() ? rect.height() : m_window->height();
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
|
||||||
const QList<QLineF> lines = {
|
using BorderLines = QList<QLineF>;
|
||||||
#else
|
#else
|
||||||
const QVector<QLineF> lines = {
|
using BorderLines = QVector<QLineF>;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef Q_OS_WINDOWS
|
||||||
|
const int internalFix = 1;
|
||||||
|
#else
|
||||||
|
const int internalFix = 0;
|
||||||
|
#endif
|
||||||
|
const BorderLines lines = {
|
||||||
{0, 0, static_cast<qreal>(width), 0},
|
{0, 0, static_cast<qreal>(width), 0},
|
||||||
{width - m_frameThickness, 0, width - m_frameThickness, static_cast<qreal>(height)},
|
{width - m_frameThickness, 0, width - m_frameThickness, static_cast<qreal>(height)},
|
||||||
{static_cast<qreal>(width), height - m_frameThickness, 0, height - m_frameThickness},
|
{static_cast<qreal>(width), height - m_frameThickness - internalFix, 0, height - m_frameThickness - internalFix},
|
||||||
{0, static_cast<qreal>(height), 0, 0}
|
{0, static_cast<qreal>(height), 0, 0}
|
||||||
};
|
};
|
||||||
const bool active = m_window->isActive();
|
const bool active = m_window->isActive();
|
||||||
|
|
Loading…
Reference in New Issue