From 3b18e43fe6ce1aba6fb3f367b0c229342a791f4d Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Thu, 1 Oct 2015 11:31:36 +0200 Subject: [PATCH] src: fix CreateNotify parsing and add new test - The first 4 fields in an event 'CCSL' are already unpacked in expectReplyHeader. No need to get the L field again: it is already in the 'extra' variable. --- lib/xcore.js | 2 +- test/core-CreateWindow.js | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/xcore.js b/lib/xcore.js index 975a485..fc93bfc 100644 --- a/lib/xcore.js +++ b/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]; diff --git a/test/core-CreateWindow.js b/test/core-CreateWindow.js index 11aa147..197288b 100644 --- a/test/core-CreateWindow.js +++ b/test/core-CreateWindow.js @@ -57,4 +57,24 @@ 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) { + ev.name.should.equal('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); + done(); + }); + + X.CreateWindow(wid, root, 0, 0, 1, 1); // 1x1 pixel window + }) });