Remove current tab support
We will add a real new one later.
This commit is contained in:
parent
602d92d8b2
commit
1004cefa2f
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
include config.mk
|
include config.mk
|
||||||
|
|
||||||
SRC = client.c draw.c event.c layout.c awesome.c tag.c util.c config.c screen.c statusbar.c uicb.c tab.c window.c awesome-client-common.c
|
SRC = client.c draw.c event.c layout.c awesome.c tag.c util.c config.c screen.c statusbar.c uicb.c window.c awesome-client-common.c
|
||||||
OBJ = ${SRC:.c=.o} ${LAYOUTS:.c=.o}
|
OBJ = ${SRC:.c=.o} ${LAYOUTS:.c=.o}
|
||||||
|
|
||||||
SRCCLIENT = awesome-client.c awesome-client-common.c util.c
|
SRCCLIENT = awesome-client.c awesome-client-common.c util.c
|
||||||
|
|
25
awesomerc
25
awesomerc
|
@ -18,7 +18,6 @@ colors
|
||||||
focus_border = "#6666ff"
|
focus_border = "#6666ff"
|
||||||
focus_bg = "#6666ff"
|
focus_bg = "#6666ff"
|
||||||
focus_fg = "#ffffff"
|
focus_fg = "#ffffff"
|
||||||
tab_border = "#ff0000"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
screen 0
|
screen 0
|
||||||
|
@ -555,28 +554,4 @@ keys
|
||||||
command = "toggletag"
|
command = "toggletag"
|
||||||
arg = "9"
|
arg = "9"
|
||||||
}
|
}
|
||||||
key
|
|
||||||
{
|
|
||||||
modkey = {"Mod4"}
|
|
||||||
key = "u"
|
|
||||||
command = "viewprevtab"
|
|
||||||
}
|
|
||||||
key
|
|
||||||
{
|
|
||||||
modkey = {"Mod4"}
|
|
||||||
key = "i"
|
|
||||||
command = "viewnexttab"
|
|
||||||
}
|
|
||||||
key
|
|
||||||
{
|
|
||||||
modkey = {"Mod4", "Control"}
|
|
||||||
key = "u"
|
|
||||||
command = "untab"
|
|
||||||
}
|
|
||||||
key
|
|
||||||
{
|
|
||||||
modkey = {"Mod4", "Control"}
|
|
||||||
key = "i"
|
|
||||||
command = "tab"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
12
client.c
12
client.c
|
@ -24,7 +24,6 @@
|
||||||
#include <X11/extensions/shape.h>
|
#include <X11/extensions/shape.h>
|
||||||
|
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
#include "tab.h"
|
|
||||||
#include "awesome.h"
|
#include "awesome.h"
|
||||||
#include "layout.h"
|
#include "layout.h"
|
||||||
#include "tag.h"
|
#include "tag.h"
|
||||||
|
@ -199,14 +198,10 @@ focus(Client *c, Bool selscreen, awesome_config *awesomeconf)
|
||||||
}
|
}
|
||||||
if(c)
|
if(c)
|
||||||
{
|
{
|
||||||
if(c->tab.next || c->tab.prev)
|
XSetWindowBorder(awesomeconf->display, c->win, awesomeconf->colors_selected[ColBorder].pixel);
|
||||||
XSetWindowBorder(awesomeconf->display, c->win, awesomeconf->colors_tab[ColBorder].pixel);
|
|
||||||
else
|
|
||||||
XSetWindowBorder(awesomeconf->display, c->win, awesomeconf->colors_selected[ColBorder].pixel);
|
|
||||||
}
|
|
||||||
if(c)
|
|
||||||
window_grabbuttons(c->display, c->phys_screen, c->win,
|
window_grabbuttons(c->display, c->phys_screen, c->win,
|
||||||
True, True, awesomeconf->modkey, awesomeconf->numlockmask);
|
True, True, awesomeconf->modkey, awesomeconf->numlockmask);
|
||||||
|
}
|
||||||
if(!selscreen)
|
if(!selscreen)
|
||||||
return;
|
return;
|
||||||
tag->client_sel = c;
|
tag->client_sel = c;
|
||||||
|
@ -280,8 +275,6 @@ client_manage(Window w, XWindowAttributes *wa, awesome_config *awesomeconf)
|
||||||
c->display = awesomeconf->display;
|
c->display = awesomeconf->display;
|
||||||
c->phys_screen = awesomeconf->phys_screen;
|
c->phys_screen = awesomeconf->phys_screen;
|
||||||
|
|
||||||
c->tab.isvisible = True;
|
|
||||||
|
|
||||||
/* if window request fullscreen mode */
|
/* if window request fullscreen mode */
|
||||||
if(c->w == screen_info[awesomeconf->screen].width && c->h == screen_info[awesomeconf->screen].height)
|
if(c->w == screen_info[awesomeconf->screen].width && c->h == screen_info[awesomeconf->screen].height)
|
||||||
{
|
{
|
||||||
|
@ -493,7 +486,6 @@ client_unmanage(Client *c, long state, awesome_config *awesomeconf)
|
||||||
XWindowChanges wc;
|
XWindowChanges wc;
|
||||||
int tag;
|
int tag;
|
||||||
|
|
||||||
client_untab(c);
|
|
||||||
wc.border_width = c->oldborder;
|
wc.border_width = c->oldborder;
|
||||||
/* The server grab construct avoids race conditions. */
|
/* The server grab construct avoids race conditions. */
|
||||||
XGrabServer(c->display);
|
XGrabServer(c->display);
|
||||||
|
|
7
config.c
7
config.c
|
@ -34,7 +34,6 @@
|
||||||
#include "tag.h"
|
#include "tag.h"
|
||||||
#include "statusbar.h"
|
#include "statusbar.h"
|
||||||
#include "layout.h"
|
#include "layout.h"
|
||||||
#include "tab.h"
|
|
||||||
#include "layouts/tile.h"
|
#include "layouts/tile.h"
|
||||||
#include "layouts/floating.h"
|
#include "layouts/floating.h"
|
||||||
#include "layouts/max.h"
|
#include "layouts/max.h"
|
||||||
|
@ -95,11 +94,6 @@ const NameFuncLink UicbList[] = {
|
||||||
/* config.c */
|
/* config.c */
|
||||||
{"reloadconfig", uicb_reloadconfig},
|
{"reloadconfig", uicb_reloadconfig},
|
||||||
{"setstatustext", uicb_setstatustext},
|
{"setstatustext", uicb_setstatustext},
|
||||||
/* tab.c */
|
|
||||||
{"tab", uicb_tab},
|
|
||||||
{"untab", uicb_untab},
|
|
||||||
{"viewnexttab", uicb_viewnexttab},
|
|
||||||
{"viewprevtab", uicb_viewprevtab},
|
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -313,7 +307,6 @@ parse_config(const char *confpatharg, awesome_config *awesomeconf)
|
||||||
awesomeconf->colors_selected[ColBorder] = initxcolor(awesomeconf->display, awesomeconf->phys_screen, cfg_getstr(cfg_colors, "focus_border"));
|
awesomeconf->colors_selected[ColBorder] = initxcolor(awesomeconf->display, awesomeconf->phys_screen, cfg_getstr(cfg_colors, "focus_border"));
|
||||||
awesomeconf->colors_selected[ColBG] = initxcolor(awesomeconf->display, awesomeconf->phys_screen, cfg_getstr(cfg_colors, "focus_bg"));
|
awesomeconf->colors_selected[ColBG] = initxcolor(awesomeconf->display, awesomeconf->phys_screen, cfg_getstr(cfg_colors, "focus_bg"));
|
||||||
awesomeconf->colors_selected[ColFG] = initxcolor(awesomeconf->display, awesomeconf->phys_screen, cfg_getstr(cfg_colors, "focus_fg"));
|
awesomeconf->colors_selected[ColFG] = initxcolor(awesomeconf->display, awesomeconf->phys_screen, cfg_getstr(cfg_colors, "focus_fg"));
|
||||||
awesomeconf->colors_tab[ColBorder] = initxcolor(awesomeconf->display, awesomeconf->phys_screen, cfg_getstr(cfg_colors, "tab_border"));
|
|
||||||
|
|
||||||
/* Statusbar */
|
/* Statusbar */
|
||||||
tmp = cfg_getstr(cfg_statusbar, "position");
|
tmp = cfg_getstr(cfg_statusbar, "position");
|
||||||
|
|
13
config.h
13
config.h
|
@ -109,17 +109,6 @@ struct Client
|
||||||
Client *next;
|
Client *next;
|
||||||
/** Previous client */
|
/** Previous client */
|
||||||
Client *prev;
|
Client *prev;
|
||||||
/** Tabs support */
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
/** Next client in tab */
|
|
||||||
Client *next;
|
|
||||||
/** Previous client in tab */
|
|
||||||
Client *prev;
|
|
||||||
/** True if client is the visible one */
|
|
||||||
Bool isvisible;
|
|
||||||
/** True if client is tabbed */
|
|
||||||
} tab;
|
|
||||||
/** Window of the client */
|
/** Window of the client */
|
||||||
Window win;
|
Window win;
|
||||||
/** Client display */
|
/** Client display */
|
||||||
|
@ -204,8 +193,6 @@ struct awesome_config
|
||||||
XColor colors_normal[ColLast];
|
XColor colors_normal[ColLast];
|
||||||
/** Selected colors */
|
/** Selected colors */
|
||||||
XColor colors_selected[ColLast];
|
XColor colors_selected[ColLast];
|
||||||
/** Tabbed colors */
|
|
||||||
XColor colors_tab[ColLast];
|
|
||||||
/** Cursors */
|
/** Cursors */
|
||||||
Cursor cursor[CurLast];
|
Cursor cursor[CurLast];
|
||||||
/** Font */
|
/** Font */
|
||||||
|
|
6
layout.c
6
layout.c
|
@ -300,7 +300,7 @@ void
|
||||||
uicb_zoom(awesome_config *awesomeconf,
|
uicb_zoom(awesome_config *awesomeconf,
|
||||||
const char *arg __attribute__ ((unused)))
|
const char *arg __attribute__ ((unused)))
|
||||||
{
|
{
|
||||||
Client *c, *sel = get_current_tag(awesomeconf->tags, awesomeconf->ntags)->client_sel;
|
Client *sel = get_current_tag(awesomeconf->tags, awesomeconf->ntags)->client_sel;
|
||||||
|
|
||||||
if(!sel)
|
if(!sel)
|
||||||
return;
|
return;
|
||||||
|
@ -308,10 +308,6 @@ uicb_zoom(awesome_config *awesomeconf,
|
||||||
client_detach(awesomeconf->clients, sel);
|
client_detach(awesomeconf->clients, sel);
|
||||||
client_attach(awesomeconf->clients, sel);
|
client_attach(awesomeconf->clients, sel);
|
||||||
|
|
||||||
/* reattach tabbed windows just after the master one */
|
|
||||||
for(c = sel->tab.next; c; c = c->tab.next)
|
|
||||||
client_reattach_after(sel, c);
|
|
||||||
|
|
||||||
focus(sel, True, awesomeconf);
|
focus(sel, True, awesomeconf);
|
||||||
arrange(awesomeconf);
|
arrange(awesomeconf);
|
||||||
}
|
}
|
||||||
|
|
142
tab.c
142
tab.c
|
@ -1,142 +0,0 @@
|
||||||
/*
|
|
||||||
* tab.c - tab management
|
|
||||||
*
|
|
||||||
* Copyright © 2007 Julien Danjou <julien@danjou.info>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "tab.h"
|
|
||||||
#include "event.h"
|
|
||||||
#include "layout.h"
|
|
||||||
|
|
||||||
void
|
|
||||||
client_untab(Client *c)
|
|
||||||
{
|
|
||||||
Client *tmp;
|
|
||||||
|
|
||||||
if(c->tab.next)
|
|
||||||
c->tab.next->tab.isvisible = True;
|
|
||||||
else if(c->tab.prev)
|
|
||||||
c->tab.prev->tab.isvisible = True;
|
|
||||||
|
|
||||||
c->tab.isvisible = True;
|
|
||||||
|
|
||||||
if(c->tab.next)
|
|
||||||
c->tab.next->tab.prev = c->tab.prev;
|
|
||||||
|
|
||||||
tmp = c->tab.next;
|
|
||||||
c->tab.next = NULL;
|
|
||||||
|
|
||||||
if(c->tab.prev)
|
|
||||||
c->tab.prev->tab.next = tmp;
|
|
||||||
|
|
||||||
c->tab.prev = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
uicb_tab(awesome_config *awesomeconf,
|
|
||||||
const char *arg __attribute__ ((unused)))
|
|
||||||
{
|
|
||||||
Window dummy, child;
|
|
||||||
int x1, y1, di;
|
|
||||||
unsigned int dui;
|
|
||||||
XEvent ev;
|
|
||||||
Client *sel = get_current_tag(awesomeconf->tags, awesomeconf->ntags)->client_sel, *c = NULL, *tmp;
|
|
||||||
|
|
||||||
if(XGrabPointer(awesomeconf->display, RootWindow(awesomeconf->display, awesomeconf->phys_screen),
|
|
||||||
False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None,
|
|
||||||
awesomeconf[awesomeconf->screen].cursor[CurMove], CurrentTime) != GrabSuccess)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for(;;)
|
|
||||||
{
|
|
||||||
XMaskEvent(awesomeconf->display, ButtonPressMask, &ev);
|
|
||||||
if(ev.type == ButtonPress)
|
|
||||||
{
|
|
||||||
XUngrabPointer(awesomeconf->display, CurrentTime);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
XQueryPointer(awesomeconf->display,
|
|
||||||
RootWindow(awesomeconf->display, awesomeconf->phys_screen),
|
|
||||||
&dummy, &child, &x1, &y1, &di, &di, &dui);
|
|
||||||
|
|
||||||
if((c = get_client_bywin(*awesomeconf->clients, child))
|
|
||||||
&& c != sel && !c->isfloating)
|
|
||||||
{
|
|
||||||
/* take the last tabbed window */
|
|
||||||
for(tmp = sel; tmp->tab.next; tmp = tmp->tab.next);
|
|
||||||
|
|
||||||
tmp->tab.next = c;
|
|
||||||
if(c->tab.prev)
|
|
||||||
c->tab.prev->tab.next = tmp;
|
|
||||||
|
|
||||||
c->tab.prev = tmp;
|
|
||||||
|
|
||||||
c->tab.isvisible = False;
|
|
||||||
client_reattach_after(sel, c);
|
|
||||||
arrange(awesomeconf);
|
|
||||||
focus(sel, True, awesomeconf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
uicb_untab(awesome_config *awesomeconf,
|
|
||||||
const char *arg __attribute__ ((unused)))
|
|
||||||
{
|
|
||||||
Client *sel = get_current_tag(awesomeconf->tags, awesomeconf->ntags)->client_sel;
|
|
||||||
|
|
||||||
if(!sel)
|
|
||||||
return;
|
|
||||||
|
|
||||||
client_untab(sel);
|
|
||||||
arrange(awesomeconf);
|
|
||||||
focus(sel, True, awesomeconf);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
uicb_viewnexttab(awesome_config *awesomeconf,
|
|
||||||
const char *arg __attribute__ ((unused)))
|
|
||||||
{
|
|
||||||
Client *sel = get_current_tag(awesomeconf->tags, awesomeconf->ntags)->client_sel;
|
|
||||||
|
|
||||||
if(!sel || !sel->tab.next)
|
|
||||||
return;
|
|
||||||
|
|
||||||
sel->tab.isvisible = False;
|
|
||||||
sel->tab.next->tab.isvisible = True;
|
|
||||||
arrange(awesomeconf);
|
|
||||||
focus(sel->tab.next, True, awesomeconf);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
uicb_viewprevtab(awesome_config *awesomeconf,
|
|
||||||
const char *arg __attribute__ ((unused)))
|
|
||||||
{
|
|
||||||
Client *sel = get_current_tag(awesomeconf->tags, awesomeconf->ntags)->client_sel;
|
|
||||||
|
|
||||||
if(!sel || !sel->tab.prev)
|
|
||||||
return;
|
|
||||||
|
|
||||||
sel->tab.isvisible = False;
|
|
||||||
sel->tab.prev->tab.isvisible = True;
|
|
||||||
arrange(awesomeconf);
|
|
||||||
focus(sel->tab.prev, True, awesomeconf);
|
|
||||||
}
|
|
||||||
|
|
||||||
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99
|
|
35
tab.h
35
tab.h
|
@ -1,35 +0,0 @@
|
||||||
/*
|
|
||||||
* tab.h - tab management header
|
|
||||||
*
|
|
||||||
* Copyright © 2007 Julien Danjou <julien@danjou.info>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef AWESOME_TAB_H
|
|
||||||
#define AWESOME_TAB_H
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
void client_untab(Client *);
|
|
||||||
|
|
||||||
UICB_PROTO(uicb_tab);
|
|
||||||
UICB_PROTO(uicb_untab);
|
|
||||||
UICB_PROTO(uicb_viewnexttab);
|
|
||||||
UICB_PROTO(uicb_viewprevtab);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
// vim: filetype=c:expandtab:shiftwidth=6:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99
|
|
4
tag.c
4
tag.c
|
@ -24,7 +24,6 @@
|
||||||
|
|
||||||
#include "layout.h"
|
#include "layout.h"
|
||||||
#include "tag.h"
|
#include "tag.h"
|
||||||
#include "tab.h"
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
/** This function returns the index of
|
/** This function returns the index of
|
||||||
|
@ -130,7 +129,7 @@ isvisible(Client * c, int screen, Tag * tags, int ntags)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if(c->screen != screen || !c->tab.isvisible)
|
if(c->screen != screen)
|
||||||
return False;
|
return False;
|
||||||
|
|
||||||
for(i = 0; i < ntags; i++)
|
for(i = 0; i < ntags; i++)
|
||||||
|
@ -182,7 +181,6 @@ uicb_togglefloating(awesome_config * awesomeconf,
|
||||||
else
|
else
|
||||||
client_resize(sel, sel->x, sel->y, sel->w, sel->h, awesomeconf, True, True);
|
client_resize(sel, sel->x, sel->y, sel->w, sel->h, awesomeconf, True, True);
|
||||||
|
|
||||||
client_untab(sel);
|
|
||||||
saveprops(sel, awesomeconf->ntags);
|
saveprops(sel, awesomeconf->ntags);
|
||||||
arrange(awesomeconf);
|
arrange(awesomeconf);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue