diff --git a/src/Config.ahk b/src/Config.ahk index 997c30f..6383417 100644 --- a/src/Config.ahk +++ b/src/Config.ahk @@ -89,7 +89,7 @@ Config_init() Config_ruleCount := 12 ;; This variable has to be set to the total number of active rules above. ;; Configuration management - Config_autoSaveSession := False + Config_autoSaveSession := "auto" ;; "off" | "auto" | "ask" ; @todo: To be removed? If Not Config_filePath ; The file path, to which the configuration and session is saved. This target directory must be writable by the user (%A_ScriptDir% is the diretory, in which "Main.ahk" or the executable of bug.n is saved). Config_filePath := A_ScriptDir "\Config.ini" diff --git a/src/Main.ahk b/src/Main.ahk index d2a6b1a..5b95ccc 100644 --- a/src/Main.ahk +++ b/src/Main.ahk @@ -62,8 +62,9 @@ Return ;; end of the auto-execute section ;; Function & label definitions Main_cleanup: Debug_logMessage("====== Cleaning up ======", 0) - If Config_autoSaveSession - Config_saveSession(Config_filePath, Config_filePath) + ;; Config_autoSaveSession as False is deprecated. + If Not (Config_autoSaveSession = "off") And Not (Config_autoSaveSession = "False") + Manager_saveState() Manager_cleanup() ResourceMonitor_cleanup() Debug_logMessage("====== Exiting bug.n ======", 0) diff --git a/src/Manager.ahk b/src/Manager.ahk index 9b6fa38..24018e2 100644 --- a/src/Manager.ahk +++ b/src/Manager.ahk @@ -20,7 +20,7 @@ Manager_init() { - Global + Local doRestore Manager_setWindowBorder() Bar_getHeight() @@ -31,10 +31,23 @@ Manager_init() Manager_aMonitor := 1 Manager_taskBarMonitor := "" Manager_showTaskBar := True + + doRestore := 0 + If (Config_autoSaveSession = "ask") + { + MsgBox, 0x4, , Would you like to restore an auto-saved session? + IfMsgBox Yes + doRestore := 1 + } + Else If (Config_autoSaveSession = "auto") + { + doRestore := 1 + } + SysGet, Manager_monitorCount, MonitorCount Loop, % Manager_monitorCount { - Monitor_init(A_Index) + Monitor_init(A_Index, doRestore) } Bar_initCmdGui() If Not Config_showTaskBar @@ -45,7 +58,7 @@ Manager_init() Bar_hideTitleWndIds := "" Manager_allWndIds := "" Manager_managedWndIds := "" - Manager_initial_sync() + Manager_initial_sync(doRestore) Bar_updateStatus() Bar_updateTitle() @@ -70,27 +83,43 @@ Manager_maintenance_label: Manager_maintenance() Return -Manager_maintenance() { - Local tmp - ;Debug_logMessage("Manager_maintenance", 2) +Manager_saveState() +{ + Global + Critical + ;Debug_logMessage("Manager_saveState", 0) ; @todo: Check for changes to the layout. - ;If Manager_layoutDirty { + ;If Manager_layoutDirty + ;{ ;Debug_logMessage("Saving layout state: " . Main_autoLayout, 0) Config_saveSession(Config_filaPath, Main_autoLayout) Manager_layoutDirty := 0 ;} - - ; @todo: Manager_sync? - + ; @todo: Check for changes to windows. - ;If Manager_windowsDirty { + ;If Manager_windowsDirty + ;{ ;Debug_logMessage("Saving window state: " . Main_autoWindowState, 0) Manager_saveWindowState(Main_autoWindowState, Manager_monitorCount, Config_viewCount) Manager_windowsDirty := 0 ;} } +Manager_maintenance() +{ + Local tmp + Critical + ;Debug_logMessage("Manager_maintenance", 0) + + ; @todo: Manager_sync? + + Manager__displaySync() + + If Not (Config_autoSaveSession = "off") And Not (Config_autoSaveSession = "False") + Manager_saveState() +} + Manager_activateMonitor(d) { Local aView, aWndHeight, aWndId, aWndWidth, aWndX, aWndY, v, wndId @@ -1055,7 +1084,7 @@ Manager__restoreWindowState(filename) ; No windows are known to the system yet. ; Try to do something smart with the initial layout. -Manager_initial_sync() +Manager_initial_sync(doRestore) { Local wndId0, wnd, wndX, wndY, wndW, wndH, x, y, m, len @@ -1068,7 +1097,10 @@ Manager_initial_sync() ;; Use saved window placement settings to first determine ;; which monitor/view a window should be attached to. - Manager__restoreWindowState(Main_autoWindowState) + If doRestore + { + Manager__restoreWindowState(Main_autoWindowState) + } ;; Check all remaining visible windows against the known windows WinGet, wndId, List, , , diff --git a/src/Monitor.ahk b/src/Monitor.ahk index 6da6bfb..fb6cd63 100644 --- a/src/Monitor.ahk +++ b/src/Monitor.ahk @@ -18,7 +18,7 @@ @version 8.3.0 */ -Monitor_init(m) +Monitor_init(m, doRestore) { Global @@ -29,7 +29,10 @@ Monitor_init(m) { View_init(m, A_Index) } - Config_restoreLayout(Main_autoLayout, m) + If doRestore + Config_restoreLayout(Main_autoLayout, m) + Else + Config_restoreLayout(Config_filePath, m) Monitor_getWorkArea(m) Bar_init(m) }