Don't log error messages when using the clipboard
wxClipboard::GetData()and wxClipboard::SetData() both log a "wxLogSysError" error-level message (see for example: https://github.com/wxWidgets/wxWidgets/blob/v3.1.4/src/msw/clipbrd.cpp#L703 ). This logged message gets displayed as a messagebox to the user. The logging can be disabled temporarily by creating a wxLogNull object. See https://docs.wxwidgets.org/3.0/classwx_log_null.html Fixes https://gitlab.com/kicad/code/kicad/-/issues/6956
This commit is contained in:
parent
1c6c0bf8cf
commit
9aedeae5c3
|
@ -866,6 +866,8 @@ void EDA_3D_VIEWER::takeScreenshot( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
wxBitmap bitmap( screenshotImage );
|
wxBitmap bitmap( screenshotImage );
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
wxBitmapDataObject* dobjBmp = new wxBitmapDataObject( bitmap );
|
wxBitmapDataObject* dobjBmp = new wxBitmapDataObject( bitmap );
|
||||||
|
|
|
@ -683,6 +683,8 @@ void BM2CMP_FRAME::OnExportToClipboard( wxCommandEvent& event )
|
||||||
std::string buffer;
|
std::string buffer;
|
||||||
ExportToBuffer( buffer, format );
|
ExportToBuffer( buffer, format );
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
// Write buffer to the clipboard
|
// Write buffer to the clipboard
|
||||||
if (wxTheClipboard->Open())
|
if (wxTheClipboard->Open())
|
||||||
{
|
{
|
||||||
|
|
|
@ -471,6 +471,8 @@ void DIALOG_ABOUT::onHtmlLinkClicked( wxHtmlLinkEvent& event )
|
||||||
|
|
||||||
void DIALOG_ABOUT::onCopyVersionInfo( wxCommandEvent& event )
|
void DIALOG_ABOUT::onCopyVersionInfo( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( !wxTheClipboard->Open() )
|
if( !wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
wxMessageBox( _( "Could not open clipboard to write version information." ),
|
wxMessageBox( _( "Could not open clipboard to write version information." ),
|
||||||
|
|
|
@ -230,6 +230,8 @@ void WX_HTML_REPORT_PANEL::onMenuEvent( wxMenuEvent& event )
|
||||||
{
|
{
|
||||||
if( event.GetId() == wxID_COPY )
|
if( event.GetId() == wxID_COPY )
|
||||||
{
|
{
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
bool primarySelection = wxTheClipboard->IsUsingPrimarySelection();
|
bool primarySelection = wxTheClipboard->IsUsingPrimarySelection();
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include <grid_tricks.h>
|
#include <grid_tricks.h>
|
||||||
#include <wx/tokenzr.h>
|
#include <wx/tokenzr.h>
|
||||||
#include <wx/clipbrd.h>
|
#include <wx/clipbrd.h>
|
||||||
|
#include <wx/log.h>
|
||||||
#include <widgets/grid_readonly_text_helpers.h>
|
#include <widgets/grid_readonly_text_helpers.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -253,6 +254,8 @@ void GRID_TRICKS::showPopupMenu( wxMenu& menu )
|
||||||
|
|
||||||
menu.Enable( GRIDTRICKS_ID_PASTE, false );
|
menu.Enable( GRIDTRICKS_ID_PASTE, false );
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
if( wxTheClipboard->IsSupported( wxDF_TEXT ) )
|
if( wxTheClipboard->IsSupported( wxDF_TEXT ) )
|
||||||
|
@ -470,6 +473,8 @@ void GRID_TRICKS::onKeyDown( wxKeyEvent& ev )
|
||||||
|
|
||||||
void GRID_TRICKS::paste_clipboard()
|
void GRID_TRICKS::paste_clipboard()
|
||||||
{
|
{
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
if( wxTheClipboard->IsSupported( wxDF_TEXT ) )
|
if( wxTheClipboard->IsSupported( wxDF_TEXT ) )
|
||||||
|
@ -585,6 +590,8 @@ void GRID_TRICKS::paste_text( const wxString& cb_text )
|
||||||
|
|
||||||
void GRID_TRICKS::cutcopy( bool doCut )
|
void GRID_TRICKS::cutcopy( bool doCut )
|
||||||
{
|
{
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
wxGridTableBase* tbl = m_grid->GetTable();
|
wxGridTableBase* tbl = m_grid->GetTable();
|
||||||
|
|
|
@ -162,6 +162,8 @@ void SCINTILLA_TRICKS::onCharHook( wxKeyEvent& aEvent )
|
||||||
if( m_te->GetSelectionEnd() > m_te->GetSelectionStart() )
|
if( m_te->GetSelectionEnd() > m_te->GetSelectionStart() )
|
||||||
m_te->DeleteBack();
|
m_te->DeleteBack();
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
if( wxTheClipboard->IsSupported( wxDF_TEXT ) )
|
if( wxTheClipboard->IsSupported( wxDF_TEXT ) )
|
||||||
|
|
|
@ -975,6 +975,8 @@ void TOOL_MANAGER::ScheduleContextMenu( TOOL_BASE* aTool, ACTION_MENU* aMenu,
|
||||||
|
|
||||||
bool TOOL_MANAGER::SaveClipboard( const std::string& aTextUTF8 )
|
bool TOOL_MANAGER::SaveClipboard( const std::string& aTextUTF8 )
|
||||||
{
|
{
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
// Store the UTF8 string as unicode string in clipboard:
|
// Store the UTF8 string as unicode string in clipboard:
|
||||||
|
@ -993,6 +995,8 @@ std::string TOOL_MANAGER::GetClipboardUTF8() const
|
||||||
{
|
{
|
||||||
std::string result;
|
std::string result;
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
if( wxTheClipboard->IsSupported( wxDF_TEXT )
|
if( wxTheClipboard->IsSupported( wxDF_TEXT )
|
||||||
|
|
|
@ -84,6 +84,8 @@ int CVPCB_ASSOCIATION_TOOL::CopyAssoc( const TOOL_EVENT& aEvent )
|
||||||
if( !fpid.IsValid() )
|
if( !fpid.IsValid() )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
wxTheClipboard->SetData( new wxTextDataObject( fpid.GetUniStringLibId() ) );
|
wxTheClipboard->SetData( new wxTextDataObject( fpid.GetUniStringLibId() ) );
|
||||||
|
@ -118,20 +120,24 @@ int CVPCB_ASSOCIATION_TOOL::CutAssoc( const TOOL_EVENT& aEvent )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// Save it to the clipboard
|
// Save it to the clipboard
|
||||||
if( wxTheClipboard->Open() )
|
|
||||||
{
|
{
|
||||||
if( !wxTheClipboard->SetData( new wxTextDataObject( fpid.GetUniStringLibId() ) ) )
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
|
if( !wxTheClipboard->SetData( new wxTextDataObject( fpid.GetUniStringLibId() ) ) )
|
||||||
|
{
|
||||||
|
wxTheClipboard->Close();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxTheClipboard->Flush();
|
||||||
wxTheClipboard->Close();
|
wxTheClipboard->Close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxTheClipboard->Flush();
|
|
||||||
wxTheClipboard->Close();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the association
|
// Remove the association
|
||||||
|
@ -153,14 +159,18 @@ int CVPCB_ASSOCIATION_TOOL::PasteAssoc( const TOOL_EVENT& aEvent )
|
||||||
LIB_ID fpid;
|
LIB_ID fpid;
|
||||||
wxTextDataObject data;
|
wxTextDataObject data;
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
|
||||||
{
|
{
|
||||||
wxTheClipboard->GetData( data );
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
wxTheClipboard->Close();
|
|
||||||
}
|
if( wxTheClipboard->Open() )
|
||||||
else
|
{
|
||||||
{
|
wxTheClipboard->GetData( data );
|
||||||
return 0;
|
wxTheClipboard->Close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( fpid.Parse( data.GetText() ) >= 0 )
|
if( fpid.Parse( data.GetText() ) >= 0 )
|
||||||
|
|
|
@ -325,6 +325,7 @@ void DIALOG_CHOOSE_SYMBOL::OnCharHook( wxKeyEvent& e )
|
||||||
!e.AltDown() && !e.ShiftDown() && !e.MetaDown() )
|
!e.AltDown() && !e.ShiftDown() && !e.MetaDown() )
|
||||||
{
|
{
|
||||||
wxString txt = m_details->SelectionToText();
|
wxString txt = m_details->SelectionToText();
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -528,12 +528,16 @@ void SCH_EDIT_FRAME::DrawCurrentSheetToClipboard()
|
||||||
|
|
||||||
PrintPage( GetRenderSettings() );
|
PrintPage( GetRenderSettings() );
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
|
||||||
{
|
{
|
||||||
// This data objects are held by the clipboard, so do not delete them in the app.
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
wxBitmapDataObject* clipbrd_data = new wxBitmapDataObject( image );
|
|
||||||
wxTheClipboard->SetData( clipbrd_data );
|
if( wxTheClipboard->Open() )
|
||||||
wxTheClipboard->Close();
|
{
|
||||||
|
// This data objects are held by the clipboard, so do not delete them in the app.
|
||||||
|
wxBitmapDataObject* clipbrd_data = new wxBitmapDataObject( image );
|
||||||
|
wxTheClipboard->SetData( clipbrd_data );
|
||||||
|
wxTheClipboard->Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deselect Bitmap from DC in order to delete the MemoryDC
|
// Deselect Bitmap from DC in order to delete the MemoryDC
|
||||||
|
|
|
@ -761,6 +761,8 @@ void SYMBOL_EDIT_FRAME::CopyPartToClipboard()
|
||||||
STRING_FORMATTER formatter;
|
STRING_FORMATTER formatter;
|
||||||
SCH_SEXPR_PLUGIN::FormatPart( tmp.get(), formatter );
|
SCH_SEXPR_PLUGIN::FormatPart( tmp.get(), formatter );
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
auto clipboard = wxTheClipboard;
|
auto clipboard = wxTheClipboard;
|
||||||
wxClipboardLocker clipboardLock( clipboard );
|
wxClipboardLocker clipboardLock( clipboard );
|
||||||
|
|
||||||
|
@ -788,6 +790,8 @@ void SYMBOL_EDIT_FRAME::DuplicatePart( bool aFromClipboard )
|
||||||
|
|
||||||
if( aFromClipboard )
|
if( aFromClipboard )
|
||||||
{
|
{
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
auto clipboard = wxTheClipboard;
|
auto clipboard = wxTheClipboard;
|
||||||
wxClipboardLocker clipboardLock( clipboard );
|
wxClipboardLocker clipboardLock( clipboard );
|
||||||
|
|
||||||
|
|
|
@ -281,6 +281,8 @@ void PANEL_SETUP_BOARD_STACKUP::onExportToClipboard( wxCommandEvent& event )
|
||||||
// Build a ascii representation of stackup and copy it in the clipboard
|
// Build a ascii representation of stackup and copy it in the clipboard
|
||||||
wxString report = BuildStackupReport( m_stackup, m_units );
|
wxString report = BuildStackupReport( m_stackup, m_units );
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
if( wxTheClipboard->Open() )
|
if( wxTheClipboard->Open() )
|
||||||
{
|
{
|
||||||
// This data objects are held by the clipboard,
|
// This data objects are held by the clipboard,
|
||||||
|
|
|
@ -240,6 +240,7 @@ void CLIPBOARD_IO::SaveSelection( const PCB_SELECTION& aSelected, bool isFootpri
|
||||||
}
|
}
|
||||||
|
|
||||||
// These are placed at the end to minimize the open time of the clipboard
|
// These are placed at the end to minimize the open time of the clipboard
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
auto clipboard = wxTheClipboard;
|
auto clipboard = wxTheClipboard;
|
||||||
wxClipboardLocker clipboardLock( clipboard );
|
wxClipboardLocker clipboardLock( clipboard );
|
||||||
|
|
||||||
|
@ -251,7 +252,7 @@ void CLIPBOARD_IO::SaveSelection( const PCB_SELECTION& aSelected, bool isFootpri
|
||||||
|
|
||||||
clipboard->Flush();
|
clipboard->Flush();
|
||||||
|
|
||||||
#ifndef __WXOSX__
|
#ifndef __WXOSX__ )
|
||||||
// This section exists to return the clipboard data, ensuring it has fully
|
// This section exists to return the clipboard data, ensuring it has fully
|
||||||
// been processed by the system clipboard. This appears to be needed for
|
// been processed by the system clipboard. This appears to be needed for
|
||||||
// extremely large clipboard copies on asynchronous linux clipboard managers
|
// extremely large clipboard copies on asynchronous linux clipboard managers
|
||||||
|
@ -259,12 +260,13 @@ void CLIPBOARD_IO::SaveSelection( const PCB_SELECTION& aSelected, bool isFootpri
|
||||||
// clipboard is closed seems to cause an ASAN error (heap-buffer-overflow)
|
// 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
|
// since it uses the cached version of the clipboard data and not the system
|
||||||
// clipboard data.
|
// clipboard data.
|
||||||
|
if( clipboard->IsSupported( wxDF_TEXT ) )
|
||||||
{
|
{
|
||||||
wxTextDataObject data;
|
wxTextDataObject data;
|
||||||
clipboard->GetData( data );
|
clipboard->GetData( data );
|
||||||
( void )data.GetText(); // Keep unused variable
|
(void) data.GetText(); // Keep unused variable
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -273,13 +275,14 @@ BOARD_ITEM* CLIPBOARD_IO::Parse()
|
||||||
BOARD_ITEM* item;
|
BOARD_ITEM* item;
|
||||||
wxString result;
|
wxString result;
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
auto clipboard = wxTheClipboard;
|
auto clipboard = wxTheClipboard;
|
||||||
wxClipboardLocker clipboardLock( clipboard );
|
wxClipboardLocker clipboardLock( clipboard );
|
||||||
|
|
||||||
if( !clipboardLock )
|
if( !clipboardLock )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
|
|
||||||
if( clipboard->IsSupported( wxDF_TEXT ) )
|
if( clipboard->IsSupported( wxDF_TEXT ) )
|
||||||
{
|
{
|
||||||
wxTextDataObject data;
|
wxTextDataObject data;
|
||||||
|
@ -320,6 +323,8 @@ void CLIPBOARD_IO::Save( const wxString& aFileName, BOARD* aBoard,
|
||||||
|
|
||||||
m_out->Print( 0, ")\n" );
|
m_out->Print( 0, ")\n" );
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
auto clipboard = wxTheClipboard;
|
auto clipboard = wxTheClipboard;
|
||||||
wxClipboardLocker clipboardLock( clipboard );
|
wxClipboardLocker clipboardLock( clipboard );
|
||||||
|
|
||||||
|
@ -334,6 +339,7 @@ void CLIPBOARD_IO::Save( const wxString& aFileName, BOARD* aBoard,
|
||||||
// been processed by the system clipboard. This appears to be needed for
|
// been processed by the system clipboard. This appears to be needed for
|
||||||
// extremely large clipboard copies on asynchronous linux clipboard managers
|
// extremely large clipboard copies on asynchronous linux clipboard managers
|
||||||
// such as KDE's Klipper
|
// such as KDE's Klipper
|
||||||
|
if( clipboard->IsSupported( wxDF_TEXT ) )
|
||||||
{
|
{
|
||||||
wxTextDataObject data;
|
wxTextDataObject data;
|
||||||
clipboard->GetData( data );
|
clipboard->GetData( data );
|
||||||
|
@ -347,6 +353,8 @@ BOARD* CLIPBOARD_IO::Load( const wxString& aFileName, BOARD* aAppendToMe,
|
||||||
{
|
{
|
||||||
std::string result;
|
std::string result;
|
||||||
|
|
||||||
|
wxLogNull doNotLog; // disable logging of failed clipboard actions
|
||||||
|
|
||||||
auto clipboard = wxTheClipboard;
|
auto clipboard = wxTheClipboard;
|
||||||
wxClipboardLocker clipboardLock( clipboard );
|
wxClipboardLocker clipboardLock( clipboard );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue