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;
|
||||
|
||||
#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 {
|
||||
|
||||
QString dateTimeStr(const QDateTime &date)
|
||||
|
@ -357,6 +365,27 @@ bool isObscured(QWidget *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()
|
||||
{
|
||||
fs::path pathDebug = GetDataDir() / "debug.log";
|
||||
|
@ -682,13 +711,8 @@ bool SetStartOnSystemStartup(bool fAutoStart)
|
|||
|
||||
|
||||
#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
|
||||
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#include <CoreServices/CoreServices.h>
|
||||
|
||||
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
|
||||
bool isObscured(QWidget *w);
|
||||
|
||||
// Activate, show and raise the widget
|
||||
void bringToFront(QWidget* w);
|
||||
|
||||
// Open debug.log
|
||||
void openDebugLogfile();
|
||||
|
||||
|
|
Loading…
Reference in a new issue