#include "gdk/gdk.h"
#include "gtk/gtk.h"
+//-----------------------------------------------------------------------------
+// thread system
+//-----------------------------------------------------------------------------
+
+#if wxUSE_THREADS
+extern void wxapp_install_thread_wakeup();
+extern void wxapp_uninstall_thread_wakeup();
+#endif
+
//-----------------------------------------------------------------------------
// data
//-----------------------------------------------------------------------------
for (unsigned int i=0; i<selection_data->length/sizeof(GdkAtom); i++)
{
-/* char *name = gdk_atom_name (atoms[i]);
+/* char *name = gdk_atom_name (atoms[i]);
if (name) printf( "Format available: %s.\n", name ); */
if (atoms[i] == clipboard->m_targetRequested)
m_formatSupported = FALSE;
m_targetRequested = 0;
+
+ m_usePrimary = FALSE;
}
wxClipboard::~wxClipboard()
{
if (m_dataBroker)
{
+#if wxUSE_THREADS
+ /* disable GUI threads */
+ wxapp_uninstall_thread_wakeup();
+#endif
+
/* As we have data we also own the clipboard. Once we no longer own
it, clear_selection is called which will set m_data to zero */
-
if (gdk_selection_owner_get( g_clipboardAtom ) == m_clipboardWidget->window)
{
m_waiting = TRUE;
delete m_dataBroker;
m_dataBroker = (wxDataBroker*) NULL;
}
+
+#if wxUSE_THREADS
+ /* re-enable GUI threads */
+ wxapp_install_thread_wakeup();
+#endif
}
m_targetRequested = 0;
wxCHECK_MSG( !m_open, FALSE, _T("clipboard already open") );
m_open = TRUE;
- UsePrimarySelection(FALSE);
return TRUE;
}
(gpointer) NULL );
#endif
-// printf( "vorher.\n" );
+#if wxUSE_THREADS
+ /* disable GUI threads */
+ wxapp_uninstall_thread_wakeup();
+#endif
+
/* Tell the world we offer clipboard data */
if (!gtk_selection_owner_set( m_clipboardWidget,
g_clipboardAtom,
GDK_CURRENT_TIME ))
{
+#if wxUSE_THREADS
+ /* re-enable GUI threads */
+ wxapp_install_thread_wakeup();
+#endif
return FALSE;
}
m_ownsClipboard = TRUE;
-// printf( "nachher.\n" );
-
- return TRUE;
-
if (!gtk_selection_owner_set( m_clipboardWidget,
GDK_SELECTION_PRIMARY,
GDK_CURRENT_TIME ))
{
+#if wxUSE_THREADS
+ /* re-enable GUI threads */
+ wxapp_install_thread_wakeup();
+#endif
return FALSE;
}
m_ownsPrimarySelection = TRUE;
+
+#if wxUSE_THREADS
+ /* re-enable GUI threads */
+ wxapp_install_thread_wakeup();
+#endif
return TRUE;
}