aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoranekos2011-03-31 11:52:57 +0900
committeranekos2011-03-31 22:40:45 +0900
commit1ebd8ad4e3203c914f9829c39f77f1fcc043dddb (patch)
tree2a02139e90ab5540fddd6ec33585f6892f344dd8
parent5f835b756d6258550341a2f0601185d3a282e406 (diff)
downloadvimperator-plugins-1ebd8ad4e3203c914f9829c39f77f1fcc043dddb.tar.bz2
要素を目標できるようにAPI変更
-rw-r--r--win-mouse.js29
1 files changed, 23 insertions, 6 deletions
diff --git a/win-mouse.js b/win-mouse.js
index 5e4c7e9..cba3100 100644
--- a/win-mouse.js
+++ b/win-mouse.js
@@ -371,7 +371,8 @@ let INFO =
return pos;
},
- move: function (x, y, relative) {
+ move: function ({x, y, relative}) {
+ [x, y] = [x, y].map(function (it) parseInt(it));
if (relative) {
let pos = API.position;
SetCursorPos(pos.x + x, pos.y + y);
@@ -380,7 +381,7 @@ let INFO =
}
},
- click: function (name) {
+ click: function ({name, x, y, elem, release}) {
let vs = buttonNameToClickValues(name || 'left');
if (!vs)
throw 'Unknown button name';
@@ -422,6 +423,22 @@ let INFO =
ClickInput[relKeys.length + 0].flags = vs[0];
ClickInput[relKeys.length + 1].flags = vs[1];
+ if (elem) {
+ let view = elem.ownerDocument.defaultView;
+ let [sx, sy] = [view.mozInnerScreenX, view.mozInnerScreenY];
+ let rect = elem.getBoundingClientRect();
+ let [bx, by] = [sx + rect.left, sy + rect.top];
+ x = !x ? bx + rect.width / 2 :
+ (0 < x && x < 1) ? bx + rect.width * x :
+ bx + x;
+ y = !y ? by + rect.height / 2 :
+ (0 < y && y < 1) ? by + rect.height * y :
+ by + y;
+ }
+
+ if (x && y)
+ API.move({x: x, y: y});
+
SendInput(inputSize, ClickInput.address(), MouseInput.size)
let autoBlur = liberator.globalVariables.win_mouse_auto_blur;
@@ -484,7 +501,7 @@ let INFO =
function (key) {
return [
'Move cursor to' + name,
- function (count) API.move(D(dx, count), D(dy, count), true),
+ function (count) API.move({x: D(dx, count), y: D(dy, count), relative: true}),
{count: true}
];
}
@@ -497,7 +514,7 @@ let INFO =
function (key) {
return [
name + ' click',
- function () API.click(name, key),
+ function () API.click({name: name, release: key}),
{}
];
}
@@ -525,7 +542,7 @@ let INFO =
'Click',
function (args) {
for (let [, button] in Iterator(args))
- API.click(button);
+ API.click({name: button});
},
{
completer: function (context, args) {
@@ -546,7 +563,7 @@ let INFO =
if (args.length == 1)
y = x;
- API.move(x, y, args['-relative'] || args.bang);
+ API.move({x: x, y: y, relative: args['-relative'] || args.bang});
},
{
bang: true,