[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:1097]Mode line



堀口です. これもバグと言うかべきかどうか..

At 05 Apr 1999 23:04:00 +1000, Yoshiki Hayashi <penny@xxxxxxxxxxxxxxxx> wrote in <wkd81jte0v.fsf@xxxxxxxxxxxxxxxx>
> Mode 行をマウスでドラッグすると、スクロールバーの方は移動し
> ますが、普通の編集領域の方の表示は変化しません。
> (もちろん、ドラッグし終わるとちゃんと再描画されます。)

 Meaodw でモードラインをマウスで移動させる方法はわたしが知る限り2 
つです. ひとつはモードライン上でホイールを回す方法と, もうひとつ
はモードラインをドラッグする方法です.

 これらのイベントは elisp 関数で処理されています.

    イベント                 処理関数
  mode-line mouse-wheel1  w32-handle-mouse-wheel-mode-line @ w32scroll.el
  mode-line down-mouse-1  mouse-drag-mode-line @ mouse.el

 ホイールの処理はホイールが回るたびに発生するイベント(ホイール回
転数)を処理して emacs に帰るというものです.

 ドラッグの方は一旦ドラッグを検知したら, イベント処理関数内で継続
的にイベントを読みとってトラッグが終わるまで処理を続けます. とい
うわけでドラッグの方は elisp 関数の中でイベント処理を続けているの
でフレーム内の再描画が行われにくいのでしょう.

 これはemacsが通常はマウスの移動イベントを無視するつくりになって
いるためのようです. emacsでドラッグを処理するためには track-mouse 
という関数があって, この中ではマウスの移動が無視されずにイベント
として通知されるようになっています(とコメントには書いてある). よっ
てこちらはホイールと同じような方法で処理するのは難しいと思います.

--
堀口恭太郎