web-dev-qa-db-fra.com

Le passage à Wayland fix ne pourra-t-il pas coller à partir de fenêtres fermées?

J'ai récemment lire comment Xorg est à blâmer pour le bogue infâme dans lequel un utilisateur ne peut pas copier et coller à partir d'une fenêtre après l'avoir fermée. Et je connais également le passage éventuel prévu à Wayland en remplacement de X .

Si ce bogue est le résultat de X et que X sera remplacé par Wayland, est-il possible qu'un correctif survienne à ce moment-là? Je suis curieux de savoir si cela est techniquement possible, et si c'est actuellement dans les plans pour cela.

4

Eh bien, je ne pense pas que ce soit un bug en tant que tel, c'est plutôt une fonctionnalité qui a des conséquences inattendues :) De plus, je crois comprendre que d'autres "gestionnaires de presse-papiers", c'est-à-dire dans Windows et MacOS X , fonctionne de manière très similaire - lorsque l'opération de copie est effectuée, l'application avertit simplement le gestionnaire du presse-papiers - "hé, j'ai quelque chose" sans transmettre les données réelles (bien que dans les systèmes d'exploitation mentionnés ci-dessus, un l'application peut stocker physiquement les données dans le presse-papiers - XWindow laisse cela à un "gestionnaire de presse-papiers", qui est une application distincte).

La raison de cela deviendra claire si vous considérez que les données copiées doivent souvent être converties d'un format à un autre avant d'être collées. Exemple: vous copiez un bloc de texte à partir d'un programme de publication et le collez dans le même programme - le résultat préserve la taille du bloc de texte, les bordures, les transformations, etc. Ensuite, vous collez la même chose dans un processeur de texte - le résultat est du texte avec un formatage riche, mais les propriétés du cadre de texte sont évidemment perdues car le processeur de texte n'en sait rien. Ensuite, vous collez la même chose dans un éditeur de texte - le résultat est simplement du texte brut sans mise en forme.

Maintenant, comment ça marche? Comment le format de données propriétaire du programme de publication est-il converti en quelque chose que le processeur de texte comprend ou simplement en texte brut? De toute évidence, la conversion ne peut pas être effectuée par le serveur X car il ne sait rien de tous les formats de données possibles, de même, l'application réceptrice ne peut pas faites la conversion pour la même raison.

Ma compréhension du processus est que lorsque quelque chose est copié, l'application informe le gestionnaire du presse-papiers des formats dans lesquels il peut fournir les données: "Hé, j'ai quelque chose que je peux convertir en mon format propriétaire, texte riche ou texte brut ".

Une autre application vérifie ensuite s'il y a quelque chose dans le presse-papiers dans un format qu'elle comprend:

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

Ensuite, lorsque l'action Coller est sélectionnée, le résultat final est que l'application source est invitée à fournir les données dans le format requis.

Lorsque l'application se ferme, la norme indique qu'elle peut enregistrer les données dans le gestionnaire de presse-papiers:

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.

Donc, si je comprends bien, c'est la responsabilité de l'application de sauvegarder les données. En tant que tel, il est probablement peu probable que Wayland améliore quoi que ce soit à cet égard :)

4
Sergey