Added the possibility to minimize windows
... excluding them from tiling + fixed bug in doc
This commit is contained in:
parent
27ee9d24bd
commit
ff3e5ead39
8 changed files with 75 additions and 26 deletions
BIN
bugn.exe
BIN
bugn.exe
Binary file not shown.
|
@ -23,6 +23,7 @@ called with the window ID as a paramater, when applying the rule.
|
||||||
8. `~` Revised the default rule set.
|
8. `~` Revised the default rule set.
|
||||||
9. `+` Added the possibility for sending commands to bug.n from another AutoHotkey script.
|
9. `+` Added the possibility for sending commands to bug.n from another AutoHotkey script.
|
||||||
10. `~` Removed the function `Main_reload` and reassigned the hotkey.
|
10. `~` Removed the function `Main_reload` and reassigned the hotkey.
|
||||||
|
11. `+` Added the possibility to minimize windows, making them floating and thereby excluded from tiling.
|
||||||
|
|
||||||
| # | Configuration variables | `-` Hotkey functions | `+` Hotkey functions |
|
| # | Configuration variables | `-` Hotkey functions | `+` Hotkey functions |
|
||||||
| ---:| ------------------------- | --------------------------------------- | ----------------------------------------------------- |
|
| ---:| ------------------------- | --------------------------------------- | ----------------------------------------------------- |
|
||||||
|
@ -82,6 +83,7 @@ called with the window ID as a paramater, when applying the rule.
|
||||||
| | `+` `Config_rule_#17` | | |
|
| | `+` `Config_rule_#17` | | |
|
||||||
| 10. | | `#^r::Main_reload()` | |
|
| 10. | | `#^r::Main_reload()` | |
|
||||||
| | | `#^+r::Reload` | `#^r::Reload` |
|
| | | `#^+r::Reload` | `#^r::Reload` |
|
||||||
|
| 11. | | | `#^m::Manager_minimizeWindow()` |
|
||||||
|
|
||||||
### 8.4.0
|
### 8.4.0
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,9 @@ window list by using the first parameter.
|
||||||
> Toggle the floating status of the active window (i. e. dis- / regard it when
|
> Toggle the floating status of the active window (i. e. dis- / regard it when
|
||||||
tiling).
|
tiling).
|
||||||
|
|
||||||
|
`#^m::Manager_minimizeWindow()`
|
||||||
|
> Minimize the active window; this implicitly makes the window floating.
|
||||||
|
|
||||||
`#+m::Manager_moveWindow()`
|
`#+m::Manager_moveWindow()`
|
||||||
> Move the active window by key (only floating windows).
|
> Move the active window by key (only floating windows).
|
||||||
|
|
||||||
|
|
|
@ -31,10 +31,10 @@ There are not many special character keys, which are on both keyboards, US and D
|
||||||
| f | x | x | | | | |
|
| f | x | x | | | | |
|
||||||
| h | | | x | | | |
|
| h | | | x | | | |
|
||||||
| i | x | x | x | x | | |
|
| i | x | x | x | x | | |
|
||||||
| m | x | x | | | | |
|
| m | x | x | x | | | |
|
||||||
| n | | x | | | | |
|
| n | | x | | | | |
|
||||||
| q | | | x | | | |
|
| q | | | x | | | |
|
||||||
| r | | | x | x | | |
|
| r | | | x | | | |
|
||||||
| s | | x | x | | | |
|
| s | | x | x | | | |
|
||||||
| t | x | | x | | | |
|
| t | x | | x | | | |
|
||||||
| x | | x | | | | |
|
| x | | x | | | | |
|
||||||
|
|
|
@ -402,6 +402,7 @@ Config_UI_saveSession() {
|
||||||
#+d::Window_toggleDecor()
|
#+d::Window_toggleDecor()
|
||||||
#+f::View_toggleFloatingWindow()
|
#+f::View_toggleFloatingWindow()
|
||||||
#+m::Manager_moveWindow()
|
#+m::Manager_moveWindow()
|
||||||
|
#^m::Manager_minimizeWindow()
|
||||||
#+s::Manager_sizeWindow()
|
#+s::Manager_sizeWindow()
|
||||||
#+x::Manager_maximizeWindow()
|
#+x::Manager_maximizeWindow()
|
||||||
#i::Manager_getWindowInfo()
|
#i::Manager_getWindowInfo()
|
||||||
|
|
|
@ -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)
|
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() {
|
Manager_moveWindow() {
|
||||||
Local aWndId, SC_MOVE, WM_SYSCOMMAND
|
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.
|
;; The current position of the mouse cursor defines the active monitor, if the desktop has been activated.
|
||||||
If m
|
If m
|
||||||
Manager_aMonitor := m
|
Manager_aMonitor := m
|
||||||
View_setActiveWindow(Manager_aMonitor, Monitor_#%Manager_aMonitor%_aView_#1, lParam)
|
|
||||||
Bar_updateTitle()
|
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
|
;; 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
|
;; seems to get lost, when windows are created or destroyed under the
|
||||||
;; following conditions.
|
;; following conditions.
|
||||||
|
@ -579,9 +600,8 @@ Manager_onShellMessage(wParam, lParam) {
|
||||||
Bar_updateView(i, A_Index)
|
Bar_updateView(i, A_Index)
|
||||||
}
|
}
|
||||||
Bar_updateStatus()
|
Bar_updateStatus()
|
||||||
Bar_updateTitle()
|
}
|
||||||
} Else
|
Bar_updateTitle()
|
||||||
Bar_updateTitle()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
44
src/View.ahk
44
src/View.ahk
|
@ -68,13 +68,15 @@ View_activateWindow(i, d = 0) {
|
||||||
Loop, % wndId0 {
|
Loop, % wndId0 {
|
||||||
Debug_logMessage("DEBUG[2] Next wndId index: " . i, 2, False)
|
Debug_logMessage("DEBUG[2] Next wndId index: " . i, 2, False)
|
||||||
wndId := wndId%i%
|
wndId := wndId%i%
|
||||||
Window_set(wndId, "AlwaysOnTop", "On")
|
If Not Window_#%wndId%_isMinimized {
|
||||||
Window_set(wndId, "AlwaysOnTop", "Off")
|
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.
|
;; If there are hung windows on the screen, we still want to be able to cycle through them.
|
||||||
failure := Manager_winActivate(wndId)
|
failure := Manager_winActivate(wndId)
|
||||||
If Not failure
|
If Not failure
|
||||||
Break
|
Break
|
||||||
|
}
|
||||||
i := Manager_loop(i, direction, 1, wndId0)
|
i := Manager_loop(i, direction, 1, wndId0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -144,23 +146,29 @@ View_arrange(m, v, setLayout = False) {
|
||||||
}
|
}
|
||||||
|
|
||||||
View_getActiveWindow(m, v) {
|
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
|
listId := A_LoopField
|
||||||
Break
|
Loop, Parse, View_#%m%_#%v%_%listId%, `;
|
||||||
Else If Not WinExist("ahk_id" A_LoopField)
|
{
|
||||||
Continue
|
If Not A_LoopField
|
||||||
Else {
|
Break
|
||||||
wndId := A_LoopField
|
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
|
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
|
Return, wndId
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
Window_move(wndId, x, y, width, height) {
|
||||||
|
Local wndMinMax, WM_ENTERSIZEMOVE, WM_EXITSIZEMOVE
|
||||||
|
|
||||||
If Window_isHung(wndId) {
|
If Window_isHung(wndId) {
|
||||||
Debug_logMessage("DEBUG[2] Window_move: Potentially hung window " . wndId, 2)
|
Debug_logMessage("DEBUG[2] Window_move: Potentially hung window " . wndId, 2)
|
||||||
Return, 1
|
Return, 1
|
||||||
} Else {
|
} Else {
|
||||||
WinGet, wndMin, MinMax, ahk_id %wndId%
|
WinGet, wndMinMax, MinMax, ahk_id %wndId%
|
||||||
If (wndMin = -1)
|
If (wndMinMax = -1 And Not Window_#%wndId%_isMinimized)
|
||||||
WinRestore, ahk_id %wndId%
|
WinRestore, ahk_id %wndId%
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue