]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/clipbrd.cpp
Moved the cleanup code to an EVT_WINDOW_DESTROY handler.
[wxWidgets.git] / src / motif / clipbrd.cpp
index c5046a0db0a3880b61af678636627a2d15c1e89e..41afb324d308b393539aa8c0419f494b445858d6 100644 (file)
 #pragma implementation "clipbrd.h"
 #endif
 
+#include "wx/defs.h"
+
+#if wxUSE_CLIPBOARD
+
 #include "wx/app.h"
 #include "wx/frame.h"
 #include "wx/bitmap.h"
 #include "wx/clipbrd.h"
 #include "wx/dataobj.h"
 
+#ifdef __VMS__
+#pragma message disable nosimpint
+#endif
 #include <Xm/Xm.h>
 #include <Xm/CutPaste.h>
+#ifdef __VMS__
+#pragma message enable nosimpint
+#endif
 
 #include <string.h>
 
-#if !USE_SHARED_LIBRARY
 // IMPLEMENT_DYNAMIC_CLASS(wxClipboard, wxObject)
 // IMPLEMENT_ABSTRACT_CLASS(wxClipboardClient, wxObject)
-#endif
 
 static bool gs_clipboardIsOpen = FALSE;
 
@@ -91,7 +99,7 @@ bool wxIsClipboardFormatAvailable(wxDataFormat dataFormat)
         return TRUE;
 }
 
-bool wxSetClipboardData(wxDataFormat dataFormat, wxObject *obj, int width, int height)
+bool wxSetClipboardData(wxDataFormat dataFormat, wxObject *obj, int WXUNUSED(width), int WXUNUSED(height))
 {
     if (dataFormat != wxDF_TEXT)
         return FALSE;
@@ -209,13 +217,13 @@ wxDataFormat  wxEnumClipboardFormats(wxDataFormat dataFormat)
        return wxDF_INVALID;
 }
 
-wxDataFormat  wxRegisterClipboardFormat(char *formatName)
+wxDataFormat  wxRegisterClipboardFormat(char *WXUNUSED(formatName))
 {
     // Not supported
     return (wxDataFormat) wxDF_INVALID;
 }
 
-bool wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatName, int maxCount)
+bool wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatName, int WXUNUSED(maxCount))
 {
     // Only wxDF_TEXT supported
     if (dataFormat == wxDF_TEXT)
@@ -233,8 +241,6 @@ bool wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatName, int max
 
 IMPLEMENT_DYNAMIC_CLASS(wxClipboard,wxObject)
 
-wxClipboard* wxTheClipboard = (wxClipboard*) NULL;
-
 wxClipboard::wxClipboard()
 {
     m_open = FALSE;
@@ -271,30 +277,36 @@ bool wxClipboard::SetData( wxDataObject *data )
     wxCHECK_MSG( data, FALSE, "data is invalid" );
     wxCHECK_MSG( m_open, FALSE, "clipboard not open" );
 
-    switch (data->GetFormat())
+    Clear();
+
+    return AddData( data );
+}
+
+bool wxClipboard::AddData( wxDataObject *data )
+{
+    wxCHECK_MSG( data, FALSE, "data is invalid" );
+    wxCHECK_MSG( m_open, FALSE, "clipboard not open" );
+
+    wxDataFormat::NativeFormat format = data->GetPreferredFormat().GetType();
+    switch ( format )
     {
         case wxDF_TEXT:
         case wxDF_OEMTEXT:
         {
             wxTextDataObject* textDataObject = (wxTextDataObject*) data;
             wxString str(textDataObject->GetText());
-            return wxSetClipboardData(data->GetFormat(), (wxObject*) (const char*) str);
-            break;
+            return wxSetClipboardData(format, (wxObject*) (const char*) str);
         }
-/*
+#if 0
         case wxDF_BITMAP:
         case wxDF_DIB:
         {
             wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data;
             wxBitmap bitmap(bitmapDataObject->GetBitmap());
-            return wxSetClipboardData(data->GetFormat(), & bitmap);
+            return wxSetClipboardData(data->GetType(), & bitmap);
             break;
         }
-*/
-        default:
-        {
-            return FALSE;
-        }
+#endif // 0
     }
   
     return FALSE;
@@ -308,25 +320,26 @@ void wxClipboard::Close()
     wxCloseClipboard();
 }
 
-bool wxClipboard::IsSupported( wxDataFormat format)
+bool wxClipboard::IsSupported( const wxDataFormat& format)
 {
     return wxIsClipboardFormatAvailable(format);
 }
 
-bool wxClipboard::GetData( wxDataObject *data )
+bool wxClipboard::GetData( wxDataObjectdata )
 {
     wxCHECK_MSG( m_open, FALSE, "clipboard not open" );
     
-    switch (data->GetFormat())
+    wxDataFormat::NativeFormat format = data.GetPreferredFormat().GetType();
+    switch ( format )
     {
         case wxDF_TEXT:
         case wxDF_OEMTEXT:
         {
-            wxTextDataObject* textDataObject = (wxTextDataObject*) data;
-            char* s = (char*) wxGetClipboardData(data->GetFormat());
+            wxTextDataObject& textDataObject = (wxTextDataObject &) data;
+            char* s = (char*) wxGetClipboardData(format);
             if (s)
             {
-                textDataObject->SetText(s);
+                textDataObject.SetText(s);
                 delete[] s;
                 return TRUE;
             }
@@ -339,7 +352,7 @@ bool wxClipboard::GetData( wxDataObject *data )
         case wxDF_DIB:
         {
             wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data;
-            wxBitmap* bitmap = (wxBitmap*) wxGetClipboardData(data->GetFormat());
+            wxBitmap* bitmap = (wxBitmap*) wxGetClipboardData(data->GetType());
             if (bitmap)
             {
                 bitmapDataObject->SetBitmap(* bitmap);
@@ -359,26 +372,6 @@ bool wxClipboard::GetData( wxDataObject *data )
     return FALSE;
 }
 
-//-----------------------------------------------------------------------------
-// wxClipboardModule
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule)
-
-bool wxClipboardModule::OnInit()
-{
-    wxTheClipboard = new wxClipboard();
-  
-    return TRUE;
-}
-
-void wxClipboardModule::OnExit()
-{
-    if (wxTheClipboard) delete wxTheClipboard;
-    wxTheClipboard = (wxClipboard*) NULL;
-}
-
-
 #if 0
 
 /*
@@ -529,3 +522,4 @@ char *wxClipboard::GetClipboardData(char *format, long *length, long time)
 }
 #endif
 
+#endif // wxUSE_CLIPBOARD