Don't grab QWhatsThis background on non-Windows platforms
The logic was introduced in 186589abd48b17fdb9b631211008753e2d1701b3 due to Windows supposedly not supporting NoSystemBackground. It's not clear whether this is still the case, but as this workaround causes problems on other platforms, such as bringing up the screen capturing permission dialog on macOS, it should be limited to Windows. Fixes: QTBUG-113556 Pick-to: 6.5 Change-Id: I197adb5fc177faebc0f2fcd28612e3daa0c22ed5 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
c4ce22ef24
commit
6a28b391f7
@ -110,7 +110,9 @@ public:
|
||||
static QWhatsThat *instance;
|
||||
|
||||
protected:
|
||||
#if defined(Q_OS_WIN)
|
||||
void showEvent(QShowEvent *e) override;
|
||||
#endif
|
||||
void mousePressEvent(QMouseEvent*) override;
|
||||
void mouseReleaseEvent(QMouseEvent*) override;
|
||||
void mouseMoveEvent(QMouseEvent*) override;
|
||||
@ -123,7 +125,9 @@ private:
|
||||
QString text;
|
||||
QTextDocument* doc;
|
||||
QString anchor;
|
||||
#if defined(Q_OS_WIN)
|
||||
QPixmap background;
|
||||
#endif
|
||||
};
|
||||
|
||||
QWhatsThat *QWhatsThat::instance = nullptr;
|
||||
@ -197,10 +201,12 @@ QWhatsThat::~QWhatsThat()
|
||||
delete doc;
|
||||
}
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
void QWhatsThat::showEvent(QShowEvent *)
|
||||
{
|
||||
background = QGuiApplication::primaryScreen()->grabWindow(0, x(), y(), width(), height());
|
||||
}
|
||||
#endif
|
||||
|
||||
void QWhatsThat::mousePressEvent(QMouseEvent* e)
|
||||
{
|
||||
@ -261,7 +267,10 @@ void QWhatsThat::paintEvent(QPaintEvent*)
|
||||
if (drawShadow)
|
||||
r.adjust(0, 0, -shadowWidth, -shadowWidth);
|
||||
QPainter p(this);
|
||||
#if defined(Q_OS_WIN)
|
||||
// Needed due to supposed lack of support for NoSystemBackground on Windows
|
||||
p.drawPixmap(0, 0, background);
|
||||
#endif
|
||||
p.setPen(QPen(palette().toolTipText(), 0));
|
||||
p.setBrush(palette().toolTipBase());
|
||||
p.drawRect(r);
|
||||
|
Loading…
Reference in New Issue
Block a user