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);
});
현재 코드가 작동합니다. 그러나 Windows에서 호스트에서 복사 할 때마다 wait_for_text()
은 응용 프로그램 시작시 복사 버퍼에 있던 텍스트를 반환합니다. Windows에서 클라이언트에서 복사하면 올바른 텍스트를 얻을 수 있지만 호스트에서 제대로 붙여 넣을 수는 있지만 일단 호스트에서 다시 복사하면 클립 보드 데이터가 처음부터 있던 위치로 재설정됩니다.
내가 누락되었거나 Gtk 버그입니까?