Merge pull request #104 from santigimeno/test_create_notify

src: fix CreateNotify parsing and add new test
This commit is contained in:
Andrey Sidorov 2015-10-01 21:42:31 +10:00
commit 71599b100f
2 changed files with 48 additions and 5 deletions

View file

@ -301,7 +301,7 @@ XClient.prototype.unpackEvent = function(type, seq, extra, code, raw, headerBuf)
event.height = values[3];
event.count = values[4]; // TODO: ???
} else if (type == 16) { // CreateNotify
var values = raw.unpack('LLssSSSc');
var values = raw.unpack('LssSSSc');
event.name = 'CreateNotify'
event.parent = extra;
event.wid = values[0];
@ -313,24 +313,24 @@ XClient.prototype.unpackEvent = function(type, seq, extra, code, raw, headerBuf)
event.overrideRedirect = values[6] ? true : false;
// x, y, width, height, border
} else if (type == 17) { // destroy notify
var values = raw.unpack('LL');
var values = raw.unpack('L');
event.name = 'DestroyNotify'
event.event = extra;
event.wid = values[0];
} else if (type == 18) { // UnmapNotify
var values = raw.unpack('LLC');
var values = raw.unpack('LC');
event.name = 'UnmapNotify'
event.event = extra;
event.wid = values[0];
event.fromConfigure = values[1] ? true : false;
} else if (type == 19) { // MapNotify
var values = raw.unpack('LLC');
var values = raw.unpack('LC');
event.name = 'MapNotify'
event.event = extra;
event.wid = values[0];
event.overrideRedirect = values[1] ? true : false;
} else if (type == 20) {
var values = raw.unpack('LL');
var values = raw.unpack('L');
event.name = 'MapRequest'
event.parent = extra;
event.wid = values[0];

View file

@ -57,4 +57,47 @@ describe('CreateWindow request', function() {
done();
});
});
it('should emit CreateNotify event when', function(done) {
var wid = X.AllocID();
var root = display.screen[0].root;
X.ChangeWindowAttributes(root, { eventMask: x11.eventMask.SubstructureNotify });
X.on('event', function(ev) {
switch (ev.name) {
case 'CreateNotify':
ev.parent.should.equal(root);
ev.wid.should.equal(wid);
ev.x.should.equal(0);
ev.y.should.equal(0);
ev.width.should.equal(1);
ev.height.should.equal(1);
ev.borderWidth.should.equal(0);
ev.overrideRedirect.should.equal(false);
break;
case 'MapNotify':
ev.event.should.equal(root);
ev.wid.should.equal(wid);
ev.overrideRedirect.should.equal(false);
X.UnmapWindow(wid);
break;
case 'UnmapNotify':
ev.event.should.equal(root);
ev.wid.should.equal(wid);
ev.fromConfigure.should.equal(false);
X.DestroyWindow(wid);
break;
case 'DestroyNotify':
ev.event.should.equal(root);
ev.wid.should.equal(wid);
done();
break;
}
});
X.CreateWindow(wid, root, 0, 0, 1, 1); // 1x1 pixel window
X.MapWindow(wid);
})
});