// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "clipbrd.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
GdkAtom g_clipboardAtom = 0;
GdkAtom g_targetsAtom = 0;
-#if defined(__WXGTK20__) && wxUSE_UNICODE
-extern GdkAtom g_altTextAtom;
-#endif
-
// 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!)
// "selection_received" for targets
//-----------------------------------------------------------------------------
+extern "C" {
static void
targets_selection_received( GtkWidget *WXUNUSED(widget),
GtkSelectionData *selection_data,
wxT("selection received for targets, format %s"),
format.GetId().c_str() );
-// printf( "format %s requested %s\n",
+// printf( "format %s requested %s\n",
// gdk_atom_name( atoms[i] ),
// gdk_atom_name( clipboard->m_targetRequested ) );
clipboard->m_waiting = FALSE;
}
+}
//-----------------------------------------------------------------------------
// "selection_received" for the actual data
//-----------------------------------------------------------------------------
+extern "C" {
static void
selection_received( GtkWidget *WXUNUSED(widget),
GtkSelectionData *selection_data,
wxTheClipboard->m_formatSupported = TRUE;
clipboard->m_waiting = FALSE;
}
+}
//-----------------------------------------------------------------------------
// "selection_clear"
//-----------------------------------------------------------------------------
+extern "C" {
static gint
selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event )
{
wxTheClipboard->m_waiting = FALSE;
return TRUE;
}
+}
//-----------------------------------------------------------------------------
// selection handler for supplying data
//-----------------------------------------------------------------------------
+extern "C" {
static void
selection_handler( GtkWidget *WXUNUSED(widget),
GtkSelectionData *selection_data,
wxString::FromAscii(gdk_atom_name(selection_data->selection)).c_str()
);
#endif
-
+
if (!data->IsSupportedFormat( format )) return;
int size = data->GetDataSize( format );
// Text data will be in UTF8 in Unicode mode.
data->GetDataHere( selection_data->target, d );
-#ifdef __WXGTK20__
- // NB: GTK+ requires special treatment of UTF8_STRING data, the text
- // would show as UTF-8 data interpreted as latin1 (?) in other
- // GTK+ apps if we used gtk_selection_data_set()
- if (format == wxDataFormat(wxDF_UNICODETEXT))
- {
- gtk_selection_data_set_text(
- selection_data,
- (const gchar*)d,
- size);
- }
- else
-#endif
- {
- gtk_selection_data_set(
+ gtk_selection_data_set(
selection_data,
GDK_SELECTION_TYPE_STRING,
- 8*sizeof(gchar),
+ 8 * sizeof(gchar),
(unsigned char*) d,
- size );
- }
+ size-1 );
free(d);
}
+}
//-----------------------------------------------------------------------------
// wxClipboard
wxT("wxClipboard now supports atom %s"),
array[i].GetId().c_str() );
-// printf( "added %s\n",
+// printf( "added %s\n",
// gdk_atom_name( array[i].GetFormatId() ) );
-
+
gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
clipboard,
array[i],
while (m_waiting) gtk_main_iteration();
-#if defined(__WXGTK20__) && wxUSE_UNICODE
- if (!m_formatSupported && format == wxDataFormat(wxDF_UNICODETEXT))
- {
- // Another try with plain STRING format
- extern GdkAtom g_altTextAtom;
- return IsSupported(g_altTextAtom);
- }
-#endif
-
return m_formatSupported;
}