commit 98d451e44533559ca465cadc9931795988c5a88e
parent d6f67b3be521e8d5c3aa1fad79c4e70562243553
Author: garbeam <garbeam@localhost>
Date: Wed, 11 Jan 2006 19:15:16 +0200
some changes before last refactoring for 9P in wm/
Diffstat:
6 files changed, 26 insertions(+), 22 deletions(-)
diff --git a/cmd/wm/client.c b/cmd/wm/client.c
@@ -32,7 +32,6 @@ focus_client(Client * c)
Client *old = sel_client();
if(old && (old != c)) {
- fprintf(stderr, "%s", "grabbing everything for window\n");
ungrab_client(old, AnyModifier, AnyButton);
grab_client(old, AnyModifier, AnyButton);
}
diff --git a/cmd/wm/event.c b/cmd/wm/event.c
@@ -213,10 +213,10 @@ handle_maprequest(XEvent * e)
}
/* attach heuristic support */
- if(runinpage && (runinpage->page != selpage)) {
- RunInPage *r = runinpage;
+ if(attachqueue && (attachqueue->page != selpage)) {
+ AttachQueue *r = attachqueue;
focus_page(r->page);
- runinpage = runinpage->next;
+ attachqueue = attachqueue->next;
free(r);
}
diff --git a/cmd/wm/frame.c b/cmd/wm/frame.c
@@ -289,6 +289,11 @@ attach_client_to_frame(Frame * f, Client * client)
client->next = nil;
c->next = client;
}
+ if(f->sel) {
+ ungrab_client(f->sel, AnyModifier, AnyButton);
+ grab_client(f->sel, AnyModifier, AnyButton);
+ }
+ f->sel = client;
f->nclients++;
client->frame = f;
resize_frame(f, &f->rect, 0);
diff --git a/cmd/wm/page.c b/cmd/wm/page.c
@@ -65,17 +65,17 @@ alloc_page()
void
destroy_page(Page * p)
{
- RunInPage *o, *n;
+ AttachQueue *o, *n;
- while(runinpage->page == p) {
- n = runinpage->next;
- free(runinpage);
- runinpage = n;
+ while(attachqueue->page == p) {
+ n = attachqueue->next;
+ free(attachqueue);
+ attachqueue = n;
}
- o = runinpage;
+ o = attachqueue;
n = nil;
- if(runinpage)
- n = runinpage->next;
+ if(attachqueue)
+ n = attachqueue->next;
while(n) {
if(n->page == p) {
o->next = n->next;
@@ -198,13 +198,13 @@ handle_after_write_page(IXPServer * s, File * file)
static void
xexec(void *obj, char *arg)
{
- RunInPage *r;
+ AttachQueue *r;
- if(!runinpage)
- r = runinpage = cext_emallocz(sizeof(RunInPage));
+ if(!attachqueue)
+ r = attachqueue = cext_emallocz(sizeof(AttachQueue));
else {
- for(r = runinpage; r && r->next; r = r->next);
- r->next = cext_emallocz(sizeof(RunInPage));
+ for(r = attachqueue; r && r->next; r = r->next);
+ r->next = cext_emallocz(sizeof(AttachQueue));
r = r->next;
}
r->page = obj;
diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c
@@ -898,7 +898,7 @@ main(int argc, char *argv[])
ndetached = npages = 0;
detached = nil;
layouts = nil;
- runinpage = nil;
+ attachqueue = nil;
init_atoms();
init_cursors();
diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h
@@ -88,15 +88,15 @@ enum {
#define CLIENT_MASK (StructureNotifyMask | PropertyChangeMask | ButtonPressMask)
typedef struct Page Page;
-typedef struct RunInPage RunInPage;
+typedef struct AttachQueue AttachQueue;
typedef struct Layout Layout;
typedef struct Area Area;
typedef struct Frame Frame;
typedef struct Client Client;
-struct RunInPage {
+struct AttachQueue {
Page *page;
- RunInPage *next;
+ AttachQueue *next;
};
struct Page {
@@ -165,7 +165,7 @@ struct Client {
/* global variables */
Page *pages;
Page *selpage;
-RunInPage *runinpage;
+AttachQueue *attachqueue;
size_t npages;
Client *detached;
size_t ndetached;