From 61b04ac6528f18f8cb57215f74795d565451d65c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 18 Nov 1999 15:00:57 +0000 Subject: [PATCH] wxGTK pastes text from rxvt again git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/dnd/dnd.cpp | 26 ++++++++++++++++------ src/gtk/clipbrd.cpp | 51 +++++++++++++++++++++++++++++--------------- src/gtk1/clipbrd.cpp | 51 +++++++++++++++++++++++++++++--------------- 3 files changed, 88 insertions(+), 40 deletions(-) diff --git a/samples/dnd/dnd.cpp b/samples/dnd/dnd.cpp index a7a8274f31..2ba7814f1f 100644 --- a/samples/dnd/dnd.cpp +++ b/samples/dnd/dnd.cpp @@ -657,6 +657,13 @@ bool DnDApp::OnInit() wxDefaultResourceTable->ParseResourceFile(path); + // switch on trace messages +#if defined(__WXGTK__) + wxLog::AddTraceMask(_T("clipboard")); +#elif defined(__WXMSW__) + wxLog::AddTraceMask(wxTRACE_OleCalls); +#endif + #if wxUSE_LIBPNG wxImage::AddHandler( new wxPNGHandler ); #endif @@ -736,11 +743,7 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h) wxTE_MULTILINE | wxTE_READONLY | wxSUNKEN_BORDER ); -#ifdef __WXMSW__ - // redirect log messages to the text window and switch on OLE messages - // logging - wxLog::AddTraceMask(wxTRACE_OleCalls); -#endif + // redirect log messages to the text window m_pLog = new wxLogTextCtrl(m_ctrlLog); m_pLogPrev = wxLog::SetActiveTarget(m_pLog); @@ -803,12 +806,23 @@ void DnDFrame::OnPaint(wxPaintEvent& WXUNUSED(event)) void DnDFrame::OnUpdateUIPasteText(wxUpdateUIEvent& event) { +#ifdef __WXDEBUG__ + // too many trace messages if we don't do it - this function is called + // very often + wxLogNull nolog; +#endif + event.Enable( wxTheClipboard->IsSupported(wxDF_TEXT) ); -// event.Enable( TRUE ); } void DnDFrame::OnUpdateUIPasteBitmap(wxUpdateUIEvent& event) { +#ifdef __WXDEBUG__ + // too many trace messages if we don't do it - this function is called + // very often + wxLogNull nolog; +#endif + event.Enable( wxTheClipboard->IsSupported(wxDF_BITMAP) ); } diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index be5ef01276..58b1952e17 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -1,10 +1,10 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.cpp +// Name: gtk/clipbrd.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ // Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -39,6 +39,11 @@ extern void wxapp_uninstall_thread_wakeup(); GdkAtom g_clipboardAtom = 0; GdkAtom g_targetsAtom = 0; +// the trace mask we use with wxLogTrace() - call +// wxLog::AddTraceMask(TRACE_CLIPBOARD) to enable the trace messages from here +// (there will be a *lot* of them!) +static const char *TRACE_CLIPBOARD = _T("clipboard"); + //----------------------------------------------------------------------------- // reminder //----------------------------------------------------------------------------- @@ -57,9 +62,9 @@ struct _GtkSelectionData GdkAtom selection; GdkAtom target; GdkAtom type; - gint format; + gint format; guchar *data; - gint length; + gint length; }; */ @@ -82,14 +87,22 @@ targets_selection_received( GtkWidget *WXUNUSED(widget), GdkAtom type = selection_data->type; if ( type != GDK_SELECTION_TYPE_ATOM ) { - clipboard->m_waiting = FALSE; - return; + if ( strcmp(gdk_atom_name(type), "TARGETS") ) + { + wxLogTrace( TRACE_CLIPBOARD, + _T("got unsupported clipboard target") ); + + clipboard->m_waiting = FALSE; + return; + } } -/* +#ifdef __WXDEBUG__ wxDataFormat clip( selection_data->selection ); - wxLogDebug( wxT("selection received for targets, clipboard %s"), clip.GetId().c_str() ); -*/ + wxLogTrace( TRACE_CLIPBOARD, + wxT("selection received for targets, clipboard %s"), + clip.GetId().c_str() ); +#endif // __WXDEBUG__ // the atoms we received, holding a list of targets (= formats) GdkAtom *atoms = (GdkAtom *)selection_data->data; @@ -98,9 +111,9 @@ targets_selection_received( GtkWidget *WXUNUSED(widget), { wxDataFormat format( atoms[i] ); -/* - wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() ); -*/ + wxLogTrace( TRACE_CLIPBOARD, + wxT("selection received for targets, format %s"), + format.GetId().c_str() ); if (format == clipboard->m_targetRequested) { @@ -417,7 +430,9 @@ bool wxClipboard::AddData( wxDataObject *data ) for (size_t i = 0; i < m_data->GetFormatCount(); i++) { - wxLogDebug( wxT("wxClipboard now supports atom %s"), array[i].GetId().c_str() ); + wxLogTrace( TRACE_CLIPBOARD, + wxT("wxClipboard now supports atom %s"), + array[i].GetId().c_str() ); gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget), clipboard, @@ -475,9 +490,9 @@ bool wxClipboard::IsSupported( const wxDataFormat& format ) /* store requested format to be asked for by callbacks */ m_targetRequested = format; -/* - wxLogDebug( wxT("wxClipboard:IsSupported: requested format: %s"), format.GetId().c_str() ); -*/ + wxLogTrace( TRACE_CLIPBOARD, + wxT("wxClipboard:IsSupported: requested format: %s"), + format.GetId().c_str() ); wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") ); @@ -518,7 +533,9 @@ bool wxClipboard::GetData( wxDataObject& data ) { wxDataFormat format( array[i] ); - wxLogDebug( wxT("wxClipboard::GetData: requested format: %s"), format.GetId().c_str() ); + wxLogTrace( TRACE_CLIPBOARD, + wxT("wxClipboard::GetData: requested format: %s"), + format.GetId().c_str() ); /* is data supported by clipboard ? */ diff --git a/src/gtk1/clipbrd.cpp b/src/gtk1/clipbrd.cpp index be5ef01276..58b1952e17 100644 --- a/src/gtk1/clipbrd.cpp +++ b/src/gtk1/clipbrd.cpp @@ -1,10 +1,10 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.cpp +// Name: gtk/clipbrd.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ // Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -39,6 +39,11 @@ extern void wxapp_uninstall_thread_wakeup(); GdkAtom g_clipboardAtom = 0; GdkAtom g_targetsAtom = 0; +// the trace mask we use with wxLogTrace() - call +// wxLog::AddTraceMask(TRACE_CLIPBOARD) to enable the trace messages from here +// (there will be a *lot* of them!) +static const char *TRACE_CLIPBOARD = _T("clipboard"); + //----------------------------------------------------------------------------- // reminder //----------------------------------------------------------------------------- @@ -57,9 +62,9 @@ struct _GtkSelectionData GdkAtom selection; GdkAtom target; GdkAtom type; - gint format; + gint format; guchar *data; - gint length; + gint length; }; */ @@ -82,14 +87,22 @@ targets_selection_received( GtkWidget *WXUNUSED(widget), GdkAtom type = selection_data->type; if ( type != GDK_SELECTION_TYPE_ATOM ) { - clipboard->m_waiting = FALSE; - return; + if ( strcmp(gdk_atom_name(type), "TARGETS") ) + { + wxLogTrace( TRACE_CLIPBOARD, + _T("got unsupported clipboard target") ); + + clipboard->m_waiting = FALSE; + return; + } } -/* +#ifdef __WXDEBUG__ wxDataFormat clip( selection_data->selection ); - wxLogDebug( wxT("selection received for targets, clipboard %s"), clip.GetId().c_str() ); -*/ + wxLogTrace( TRACE_CLIPBOARD, + wxT("selection received for targets, clipboard %s"), + clip.GetId().c_str() ); +#endif // __WXDEBUG__ // the atoms we received, holding a list of targets (= formats) GdkAtom *atoms = (GdkAtom *)selection_data->data; @@ -98,9 +111,9 @@ targets_selection_received( GtkWidget *WXUNUSED(widget), { wxDataFormat format( atoms[i] ); -/* - wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() ); -*/ + wxLogTrace( TRACE_CLIPBOARD, + wxT("selection received for targets, format %s"), + format.GetId().c_str() ); if (format == clipboard->m_targetRequested) { @@ -417,7 +430,9 @@ bool wxClipboard::AddData( wxDataObject *data ) for (size_t i = 0; i < m_data->GetFormatCount(); i++) { - wxLogDebug( wxT("wxClipboard now supports atom %s"), array[i].GetId().c_str() ); + wxLogTrace( TRACE_CLIPBOARD, + wxT("wxClipboard now supports atom %s"), + array[i].GetId().c_str() ); gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget), clipboard, @@ -475,9 +490,9 @@ bool wxClipboard::IsSupported( const wxDataFormat& format ) /* store requested format to be asked for by callbacks */ m_targetRequested = format; -/* - wxLogDebug( wxT("wxClipboard:IsSupported: requested format: %s"), format.GetId().c_str() ); -*/ + wxLogTrace( TRACE_CLIPBOARD, + wxT("wxClipboard:IsSupported: requested format: %s"), + format.GetId().c_str() ); wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") ); @@ -518,7 +533,9 @@ bool wxClipboard::GetData( wxDataObject& data ) { wxDataFormat format( array[i] ); - wxLogDebug( wxT("wxClipboard::GetData: requested format: %s"), format.GetId().c_str() ); + wxLogTrace( TRACE_CLIPBOARD, + wxT("wxClipboard::GetData: requested format: %s"), + format.GetId().c_str() ); /* is data supported by clipboard ? */ -- 2.45.2