Я пытаюсь проверить, видно ли какое-то положение окна Emacs, и не перекрывается ни одним окном, ни каким-то образом скрывается средствами отделки. С этой целью я установил положение мыши в определенную точку, а затем сравнил установленные значения с (mouse-position)
. Однако я получаю несколько разные значения.Когда установлено положение мыши и положение мыши по-разному?
Как фактическое (mouse-position)
отличается от установленного значения? (При условии, что мышь не перемещается пользователем).
Чтобы проверить это быстро C-й С-Й
(list (set-mouse-position (selected-frame) 4 4) (mouse-position))
Как для pos-visible-in-window-p
, это не выполняет фактическую проверку. Чтобы увидеть этот
(progn (sleep-for 5) (pos-visible-in-window-p 1))
с С-у С-й С-е и ниже, скрыть окно. Увы, это правда.
IIRC, Emacs не может этого знать. Он мог бы узнать, действительно ли это * нарисовало * эту часть буфера на экране, но теперь с компоновкой оконных менеджеров приложениям часто приходится рисовать каждую часть своих окон, даже если в конце они будут закрыты что-то другое. Другой способ взглянуть на это: что, если он слегка затенен прозрачным окном на 90%? А как насчет 10% прозрачного окна? – Stefan
@Stefan: По крайней мере, метод, который я описываю, работает (в основном). Он может обнаруживать множество аномалий, например, некоторые бары, которые скрывают область эха. Однако это не идеально. – false
@Stefan: Для прозрачности это зависит. Можете ли вы поместить мышь в это место, а затем «иметь» мышь? Вот что здесь важно. Так что прозрачность сама по себе не интересна только в тех местах, где вы действительно можете что-то сделать. – false