projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Patch from Bo to optimize FindNode() in internal tree structure
[wxWidgets.git]
/
src
/
motif
/
clipbrd.cpp
diff --git
a/src/motif/clipbrd.cpp
b/src/motif/clipbrd.cpp
index 62379c7086ebe977c0d7b5031f8a249234f7e072..df66c9c41759704e59ff2c85370d56c5440fcaa5 100644
(file)
--- a/
src/motif/clipbrd.cpp
+++ b/
src/motif/clipbrd.cpp
@@
-1,32
+1,42
@@
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
-// Name: clipbrd.cpp
+// Name:
src/motif/
clipbrd.cpp
// Purpose: Clipboard functionality
// Author: Julian Smart
// Modified by: Mattia Barbon (added support for generic wxDataObjects)
// Created: 17/09/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Purpose: Clipboard functionality
// Author: Julian Smart
// Modified by: Mattia Barbon (added support for generic wxDataObjects)
// Created: 17/09/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
+// Licence:
wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
-#pragma implementation
-#pragma implementation "clipbrd.h"
-#endif
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
-#include "wx/defs.h"
+#ifdef __VMS
+#include "wx/vms_x_fix.h"
+#define XtWindow XTWINDOW
+#define XtScreen XTSCREEN
+#define XtParent XTPARENT
+#define XtIsRealized XTISREALIZED
+#define XtDisplay XTDISPLAY
+#endif
#if wxUSE_CLIPBOARD
#if wxUSE_CLIPBOARD
-#include "wx/app.h"
-#include "wx/bitmap.h"
-#include "wx/utils.h"
#include "wx/clipbrd.h"
#include "wx/clipbrd.h"
-#include "wx/dataobj.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/app.h"
+ #include "wx/utils.h"
+ #include "wx/bitmap.h"
+ #include "wx/dataobj.h"
+#endif
+
#include "wx/ptr_scpd.h"
#ifdef __VMS__
#pragma message disable nosimpint
#include "wx/ptr_scpd.h"
#ifdef __VMS__
#pragma message disable nosimpint
+
#endif
#include <Xm/Xm.h>
#include <Xm/CutPaste.h>
#endif
#include <Xm/Xm.h>
#include <Xm/CutPaste.h>
@@
-59,7
+69,7
@@
bool wxClipboardOpen()
return wxTheClipboard->IsOpened();
}
return wxTheClipboard->IsOpened();
}
-bool wxIsClipboardFormatAvailable(
wxDataFormat
dataFormat)
+bool wxIsClipboardFormatAvailable(
const wxDataFormat&
dataFormat)
{
return wxTheClipboard->IsSupported( dataFormat );
}
{
return wxTheClipboard->IsSupported( dataFormat );
}
@@
-121,7
+131,7
@@
wxObject *wxGetClipboardData(wxDataFormat dataFormat, long *len)
return NULL; // just in case...
}
return NULL; // just in case...
}
-wxDataFormat wxEnumClipboardFormats(
wxDataFormat
dataFormat)
+wxDataFormat wxEnumClipboardFormats(
const wxDataFormat&
dataFormat)
{
// Only wxDF_TEXT supported
if (dataFormat == wxDF_TEXT)
{
// Only wxDF_TEXT supported
if (dataFormat == wxDF_TEXT)
@@
-136,7
+146,7
@@
wxDataFormat wxRegisterClipboardFormat(char *WXUNUSED(formatName))
return wxDF_INVALID;
}
return wxDF_INVALID;
}
-bool wxGetClipboardFormatName(
wxDataFormat
dataFormat, char *formatName,
+bool wxGetClipboardFormatName(
const wxDataFormat&
dataFormat, char *formatName,
int maxCount)
{
wxStrncpy( formatName, dataFormat.GetId().c_str(), maxCount );
int maxCount)
{
wxStrncpy( formatName, dataFormat.GetId().c_str(), maxCount );
@@
-160,16
+170,19
@@
struct wxDataIdToDataObject
#include "wx/listimpl.cpp"
#include "wx/listimpl.cpp"
-WX_DEFINE_LIST(wxDataObjectList)
;
-WX_DEFINE_LIST(wxDataIdToDataObjectList)
;
+WX_DEFINE_LIST(wxDataObjectList)
+WX_DEFINE_LIST(wxDataIdToDataObjectList)
+extern "C"
+{
#if wxCHECK_LESSTIF()
static void wxClipboardCallback( Widget widget, int* data_id,
int* priv, int* reason );
#if wxCHECK_LESSTIF()
static void wxClipboardCallback( Widget widget, int* data_id,
int* priv, int* reason );
-#else
+#else
// Motif
static void wxClipboardCallback( Widget widget, long* data_id,
long* priv, int* reason );
static void wxClipboardCallback( Widget widget, long* data_id,
long* priv, int* reason );
-#endif
+#endif // Less/Motif
+}
IMPLEMENT_DYNAMIC_CLASS(wxClipboard,wxObject)
IMPLEMENT_DYNAMIC_CLASS(wxClipboard,wxObject)
@@
-180,12
+193,12
@@
wxClipboard::wxClipboard()
wxClipboard::~wxClipboard()
{
wxClipboard::~wxClipboard()
{
- Clear();
+ Clear();
}
void wxClipboard::Clear()
{
}
void wxClipboard::Clear()
{
- wxDataObjectList::
Node*
node = m_data.GetFirst();
+ wxDataObjectList::
compatibility_iterator
node = m_data.GetFirst();
while (node)
{
delete node->GetData();
while (node)
{
delete node->GetData();
@@
-193,16
+206,18
@@
void wxClipboard::Clear()
}
m_data.Clear();
}
m_data.Clear();
- for( wxDataIdToDataObjectList::
Node*
node2 = m_idToObject.GetFirst();
+ for( wxDataIdToDataObjectList::
compatibility_iterator
node2 = m_idToObject.GetFirst();
node2; node2 = node2->GetNext() )
node2; node2 = node2->GetNext() )
- delete node->GetData();
+ {
+ delete node2->GetData();
+ }
m_idToObject.Clear();
}
bool wxClipboard::Open()
{
wxCHECK_MSG( !m_open, false, "clipboard already open" );
m_idToObject.Clear();
}
bool wxClipboard::Open()
{
wxCHECK_MSG( !m_open, false, "clipboard already open" );
-
+
m_open = true;
return true;
m_open = true;
return true;
@@
-218,15
+233,15
@@
bool wxClipboard::SetData( wxDataObject *data )
return AddData( data );
}
return AddData( data );
}
-wxDECLARE_SCOPED_ARRAY( wxDataFormat, wxDataFormatScopedArray )
;
-wxDEFINE_SCOPED_ARRAY( wxDataFormat, wxDataFormatScopedArray )
;
+wxDECLARE_SCOPED_ARRAY( wxDataFormat, wxDataFormatScopedArray )
+wxDEFINE_SCOPED_ARRAY( wxDataFormat, wxDataFormatScopedArray )
#if wxCHECK_LESSTIF()
void wxClipboardCallback( Widget xwidget, int* data_id,
#if wxCHECK_LESSTIF()
void wxClipboardCallback( Widget xwidget, int* data_id,
- int* priv, int*
reason
)
+ int* priv, int*
WXUNUSED(reason)
)
#else
void wxClipboardCallback( Widget xwidget, long* data_id,
#else
void wxClipboardCallback( Widget xwidget, long* data_id,
- long* priv, int*
reason
)
+ long* priv, int*
WXUNUSED(reason)
)
#endif
{
Display* xdisplay = XtDisplay( xwidget );
#endif
{
Display* xdisplay = XtDisplay( xwidget );
@@
-234,7
+249,7
@@
void wxClipboardCallback( Widget xwidget, long* data_id,
wxDataObject* dobj = NULL;
size_t size = 0;
wxDataObject* dobj = NULL;
size_t size = 0;
- for( wxDataIdToDataObjectList::
Node*
node2 =
+ for( wxDataIdToDataObjectList::
compatibility_iterator
node2 =
wxTheClipboard->m_idToObject.GetFirst();
node2; node2 = node2->GetNext() )
{
wxTheClipboard->m_idToObject.GetFirst();
node2; node2 = node2->GetNext() )
{
@@
-270,7
+285,7
@@
bool wxClipboard::AddData( wxDataObject *data )
m_data.Append( data );
Display* xdisplay = wxGlobalDisplay();
m_data.Append( data );
Display* xdisplay = wxGlobalDisplay();
- Widget xwidget = (Widget)wxTheApp->GetTopLevelWidget();
+ Widget xwidget = (Widget)wxTheApp->GetTopLevel
Realized
Widget();
Window xwindow = XtWindow( xwidget );
wxXmString label( wxTheApp->GetAppName() );
Time timestamp = XtLastTimestampProcessed( xdisplay );
Window xwindow = XtWindow( xwidget );
wxXmString label( wxTheApp->GetAppName() );
Time timestamp = XtLastTimestampProcessed( xdisplay );
@@
-297,7
+312,7
@@
bool wxClipboard::AddData( wxDataObject *data )
wxString id = dfarr[i].GetId();
while( ( retval = XmClipboardCopy( xdisplay, xwindow, itemId,
wxString id = dfarr[i].GetId();
while( ( retval = XmClipboardCopy( xdisplay, xwindow, itemId,
-
wxConstCast(id.c_str(), char
),
+
id.char_str(
),
NULL, size, i, &data_id ) )
== XmClipboardLocked );
NULL, size, i, &data_id ) )
== XmClipboardLocked );
@@
-313,14
+328,14
@@
bool wxClipboard::AddData( wxDataObject *data )
void wxClipboard::Close()
{
wxCHECK_RET( m_open, "clipboard not open" );
void wxClipboard::Close()
{
wxCHECK_RET( m_open, "clipboard not open" );
-
+
m_open = false;
}
bool wxClipboard::IsSupported(const wxDataFormat& format)
{
Display* xdisplay = wxGlobalDisplay();
m_open = false;
}
bool wxClipboard::IsSupported(const wxDataFormat& format)
{
Display* xdisplay = wxGlobalDisplay();
- Window xwindow = XtWindow( (Widget)wxTheApp->GetTopLevelWidget() );
+ Window xwindow = XtWindow( (Widget)wxTheApp->GetTopLevel
Realized
Widget() );
bool isSupported = false;
int retval, count;
unsigned long max_name_length;
bool isSupported = false;
int retval, count;
unsigned long max_name_length;
@@
-380,7
+395,7
@@
bool wxClipboard::GetData( wxDataObject& data )
wxCHECK_MSG( m_open, false, "clipboard not open" );
Display* xdisplay = wxGlobalDisplay();
wxCHECK_MSG( m_open, false, "clipboard not open" );
Display* xdisplay = wxGlobalDisplay();
- Window xwindow = XtWindow( (Widget)wxTheApp->GetTopLevelWidget() );
+ Window xwindow = XtWindow( (Widget)wxTheApp->GetTopLevel
Realized
Widget() );
Time timestamp = XtLastTimestampProcessed( xdisplay );
wxDataFormat chosenFormat;
Time timestamp = XtLastTimestampProcessed( xdisplay );
wxDataFormat chosenFormat;
@@
-402,7
+417,7
@@
bool wxClipboard::GetData( wxDataObject& data )
size_t dfcount = data.GetFormatCount( wxDataObject::Set );
wxDataFormatScopedArray dfarr( new wxDataFormat[dfcount] );
data.GetAllFormats( dfarr.get(), wxDataObject::Set );
size_t dfcount = data.GetFormatCount( wxDataObject::Set );
wxDataFormatScopedArray dfarr( new wxDataFormat[dfcount] );
data.GetAllFormats( dfarr.get(), wxDataObject::Set );
-
+
if( XmClipboardInquireCount( xdisplay, xwindow, &count, &max_name_length )
== XmClipboardSuccess )
{
if( XmClipboardInquireCount( xdisplay, xwindow, &count, &max_name_length )
== XmClipboardSuccess )
{
@@
-446,7
+461,7
@@
bool wxClipboard::GetData( wxDataObject& data )
wxString id = chosenFormat.GetId();
while( ( retval = XmClipboardInquireLength( xdisplay, xwindow,
wxString id = chosenFormat.GetId();
while( ( retval = XmClipboardInquireLength( xdisplay, xwindow,
-
wxConstCast(id.c_str(), char
),
+
id.char_str(
),
&length ) )
== XmClipboardLocked );
if( retval != XmClipboardSuccess )
&length ) )
== XmClipboardLocked );
if( retval != XmClipboardSuccess )
@@
-455,7
+470,7
@@
bool wxClipboard::GetData( wxDataObject& data )
wxCharBuffer buf(length);
while( ( retval = XmClipboardRetrieve( xdisplay, xwindow,
wxCharBuffer buf(length);
while( ( retval = XmClipboardRetrieve( xdisplay, xwindow,
-
wxConstCast(id.c_str(), char
),
+
id.char_str(
),
(XtPointer)buf.data(),
length, &dummy1, &dummy2 ) )
== XmClipboardLocked );
(XtPointer)buf.data(),
length, &dummy1, &dummy2 ) )
== XmClipboardLocked );