From e17498d267342b02611aafb559134586b3bc9d51 Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Wed, 22 Mar 2023 17:26:17 -0700 Subject: [PATCH] add Cmd+[ Cmd+] shortcuts on Mac --- ui/mainwindow.go | 29 ++++++++++++++++------------- ui/os/keymodifiers_darwin.go | 14 +++++++++++++- ui/os/keymodifiers_default.go | 11 ++++++++++- 3 files changed, 39 insertions(+), 15 deletions(-) diff --git a/ui/mainwindow.go b/ui/mainwindow.go index 1683c56..2dd9eb8 100644 --- a/ui/mainwindow.go +++ b/ui/mainwindow.go @@ -15,10 +15,8 @@ import ( ) var ( - ShortcutBack = desktop.CustomShortcut{KeyName: fyne.KeyLeft, Modifier: os.AltModifier} - ShortcutForward = desktop.CustomShortcut{KeyName: fyne.KeyRight, Modifier: os.AltModifier} - ShortcutReload = desktop.CustomShortcut{KeyName: fyne.KeyR, Modifier: os.ControlModifier} - ShortcutSearch = desktop.CustomShortcut{KeyName: fyne.KeyF, Modifier: os.ControlModifier} + ShortcutReload = desktop.CustomShortcut{KeyName: fyne.KeyR, Modifier: os.ControlModifier} + ShortcutSearch = desktop.CustomShortcut{KeyName: fyne.KeyF, Modifier: os.ControlModifier} ShortcutNavOne = desktop.CustomShortcut{KeyName: fyne.Key1, Modifier: os.ControlModifier} ShortcutNavTwo = desktop.CustomShortcut{KeyName: fyne.Key2, Modifier: os.ControlModifier} @@ -118,15 +116,20 @@ func (m *MainWindow) addNavigationButtons() { } func (m *MainWindow) addShortcuts() { - m.Canvas().AddShortcut(&ShortcutBack, func(_ fyne.Shortcut) { - m.BrowsingPane.GoBack() - // TODO: reset focus only if something inside the page had focus - m.Canvas().Focus(nil) - }) - m.Canvas().AddShortcut(&ShortcutForward, func(_ fyne.Shortcut) { - m.BrowsingPane.GoForward() - m.Canvas().Focus(nil) - }) + for _, sh := range os.BackShortcuts { + m.Canvas().AddShortcut(&sh, func(_ fyne.Shortcut) { + m.BrowsingPane.GoBack() + // TODO: reset focus only if something inside the page had focus + m.Canvas().Focus(nil) + }) + } + for _, sh := range os.ForwardShortcuts { + m.Canvas().AddShortcut(&sh, func(_ fyne.Shortcut) { + m.BrowsingPane.GoForward() + m.Canvas().Focus(nil) + }) + } + m.Canvas().AddShortcut(&ShortcutReload, func(_ fyne.Shortcut) { m.BrowsingPane.Reload() }) diff --git a/ui/os/keymodifiers_darwin.go b/ui/os/keymodifiers_darwin.go index 2d3423b..b25f262 100644 --- a/ui/os/keymodifiers_darwin.go +++ b/ui/os/keymodifiers_darwin.go @@ -4,9 +4,21 @@ package os import ( "fyne.io/fyne/v2" + "fyne.io/fyne/v2/driver/desktop" ) -var ( +const ( ControlModifier = fyne.KeyModifierSuper AltModifier = fyne.KeyModifierSuper ) + +var ( + BackShortcuts = []desktop.CustomShortcut{ + {Modifier: fyne.KeyModifierSuper, KeyName: fyne.KeyLeft}, + {Modifier: fyne.KeyModifierSuper, KeyName: fyne.KeyLeftBracket}, + } + ForwardShortcuts = []desktop.CustomShortcut{ + {Modifier: fyne.KeyModifierSuper, KeyName: fyne.KeyRight}, + {Modifier: fyne.KeyModifierSuper, KeyName: fyne.KeyRightBracket}, + } +) diff --git a/ui/os/keymodifiers_default.go b/ui/os/keymodifiers_default.go index 20ffcf7..c50a935 100644 --- a/ui/os/keymodifiers_default.go +++ b/ui/os/keymodifiers_default.go @@ -4,7 +4,16 @@ package os import "fyne.io/fyne/v2" -var ( +const ( ControlModifier = fyne.KeyModifierControl AltModifier = fyne.KeyModifierAlt ) + +var ( + BackShortcuts = []desktop.CustomShortcut{ + {Modifier: fyne.KeyModifierAlt, KeyName: fyne.KeyLeft}, + } + ForwardShortcuts = []desktop.CustomShortcut{ + {Modifier: fyne.KeyModifierAlt, KeyName: fyne.KeyRight}, + } +)