VNCクライアント(gtk-vnc)からホストへ/からのクリップボードを共有するgtkmmアプリケーションがあります。参考のため は、ここに関連するコードは次のとおりです。WindowsでのGtkmmクリップボードのテキストが正しくありません
signal_vnc_server_cut_text().connect([this](const Glib::ustring &text) {
auto clipboard = Gtk::Clipboard::get();
m_clipboard_text = text;
/* Works correctly on Windows and Linux */
clipboard->set_text(text);
clipboard->store();
});
Gtk::Clipboard::get()->signal_owner_change().connect([this](GdkEventOwnerChange *) {
auto clipboard = Gtk::Clipboard::get();
auto text = clipboard->wait_for_text();
/* text is correct on Linux, but see below for Windows */
std::cout << "Clipboard got: " << text << std::endl;
if (!text.empty() && text != m_clipboard_text)
client_cut_text(text);
});
Linuxホスト上で期待通りに現在のコードは、(両方の方向をコピーして貼り付けることができます)動作します。しかし、Windowsでは、ホストからコピーしようとするたびに、wait_for_text()
は、アプリケーションの起動時にコピーバッファにあるテキストを返します。 Windows上のクライアントからコピーすると正しいテキストが得られますが、ホスト上に貼り付けることはできますが、ホストから再度コピーすると、クリップボードのデータは最初から何にあってもリセットされます。
私に何かが見つからないのですか、これはGtkのバグですか?