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:
@@ -657,6 +657,13 @@ bool DnDApp::OnInit()
|
|||||||
|
|
||||||
wxDefaultResourceTable->ParseResourceFile(path);
|
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
|
#if wxUSE_LIBPNG
|
||||||
wxImage::AddHandler( new wxPNGHandler );
|
wxImage::AddHandler( new wxPNGHandler );
|
||||||
#endif
|
#endif
|
||||||
@@ -736,11 +743,7 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
|
|||||||
wxTE_MULTILINE | wxTE_READONLY |
|
wxTE_MULTILINE | wxTE_READONLY |
|
||||||
wxSUNKEN_BORDER );
|
wxSUNKEN_BORDER );
|
||||||
|
|
||||||
#ifdef __WXMSW__
|
// redirect log messages to the text window
|
||||||
// redirect log messages to the text window and switch on OLE messages
|
|
||||||
// logging
|
|
||||||
wxLog::AddTraceMask(wxTRACE_OleCalls);
|
|
||||||
#endif
|
|
||||||
m_pLog = new wxLogTextCtrl(m_ctrlLog);
|
m_pLog = new wxLogTextCtrl(m_ctrlLog);
|
||||||
m_pLogPrev = wxLog::SetActiveTarget(m_pLog);
|
m_pLogPrev = wxLog::SetActiveTarget(m_pLog);
|
||||||
|
|
||||||
@@ -803,12 +806,23 @@ void DnDFrame::OnPaint(wxPaintEvent& WXUNUSED(event))
|
|||||||
|
|
||||||
void DnDFrame::OnUpdateUIPasteText(wxUpdateUIEvent& 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( wxTheClipboard->IsSupported(wxDF_TEXT) );
|
||||||
// event.Enable( TRUE );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DnDFrame::OnUpdateUIPasteBitmap(wxUpdateUIEvent& event)
|
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) );
|
event.Enable( wxTheClipboard->IsSupported(wxDF_BITMAP) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: clipbrd.cpp
|
// Name: gtk/clipbrd.cpp
|
||||||
// Purpose:
|
// Purpose:
|
||||||
// Author: Robert Roebling
|
// Author: Robert Roebling
|
||||||
// Id: $Id$
|
// Id: $Id$
|
||||||
// Copyright: (c) 1998 Robert Roebling
|
// Copyright: (c) 1998 Robert Roebling
|
||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifdef __GNUG__
|
#ifdef __GNUG__
|
||||||
@@ -39,6 +39,11 @@ extern void wxapp_uninstall_thread_wakeup();
|
|||||||
GdkAtom g_clipboardAtom = 0;
|
GdkAtom g_clipboardAtom = 0;
|
||||||
GdkAtom g_targetsAtom = 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
|
// reminder
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -57,9 +62,9 @@ struct _GtkSelectionData
|
|||||||
GdkAtom selection;
|
GdkAtom selection;
|
||||||
GdkAtom target;
|
GdkAtom target;
|
||||||
GdkAtom type;
|
GdkAtom type;
|
||||||
gint format;
|
gint format;
|
||||||
guchar *data;
|
guchar *data;
|
||||||
gint length;
|
gint length;
|
||||||
};
|
};
|
||||||
|
|
||||||
*/
|
*/
|
||||||
@@ -82,14 +87,22 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
|
|||||||
GdkAtom type = selection_data->type;
|
GdkAtom type = selection_data->type;
|
||||||
if ( type != GDK_SELECTION_TYPE_ATOM )
|
if ( type != GDK_SELECTION_TYPE_ATOM )
|
||||||
{
|
{
|
||||||
clipboard->m_waiting = FALSE;
|
if ( strcmp(gdk_atom_name(type), "TARGETS") )
|
||||||
return;
|
{
|
||||||
|
wxLogTrace( TRACE_CLIPBOARD,
|
||||||
|
_T("got unsupported clipboard target") );
|
||||||
|
|
||||||
|
clipboard->m_waiting = FALSE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
#ifdef __WXDEBUG__
|
||||||
wxDataFormat clip( selection_data->selection );
|
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)
|
// the atoms we received, holding a list of targets (= formats)
|
||||||
GdkAtom *atoms = (GdkAtom *)selection_data->data;
|
GdkAtom *atoms = (GdkAtom *)selection_data->data;
|
||||||
@@ -98,9 +111,9 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
|
|||||||
{
|
{
|
||||||
wxDataFormat format( atoms[i] );
|
wxDataFormat format( atoms[i] );
|
||||||
|
|
||||||
/*
|
wxLogTrace( TRACE_CLIPBOARD,
|
||||||
wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() );
|
wxT("selection received for targets, format %s"),
|
||||||
*/
|
format.GetId().c_str() );
|
||||||
|
|
||||||
if (format == clipboard->m_targetRequested)
|
if (format == clipboard->m_targetRequested)
|
||||||
{
|
{
|
||||||
@@ -417,7 +430,9 @@ bool wxClipboard::AddData( wxDataObject *data )
|
|||||||
|
|
||||||
for (size_t i = 0; i < m_data->GetFormatCount(); i++)
|
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),
|
gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
|
||||||
clipboard,
|
clipboard,
|
||||||
@@ -475,9 +490,9 @@ bool wxClipboard::IsSupported( const wxDataFormat& format )
|
|||||||
/* store requested format to be asked for by callbacks */
|
/* store requested format to be asked for by callbacks */
|
||||||
m_targetRequested = format;
|
m_targetRequested = format;
|
||||||
|
|
||||||
/*
|
wxLogTrace( TRACE_CLIPBOARD,
|
||||||
wxLogDebug( wxT("wxClipboard:IsSupported: requested format: %s"), format.GetId().c_str() );
|
wxT("wxClipboard:IsSupported: requested format: %s"),
|
||||||
*/
|
format.GetId().c_str() );
|
||||||
|
|
||||||
wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
|
wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
|
||||||
|
|
||||||
@@ -518,7 +533,9 @@ bool wxClipboard::GetData( wxDataObject& data )
|
|||||||
{
|
{
|
||||||
wxDataFormat format( array[i] );
|
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 ? */
|
/* is data supported by clipboard ? */
|
||||||
|
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: clipbrd.cpp
|
// Name: gtk/clipbrd.cpp
|
||||||
// Purpose:
|
// Purpose:
|
||||||
// Author: Robert Roebling
|
// Author: Robert Roebling
|
||||||
// Id: $Id$
|
// Id: $Id$
|
||||||
// Copyright: (c) 1998 Robert Roebling
|
// Copyright: (c) 1998 Robert Roebling
|
||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifdef __GNUG__
|
#ifdef __GNUG__
|
||||||
@@ -39,6 +39,11 @@ extern void wxapp_uninstall_thread_wakeup();
|
|||||||
GdkAtom g_clipboardAtom = 0;
|
GdkAtom g_clipboardAtom = 0;
|
||||||
GdkAtom g_targetsAtom = 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
|
// reminder
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -57,9 +62,9 @@ struct _GtkSelectionData
|
|||||||
GdkAtom selection;
|
GdkAtom selection;
|
||||||
GdkAtom target;
|
GdkAtom target;
|
||||||
GdkAtom type;
|
GdkAtom type;
|
||||||
gint format;
|
gint format;
|
||||||
guchar *data;
|
guchar *data;
|
||||||
gint length;
|
gint length;
|
||||||
};
|
};
|
||||||
|
|
||||||
*/
|
*/
|
||||||
@@ -82,14 +87,22 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
|
|||||||
GdkAtom type = selection_data->type;
|
GdkAtom type = selection_data->type;
|
||||||
if ( type != GDK_SELECTION_TYPE_ATOM )
|
if ( type != GDK_SELECTION_TYPE_ATOM )
|
||||||
{
|
{
|
||||||
clipboard->m_waiting = FALSE;
|
if ( strcmp(gdk_atom_name(type), "TARGETS") )
|
||||||
return;
|
{
|
||||||
|
wxLogTrace( TRACE_CLIPBOARD,
|
||||||
|
_T("got unsupported clipboard target") );
|
||||||
|
|
||||||
|
clipboard->m_waiting = FALSE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
#ifdef __WXDEBUG__
|
||||||
wxDataFormat clip( selection_data->selection );
|
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)
|
// the atoms we received, holding a list of targets (= formats)
|
||||||
GdkAtom *atoms = (GdkAtom *)selection_data->data;
|
GdkAtom *atoms = (GdkAtom *)selection_data->data;
|
||||||
@@ -98,9 +111,9 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
|
|||||||
{
|
{
|
||||||
wxDataFormat format( atoms[i] );
|
wxDataFormat format( atoms[i] );
|
||||||
|
|
||||||
/*
|
wxLogTrace( TRACE_CLIPBOARD,
|
||||||
wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() );
|
wxT("selection received for targets, format %s"),
|
||||||
*/
|
format.GetId().c_str() );
|
||||||
|
|
||||||
if (format == clipboard->m_targetRequested)
|
if (format == clipboard->m_targetRequested)
|
||||||
{
|
{
|
||||||
@@ -417,7 +430,9 @@ bool wxClipboard::AddData( wxDataObject *data )
|
|||||||
|
|
||||||
for (size_t i = 0; i < m_data->GetFormatCount(); i++)
|
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),
|
gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
|
||||||
clipboard,
|
clipboard,
|
||||||
@@ -475,9 +490,9 @@ bool wxClipboard::IsSupported( const wxDataFormat& format )
|
|||||||
/* store requested format to be asked for by callbacks */
|
/* store requested format to be asked for by callbacks */
|
||||||
m_targetRequested = format;
|
m_targetRequested = format;
|
||||||
|
|
||||||
/*
|
wxLogTrace( TRACE_CLIPBOARD,
|
||||||
wxLogDebug( wxT("wxClipboard:IsSupported: requested format: %s"), format.GetId().c_str() );
|
wxT("wxClipboard:IsSupported: requested format: %s"),
|
||||||
*/
|
format.GetId().c_str() );
|
||||||
|
|
||||||
wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
|
wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
|
||||||
|
|
||||||
@@ -518,7 +533,9 @@ bool wxClipboard::GetData( wxDataObject& data )
|
|||||||
{
|
{
|
||||||
wxDataFormat format( array[i] );
|
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 ? */
|
/* is data supported by clipboard ? */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user