Будет ли переключение на Wayland исправлять невозможность вставки из закрытых окон?

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

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

4
задан 10 May 2012 в 06:37

1 ответ

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

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

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

Мое понимание этого процесса состоит в том, что когда что-то копируется, приложение уведомляет менеджер буфера обмена о форматах, в которых оно может предоставлять данные: «эй, у меня есть кое-что, что я могу преобразовать в формат my-proprietary-format , форматированный текст или простой текст ".

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

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 что-либо улучшит в этом отношении:)

0
ответ дан 10 May 2012 в 06:37

Другие вопросы по тегам:

Похожие вопросы: