フレームをアクティブにする以外に、非アクティブなXウィンドウでフレームの「最初の」クリックが影響を受けないようにしたい。具体的には、ポイントの位置を変更したくありません。
問題は、マウスをクリックしたときに彼のフレームが非アクティブだったことを検出できないように見えることです。したがって、次のコードは常に表示されます"y"
。
;; detect if frame is active when clicking
(defun my/mouse-drag-region (event)
(interactive "e")
(mouse-minibuffer-check event)
(let* ((window (caadr event))
(frame (window-frame window)))
(if (eql frame (selected-frame))
(print "y")
(print "n"))))
(global-set-key [down-mouse-1] 'my/mouse-drag-region)
フレームが以前に非アクティブであったことをどのように検出しますか?
または、誰かが私が他の場所でやろうとしていることをすでに達成していますか?
注:私はこの他の質問とは異なる何かを求めています。これは、非アクティブなフレームではなく、非アクティブなウィンドウに関するものです。
フレームにタイトルバーと境界線がありませんか?バッファをクリックするのではなく、それらをクリックしてみませんか?
—
2015年
@lawlist:upイベントが後で来るので、これは役に立たないと思います。ダウンイベント中にフレームが非アクティブであったことさえわかりません!
—
edam
@ドリュー:まあ、私はできましたが、それはフィドルです。emacsがターミナルで実行されているときのように、Xウィンドウをクリックできるようにしたいのですが。
—
edam
これは確かに非常に迷惑な動作です。つまり、マウスをまったく使用しないことによって、それを防ぎます。Alt + Tabおよびcoを使用します。フレームを切り替えます。
—
GergelyPolonkai 2015年
mouse-set-point
独自の関数を作成して、必要な操作を行います。C-h k
マウスをクリックして、そこにリストされている2つの機能を確認してください。