2017-10-26 20 views
0

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 버그입니까?

답변

0
내가 뒷조사를했다

, 이것은 특히이 버그 수정과 관련된 GTK 버그가 될 것으로 보인다 않습니다 이전에이 패치의 결의에 https://bugzilla.gnome.org/show_bug.cgi?id=781814

변화를 되돌리기 또는 동작을 에뮬레이트하는 사용자 정의 버전으로 wait_for_text 교체 클립 보드 이상한.