Handle Unicode clipboard data in pcbnew and symbol editor

Fixes #10323

(cherry picked from commit 8373180cbb)
This commit is contained in:
dana 2022-01-12 03:24:04 -06:00 committed by Seth Hillbrand
parent 56d87a8613
commit 57d58fe335
3 changed files with 15 additions and 7 deletions

View File

@ -299,8 +299,11 @@ void GRID_TRICKS::showPopupMenu( wxMenu& menu )
if( wxTheClipboard->Open() )
{
if( wxTheClipboard->IsSupported( wxDF_TEXT ) )
if( wxTheClipboard->IsSupported( wxDF_TEXT )
|| wxTheClipboard->IsSupported( wxDF_UNICODETEXT ) )
{
menu.Enable( GRIDTRICKS_ID_PASTE, true );
}
wxTheClipboard->Close();
}
@ -535,7 +538,8 @@ void GRID_TRICKS::paste_clipboard()
if( wxTheClipboard->Open() )
{
if( wxTheClipboard->IsSupported( wxDF_TEXT ) )
if( wxTheClipboard->IsSupported( wxDF_TEXT )
|| wxTheClipboard->IsSupported( wxDF_UNICODETEXT ) )
{
wxTextDataObject data;

View File

@ -845,8 +845,12 @@ void SYMBOL_EDIT_FRAME::DuplicateSymbol( bool aFromClipboard )
auto clipboard = wxTheClipboard;
wxClipboardLocker clipboardLock( clipboard );
if( !clipboardLock || ! clipboard->IsSupported( wxDF_TEXT ) )
if( !clipboardLock
|| !( clipboard->IsSupported( wxDF_TEXT )
|| clipboard->IsSupported( wxDF_UNICODETEXT ) ) )
{
return;
}
wxTextDataObject data;
clipboard->GetData( data );

View File

@ -291,7 +291,7 @@ void CLIPBOARD_IO::SaveSelection( const PCB_SELECTION& aSelected, bool isFootpri
// clipboard is closed seems to cause an ASAN error (heap-buffer-overflow)
// since it uses the cached version of the clipboard data and not the system
// clipboard data.
if( clipboard->IsSupported( wxDF_TEXT ) )
if( clipboard->IsSupported( wxDF_TEXT ) || clipboard->IsSupported( wxDF_UNICODETEXT ) )
{
wxTextDataObject data;
clipboard->GetData( data );
@ -314,7 +314,7 @@ BOARD_ITEM* CLIPBOARD_IO::Parse()
if( !clipboardLock )
return nullptr;
if( clipboard->IsSupported( wxDF_TEXT ) )
if( clipboard->IsSupported( wxDF_TEXT ) || clipboard->IsSupported( wxDF_UNICODETEXT ) )
{
wxTextDataObject data;
clipboard->GetData( data );
@ -370,7 +370,7 @@ void CLIPBOARD_IO::Save( const wxString& aFileName, BOARD* aBoard,
// been processed by the system clipboard. This appears to be needed for
// extremely large clipboard copies on asynchronous linux clipboard managers
// such as KDE's Klipper
if( clipboard->IsSupported( wxDF_TEXT ) )
if( clipboard->IsSupported( wxDF_TEXT ) || clipboard->IsSupported( wxDF_UNICODETEXT ) )
{
wxTextDataObject data;
clipboard->GetData( data );
@ -393,7 +393,7 @@ BOARD* CLIPBOARD_IO::Load( const wxString& aFileName, BOARD* aAppendToMe,
if( !clipboardLock )
return nullptr;
if( clipboard->IsSupported( wxDF_TEXT ) )
if( clipboard->IsSupported( wxDF_TEXT ) || clipboard->IsSupported( wxDF_UNICODETEXT ) )
{
wxTextDataObject data;
clipboard->GetData( data );