Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wheel gestures on e10s #163

Open
knoajp opened this issue Jun 2, 2017 · 3 comments
Open

Wheel gestures on e10s #163

knoajp opened this issue Jun 2, 2017 · 3 comments

Comments

@knoajp
Copy link

knoajp commented Jun 2, 2017

I assign wheel gestures to left/right scrolling.
But it doesn't work on e10s being on, with error message(window.content is null).

By the way, FireGestures' wheel scrolling with right click is just one-way scroling;
I mean, if I start RIGHTward scrolling with wheel gesture,
I can't scroll backward(LEFTward) without "mouseup".
I want scroll left/right with remaining mousedown.

in Japanese:
ホイールジェスチャを左右のスクローに割り当てて使用していましたが、
e10sを有効にしていると(window.content is null)とのエラーが出て動きません。

ところで、FireGesturesのホイールジェスチャによる左右スクロールは一方通行ですね。
すなわち、ひとたび右ボタンを押してから「右」方向にスクロールさせると、
押した右ボタンを離さない限りは「左」方向に戻すスクロールができません。
右ボタンを押したまま、上下のホイールで自在に左右にスクロールさせられるとうれしいです。

@knoajp
Copy link
Author

knoajp commented Jun 16, 2017

左右のスクロールはてっきり標準で用意されている動作だと思っていたのですが、わたしの勘違いで、自分で書いていたスクリプトで実現させていたことでした。
下記のように書き直すことで、e10s有効環境下でも動作させることができました。お騒がせしてすみません。

var mm = gBrowser.selectedBrowser.messageManager;
mm.loadFrameScript('data:,' + encodeURIComponent((function(){
  content.scrollBy(100,0);
}).toSource() + '()'), true);

ただ、先の投稿の最後のほうに書いた要望は生きています。
ホイールジェスチャのホイール回転について、「右クリックを押し続けたまま」上方向にも下方向にも発動させられると便利です。

@gomita
Copy link
Owner

gomita commented Jun 17, 2017

content.scrollBy(100,0);
この100を-100に変えたスクリプトを上方向のホイールジェスチャに割り当てすれば良いのではないでしょうか。

@knoajp
Copy link
Author

knoajp commented Jun 17, 2017

ありがとうございます。上手く伝わらなくてすみません。
-100に割り当てたスクリプトはもちろんユーザースクリプトとして登録してありますし、それをホイールジェスチャの上スクロールにも割り当てています。その上で、

  1. マウスの右ボタンをmousedown
  2. ホイールを下方向に回して望みの位置まで右スクロールさせる
  3. 望みの位置より少し右方向に行きすぎてしまったときに…
  4. (1.でmousedownさせた右ボタンをmouseupさせないまま、) ←ここ重要
  5. ホイールを上方向に回して、望みの位置まで左方向に戻そうとする
  6. 意図に反して、左方向ではなく通常のホイールの動作である上方向にスクロールしてしまう

ということです。
が、いま改めて検証して気付いたのですが、4.の瞬間に「ジェスチャのタイムアウト」時間が経過してしまっていたのが原因でした。0.5秒と短めに設定しているのも災いしたようです。

右クリックしたままホイールの上下でひょいひょい微調整できると便利なので、個人的にはホイールジェスチャのみタイムアウトを無視してくれるといいなと思いますが、レアケースだと思いますし仕様的にも例外を設けるのは美しくない気がしますので、あきらめることにします。(タイムアウトを1秒にするなど、意図的にジェスチャをキャンセルしたいときの待ち時間との、ベストバランスを模索します)

まことにお騒がせしてしまいました。ありがとうございました。

(実際には下記のようにスムーズにスクロールさせています)

var mm = gBrowser.selectedBrowser.messageManager;
mm.loadFrameScript('data:,' + encodeURIComponent((function(){
  let i = 10;
  let id = setInterval(function(){
    content.scrollBy(10,0);
    if(--i===0) clearInterval(id);
  }, 1000/100);
}).toSource() + '()'), true);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants