]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/clipbrd.cpp
wxRTC: fixed guidelines overwriting adjacent cell borders; corrected capitalisation...
[wxWidgets.git] / src / gtk / clipbrd.cpp
index 6e02151f4be01e56acd769335aeb58da61497047..c1c9c9c99bddf6fbf0e00db473919e25f0a167a4 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        src/gtk/clipbrd.cpp
 // Purpose:     wxClipboard implementation for wxGTK
 // Author:      Robert Roebling, Vadim Zeitlin
-// Id:          $Id$
 // Copyright:   (c) 1998 Robert Roebling
 //              (c) 2007 Vadim Zeitlin
 // Licence:     wxWindows licence
@@ -328,7 +327,7 @@ selection_handler( GtkWidget *WXUNUSED(widget),
     {
         gtk_selection_data_set(
             selection_data,
-            GDK_SELECTION_TYPE_STRING,
+            format.GetFormatId(),
             8*sizeof(gchar),
             (const guchar*)buf.data(),
             size );
@@ -344,7 +343,7 @@ void wxClipboard::GTKOnSelectionReceived(const GtkSelectionData& sel)
     wxLogTrace(TRACE_CLIPBOARD, wxT("Received selection %s"),
                format.GetId().c_str());
 
-    if ( !m_receivedData->IsSupportedFormat(format) )
+    if ( !m_receivedData->IsSupportedFormat(format, wxDataObject::Set) )
         return;
 
     m_receivedData->SetData(format,
@@ -434,6 +433,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxClipboard,wxObject)
 
 wxClipboard::wxClipboard()
 {
+    m_idSelectionGetHandler = 0;
+
     m_open = false;
 
     m_dataPrimary =
@@ -507,7 +508,7 @@ bool wxClipboard::SetSelectionOwner(bool set)
                 set ? m_clipboardWidget : NULL,
                 GTKGetClipboardAtom(),
                 (guint32)GDK_CURRENT_TIME
-              );
+              ) != 0;
 
     if ( !rc )
     {
@@ -642,9 +643,13 @@ bool wxClipboard::AddData( wxDataObject *data )
         AddSupportedTarget(format);
     }
 
-    g_signal_connect (m_clipboardWidget, "selection_get",
+    if ( !m_idSelectionGetHandler )
+    {
+        m_idSelectionGetHandler = g_signal_connect (
+                      m_clipboardWidget, "selection_get",
                       G_CALLBACK (selection_handler),
                       GUINT_TO_POINTER (gtk_get_current_event_time()) );
+    }
 
     // tell the world we offer clipboard data
     return SetSelectionOwner();