From ff3e5ead3927993a60741a43996e49e050825a4f Mon Sep 17 00:00:00 2001 From: joten Date: Sat, 7 Mar 2015 22:49:17 +0100 Subject: [PATCH] Added the possibility to minimize windows ... excluding them from tiling + fixed bug in doc --- bugn.exe | Bin 336896 -> 336896 bytes doc/CHANGES.md | 2 ++ doc/Default_hotkeys.md | 3 +++ doc/Used_hotkeys.md | 4 ++-- src/Config.ahk | 1 + src/Manager.ahk | 28 ++++++++++++++++++++++---- src/View.ahk | 44 ++++++++++++++++++++++++----------------- src/Window.ahk | 19 ++++++++++++++++-- 8 files changed, 75 insertions(+), 26 deletions(-) diff --git a/bugn.exe b/bugn.exe index ba9d29167fab5e15c188528340d2fe6ee43c5449..ad74993980d4685fd4ff2aaf1feb9427b19eaeb1 100644 GIT binary patch delta 12875 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 delta 12875 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 Toggle the floating status of the active window (i. e. dis- / regard it when tiling). +`#^m::Manager_minimizeWindow()` +> Minimize the active window; this implicitly makes the window floating. + `#+m::Manager_moveWindow()` > Move the active window by key (only floating windows). diff --git a/doc/Used_hotkeys.md b/doc/Used_hotkeys.md index 3059e18..5b7b346 100644 --- a/doc/Used_hotkeys.md +++ b/doc/Used_hotkeys.md @@ -31,10 +31,10 @@ There are not many special character keys, which are on both keyboards, US and D | f | x | x | | | | | | h | | | x | | | | | i | x | x | x | x | | | -| m | x | x | | | | | +| m | x | x | x | | | | | n | | x | | | | | | q | | | x | | | | -| r | | | x | x | | | +| r | | | x | | | | | s | | x | x | | | | | t | x | | x | | | | | x | | x | | | | | diff --git a/src/Config.ahk b/src/Config.ahk index b9eb444..abb189d 100644 --- a/src/Config.ahk +++ b/src/Config.ahk @@ -402,6 +402,7 @@ Config_UI_saveSession() { #+d::Window_toggleDecor() #+f::View_toggleFloatingWindow() #+m::Manager_moveWindow() +#^m::Manager_minimizeWindow() #+s::Manager_sizeWindow() #+x::Manager_maximizeWindow() #i::Manager_getWindowInfo() diff --git a/src/Manager.ahk b/src/Manager.ahk index 7df4f82..91dbfb0 100644 --- a/src/Manager.ahk +++ b/src/Manager.ahk @@ -392,6 +392,19 @@ Manager_maximizeWindow() { Window_move(aWndId, Monitor_#%Manager_aMonitor%_x, Monitor_#%Manager_aMonitor%_y, Monitor_#%Manager_aMonitor%_width, Monitor_#%Manager_aMonitor%_height) } +Manager_minimizeWindow() { + Local aView, aWndId + + WinGet, aWndId, ID, A + aView := Monitor_#%Manager_aMonitor%_aView_#1 + StringReplace, View_#%Manager_aMonitor%_#%aView%_aWndIds, View_#%Manager_aMonitor%_#%aView%_aWndIds, % aWndId ";",, All + If Not Window_#%aWndId%_isFloating + View_toggleFloatingWindow(aWndId) + Window_set(aWndId, "Bottom", "") + + Window_minimize(aWndId) +} + Manager_moveWindow() { Local aWndId, SC_MOVE, WM_SYSCOMMAND @@ -475,7 +488,6 @@ Manager_onShellMessage(wParam, lParam) { ;; The current position of the mouse cursor defines the active monitor, if the desktop has been activated. If m Manager_aMonitor := m - View_setActiveWindow(Manager_aMonitor, Monitor_#%Manager_aMonitor%_aView_#1, lParam) Bar_updateTitle() } @@ -567,6 +579,15 @@ Manager_onShellMessage(wParam, lParam) { } } + If InStr(Manager_managedWndIds, lParam ";") { + View_setActiveWindow(Manager_aMonitor, Monitor_#%Manager_aMonitor%_aView_#1, lParam) + If Window_#%lParam%_isMinimized { + Window_#%lParam%_isFloating := False + Window_#%lParam%_isMinimized := False + View_arrange(Manager_aMonitor, Monitor_#%Manager_aMonitor%_aView_#1) + } + } + ;; 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. @@ -579,9 +600,8 @@ Manager_onShellMessage(wParam, lParam) { Bar_updateView(i, A_Index) } Bar_updateStatus() - Bar_updateTitle() - } Else - Bar_updateTitle() + } + Bar_updateTitle() } } diff --git a/src/View.ahk b/src/View.ahk index 5429705..24b3568 100644 --- a/src/View.ahk +++ b/src/View.ahk @@ -68,13 +68,15 @@ View_activateWindow(i, d = 0) { Loop, % wndId0 { Debug_logMessage("DEBUG[2] Next wndId index: " . i, 2, False) wndId := wndId%i% - Window_set(wndId, "AlwaysOnTop", "On") - Window_set(wndId, "AlwaysOnTop", "Off") + If Not Window_#%wndId%_isMinimized { + Window_set(wndId, "AlwaysOnTop", "On") + Window_set(wndId, "AlwaysOnTop", "Off") - ;; If there are hung windows on the screen, we still want to be able to cycle through them. - failure := Manager_winActivate(wndId) - If Not failure - Break + ;; If there are hung windows on the screen, we still want to be able to cycle through them. + failure := Manager_winActivate(wndId) + If Not failure + Break + } i := Manager_loop(i, direction, 1, wndId0) } } @@ -144,23 +146,29 @@ View_arrange(m, v, setLayout = False) { } View_getActiveWindow(m, v) { - Local wndId + Local listId, listIds, wndId - Loop, Parse, View_#%m%_#%v%_aWndIds, `; + listIds := "aWndIds;wndIds" + Loop, Parse, listIds, `; { - If Not A_LoopField - Break - Else If Not WinExist("ahk_id" A_LoopField) - Continue - Else { - wndId := A_LoopField + listId := A_LoopField + Loop, Parse, View_#%m%_#%v%_%listId%, `; + { + If Not A_LoopField + Break + Else If Not WinExist("ahk_id" A_LoopField) Or Window_#%A_LoopField%_isMinimized + Continue + Else { + wndId := A_LoopField + Break + } + } + If wndId { + If (listId = "wndIds") + View_setActiveWindow(m, v, wndId) Break } } - If Not wndId And View_#%m%_#%v%_wndIds { - wndId := SubStr(View_#%m%_#%v%_wndIds, 1, InStr(View_#%m%_#%v%_wndIds, ";") - 1) - View_setActiveWindow(m, v, wndId) - } Return, wndId } diff --git a/src/Window.ahk b/src/Window.ahk index d950d81..0afd746 100644 --- a/src/Window.ahk +++ b/src/Window.ahk @@ -165,13 +165,28 @@ Window_maximize(wndId) { } } +Window_minimize(wndId) { + Global + + If Window_isHung(wndId) { + Debug_logMessage("DEBUG[2] Window_minimize: Potentially hung window " . wndId, 2) + Return, 1 + } Else { + WinMinimize, ahk_id %wndId% + Window_#%wndId%_isMinimized := True + Return, 0 + } +} + Window_move(wndId, x, y, width, height) { + Local wndMinMax, WM_ENTERSIZEMOVE, WM_EXITSIZEMOVE + If Window_isHung(wndId) { Debug_logMessage("DEBUG[2] Window_move: Potentially hung window " . wndId, 2) Return, 1 } Else { - WinGet, wndMin, MinMax, ahk_id %wndId% - If (wndMin = -1) + WinGet, wndMinMax, MinMax, ahk_id %wndId% + If (wndMinMax = -1 And Not Window_#%wndId%_isMinimized) WinRestore, ahk_id %wndId% }