mirror of
https://github.com/danbulant/node-x11
synced 2026-06-17 21:51:17 +00:00
Merge pull request #104 from santigimeno/test_create_notify
src: fix CreateNotify parsing and add new test
This commit is contained in:
commit
71599b100f
2 changed files with 48 additions and 5 deletions
10
lib/xcore.js
10
lib/xcore.js
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
})
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue