Ngăn chuột nhấp vào các khung không hoạt động từ điểm lặp lại


11

Tôi muốn ngăn lần nhấp "đầu tiên" vào khung trong cửa sổ X không hoạt động, ngoài việc làm cho khung hoạt động. Cụ thể, tôi không muốn nó tái định vị điểm.

Vấn đề là tôi dường như không thể phát hiện rằng ông khung không hoạt động khi tôi nhận được cú click chuột. Vì vậy, đoạn mã sau luôn hiển thị "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)

Làm cách nào để phát hiện khung hình trước đó không hoạt động?

Hoặc, có ai đó đã đạt được những gì tôi đang cố gắng làm ở nơi khác chưa?

Lưu ý: Tôi đang yêu cầu một cái gì đó khác với câu hỏi khác , đó là về các cửa sổ không hoạt động, không phải khung không hoạt động.


Bạn muốn sửa đổi phím tắt cho mouse-set-pointvà tạo chức năng của riêng bạn để làm bất cứ điều gì bạn muốn. Thực hiện thao tác C-h knhấp chuột và xem hai (2) chức năng được liệt kê ở đó.
luật

Khung của bạn không có thanh tiêu đề và đường viền? Tại sao bạn không chỉ nhấp vào những cái đó, thay vì nhấp vào bộ đệm?
Drew

@lawlist: Tôi không nghĩ điều này có ích vì sự kiện lên đến thậm chí muộn hơn. Tôi thậm chí không thể nói rằng khung không hoạt động trong sự kiện xuống!
edam

2
@Drew: tốt, tôi có thể, nhưng đó là fiddley. Tôi muốn chỉ có thể nhấp vào cửa sổ X, giống như tôi có thể khi emacs chạy trong một thiết bị đầu cuối.
edam

Đây thực sự là một hành vi rất khó chịu. Tôi ngăn chặn nó bằng cách không sử dụng chuột, tức là. sử dụng Alt + Tab và đồng. để chuyển giữa các khung.
GergelyPolonkai

Câu trả lời:


1

Tôi không nghĩ rằng điều này là có thể từ bên trong Emacs. Vấn đề là ngay khi bạn nhấp vào khung, trình quản lý cửa sổ sẽ chọn khung đó. Emacs do đó xem nó ngay lập tức như khung đã chọn.

Mã kiểm tra của riêng bạn cho thấy điều này. Không có lời khuyên nào về một trong hai mouse-drag-regionhoặc mouse-set-point(hoặc bất kỳ chức năng Emacs nào khác) sẽ tạo ra bất kỳ sự khác biệt nào.

(Có lẽ có một số thứ bạn có thể làm ở cấp X11 - dunno.)


Bạn không thể theo dõi khung đã chọn thông qua post-command-hook, ghi lại tất cả các vị trí điểm và hoàn nguyên chúng khi khung đã chọn thay đổi? Nó sẽ không hiệu quả, nhưng nó sẽ làm việc.
PythonNut

@PythonNut: Ừ. Có lẽ. Thử nó. post-command-hooklà phương sách cuối cùng của một kẻ vô lại. ;-) Tất cả chúng ta đều sử dụng nó cho rất nhiều thứ, nhưng nó là một cái búa nặng.
vẽ

1

Không chính xác những gì bạn đang yêu cầu, nhưng điều này hoạt động tốt với tôi:

(global-unset-key [down-mouse-1])   ; no dragging nonsense
(global-set-key [mouse-1] 'mouse-select-window)  ; no setting point

Điều này không phù hợp với yêu cầu của bạn chính xác ở chỗ không chỉ khung được kích hoạt mà cửa sổ được nhấp. Nhưng, tôi thấy điều đó là hữu ích. Nhấp đúp chuột di chuyển điểm, nhấp chuột đơn không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.