]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/clipbrd.cpp
Fixed VC6 compilation - wxAny(const wxVariant&) ctor required a specific 'template<>')
[wxWidgets.git] / src / gtk / clipbrd.cpp
index d812143ab513501cd3862b7cd7d168898c6313a7..56fa9e1eb890afa1d0378d561fc0da4b5c10c8ad 100644 (file)
@@ -75,6 +75,10 @@ public:
 
     ~wxClipboardSync()
     {
+        // ensure that there is a running event loop: this might not be the
+        // case if we're called before the main event loop startup
+        wxEventLoopGuarantor ensureEventLoop;
+
         while (ms_clipboard)
             wxEventLoopBase::GetActive()->YieldFor(wxEVT_CATEGORY_CLIPBOARD);
     }
@@ -564,6 +568,8 @@ bool wxClipboard::DoIsSupported(const wxDataFormat& format)
 
 void wxClipboard::Clear()
 {
+    gtk_selection_clear_targets( m_clipboardWidget, GTKGetClipboardAtom() );
+
     if ( gdk_selection_owner_get(GTKGetClipboardAtom()) ==
             m_clipboardWidget->window )
     {
@@ -668,10 +674,11 @@ bool wxClipboard::GetData( wxDataObject& data )
 {
     wxCHECK_MSG( m_open, false, wxT("clipboard not open") );
 
-    // get all supported formats from wxDataObjects
-    const size_t count = data.GetFormatCount();
+    // get all supported formats from wxDataObjects: notice that we are setting
+    // the object data, so we need them in "Set" direction
+    const size_t count = data.GetFormatCount(wxDataObject::Set);
     wxDataFormatArray formats(new wxDataFormat[count]);
-    data.GetAllFormats(formats.get());
+    data.GetAllFormats(formats.get(), wxDataObject::Set);
 
     for ( size_t i = 0; i < count; i++ )
     {