mirror of
https://github.com/danbulant/node-x11
synced 2026-06-14 04:01:10 +00:00
FrameGetRect, FrameHitTest requests
This commit is contained in:
parent
41ceeb67d8
commit
d7765b01bf
1 changed files with 70 additions and 36 deletions
|
|
@ -40,49 +40,80 @@ exports.requireExt = function(display, callback)
|
|||
X.pack_stream.flush();
|
||||
}
|
||||
|
||||
/*
|
||||
ext.FrameRect = {
|
||||
Titlebar: 1,
|
||||
Tracking: 2,
|
||||
Growbox: 3
|
||||
};
|
||||
|
||||
ext.FrameGetRect = function(frame_class, frame_rect, ix, iy, iw, ih, ox, oy, ow, oh, cb)
|
||||
{
|
||||
X.seq_num++;
|
||||
X.pack_stream.pack('CCSSSSSSSSSSS', [ext.majorOpcode, 1, 6, frame_class, frame_rect, ix, iy, iw, ih, ox, oy, ow, oh, cb]);
|
||||
X.replies[X.seq_num] = [
|
||||
function(buf, opt) {
|
||||
var res = buf.unpack('SSSS');
|
||||
return {
|
||||
x: res[0],
|
||||
y: res[1],
|
||||
w: res[2],
|
||||
h: res[3]
|
||||
};
|
||||
},
|
||||
cb
|
||||
];
|
||||
X.pack_stream.flush();
|
||||
}
|
||||
|
||||
ext.FrameHitTest = function(frame_class, px, py, ix, iy, iw, ih, ox, oy, ow, oh, cb)
|
||||
{
|
||||
X.seq_num++;
|
||||
X.pack_stream.pack('CCSSxxSSSSSSSSSS', [ext.majorOpcode, 2, 7, frame_class, px, py, ix, iy, iw, ih, ox, oy, ow, oh]);
|
||||
X.replies[X.seq_num] = [
|
||||
function(buf, opt) {
|
||||
var res = buf.unpack('L');
|
||||
return res[0];
|
||||
},
|
||||
cb
|
||||
];
|
||||
X.pack_stream.flush();
|
||||
}
|
||||
|
||||
|
||||
// from /usr/include/Xplugin.h
|
||||
enum xp_frame_class_enum {
|
||||
XP_FRAME_CLASS_DECOR_LARGE = 1 << 0,
|
||||
XP_FRAME_CLASS_RESERVED1 = 1 << 1,
|
||||
XP_FRAME_CLASS_RESERVED2 = 1 << 2,
|
||||
XP_FRAME_CLASS_RESERVED3 = 1 << 3,
|
||||
XP_FRAME_CLASS_DECOR_SMALL = 1 << 4,
|
||||
XP_FRAME_CLASS_RESERVED5 = 1 << 5,
|
||||
XP_FRAME_CLASS_RESERVED6 = 1 << 6,
|
||||
XP_FRAME_CLASS_DECOR_NONE = 1 << 7,
|
||||
XP_FRAME_CLASS_RESERVED8 = 1 << 8,
|
||||
XP_FRAME_CLASS_BEHAVIOR_MANAGED = 1 << 15,
|
||||
XP_FRAME_CLASS_BEHAVIOR_TRANSIENT = 1 << 16,
|
||||
XP_FRAME_CLASS_BEHAVIOR_STATIONARY = 1 << 17,
|
||||
};
|
||||
typedef enum xp_frame_class_enum xp_frame_class;
|
||||
ext.FrameClass = {
|
||||
DecorLarge: 1,
|
||||
Reserved1: 2,
|
||||
Reserved2: 4,
|
||||
Reserved3: 8,
|
||||
DecorSmall: 16,
|
||||
Reserved5: 32,
|
||||
Reserved6: 64,
|
||||
Reserved8: 128,
|
||||
Managed: 1<<15,
|
||||
Transient: 1<<16,
|
||||
Stationary: 1<<17
|
||||
};
|
||||
|
||||
// Attributes of window frames.
|
||||
|
||||
enum xp_frame_attr_enum {
|
||||
XP_FRAME_ATTR_ACTIVE = 0x0001,
|
||||
XP_FRAME_ATTR_URGENT = 0x0002,
|
||||
XP_FRAME_ATTR_TITLE = 0x0004,
|
||||
XP_FRAME_ATTR_PRELIGHT = 0x0008,
|
||||
XP_FRAME_ATTR_SHADED = 0x0010,
|
||||
XP_FRAME_ATTR_CLOSE_BOX = 0x0100,
|
||||
XP_FRAME_ATTR_COLLAPSE = 0x0200,
|
||||
XP_FRAME_ATTR_ZOOM = 0x0400,
|
||||
XP_FRAME_ATTR_CLOSE_BOX_CLICKED = 0x0800,
|
||||
XP_FRAME_ATTR_COLLAPSE_BOX_CLICKED = 0x1000,
|
||||
XP_FRAME_ATTR_ZOOM_BOX_CLICKED = 0x2000,
|
||||
XP_FRAME_ATTR_GROW_BOX = 0x4000,
|
||||
};
|
||||
typedef enum xp_frame_attr_enum xp_frame_attr;
|
||||
|
||||
*/
|
||||
ext.FrameAttr = {
|
||||
Active: 1,
|
||||
Urgent: 2,
|
||||
Title: 4,
|
||||
Prelight: 8,
|
||||
Shaded: 16,
|
||||
CloseBox: 0x100,
|
||||
Collapse: 0x200,
|
||||
Zoom: 0x400,
|
||||
CloseBoxClicked: 0x800,
|
||||
CollapseBoxClicked: 0x1000,
|
||||
ZoomBoxClicked: 0x2000,
|
||||
GrowBox: 0x4000
|
||||
};
|
||||
|
||||
ext.FrameDraw = function(screen, window, frameClass, attr, ix, iy, iw, ih, ox, oy, ow, oh, title)
|
||||
{
|
||||
X.seq_num++;
|
||||
var titleReqWords = xutil.padded_length(title.length);
|
||||
var titleReqWords = xutil.padded_length(title.length)/4;
|
||||
X.pack_stream.pack('CCSLLSSSSSSSSSSLp', [ext.majorOpcode, 3, 9+titleReqWords, screen, window, frameClass, attr, ix, iy, iw, ih, ox, oy, ow, oh, title.length, title]);
|
||||
X.pack_stream.flush();
|
||||
}
|
||||
|
|
@ -167,11 +198,14 @@ typedef enum xp_frame_attr_enum xp_frame_attr;
|
|||
X.pack_stream.flush();
|
||||
}
|
||||
|
||||
callback(ext);
|
||||
/*
|
||||
ext.QueryVersion(function(err, vers) {
|
||||
ext.major = vers[0];
|
||||
ext.minor = vers[1];
|
||||
ext.patch = vers[2];
|
||||
callback(ext);
|
||||
});
|
||||
*/
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue