diff --git a/src/Bar.ahk b/src/Bar.ahk index a1fc9dc..305cdf9 100644 --- a/src/Bar.ahk +++ b/src/Bar.ahk @@ -284,12 +284,12 @@ Bar_GuiClick: If (A_GuiEvent = "Normal") { If (SubStr(A_GuiControl, -13) = "_shebang_event") { If Not Bar_cmdGuiIsVisible - If Not (SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_#", False, 0) - 6) = Manager_aMonitor) - Manager_activateMonitor(SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_#", False, 0) - 6)) + If Not (SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_", False, 6) - 6) = Manager_aMonitor) + Manager_activateMonitor(SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_", False, 6) - 6)) Bar_toggleCommandGui() } Else { - If Not (SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_#", False, 0) - 6) = Manager_aMonitor) - Manager_activateMonitor(SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_#", False, 0) - 6)) + If Not (SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_", False, 6) - 6) = Manager_aMonitor) + Manager_activateMonitor(SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_", False, 6) - 6)) If (SubStr(A_GuiControl, -12) = "_layout_event") View_setLayout(-1) Else If InStr(A_GuiControl, "_view_#") And (SubStr(A_GuiControl, -5) = "_event") @@ -302,12 +302,12 @@ Bar_GuiContextMenu: Manager_winActivate(Bar_aWndId) If (A_GuiEvent = "RightClick") { If (SubStr(A_GuiControl, -12) = "_layout_event") { - If Not (SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_#", False, 0) - 6) = Manager_aMonitor) - Manager_activateMonitor(SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_#", False, 0) - 6)) + If Not (SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_", False, 6) - 6) = Manager_aMonitor) + Manager_activateMonitor(SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_", False, 6) - 6)) View_setLayout(0, +1) } Else If InStr(A_GuiControl, "_view_#") And (SubStr(A_GuiControl, -5) = "_event") { - If Not (SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_#", False, 0) - 6) = Manager_aMonitor) - Manager_setWindowMonitor(SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_#", False, 0) - 6)) + If Not (SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_", False, 6) - 6) = Manager_aMonitor) + Manager_setWindowMonitor(SubStr(A_GuiControl, 6, InStr(A_GuiControl, "_", False, 6) - 6)) Monitor_setWindowTag(SubStr(A_GuiControl, InStr(A_GuiControl, "_view_#", False, 0) + 7, 1)) } } @@ -342,8 +342,8 @@ Bar_toggleCommandGui() Else { Bar_cmdGuiIsVisible := True - x := Monitor_#%Manager_aMonitor%_barX + Monitor_#%Manager_aMonitor%_barWidth - Bar_#0_#0W - If (Config_verticalBarPos = "top") Or (Config_verticalBarPos = "tray") And (Manager_taskBarPos = "top" Or Not Monitor_#%Manager_aMonitor%_taskBarClass) + x := Monitor_#%Manager_aMonitor%_x + Monitor_#%Manager_aMonitor%_barX + Monitor_#%Manager_aMonitor%_barWidth - Bar_#0_#0W + If (Config_verticalBarPos = "top") Or (Config_verticalBarPos = "tray") And (Monitor_%Manager_aMonitor%_taskBarPos = "top" Or Not Monitor_#%Manager_aMonitor%_taskBarClass) y := Monitor_#%Manager_aMonitor%_y Else y := Monitor_#%Manager_aMonitor%_y + Monitor_#%Manager_aMonitor%_height - Bar_#0_#0H @@ -375,6 +375,13 @@ Bar_updateLayout(m) { GuiControl, %GuiN%: , Bar_#%m%_layout, % View_#%m%_#%aView%_layoutSymbol } +Bar_updateStatic(m) { + Local GuiN + + GuiN := (m - 1) + 1 + GuiControl, %GuiN%: , Bar_#%m%_shebang, #! +} + Bar_updateStatus() { Local anyContent, anyText, bat1, bat2, bat3, GuiN, m, mute, vol @@ -484,7 +491,7 @@ Bar_updateView(m, v) { GuiControl, +c%Config_fontColor_#1_#1%, Bar_#%m%_view_#%v% } - Loop, %Config_viewCount% { + Loop, % Config_viewCount { StringTrimRight, wndIds, View_#%m%_#%A_Index%_wndIds, 1 StringSplit, wndId, wndIds, `; GuiControl, , Bar_#%m%_view_#%A_Index%_highlighted, % wndId0 / managedWndId0 * 100 ;; Update the percentage fill for the view. diff --git a/src/Manager.ahk b/src/Manager.ahk index ec0bcda..a619af2 100644 --- a/src/Manager.ahk +++ b/src/Manager.ahk @@ -476,7 +476,7 @@ WINDOW_NOTICE := 32774 Windows events can't always be caught. */ Manager_onShellMessage(wParam, lParam) { - Local a, isChanged, aWndClass, aWndHeight, aWndId, aWndTitle, aWndWidth, aWndX, aWndY, m, t, wndClass, wndId, wndId0, wndIds, wndPName, wndTitle, x, y + Local a, isChanged, aWndClass, aWndHeight, aWndId, aWndTitle, aWndWidth, aWndX, aWndY, i, m, t, wndClass, wndId, wndId0, wndIds, wndPName, wndTitle, x, y SetFormat, Integer, hex lParam := lParam+0 @@ -592,7 +592,21 @@ Manager_onShellMessage(wParam, lParam) { } } - Bar_updateTitle() + ;; This is a workaround for a redrawing problem of the bug.n bar, which + ;; seems to get lost, when windows are created or destroyed under the + ;; following conditions. + If (Manager_monitorCount > 1) And (Config_verticalBarPos = "tray") { + Loop, % (Manager_monitorCount - 1) { + i := A_Index + 1 + Bar_updateLayout(i) + Bar_updateStatic(i) + Loop, % Config_viewCount + Bar_updateView(i, A_Index) + } + Bar_updateStatus() + Bar_updateTitle() + } Else + Bar_updateTitle() } } diff --git a/src/Monitor.ahk b/src/Monitor.ahk index fb5eb46..e6091d1 100644 --- a/src/Monitor.ahk +++ b/src/Monitor.ahk @@ -21,6 +21,7 @@ Monitor_init(m, doRestore) { Monitor_#%m%_showBar := Config_showBar Monitor_#%m%_showTaskBar := Config_showTaskBar Monitor_#%m%_taskBarClass := "" + Monitor_%m%_taskBarPos := "" Loop, % Config_viewCount View_init(m, A_Index) If doRestore @@ -148,8 +149,8 @@ Monitor_getWorkArea(m) { ;; Top wndHeight += wndY - monitorTop monitorTop += wndHeight - If (A_LoopField = "Shell_TrayWnd") - Manager_taskBarPos := "top" + If (A_LoopField = "Shell_TrayWnd") Or (A_LoopField = "Shell_SecondaryTrayWnd") + Monitor_%m%_taskBarPos := "top" } Else { ;; Bottom wndHeight := monitorBottom - wndY