mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-14 02:26:59 -07:00
osx: fix annoying focus behaviour (#689)
OS X has a global menu bar and a per app dock icon. Therefore, all GUI applications launched from a terminal will become focused - even if they don’t show any windows. Thereby the terminal loses focus. Since is it very annoying to re-focus the terminal after each proxmark client launch, this change makes the client unfocusable during launch and restores the regular behaviour when a window is created.
This commit is contained in:
parent
2a53731106
commit
b742ab8cc3
4 changed files with 33 additions and 1 deletions
|
@ -42,7 +42,7 @@ else
|
|||
ifeq ($(platform),Darwin)
|
||||
LUAPLATFORM = macosx
|
||||
OBJCSRCS = util_darwin.m
|
||||
LDFLAGS += -framework Foundation
|
||||
LDFLAGS += -framework Foundation -framework AppKit
|
||||
else
|
||||
LUALIB += -ldl
|
||||
LDLIBS += -ltermcap -lncurses
|
||||
|
|
|
@ -26,6 +26,10 @@
|
|||
#include <string.h>
|
||||
#include "proxgui.h"
|
||||
#include <QtGui>
|
||||
|
||||
extern "C" {
|
||||
#include "util_darwin.h"
|
||||
}
|
||||
//#include <ctime>
|
||||
|
||||
bool g_useOverlays = false;
|
||||
|
@ -60,7 +64,12 @@ void ProxGuiQT::_ShowGraphWindow(void)
|
|||
return;
|
||||
|
||||
if (!plotwidget)
|
||||
{
|
||||
#if defined(__MACH__) && defined(__APPLE__)
|
||||
makeFocusable();
|
||||
#endif
|
||||
plotwidget = new ProxWidget();
|
||||
}
|
||||
|
||||
plotwidget->show();
|
||||
}
|
||||
|
@ -108,6 +117,11 @@ void ProxGuiQT::MainLoop()
|
|||
//start proxmark thread after starting event loop
|
||||
QTimer::singleShot(200, this, SLOT(_StartProxmarkThread()));
|
||||
|
||||
#if defined(__MACH__) && defined(__APPLE__)
|
||||
//Prevent the terminal from loosing focus during launch by making the client unfocusable
|
||||
makeUnfocusable();
|
||||
#endif
|
||||
|
||||
plotapp->exec();
|
||||
}
|
||||
|
||||
|
|
|
@ -14,4 +14,7 @@
|
|||
void disableAppNap(const char* reason);
|
||||
void enableAppNap();
|
||||
|
||||
void makeUnfocusable();
|
||||
void makeFocusable();
|
||||
|
||||
#endif
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
#import <Foundation/NSString.h>
|
||||
#import <Foundation/NSProcessInfo.h>
|
||||
#import <AppKit/NSApplication.h>
|
||||
|
||||
static id activity = nil;
|
||||
|
||||
|
@ -38,3 +39,17 @@ void enableAppNap() {
|
|||
void disableAppNap(const char* reason) { }
|
||||
void enableAppNap() { }
|
||||
#endif
|
||||
|
||||
//OS X Version 10.6 is defined in OS X 10.6 and later
|
||||
#if defined(MAC_OS_X_VERSION_10_6)
|
||||
void makeUnfocusable() {
|
||||
[NSApp setActivationPolicy:NSApplicationActivationPolicyProhibited];
|
||||
}
|
||||
|
||||
void makeFocusable() {
|
||||
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
|
||||
}
|
||||
#else
|
||||
void makeUnfocusable() { }
|
||||
void makeFocusable() { }
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue