diff -u -r icewm-1.0.3/src/bindkey.h icewm-1.0.3-new/src/bindkey.h --- icewm-1.0.3/src/bindkey.h Sun Dec 19 11:35:35 1999 +++ icewm-1.0.3-new/src/bindkey.h Fri Apr 7 23:37:37 2000 @@ -29,6 +29,7 @@ #define defgKeySysWindowList XK_Escape, kfCtrl+kfAlt, "Alt+Ctrl+Esc" #define defgKeySysRun 'r', kfAlt+kfCtrl, "Alt+Ctrl+r" #define defgKeySysAddressBar ' ', kfAlt+kfCtrl, "Alt+Ctrl+Space" +#define defgKeySysLockTaskBar ' ', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+Space" #define defgKeyWinMenu ' ', kfAlt, "Alt+Space" #define defgKeySysWorkspacePrev XK_Left, kfAlt+kfCtrl, "Alt+Ctrl+Left" #define defgKeySysWorkspaceNext XK_Right, kfAlt+kfCtrl, "Alt+Ctrl+Right" @@ -119,6 +120,7 @@ DEF_WMKEY(gKeySysWindowList); DEF_WMKEY(gKeySysRun); DEF_WMKEY(gKeySysAddressBar); +DEF_WMKEY(gKeySysLockTaskBar); DEF_WMKEY(gKeySysWorkspacePrev); DEF_WMKEY(gKeySysWorkspaceNext); DEF_WMKEY(gKeySysWorkspacePrevTakeWin); diff -u -r icewm-1.0.3/src/default.h icewm-1.0.3-new/src/default.h --- icewm-1.0.3/src/default.h Sun Feb 13 10:27:46 2000 +++ icewm-1.0.3-new/src/default.h Fri Apr 7 23:38:05 2000 @@ -590,6 +590,7 @@ OKV("KeySysRun", gKeySysRun, ""), OKV("KeySysWindowList", gKeySysWindowList, ""), OKV("KeySysAddressBar", gKeySysAddressBar, ""), + OKV("KeySysAddressBar", gKeySysLockTaskBar, ""), OKV("KeySysWorkspacePrev", gKeySysWorkspacePrev, ""), OKV("KeySysWorkspaceNext", gKeySysWorkspaceNext, ""), OKV("KeySysWorkspacePrevTakeWin", gKeySysWorkspacePrevTakeWin, ""), diff -u -r icewm-1.0.3/src/wmmgr.cc icewm-1.0.3-new/src/wmmgr.cc --- icewm-1.0.3/src/wmmgr.cc Fri Dec 24 13:42:08 1999 +++ icewm-1.0.3-new/src/wmmgr.cc Fri Apr 7 23:40:31 2000 @@ -80,6 +80,7 @@ if (taskBar && taskBar->addressBar()) GRAB_WMKEY(gKeySysAddressBar); #endif + GRAB_WMKEY(gKeySysLockTaskBar); if (runDlgCommand && runDlgCommand[0]) GRAB_WMKEY(gKeySysRun); if (quickSwitch) { @@ -277,6 +278,9 @@ taskBar->addressBar()->setWindowFocus(); } #endif + } else if (IS_WMKEY(k, vm, gKeySysLockTaskBar)) { + if (taskBar) + taskBar->toggleLock(); } else if (IS_WMKEY(k, vm, gKeySysRun)) { if (runDlgCommand && runDlgCommand[0]) app->runCommand(runDlgCommand); diff -u -r icewm-1.0.3/src/wmtaskbar.cc icewm-1.0.3-new/src/wmtaskbar.cc --- icewm-1.0.3/src/wmtaskbar.cc Sun Mar 19 08:34:58 2000 +++ icewm-1.0.3-new/src/wmtaskbar.cc Sat Apr 8 00:34:47 2000 @@ -132,6 +132,7 @@ fIsMapped = false; fIsHidden = taskBarAutoHide; fMenuShown = false; + fIsLocked = false; if (taskBarBg == 0) { taskBarBg = new YColor(clrDefaultTaskBar); @@ -613,12 +614,12 @@ void TaskBar::handleCrossing(const XCrossingEvent &crossing) { if (crossing.type == EnterNotify /* && crossing.mode != NotifyNormal */) { fIsHidden = false; - if (taskBarAutoHide && fAutoHideTimer) + if (taskBarAutoHide && fAutoHideTimer && !fIsLocked) fAutoHideTimer->startTimer(); } else if (crossing.type == LeaveNotify /* && crossing.mode != NotifyNormal */) { if (crossing.detail != NotifyInferior) { - fIsHidden = taskBarAutoHide; - if (taskBarAutoHide && fAutoHideTimer) + fIsHidden = taskBarAutoHide && !fIsLocked; + if (taskBarAutoHide && fAutoHideTimer && !fIsLocked) fAutoHideTimer->startTimer(); } } @@ -723,13 +724,13 @@ void TaskBar::handleDNDEnter() { fIsHidden = false; - if (taskBarAutoHide && fAutoHideTimer) + if (taskBarAutoHide && fAutoHideTimer && !fIsLocked) fAutoHideTimer->startTimer(); } void TaskBar::handleDNDLeave() { - fIsHidden = taskBarAutoHide; - if (taskBarAutoHide && fAutoHideTimer) + fIsHidden = taskBarAutoHide && !fIsLocked; + if (taskBarAutoHide && fAutoHideTimer && !fIsLocked) fAutoHideTimer->startTimer(); } @@ -737,7 +738,7 @@ if (taskBarAutoHide) { fIsHidden = false; updateLocation(); - fIsHidden = taskBarAutoHide; + fIsHidden = taskBarAutoHide && !fIsLocked; if (taskBarAutoHide && fAutoHideTimer) fAutoHideTimer->startTimer(); } @@ -756,6 +757,19 @@ getFrame()->activate(true); updateLocation(); } + } +} + +void TaskBar::toggleLock() { + if (!fIsLocked) { + fIsLocked = true; + popOut(); + if (taskBarAutoHide && fAutoHideTimer) + fAutoHideTimer->stopTimer(); + } else { + fIsLocked = false; + fIsHidden = taskBarAutoHide; + updateLocation(); } } diff -u -r icewm-1.0.3/src/wmtaskbar.h icewm-1.0.3-new/src/wmtaskbar.h --- icewm-1.0.3/src/wmtaskbar.h Mon Nov 8 06:45:52 1999 +++ icewm-1.0.3-new/src/wmtaskbar.h Fri Apr 7 23:42:25 2000 @@ -64,6 +64,7 @@ virtual void handleDNDLeave(); void popOut(); void showBar(bool visible); + void toggleLock(); AddressBar *addressBar() const { return fAddressBar; } TaskPane *taskPane() const { return fTasks; } @@ -102,6 +103,7 @@ bool fIsHidden; bool fIsMapped; bool fMenuShown; + bool fIsLocked; YTimer *fAutoHideTimer; YMenu *taskBarMenu;