added isLowerTab() and lastFocusTime
This commit is contained in:
parent
981dd0dacf
commit
3a23ff8bdc
2 changed files with 24 additions and 3 deletions
|
@ -1,5 +1,5 @@
|
|||
// Window.cc for Fluxbox Window Manager
|
||||
// Copyright (c) 2001 - 2002 Henrik Kinnunen (fluxgen@linuxmail.org)
|
||||
// Copyright (c) 2001 - 2002 Henrik Kinnunen (fluxgen@linuxmail.org)
|
||||
//
|
||||
// Window.cc for Blackbox - an X11 Window manager
|
||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
||||
|
@ -22,7 +22,7 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
// $Id: Window.cc,v 1.31 2002/02/27 22:04:01 fluxgen Exp $
|
||||
// $Id: Window.cc,v 1.32 2002/03/18 19:58:06 fluxgen Exp $
|
||||
|
||||
//use GNU extensions
|
||||
#ifndef _GNU_SOURCE
|
||||
|
@ -79,6 +79,7 @@ tab(0)
|
|||
,gnome_hints(0)
|
||||
#endif
|
||||
{
|
||||
lastFocusTime.tv_sec = lastFocusTime.tv_usec = 0;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr,
|
||||
|
@ -2372,6 +2373,10 @@ void FluxboxWindow::stick(void) {
|
|||
void FluxboxWindow::setFocusFlag(bool focus) {
|
||||
focused = focus;
|
||||
|
||||
// Record focus timestamp for window cycling enhancements, such as skipping lower tabs
|
||||
if (focused)
|
||||
gettimeofday(&lastFocusTime, 0);
|
||||
|
||||
if (decorations.titlebar) {
|
||||
if (focused) {
|
||||
if (frame.ftitle)
|
||||
|
@ -2699,6 +2704,17 @@ void FluxboxWindow::restoreGravity(void) {
|
|||
}
|
||||
}
|
||||
|
||||
bool FluxboxWindow::isLowerTab(void) const {
|
||||
Tab* chkTab = (tab ? tab->first() : 0);
|
||||
while (chkTab) {
|
||||
FluxboxWindow* chkWin = chkTab->getWindow();
|
||||
if (chkWin && chkWin != this &&
|
||||
timercmp(&chkWin->lastFocusTime, &lastFocusTime, >))
|
||||
return true;
|
||||
chkTab = chkTab->next();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void FluxboxWindow::redrawLabel(void) {
|
||||
if (focused) {
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
// $Id: Window.hh,v 1.11 2002/02/26 22:35:58 fluxgen Exp $
|
||||
// $Id: Window.hh,v 1.12 2002/03/18 19:58:06 fluxgen Exp $
|
||||
|
||||
#ifndef WINDOW_HH
|
||||
#define WINDOW_HH
|
||||
|
@ -168,6 +168,8 @@ public:
|
|||
|
||||
inline void setWindowNumber(int n) { window_number = n; }
|
||||
|
||||
inline const timeval& getLastFocusTime() const {return lastFocusTime;}
|
||||
|
||||
bool validateClient(void);
|
||||
bool setInputFocus(void);
|
||||
void setTab(bool flag);
|
||||
|
@ -187,6 +189,7 @@ public:
|
|||
void setWorkspace(int n);
|
||||
void changeBlackboxHints(BaseDisplay::BlackboxHints *);
|
||||
void restoreAttributes(void);
|
||||
bool isLowerTab(void) const;
|
||||
|
||||
void buttonPressEvent(XButtonEvent *);
|
||||
void buttonReleaseEvent(XButtonEvent *);
|
||||
|
@ -227,6 +230,8 @@ private:
|
|||
Time lastButtonPressTime;
|
||||
Windowmenu *windowmenu;
|
||||
|
||||
timeval lastFocusTime;
|
||||
|
||||
int focus_mode, window_number, workspace_number;
|
||||
unsigned long current_state;
|
||||
WinLayer m_layer;
|
||||
|
|
Loading…
Reference in a new issue