diff --git a/src/Config.ahk b/src/Config.ahk index 56a2f5b..f5a04d2 100644 --- a/src/Config.ahk +++ b/src/Config.ahk @@ -388,6 +388,7 @@ Config_saveSession() { #+x::Manager_maximizeWindow() ; Move and resize the active window to the size of the work area (only floating windows). #i::Manager_getWindowInfo() ; Get information for the active window (id, title, class, process name, style, geometry, tags and floating state). #+i::Manager_getWindowList() ; Get a window list for the active view (id, title and class). +#^i::Manager_logWindowList() #Tab::View_setLayout(-1) ; Set the previously set layout. You may also use View_setLayout(">") for setting the next layout in the layout array. #\::View_setLayout(3) ; Set the 3rd defined layout (i. e. floating layout in the default configuration). diff --git a/src/Log.ahk b/src/Log.ahk index 9daef4e..0785807 100755 --- a/src/Log.ahk +++ b/src/Log.ahk @@ -22,4 +22,7 @@ Log_msg( message ) { FormatTime, CurrentTime, , yyyyMMddHHmmss FileAppend, %CurrentTime% %message%`r`n, bugn_log.txt } - \ No newline at end of file + +Log_bare( message ) { + FileAppend, %message%`r`n, bugn_log.txt +} \ No newline at end of file diff --git a/src/Manager.ahk b/src/Manager.ahk index 78f50ad..1c108bc 100644 --- a/src/Manager.ahk +++ b/src/Manager.ahk @@ -238,6 +238,48 @@ Manager_getWindowList() { Clipboard := text } +Manager_logWindowInfo( w ) { + Local av, aWndId, aIsWinFocus, aIsBugnActive, aIsFloating, aIsHidden, aWndTitle, aWndStyle, aWndX, aWndY, aWndW, aWndH + + WinGet, aWndId, ID, A + If aWndId = %w% + aIsWinFocus := "*" + Else + aIsWinFocus := " " + av := Monitor_#%Manager_aMonitor%_aView_#1 + If View_#%Manager_aMonitor%_#%av%_aWndId = %w% + aIsBugnActive := "*" + Else + aIsBugnActive := " " + WinGetTitle, aWndTitle, ahk_id %w% + If InStr(Bar_hiddenWndIds, w) + aIsHidden := "*" + Else + aIsHidden := " " + If Manager_#%w%_isFloating + aIsFloating := "*" + Else + aIsFloating := " " + WinGet, aWndStyle, Style, ahk_id %w% + WinGetPos, aWndX, aWndY, aWndW, aWndH, ahk_id %w% + + Log_bare(" " . w . "`t" . aIsBugnActive . " " . aIsFloating . " " . aIsHidden . " " aIsWinFocus . "`t" . aWndX . "`t" . aWndY . "`t" . aWndW . "`t" . aWndH . "`t" . aWndStyle . "`t" . aWndTitle) +} + +Manager_logWindowList() { + Local text, v, aWndId, wndIds, aWndTitle + + v := Monitor_#%Manager_aMonitor%_aView_#1 + Log_msg( "Window dump for active view (" . Manager_aMonitor . ", " . v . ")" ) + Log_bare( " ID`t`tA F H W`tX`tY`tW`tH`tStyle`t`tTitle") + + StringTrimRight, wndIds, View_#%Manager_aMonitor%_#%v%_wndIds, 1 + Loop, PARSE, wndIds, `; + { + Manager_logWindowInfo( A_LoopField ) + } +} + Manager_lockWorkStation() { Global Config_shellMsgDelay @@ -536,6 +578,7 @@ Manager_sync(ByRef wndIds = "") { shownWndIds .= View_#%A_Index%_#%v%_wndIds } ; check all visible windows against the known windows + ; DetectHiddenWindows, On WinGet, wndId, List, , , Loop, % wndId { If Not InStr(shownWndIds, wndId%A_Index% ";") { diff --git a/src/Monitor.ahk b/src/Monitor.ahk index 5a9e422..b274077 100644 --- a/src/Monitor.ahk +++ b/src/Monitor.ahk @@ -73,16 +73,16 @@ Monitor_activateView(v) { Monitor_#%m%_aView_#1 := v Manager_hideShow := True - StringTrimRight, wndIds, View_#%m%_#%aView%_wndIds, 1 - Loop, PARSE, wndIds, `; - If Not (Manager_#%A_LoopField%_tags & (1 << v - 1)) - WinHide, ahk_id %A_LoopField% StringTrimRight, wndIds, View_#%m%_#%v%_wndIds, 1 DetectHiddenWindows, On View_arrange(m, v) DetectHiddenWindows, Off Loop, PARSE, wndIds, `; WinShow, ahk_id %A_LoopField% + StringTrimRight, wndIds, View_#%m%_#%aView%_wndIds, 1 + Loop, PARSE, wndIds, `; + If Not (Manager_#%A_LoopField%_tags & (1 << v - 1)) + WinHide, ahk_id %A_LoopField% Manager_hideShow := False Bar_updateView(m, aView)