Исправит ли переход на Wayland невозможность вставки из закрытых окон?

Исправит ли переход на Wayland невозможность вставки из закрытых окон?

Я недавнопочитайте о том, в чем виноват Xorgдляпечально известная ошибкав котором пользователь не может копировать и вставлять из окна после того, как он его закрыл. И я также знаю о запланированном в конечном итоге переходе наWayland как замена X.

Если этот баг является результатом X, и X будет заменен на Wayland, то возможно ли, что исправление выйдет в то время? Мне интересно, возможно ли это технически, и есть ли это в планах на данный момент.

решение1

Ну, я не думаю, что это ошибка как таковая, это скорее особенность, которая имеет некоторые непреднамеренные последствия :) Более того, я понимаю, что другие "менеджеры буфера обмена", т. е. вОкнаиMac OS X, работают очень похожим образом - когда выполняется операция копирования, приложение просто уведомляет менеджер буфера обмена - "эй, у меня кое-что есть" без передачи фактических данных (хотя в вышеупомянутых ОС приложениеможетФизически хранить данные в буфере обмена — XWindow оставляет эту задачу «менеджеру буфера обмена», который является отдельным приложением.

Причина этого станет ясна, если учесть, что копируемые данные часто необходимо преобразовывать из одного формата в другой перед вставкой. Пример: вы копируете текстовый фрейм из программы публикации и вставляете его в ту же программу — результат сохраняет размер текстового фрейма, границы, преобразования и т. д. Затем вы вставляете то же самое в текстовый процессор — результатом является текст с расширенным форматированием, но, очевидно, свойства текстового фрейма теряются, поскольку текстовый процессор ничего об этом не знает. Затем вы вставляете то же самое в текстовый редактор — результатом является просто текст без какого-либо форматирования.

Теперь, как это работает? Как формат данных, используемый издательской программой, преобразуется в то, что понимает текстовый процессор, или просто в обычный текст? Очевидно, что преобразование не может быть выполнено X-сервером, поскольку он ничего не знает обо всех возможных форматах данных, а такжеполучениеприложение не может выполнить преобразование по той же причине.

Насколько я понимаю, процесс заключается в том, что когда что-то копируется, приложение уведомляет менеджер буфера обмена о форматах, в которых оно может предоставить данные: «Эй, у меня есть кое-что, что я могу преобразовать в свой собственный формат, форматированный текст или обычный текст».

Затем другое приложение проверяет, есть ли в буфере обмена какие-либо данные в формате, который оно понимает:

if (clipboad.contains_data_in_formats("image", "rich text", "plain text")) {
    enable_Paste_menu_item();
}

Затем, когда выбрано действие Вставить, конечный результат будет таким:источникЗаявка должна быть предоставлена ​​в требуемом формате.

При выходе из приложения,стандартговорит, что может сохранять данные в менеджере буфера обмена:

If a client needs to exit while owning the CLIPBOARD selection, 
it should request the clipboard manager to take over the ownership 
of the clipboard, using the SAVE_TARGETS mechanism. If there is no 
clipboard manager, or if the SAVE_TARGETS conversion fails, the 
application should simply exit.

Итак, я понимаю, что сохранение данных — это обязанность приложения. Таким образом, вряд ли Wayland что-то улучшит в этом отношении :)

Связанный контент