mirror of
https://github.com/danbulant/node-x11
synced 2026-06-20 15:11:29 +00:00
src: fix some more events parsing
- DestroyNotify, UnmapNotify, MapNotify and MapRequest. - Add some tests.
This commit is contained in:
parent
3b18e43fe6
commit
dbe2d97bee
2 changed files with 37 additions and 14 deletions
|
|
@ -313,24 +313,24 @@ XClient.prototype.unpackEvent = function(type, seq, extra, code, raw, headerBuf)
|
||||||
event.overrideRedirect = values[6] ? true : false;
|
event.overrideRedirect = values[6] ? true : false;
|
||||||
// x, y, width, height, border
|
// x, y, width, height, border
|
||||||
} else if (type == 17) { // destroy notify
|
} else if (type == 17) { // destroy notify
|
||||||
var values = raw.unpack('LL');
|
var values = raw.unpack('L');
|
||||||
event.name = 'DestroyNotify'
|
event.name = 'DestroyNotify'
|
||||||
event.event = extra;
|
event.event = extra;
|
||||||
event.wid = values[0];
|
event.wid = values[0];
|
||||||
} else if (type == 18) { // UnmapNotify
|
} else if (type == 18) { // UnmapNotify
|
||||||
var values = raw.unpack('LLC');
|
var values = raw.unpack('LC');
|
||||||
event.name = 'UnmapNotify'
|
event.name = 'UnmapNotify'
|
||||||
event.event = extra;
|
event.event = extra;
|
||||||
event.wid = values[0];
|
event.wid = values[0];
|
||||||
event.fromConfigure = values[1] ? true : false;
|
event.fromConfigure = values[1] ? true : false;
|
||||||
} else if (type == 19) { // MapNotify
|
} else if (type == 19) { // MapNotify
|
||||||
var values = raw.unpack('LLC');
|
var values = raw.unpack('LC');
|
||||||
event.name = 'MapNotify'
|
event.name = 'MapNotify'
|
||||||
event.event = extra;
|
event.event = extra;
|
||||||
event.wid = values[0];
|
event.wid = values[0];
|
||||||
event.overrideRedirect = values[1] ? true : false;
|
event.overrideRedirect = values[1] ? true : false;
|
||||||
} else if (type == 20) {
|
} else if (type == 20) {
|
||||||
var values = raw.unpack('LL');
|
var values = raw.unpack('L');
|
||||||
event.name = 'MapRequest'
|
event.name = 'MapRequest'
|
||||||
event.parent = extra;
|
event.parent = extra;
|
||||||
event.wid = values[0];
|
event.wid = values[0];
|
||||||
|
|
|
||||||
|
|
@ -63,18 +63,41 @@ describe('CreateWindow request', function() {
|
||||||
var root = display.screen[0].root;
|
var root = display.screen[0].root;
|
||||||
X.ChangeWindowAttributes(root, { eventMask: x11.eventMask.SubstructureNotify });
|
X.ChangeWindowAttributes(root, { eventMask: x11.eventMask.SubstructureNotify });
|
||||||
X.on('event', function(ev) {
|
X.on('event', function(ev) {
|
||||||
ev.name.should.equal('CreateNotify');
|
switch (ev.name) {
|
||||||
ev.parent.should.equal(root);
|
case 'CreateNotify':
|
||||||
ev.wid.should.equal(wid);
|
ev.parent.should.equal(root);
|
||||||
ev.x.should.equal(0);
|
ev.wid.should.equal(wid);
|
||||||
ev.y.should.equal(0);
|
ev.x.should.equal(0);
|
||||||
ev.width.should.equal(1);
|
ev.y.should.equal(0);
|
||||||
ev.height.should.equal(1);
|
ev.width.should.equal(1);
|
||||||
ev.borderWidth.should.equal(0);
|
ev.height.should.equal(1);
|
||||||
ev.overrideRedirect.should.equal(false);
|
ev.borderWidth.should.equal(0);
|
||||||
done();
|
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.CreateWindow(wid, root, 0, 0, 1, 1); // 1x1 pixel window
|
||||||
|
X.MapWindow(wid);
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue