diff --git a/ui/controller/controller.go b/ui/controller/controller.go index ff08312..de826bb 100644 --- a/ui/controller/controller.go +++ b/ui/controller/controller.go @@ -71,6 +71,10 @@ func (m *Controller) QueueShowModalFunc(f func()) { } } +func (m *Controller) HaveModal() bool { + return m.haveModal +} + func (m *Controller) ShowPopUpImage(img image.Image) { im := canvas.NewImageFromImage(img) im.FillMode = canvas.ImageFillContain diff --git a/ui/mainwindow.go b/ui/mainwindow.go index 3a2842c..65ffd26 100644 --- a/ui/mainwindow.go +++ b/ui/mainwindow.go @@ -23,6 +23,7 @@ import ( var ( ShortcutReload = desktop.CustomShortcut{KeyName: fyne.KeyR, Modifier: os.ControlModifier} ShortcutSearch = desktop.CustomShortcut{KeyName: fyne.KeyF, Modifier: os.ControlModifier} + ShortcutQuickSearch = desktop.CustomShortcut{KeyName: fyne.KeyG, Modifier: os.ControlModifier} ShortcutCloseWindow = desktop.CustomShortcut{KeyName: fyne.KeyW, Modifier: os.ControlModifier} ShortcutNavOne = desktop.CustomShortcut{KeyName: fyne.Key1, Modifier: os.ControlModifier} @@ -249,10 +250,19 @@ func (m *MainWindow) addShortcuts() { m.BrowsingPane.Reload() }) m.Canvas().AddShortcut(&ShortcutSearch, func(_ fyne.Shortcut) { + if m.Controller.HaveModal() { + // Do not focus search widget behind modal dialog + return + } if s := m.BrowsingPane.GetSearchBarIfAny(); s != nil { m.Window.Canvas().Focus(s) } }) + m.Canvas().AddShortcut(&ShortcutQuickSearch, func(_ fyne.Shortcut) { + if !m.Controller.HaveModal() { + m.Controller.ShowQuickSearch() + } + }) m.Canvas().AddShortcut(&fyne.ShortcutSelectAll{}, func(_ fyne.Shortcut) { m.BrowsingPane.SelectAll() })