mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-23 15:20:49 +01:00
Merge bitcoin-core/gui#831: GUIUtil::brintToFront workaround for Wayland
15aa7d0236
gui, qt: brintToFront workaround for Wayland (pablomartin4btc) Pull request description: There are known issues around handling windows focus in `Wayland` ([this one specific](https://bugs.kde.org/show_bug.cgi?id=462574) in KDE but also in [gnome](https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/730)). The idea is that the workaround will be executed if `bitcoin-qt` is running using `Wayland` platform (e.g.: `QT_QPA_PLATFORM=wayland ./src/qt/bitcoin-qt -regtest`), since the workaround behaviour looks like re-opening the window again (which I tried to fix by moving the window to the original position and/ or re-setting the original geometry without success) while in `X11` (not sure in Mac) the current `GUIUtil::brintToFront` actually sets the focus to the desired window, keeping its original position as expected, and I didn't want to change that (`X11` behaviour). The solution was [initially discussed](https://github.com/bitcoin-core/gui/pull/817#issuecomment-2256158902) with hebasto in #817. ACKs for top commit: hebasto: ACK15aa7d0236
. Tree-SHA512: 141d6cc4a618026e551627b9f4cc284285980db02a54a7b19c7de91e8c5adccf0c1d67380625146b5413e58c59f39c9e944ed5ba68cb8644f67647518918b6f7
This commit is contained in:
commit
1873e4116f
1 changed files with 17 additions and 10 deletions
|
@ -405,11 +405,17 @@ bool isObscured(QWidget *w)
|
||||||
|
|
||||||
void bringToFront(QWidget* w)
|
void bringToFront(QWidget* w)
|
||||||
{
|
{
|
||||||
|
if (w) {
|
||||||
|
if (QGuiApplication::platformName() == "wayland") {
|
||||||
|
auto flags = w->windowFlags();
|
||||||
|
w->setWindowFlags(flags|Qt::WindowStaysOnTopHint);
|
||||||
|
w->show();
|
||||||
|
w->setWindowFlags(flags);
|
||||||
|
w->show();
|
||||||
|
} else {
|
||||||
#ifdef Q_OS_MACOS
|
#ifdef Q_OS_MACOS
|
||||||
ForceActivation();
|
ForceActivation();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (w) {
|
|
||||||
// activateWindow() (sometimes) helps with keyboard focus on Windows
|
// activateWindow() (sometimes) helps with keyboard focus on Windows
|
||||||
if (w->isMinimized()) {
|
if (w->isMinimized()) {
|
||||||
w->showNormal();
|
w->showNormal();
|
||||||
|
@ -419,6 +425,7 @@ void bringToFront(QWidget* w)
|
||||||
w->activateWindow();
|
w->activateWindow();
|
||||||
w->raise();
|
w->raise();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleCloseWindowShortcut(QWidget* w)
|
void handleCloseWindowShortcut(QWidget* w)
|
||||||
|
|
Loading…
Add table
Reference in a new issue