commit 1e96f98c3849f0d10c4a1c7f128d5217622ae944
parent ddc783198f41a45131d64883cfcc787a4964c4bf
Author: Anselm R. Garbe <garbeam@wmii.de>
Date: Sat, 21 Jan 2006 18:40:07 +0200
merge
Diffstat:
2 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/cmd/wm/page.c b/cmd/wm/page.c
@@ -67,6 +67,7 @@ alloc_page()
void
destroy_page(Page * p)
{
+ Page *newselpage;
AttachQueue *o, *n;
while(attachqueue && (attachqueue->page == p)) {
@@ -93,10 +94,11 @@ destroy_page(Page * p)
def[WM_SEL_PAGE]->content = 0;
ixp_remove_file(ixps, p->file[P_PREFIX]);
if(p == selpage) {
+ selpage = nil;
if(p->prev)
- selpage = p->prev;
+ newselpage = p->prev;
else
- selpage = nil;
+ newselpage = nil;
}
if(p == pages) {
@@ -118,10 +120,11 @@ destroy_page(Page * p)
--(p->index);
}
- if(!selpage)
- selpage = pages;
+ if(!newselpage)
+ newselpage = pages;
npages--;
XChangeProperty(dpy, root, net_atoms[NET_NUMBER_OF_DESKTOPS], XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &npages, 1);
+ focus_page(newselpage);
}
void
@@ -130,14 +133,17 @@ focus_page(Page * p)
if(!p)
return;
- if(selpage) {
- unmap_layout(selpage->managed);
- unmap_layout(selpage->floating);
+ if((p != selpage)) {
+ if(selpage) {
+ unmap_layout(selpage->managed);
+ unmap_layout(selpage->floating);
+ }
}
- map_layout(p->managed, False);
- map_layout(p->floating, False);
-
+ if(p != selpage) {
+ map_layout(p->managed, False);
+ map_layout(p->floating, False);
+ }
selpage = p;
def[WM_SEL_PAGE]->content = p->file[P_PREFIX]->content;
invoke_wm_event(def[WM_EVENT_PAGE_UPDATE]);
diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c
@@ -446,7 +446,6 @@ static void
xdestroy_page(void *obj, char *arg)
{
destroy_page(selpage);
- focus_page(selpage);
}
static void