From 5ccc3ec3522c1c1c1fbb4f2fa7ccce7e624d47d3 Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Fri, 8 Mar 2019 21:02:25 +0100 Subject: [PATCH] [UX] Gesture manager: allow folder shortcuts as action in Reader (#4759) Note that `self.ui:onClose()` properly closes open documents. There might be similar pieces of code around that don't do that. Fixes #4755. --- .../apps/filemanager/filemanagershortcuts.lua | 17 ++++++++++++++--- frontend/apps/reader/modules/readergesture.lua | 2 +- frontend/apps/reader/readerui.lua | 6 ++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/frontend/apps/filemanager/filemanagershortcuts.lua b/frontend/apps/filemanager/filemanagershortcuts.lua index 3de447bf5..11b1faba3 100644 --- a/frontend/apps/filemanager/filemanagershortcuts.lua +++ b/frontend/apps/filemanager/filemanagershortcuts.lua @@ -190,13 +190,24 @@ function FileManagerShortcuts:deleteFolderShortcut(item) end function FileManagerShortcuts:onShowFolderShortcutsDialog() - local fm_bookmark = FileManagerShortcuts:new{ + local fm_bookmark = self:new{ title = _("Folder shortcuts"), show_parent = self.ui, - curr_path = self.ui.file_chooser.path, + curr_path = self.ui.file_chooser and self.ui.file_chooser.path or self.ui:getLastDirFile(), goFolder = function(folder) if folder ~= nil and lfs.attributes(folder, "mode") == "directory" then - self.ui.file_chooser:changeToPath(folder) + if self.ui.file_chooser then + self.ui.file_chooser:changeToPath(folder) + else -- called from Reader + local FileManager = require("apps/filemanager/filemanager") + + self.ui:onClose() + if FileManager.instance then + FileManager.instance:reinit(folder) + else + FileManager:showFiles(folder) + end + end end end, } diff --git a/frontend/apps/reader/modules/readergesture.lua b/frontend/apps/reader/modules/readergesture.lua index 47cca7cf3..12ebe86a1 100644 --- a/frontend/apps/reader/modules/readergesture.lua +++ b/frontend/apps/reader/modules/readergesture.lua @@ -315,7 +315,7 @@ function ReaderGesture:buildMenu(ges, default) {"clear_location_history", not self.is_docless, true}, {"folder_up", self.is_docless}, - {"folder_shortcuts", self.is_docless, true}, + {"folder_shortcuts", true, true}, { "toc", not self.is_docless}, {"bookmarks", not self.is_docless}, diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index 0a0ae74f9..fd3107311 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -13,6 +13,7 @@ local Event = require("ui/event") local FileManagerBookInfo = require("apps/filemanager/filemanagerbookinfo") local FileManagerHistory = require("apps/filemanager/filemanagerhistory") local FileManagerFileSearcher = require("apps/filemanager/filemanagerfilesearcher") +local FileManagerShortcuts = require("apps/filemanager/filemanagershortcuts") local InfoMessage = require("ui/widget/infomessage") local InputContainer = require("ui/widget/container/inputcontainer") local InputDialog = require("ui/widget/inputdialog") @@ -336,6 +337,11 @@ function ReaderUI:init() dialog = self.dialog, ui = self, }) + -- folder shortcuts + self:registerModule("folder_shortcuts", FileManagerShortcuts:new{ + dialog = self.dialog, + ui = self, + }) -- history view self:registerModule("history", FileManagerHistory:new{ dialog = self.dialog,