qt: Add GUIUtil::bringToFront
Github-Pull: #14123
Rebased-From: 5796671e1d
This commit is contained in:
parent
0c2fb87dc1
commit
ac73c7d433
2 changed files with 32 additions and 5 deletions
|
@ -64,6 +64,14 @@
|
||||||
|
|
||||||
static fs::detail::utf8_codecvt_facet utf8;
|
static fs::detail::utf8_codecvt_facet utf8;
|
||||||
|
|
||||||
|
#if defined(Q_OS_MAC)
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
|
|
||||||
|
#include <objc/objc-runtime.h>
|
||||||
|
#include <CoreServices/CoreServices.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace GUIUtil {
|
namespace GUIUtil {
|
||||||
|
|
||||||
QString dateTimeStr(const QDateTime &date)
|
QString dateTimeStr(const QDateTime &date)
|
||||||
|
@ -357,6 +365,27 @@ bool isObscured(QWidget *w)
|
||||||
&& checkPoint(QPoint(w->width() / 2, w->height() / 2), w));
|
&& checkPoint(QPoint(w->width() / 2, w->height() / 2), w));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void bringToFront(QWidget* w)
|
||||||
|
{
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
// Force application activation on macOS. With Qt 5.4 this is required when
|
||||||
|
// an action in the dock menu is triggered.
|
||||||
|
id app = objc_msgSend((id) objc_getClass("NSApplication"), sel_registerName("sharedApplication"));
|
||||||
|
objc_msgSend(app, sel_registerName("activateIgnoringOtherApps:"), YES);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (w) {
|
||||||
|
// activateWindow() (sometimes) helps with keyboard focus on Windows
|
||||||
|
if (w->isMinimized()) {
|
||||||
|
w->showNormal();
|
||||||
|
} else {
|
||||||
|
w->show();
|
||||||
|
}
|
||||||
|
w->activateWindow();
|
||||||
|
w->raise();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void openDebugLogfile()
|
void openDebugLogfile()
|
||||||
{
|
{
|
||||||
fs::path pathDebug = GetDataDir() / "debug.log";
|
fs::path pathDebug = GetDataDir() / "debug.log";
|
||||||
|
@ -682,13 +711,8 @@ bool SetStartOnSystemStartup(bool fAutoStart)
|
||||||
|
|
||||||
|
|
||||||
#elif defined(Q_OS_MAC)
|
#elif defined(Q_OS_MAC)
|
||||||
#pragma GCC diagnostic push
|
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
|
||||||
// based on: https://github.com/Mozketo/LaunchAtLoginController/blob/master/LaunchAtLoginController.m
|
// based on: https://github.com/Mozketo/LaunchAtLoginController/blob/master/LaunchAtLoginController.m
|
||||||
|
|
||||||
#include <CoreFoundation/CoreFoundation.h>
|
|
||||||
#include <CoreServices/CoreServices.h>
|
|
||||||
|
|
||||||
LSSharedFileListItemRef findStartupItemInList(LSSharedFileListRef list, CFURLRef findUrl);
|
LSSharedFileListItemRef findStartupItemInList(LSSharedFileListRef list, CFURLRef findUrl);
|
||||||
LSSharedFileListItemRef findStartupItemInList(LSSharedFileListRef list, CFURLRef findUrl)
|
LSSharedFileListItemRef findStartupItemInList(LSSharedFileListRef list, CFURLRef findUrl)
|
||||||
{
|
{
|
||||||
|
|
|
@ -115,6 +115,9 @@ namespace GUIUtil
|
||||||
// Determine whether a widget is hidden behind other windows
|
// Determine whether a widget is hidden behind other windows
|
||||||
bool isObscured(QWidget *w);
|
bool isObscured(QWidget *w);
|
||||||
|
|
||||||
|
// Activate, show and raise the widget
|
||||||
|
void bringToFront(QWidget* w);
|
||||||
|
|
||||||
// Open debug.log
|
// Open debug.log
|
||||||
void openDebugLogfile();
|
void openDebugLogfile();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue