wxGTK pastes text from rxvt again

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 1999-11-18 15:00:57 +00:00
parent f373f19798
commit 61b04ac652
3 changed files with 88 additions and 40 deletions

View File

@ -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) );
}

View File

@ -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 ? */

View File

@ -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 ? */