mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-19 21:03:23 -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)
|
ifeq ($(platform),Darwin)
|
||||||
LUAPLATFORM = macosx
|
LUAPLATFORM = macosx
|
||||||
OBJCSRCS = util_darwin.m
|
OBJCSRCS = util_darwin.m
|
||||||
LDFLAGS += -framework Foundation
|
LDFLAGS += -framework Foundation -framework AppKit
|
||||||
else
|
else
|
||||||
LUALIB += -ldl
|
LUALIB += -ldl
|
||||||
LDLIBS += -ltermcap -lncurses
|
LDLIBS += -ltermcap -lncurses
|
||||||
|
|
|
@ -26,6 +26,10 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "proxgui.h"
|
#include "proxgui.h"
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "util_darwin.h"
|
||||||
|
}
|
||||||
//#include <ctime>
|
//#include <ctime>
|
||||||
|
|
||||||
bool g_useOverlays = false;
|
bool g_useOverlays = false;
|
||||||
|
@ -60,7 +64,12 @@ void ProxGuiQT::_ShowGraphWindow(void)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!plotwidget)
|
if (!plotwidget)
|
||||||
|
{
|
||||||
|
#if defined(__MACH__) && defined(__APPLE__)
|
||||||
|
makeFocusable();
|
||||||
|
#endif
|
||||||
plotwidget = new ProxWidget();
|
plotwidget = new ProxWidget();
|
||||||
|
}
|
||||||
|
|
||||||
plotwidget->show();
|
plotwidget->show();
|
||||||
}
|
}
|
||||||
|
@ -108,6 +117,11 @@ void ProxGuiQT::MainLoop()
|
||||||
//start proxmark thread after starting event loop
|
//start proxmark thread after starting event loop
|
||||||
QTimer::singleShot(200, this, SLOT(_StartProxmarkThread()));
|
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();
|
plotapp->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,4 +14,7 @@
|
||||||
void disableAppNap(const char* reason);
|
void disableAppNap(const char* reason);
|
||||||
void enableAppNap();
|
void enableAppNap();
|
||||||
|
|
||||||
|
void makeUnfocusable();
|
||||||
|
void makeFocusable();
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
#import <Foundation/NSString.h>
|
#import <Foundation/NSString.h>
|
||||||
#import <Foundation/NSProcessInfo.h>
|
#import <Foundation/NSProcessInfo.h>
|
||||||
|
#import <AppKit/NSApplication.h>
|
||||||
|
|
||||||
static id activity = nil;
|
static id activity = nil;
|
||||||
|
|
||||||
|
@ -38,3 +39,17 @@ void enableAppNap() {
|
||||||
void disableAppNap(const char* reason) { }
|
void disableAppNap(const char* reason) { }
|
||||||
void enableAppNap() { }
|
void enableAppNap() { }
|
||||||
#endif
|
#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