forked from github_mirror/framelesshelper
Fix two issues.
1. The border line may disappear when resizing: fixed by change the line width to 2px. 2. Some part of the window become totally transparent after DPI changes: fixed by calling update() after DPI changes. Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
parent
47910161c9
commit
886f31d0c0
|
@ -32,6 +32,11 @@
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <qt_windows.h>
|
#include <qt_windows.h>
|
||||||
|
|
||||||
|
// Some old SDK doesn't have this value.
|
||||||
|
#ifndef WM_DPICHANGED
|
||||||
|
#define WM_DPICHANGED 0x02E0
|
||||||
|
#endif
|
||||||
|
|
||||||
// Copied from windowsx.h
|
// Copied from windowsx.h
|
||||||
#define GET_X_LPARAM(lp) ((int) (short) LOWORD(lp))
|
#define GET_X_LPARAM(lp) ((int) (short) LOWORD(lp))
|
||||||
#define GET_Y_LPARAM(lp) ((int) (short) HIWORD(lp))
|
#define GET_Y_LPARAM(lp) ((int) (short) HIWORD(lp))
|
||||||
|
@ -289,6 +294,7 @@ bool Widget::eventFilter(QObject *object, QEvent *event)
|
||||||
{
|
{
|
||||||
Q_ASSERT(object);
|
Q_ASSERT(object);
|
||||||
Q_ASSERT(event);
|
Q_ASSERT(event);
|
||||||
|
Q_ASSERT(object == this);
|
||||||
switch (event->type()) {
|
switch (event->type()) {
|
||||||
case QEvent::WindowStateChange: {
|
case QEvent::WindowStateChange: {
|
||||||
if (shouldDrawBorder(true)) {
|
if (shouldDrawBorder(true)) {
|
||||||
|
@ -349,6 +355,9 @@ bool Widget::nativeEvent(const QByteArray &eventType, void *message, long *resul
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case WM_DPICHANGED:
|
||||||
|
update();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -362,7 +371,7 @@ void Widget::paintEvent(QPaintEvent *event)
|
||||||
if (shouldDrawBorder()) {
|
if (shouldDrawBorder()) {
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
painter.save();
|
painter.save();
|
||||||
painter.setPen(borderColor());
|
painter.setPen({borderColor(), 2.0});
|
||||||
painter.drawLine(0, 0, width(), 0);
|
painter.drawLine(0, 0, width(), 0);
|
||||||
painter.drawLine(0, height(), width(), height());
|
painter.drawLine(0, height(), width(), height());
|
||||||
painter.drawLine(0, 0, 0, height());
|
painter.drawLine(0, 0, 0, height());
|
||||||
|
|
Loading…
Reference in New Issue