fix: 设为纯托盘应用,启动不再在Dock显示图标
将Info.plist的LSUIElement改为true,应用以accessory模式启动, 永不显示Dock图标和系统菜单栏。移除运行时切换Dock可见性的 showDockIcon()/hideDockIcon()及其C实现setDockIconVisible, 这些调用在accessory模式下已无意义。activateApp()保留用于 窗口置于前台获取焦点。
This commit is contained in:
@@ -130,7 +130,6 @@ func Run() {
|
|||||||
fyne.Do(func() {
|
fyne.Do(func() {
|
||||||
a.windowHidden = false
|
a.windowHidden = false
|
||||||
activateApp()
|
activateApp()
|
||||||
showDockIcon()
|
|
||||||
a.window.Show()
|
a.window.Show()
|
||||||
a.window.RequestFocus()
|
a.window.RequestFocus()
|
||||||
})
|
})
|
||||||
@@ -149,7 +148,6 @@ func Run() {
|
|||||||
if a.windowHidden {
|
if a.windowHidden {
|
||||||
a.windowHidden = false
|
a.windowHidden = false
|
||||||
activateApp()
|
activateApp()
|
||||||
showDockIcon()
|
|
||||||
fyne.Do(func() {
|
fyne.Do(func() {
|
||||||
if a.windowHidden {
|
if a.windowHidden {
|
||||||
return
|
return
|
||||||
@@ -173,7 +171,6 @@ func Run() {
|
|||||||
a.window.SetCloseIntercept(func() {
|
a.window.SetCloseIntercept(func() {
|
||||||
if cfg.CloseToTray {
|
if cfg.CloseToTray {
|
||||||
a.windowHidden = true
|
a.windowHidden = true
|
||||||
hideDockIcon()
|
|
||||||
a.window.Hide()
|
a.window.Hide()
|
||||||
} else {
|
} else {
|
||||||
a.quit()
|
a.quit()
|
||||||
|
|||||||
@@ -25,12 +25,6 @@ static BOOL appShouldHandleReopen(id self, SEL cmd, id sender, BOOL flag) {
|
|||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setDockIconVisible(int visible) {
|
|
||||||
Class cls = objc_getClass("NSApplication");
|
|
||||||
id app = ((id (*)(Class, SEL))objc_msgSend)(cls, sel_getUid("sharedApplication"));
|
|
||||||
((void (*)(id, SEL, long))objc_msgSend)(app, sel_getUid("setActivationPolicy:"), visible ? 0 : 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void cmActivateApp(void) {
|
static void cmActivateApp(void) {
|
||||||
Class cls = objc_getClass("NSApplication");
|
Class cls = objc_getClass("NSApplication");
|
||||||
id app = ((id (*)(Class, SEL))objc_msgSend)(cls, sel_getUid("sharedApplication"));
|
id app = ((id (*)(Class, SEL))objc_msgSend)(cls, sel_getUid("sharedApplication"));
|
||||||
@@ -53,9 +47,6 @@ static void cmRegisterReopenHandler(void) {
|
|||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
func showDockIcon() { C.setDockIconVisible(1) }
|
|
||||||
func hideDockIcon() { C.setDockIconVisible(0) }
|
|
||||||
|
|
||||||
func activateApp() { C.cmActivateApp() }
|
func activateApp() { C.cmActivateApp() }
|
||||||
|
|
||||||
func registerReopenHandler() { C.cmRegisterReopenHandler() }
|
func registerReopenHandler() { C.cmRegisterReopenHandler() }
|
||||||
|
|||||||
@@ -4,9 +4,6 @@ package ui
|
|||||||
|
|
||||||
var onAppActive func()
|
var onAppActive func()
|
||||||
|
|
||||||
func showDockIcon() {}
|
|
||||||
func hideDockIcon() {}
|
|
||||||
|
|
||||||
func activateApp() {}
|
func activateApp() {}
|
||||||
|
|
||||||
func registerReopenHandler() {}
|
func registerReopenHandler() {}
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ func (a *App) setupTray() {
|
|||||||
fyne.NewMenuItem(i18n.T("TrayShowWindow"), func() {
|
fyne.NewMenuItem(i18n.T("TrayShowWindow"), func() {
|
||||||
a.windowHidden = false
|
a.windowHidden = false
|
||||||
activateApp()
|
activateApp()
|
||||||
showDockIcon()
|
|
||||||
a.window.Show()
|
a.window.Show()
|
||||||
a.window.RequestFocus()
|
a.window.RequestFocus()
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>LSUIElement</key>
|
<key>LSUIElement</key>
|
||||||
<false/>
|
<true/>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSAllowsArbitraryLoads</key>
|
<key>NSAllowsArbitraryLoads</key>
|
||||||
|
|||||||
Reference in New Issue
Block a user