]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/clipbrd.cpp
Add wxRichMessageDialog class.
[wxWidgets.git] / src / gtk / clipbrd.cpp
index d812143ab513501cd3862b7cd7d168898c6313a7..7fe76b4e66b4b50980c4aeb45668ac6b4b0ec4ea 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);
     }
@@ -481,11 +485,7 @@ GdkAtom wxClipboard::GTKGetClipboardAtom() const
 void wxClipboard::GTKClearData(Kind kind)
 {
     wxDataObject *&data = Data(kind);
-    if ( data )
-    {
-        delete data;
-        data = NULL;
-    }
+    wxDELETE(data);
 }
 
 bool wxClipboard::SetSelectionOwner(bool set)
@@ -564,6 +564,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 +670,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++ )
     {