From a4e0c2cc34979e05822b489828ab5431d5ca0557 Mon Sep 17 00:00:00 2001 From: Matthew Griffin <45285214+matthew-griffin@users.noreply.github.com> Date: Mon, 24 Jun 2019 16:30:29 +0100 Subject: [PATCH 1/5] Implement Copy to Clipboard for images --- include/wx/qt/dataobj2.h | 13 +++++++++++ src/qt/clipbrd.cpp | 2 +- src/qt/dataobj.cpp | 48 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/include/wx/qt/dataobj2.h b/include/wx/qt/dataobj2.h index 26536b2750..d340432f6f 100644 --- a/include/wx/qt/dataobj2.h +++ b/include/wx/qt/dataobj2.h @@ -8,15 +8,28 @@ #ifndef _WX_QT_DATAOBJ2_H_ #define _WX_QT_DATAOBJ2_H_ +#include + +class QByteArray; + class WXDLLIMPEXP_CORE wxBitmapDataObject : public wxBitmapDataObjectBase { public: wxBitmapDataObject(); wxBitmapDataObject(const wxBitmap& bitmap); + ~wxBitmapDataObject(); + + void SetBitmap(const wxBitmap& bitmap) wxOVERRIDE; + size_t GetDataSize() const wxOVERRIDE; + bool GetDataHere(void *buf) const wxOVERRIDE; + bool SetData(const wxDataFormat& format, size_t len, const void *buf) wxOVERRIDE; + protected: + void DoConvertToPng(); private: + wxScopedPtr m_imageBytes; }; diff --git a/src/qt/clipbrd.cpp b/src/qt/clipbrd.cpp index 0a9dc2902d..3cd5149c4d 100644 --- a/src/qt/clipbrd.cpp +++ b/src/qt/clipbrd.cpp @@ -152,7 +152,7 @@ bool wxClipboard::GetData( wxDataObject& data ) textdata->SetText(wxQtConvertString(MimeData->text())); else { - QByteArray bytearray = MimeData->data( wxQtConvertString(format.GetMimeType()) ).data(); + QByteArray bytearray = MimeData->data( wxQtConvertString(format.GetMimeType()) ); data.SetData(format, bytearray.size(), bytearray.constData()); } diff --git a/src/qt/dataobj.cpp b/src/qt/dataobj.cpp index f8ba76bcc2..95c06bb2e0 100644 --- a/src/qt/dataobj.cpp +++ b/src/qt/dataobj.cpp @@ -12,6 +12,9 @@ #pragma hdrstop #endif +#include +#include + #include "wx/dataobj.h" #include "wx/scopedarray.h" @@ -153,11 +156,54 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format, //############################################################################ wxBitmapDataObject::wxBitmapDataObject() + : m_imageBytes(new QByteArray()) { } -wxBitmapDataObject::wxBitmapDataObject( const wxBitmap &WXUNUSED(bitmap) ) +wxBitmapDataObject::wxBitmapDataObject( const wxBitmap &bitmap ) + : wxBitmapDataObjectBase( bitmap ), + m_imageBytes(new QByteArray()) { + DoConvertToPng(); +} + +wxBitmapDataObject::~wxBitmapDataObject() +{ +} + +void wxBitmapDataObject::SetBitmap(const wxBitmap &bitmap) +{ + wxBitmapDataObjectBase::SetBitmap(bitmap); + + DoConvertToPng(); +} + +size_t wxBitmapDataObject::GetDataSize() const +{ + return m_imageBytes->size(); +} + +bool wxBitmapDataObject::GetDataHere(void *buf) const +{ + memcpy(buf, m_imageBytes->constData(), GetDataSize()); + return true; +} + +bool wxBitmapDataObject::SetData(const wxDataFormat &WXUNUSED(format), size_t len, const void *buf) +{ + m_imageBytes->resize(len); + memcpy(m_imageBytes->data(), buf, len); + QPixmap pix; + pix.loadFromData(*m_imageBytes); + m_bitmap = wxBitmap(pix); + return true; +} + +void wxBitmapDataObject::DoConvertToPng() +{ + QBuffer buffer(m_imageBytes.get()); + buffer.open(QIODevice::WriteOnly); + m_bitmap.GetHandle()->save(&buffer, "PNG"); } //############################################################################# From 73c51b12506c9037264e95e849cbc7d876a065b6 Mon Sep 17 00:00:00 2001 From: Matthew Griffin <45285214+matthew-griffin@users.noreply.github.com> Date: Tue, 25 Jun 2019 10:01:09 +0100 Subject: [PATCH 2/5] Change bitmap mime type so other apps can read it --- src/qt/dataobj.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/dataobj.cpp b/src/qt/dataobj.cpp index 95c06bb2e0..acb4ee0005 100644 --- a/src/qt/dataobj.cpp +++ b/src/qt/dataobj.cpp @@ -26,7 +26,7 @@ wxString DataFormatIdToMimeType(wxDataFormatId formatId) switch ( formatId ) { case wxDF_TEXT: return "text/plain"; - case wxDF_BITMAP: return "image/bmp"; + case wxDF_BITMAP: return "PNG"; case wxDF_TIFF: return "image/tiff"; case wxDF_WAVE: return "audio/x-wav"; case wxDF_UNICODETEXT: return "text/plain"; From aa786e813bf368000156718b4054625868268f4d Mon Sep 17 00:00:00 2001 From: Matthew Griffin <45285214+matthew-griffin@users.noreply.github.com> Date: Tue, 25 Jun 2019 11:21:37 +0100 Subject: [PATCH 3/5] Use QtClipboard image functions instead of setting mime type --- include/wx/qt/dataobj2.h | 13 ----------- src/qt/clipbrd.cpp | 27 ++++++++++++++++++++-- src/qt/dataobj.cpp | 49 ++-------------------------------------- 3 files changed, 27 insertions(+), 62 deletions(-) diff --git a/include/wx/qt/dataobj2.h b/include/wx/qt/dataobj2.h index d340432f6f..26536b2750 100644 --- a/include/wx/qt/dataobj2.h +++ b/include/wx/qt/dataobj2.h @@ -8,28 +8,15 @@ #ifndef _WX_QT_DATAOBJ2_H_ #define _WX_QT_DATAOBJ2_H_ -#include - -class QByteArray; - class WXDLLIMPEXP_CORE wxBitmapDataObject : public wxBitmapDataObjectBase { public: wxBitmapDataObject(); wxBitmapDataObject(const wxBitmap& bitmap); - ~wxBitmapDataObject(); - - void SetBitmap(const wxBitmap& bitmap) wxOVERRIDE; - size_t GetDataSize() const wxOVERRIDE; - bool GetDataHere(void *buf) const wxOVERRIDE; - bool SetData(const wxDataFormat& format, size_t len, const void *buf) wxOVERRIDE; - protected: - void DoConvertToPng(); private: - wxScopedPtr m_imageBytes; }; diff --git a/src/qt/clipbrd.cpp b/src/qt/clipbrd.cpp index 3cd5149c4d..e0eaf877d3 100644 --- a/src/qt/clipbrd.cpp +++ b/src/qt/clipbrd.cpp @@ -14,14 +14,14 @@ #include #include +#include +#include #include "wx/clipbrd.h" #include "wx/scopedarray.h" #include "wx/scopeguard.h" #include "wx/qt/private/converter.h" -#include - // ---------------------------------------------------------------------------- // wxClipboard ctor/dtor // ---------------------------------------------------------------------------- @@ -89,6 +89,14 @@ bool wxClipboard::IsOpened() const bool wxClipboard::AddData( wxDataObject *data ) { + wxBitmapDataObjectBase* bitmap = dynamic_cast(data); + if (bitmap != NULL) + { + QtClipboard->setPixmap(*bitmap->GetBitmap().GetHandle()); + delete data; + return true; + } + QMimeData *MimeData = new QMimeData; const size_t count = data->GetFormatCount(); wxDataFormatArray formats(count); @@ -134,6 +142,17 @@ bool wxClipboard::GetData( wxDataObject& data ) { wxCHECK_MSG( m_open, false, wxT("clipboard not open") ); + wxBitmapDataObjectBase* bitmap = dynamic_cast(&data); + if (bitmap != NULL) + { + QPixmap pix = QtClipboard->pixmap(); + if (pix.isNull()) + return false; + + bitmap->SetBitmap(wxBitmap(pix)); + return true; + } + const QMimeData *MimeData = QtClipboard->mimeData( (QClipboard::Mode)Mode() ); const size_t count = data.GetFormatCount(wxDataObject::Set); wxDataFormatArray formats(count); @@ -170,6 +189,10 @@ void wxClipboard::Clear() bool wxClipboard::IsSupported( const wxDataFormat& format ) { const QMimeData *data = QtClipboard->mimeData( (QClipboard::Mode)Mode() ); + if (format.GetType() == wxDF_BITMAP) + { + return data->hasImage(); + } return data->hasFormat(wxQtConvertString(format.GetMimeType())); } diff --git a/src/qt/dataobj.cpp b/src/qt/dataobj.cpp index acb4ee0005..d29c7be8b1 100644 --- a/src/qt/dataobj.cpp +++ b/src/qt/dataobj.cpp @@ -12,9 +12,6 @@ #pragma hdrstop #endif -#include -#include - #include "wx/dataobj.h" #include "wx/scopedarray.h" @@ -26,7 +23,7 @@ wxString DataFormatIdToMimeType(wxDataFormatId formatId) switch ( formatId ) { case wxDF_TEXT: return "text/plain"; - case wxDF_BITMAP: return "PNG"; + case wxDF_BITMAP: return "image/bmp"; case wxDF_TIFF: return "image/tiff"; case wxDF_WAVE: return "audio/x-wav"; case wxDF_UNICODETEXT: return "text/plain"; @@ -156,54 +153,12 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format, //############################################################################ wxBitmapDataObject::wxBitmapDataObject() - : m_imageBytes(new QByteArray()) { } wxBitmapDataObject::wxBitmapDataObject( const wxBitmap &bitmap ) - : wxBitmapDataObjectBase( bitmap ), - m_imageBytes(new QByteArray()) + : wxBitmapDataObjectBase( bitmap ) { - DoConvertToPng(); -} - -wxBitmapDataObject::~wxBitmapDataObject() -{ -} - -void wxBitmapDataObject::SetBitmap(const wxBitmap &bitmap) -{ - wxBitmapDataObjectBase::SetBitmap(bitmap); - - DoConvertToPng(); -} - -size_t wxBitmapDataObject::GetDataSize() const -{ - return m_imageBytes->size(); -} - -bool wxBitmapDataObject::GetDataHere(void *buf) const -{ - memcpy(buf, m_imageBytes->constData(), GetDataSize()); - return true; -} - -bool wxBitmapDataObject::SetData(const wxDataFormat &WXUNUSED(format), size_t len, const void *buf) -{ - m_imageBytes->resize(len); - memcpy(m_imageBytes->data(), buf, len); - QPixmap pix; - pix.loadFromData(*m_imageBytes); - m_bitmap = wxBitmap(pix); - return true; -} - -void wxBitmapDataObject::DoConvertToPng() -{ - QBuffer buffer(m_imageBytes.get()); - buffer.open(QIODevice::WriteOnly); - m_bitmap.GetHandle()->save(&buffer, "PNG"); } //############################################################################# From 531e988e5d2dd6b466bfc0b51f18fd0dae6b735b Mon Sep 17 00:00:00 2001 From: Matthew Griffin <45285214+matthew-griffin@users.noreply.github.com> Date: Wed, 2 Oct 2019 13:22:16 +0100 Subject: [PATCH 4/5] Refactor to do custom qt clipboard actions without dynamic cast --- include/wx/dataobj.h | 4 +++ include/wx/qt/dataobj.h | 7 ++++ include/wx/qt/dataobj2.h | 3 ++ src/qt/clipbrd.cpp | 71 ++---------------------------------- src/qt/dataobj.cpp | 77 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 94 insertions(+), 68 deletions(-) diff --git a/include/wx/dataobj.h b/include/wx/dataobj.h index b7680b5c95..74938302ed 100644 --- a/include/wx/dataobj.h +++ b/include/wx/dataobj.h @@ -427,6 +427,10 @@ public: #endif // different wxTextDataObject implementations private: +#if defined(__WXQT__) + void DoSetDataFrom(const class QMimeData &mimeData, const wxDataFormat &format) wxOVERRIDE; +#endif + wxString m_text; wxDECLARE_NO_COPY_CLASS(wxTextDataObject); diff --git a/include/wx/qt/dataobj.h b/include/wx/qt/dataobj.h index ed4287c285..ffa4aa8ace 100644 --- a/include/wx/qt/dataobj.h +++ b/include/wx/qt/dataobj.h @@ -12,6 +12,8 @@ // wxDataObject is the same as wxDataObjectBase under wxQT // ---------------------------------------------------------------------------- +class QMimeData; + class WXDLLIMPEXP_CORE wxDataObject : public wxDataObjectBase { public: @@ -19,6 +21,11 @@ public: virtual ~wxDataObject(); virtual bool IsSupportedFormat( const wxDataFormat& format, Direction dir = Get ) const; + virtual void AddDataTo(QMimeData &mimeData) const; + virtual bool SetDataFrom(const QMimeData &mimeData); + +private: + virtual void DoSetDataFrom(const QMimeData &mimeData, const wxDataFormat &format); }; #endif // _WX_QT_DATAOBJ_H_ diff --git a/include/wx/qt/dataobj2.h b/include/wx/qt/dataobj2.h index 26536b2750..eaabda777f 100644 --- a/include/wx/qt/dataobj2.h +++ b/include/wx/qt/dataobj2.h @@ -14,6 +14,9 @@ public: wxBitmapDataObject(); wxBitmapDataObject(const wxBitmap& bitmap); + void AddDataTo(QMimeData &mimeData) const wxOVERRIDE; + bool SetDataFrom(const QMimeData &mimeData) wxOVERRIDE; + protected: private: diff --git a/src/qt/clipbrd.cpp b/src/qt/clipbrd.cpp index e0eaf877d3..b2fb0b6706 100644 --- a/src/qt/clipbrd.cpp +++ b/src/qt/clipbrd.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include "wx/clipbrd.h" #include "wx/scopedarray.h" @@ -89,37 +88,8 @@ bool wxClipboard::IsOpened() const bool wxClipboard::AddData( wxDataObject *data ) { - wxBitmapDataObjectBase* bitmap = dynamic_cast(data); - if (bitmap != NULL) - { - QtClipboard->setPixmap(*bitmap->GetBitmap().GetHandle()); - delete data; - return true; - } - - QMimeData *MimeData = new QMimeData; - const size_t count = data->GetFormatCount(); - wxDataFormatArray formats(count); - data->GetAllFormats(formats.get()); - - // how to add timestamp? - - // Unfortunately I cannot find a way to use the qt clipboard with - // a callback to select the data type, so I must copy it all here - - for ( size_t i = 0; i < count; i++ ) - { - const wxDataFormat format(formats[i]); - - int size = data->GetDataSize( format ); - if ( !size ) - continue; - - QByteArray bytearray(size, 0); - data->GetDataHere(format, bytearray.data()); - MimeData->setData(wxQtConvertString(format.GetMimeType()), bytearray); - } - + QMimeData *MimeData = new QMimeData; + data->AddDataTo(*MimeData); delete data; QtClipboard->setMimeData(MimeData, (QClipboard::Mode)Mode()); @@ -142,43 +112,8 @@ bool wxClipboard::GetData( wxDataObject& data ) { wxCHECK_MSG( m_open, false, wxT("clipboard not open") ); - wxBitmapDataObjectBase* bitmap = dynamic_cast(&data); - if (bitmap != NULL) - { - QPixmap pix = QtClipboard->pixmap(); - if (pix.isNull()) - return false; - - bitmap->SetBitmap(wxBitmap(pix)); - return true; - } - const QMimeData *MimeData = QtClipboard->mimeData( (QClipboard::Mode)Mode() ); - const size_t count = data.GetFormatCount(wxDataObject::Set); - wxDataFormatArray formats(count); - data.GetAllFormats(formats.get(), wxDataObject::Set); - - for ( size_t i = 0; i < count; i++ ) - { - const wxDataFormat format(formats[i]); - - // is this format supported by clipboard ? - if( !MimeData->hasFormat(wxQtConvertString(format.GetMimeType())) ) - continue; - - wxTextDataObject *textdata = dynamic_cast(&data); - if ( textdata ) - textdata->SetText(wxQtConvertString(MimeData->text())); - else - { - QByteArray bytearray = MimeData->data( wxQtConvertString(format.GetMimeType()) ); - data.SetData(format, bytearray.size(), bytearray.constData()); - } - - return true; - } - - return false; + return data.SetDataFrom(*MimeData); } void wxClipboard::Clear() diff --git a/src/qt/dataobj.cpp b/src/qt/dataobj.cpp index d29c7be8b1..4794eae234 100644 --- a/src/qt/dataobj.cpp +++ b/src/qt/dataobj.cpp @@ -12,8 +12,14 @@ #pragma hdrstop #endif +#include +#include + #include "wx/dataobj.h" #include "wx/scopedarray.h" +#include "wx/qt/private/converter.h" + +typedef wxScopedArray wxDataFormatArray; namespace { @@ -150,6 +156,58 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format, return false; } +void wxDataObject::AddDataTo(QMimeData &mimeData) const +{ + const size_t count = GetFormatCount(); + wxDataFormatArray formats(count); + GetAllFormats(formats.get()); + + // how to add timestamp? + + // Unfortunately I cannot find a way to use the qt clipboard with + // a callback to select the data type, so I must copy it all here + + for (size_t i = 0; i < count; i++) + { + const wxDataFormat format(formats[i]); + + int size = GetDataSize(format); + if (!size) + continue; + + QByteArray bytearray(size, 0); + GetDataHere(format, bytearray.data()); + mimeData.setData(wxQtConvertString(format.GetMimeType()), bytearray); + } +} + +bool wxDataObject::SetDataFrom(const QMimeData &mimeData) +{ + const size_t count = GetFormatCount(Set); + wxDataFormatArray formats(count); + GetAllFormats(formats.get(), Set); + + for (size_t i = 0; i < count; i++) + { + const wxDataFormat format(formats[i]); + + // is this format supported by clipboard ? + if (!mimeData.hasFormat(wxQtConvertString(format.GetMimeType()))) + continue; + + DoSetDataFrom(mimeData, format); + return true; + } + + return false; +} + +void wxDataObject::DoSetDataFrom(const QMimeData &mimeData, const wxDataFormat &format) +{ + QByteArray bytearray = mimeData.data(wxQtConvertString(format.GetMimeType())); + SetData(format, bytearray.size(), bytearray.constData()); +} + //############################################################################ wxBitmapDataObject::wxBitmapDataObject() @@ -161,6 +219,20 @@ wxBitmapDataObject::wxBitmapDataObject( const wxBitmap &bitmap ) { } +void wxBitmapDataObject::AddDataTo(QMimeData &mimeData) const +{ + mimeData.setImageData(GetBitmap().GetHandle()->toImage()); +} + +bool wxBitmapDataObject::SetDataFrom(const QMimeData &mimeData) +{ + if (!mimeData.hasImage()) + return false; + + SetBitmap(wxBitmap(QPixmap::fromImage(qvariant_cast(mimeData.imageData())))); + return true; +} + //############################################################################# // ---------------------------------------------------------------------------- // wxTextDataObject @@ -175,6 +247,11 @@ void wxTextDataObject::GetAllFormats(wxDataFormat *formats, } #endif +void wxTextDataObject::DoSetDataFrom(const QMimeData &mimeData, const wxDataFormat &WXUNUSED(format)) +{ + SetText(wxQtConvertString(mimeData.text())); +} + //############################################################################# wxFileDataObject::wxFileDataObject() From 5c169c0cf2ec951f219e32a1b2e76ffd83b14467 Mon Sep 17 00:00:00 2001 From: Matthew Griffin <45285214+matthew-griffin@users.noreply.github.com> Date: Wed, 2 Oct 2019 15:40:16 +0100 Subject: [PATCH 5/5] Update function names, indentation and added comments --- include/wx/dataobj.h | 3 +- include/wx/qt/dataobj.h | 10 +++-- include/wx/qt/dataobj2.h | 6 ++- src/qt/clipbrd.cpp | 6 +-- src/qt/dataobj.cpp | 86 ++++++++++++++++++++-------------------- 5 files changed, 59 insertions(+), 52 deletions(-) diff --git a/include/wx/dataobj.h b/include/wx/dataobj.h index 74938302ed..4091f7b766 100644 --- a/include/wx/dataobj.h +++ b/include/wx/dataobj.h @@ -428,7 +428,8 @@ public: private: #if defined(__WXQT__) - void DoSetDataFrom(const class QMimeData &mimeData, const wxDataFormat &format) wxOVERRIDE; + // Overridden to set text directly instead of extracting byte array + void QtSetDataSingleFormat(const class QMimeData &mimeData, const wxDataFormat &format) wxOVERRIDE; #endif wxString m_text; diff --git a/include/wx/qt/dataobj.h b/include/wx/qt/dataobj.h index ffa4aa8ace..3e891d12ab 100644 --- a/include/wx/qt/dataobj.h +++ b/include/wx/qt/dataobj.h @@ -21,11 +21,15 @@ public: virtual ~wxDataObject(); virtual bool IsSupportedFormat( const wxDataFormat& format, Direction dir = Get ) const; - virtual void AddDataTo(QMimeData &mimeData) const; - virtual bool SetDataFrom(const QMimeData &mimeData); + + // Adds object's data to Qt mime data appropriately for type + virtual void QtAddDataTo(QMimeData &mimeData) const; + // Sets object's data from Qt mime data appropriately for type + virtual bool QtSetDataFrom(const QMimeData &mimeData); private: - virtual void DoSetDataFrom(const QMimeData &mimeData, const wxDataFormat &format); + // Sets object's data from Qt mime data in specific format + virtual void QtSetDataSingleFormat(const QMimeData &mimeData, const wxDataFormat &format); }; #endif // _WX_QT_DATAOBJ_H_ diff --git a/include/wx/qt/dataobj2.h b/include/wx/qt/dataobj2.h index eaabda777f..8ddb3e781e 100644 --- a/include/wx/qt/dataobj2.h +++ b/include/wx/qt/dataobj2.h @@ -14,8 +14,10 @@ public: wxBitmapDataObject(); wxBitmapDataObject(const wxBitmap& bitmap); - void AddDataTo(QMimeData &mimeData) const wxOVERRIDE; - bool SetDataFrom(const QMimeData &mimeData) wxOVERRIDE; + // Overridden to set image data directly, which Qt will write to clipboard in many formats + void QtAddDataTo(QMimeData &mimeData) const wxOVERRIDE; + // Overridden to retrieve image data from any format that Qt can read from clipboard + bool QtSetDataFrom(const QMimeData &mimeData) wxOVERRIDE; protected: diff --git a/src/qt/clipbrd.cpp b/src/qt/clipbrd.cpp index b2fb0b6706..9d38aebd86 100644 --- a/src/qt/clipbrd.cpp +++ b/src/qt/clipbrd.cpp @@ -88,8 +88,8 @@ bool wxClipboard::IsOpened() const bool wxClipboard::AddData( wxDataObject *data ) { - QMimeData *MimeData = new QMimeData; - data->AddDataTo(*MimeData); + QMimeData *MimeData = new QMimeData; + data->QtAddDataTo(*MimeData); delete data; QtClipboard->setMimeData(MimeData, (QClipboard::Mode)Mode()); @@ -113,7 +113,7 @@ bool wxClipboard::GetData( wxDataObject& data ) wxCHECK_MSG( m_open, false, wxT("clipboard not open") ); const QMimeData *MimeData = QtClipboard->mimeData( (QClipboard::Mode)Mode() ); - return data.SetDataFrom(*MimeData); + return data.QtSetDataFrom(*MimeData); } void wxClipboard::Clear() diff --git a/src/qt/dataobj.cpp b/src/qt/dataobj.cpp index 4794eae234..0790128228 100644 --- a/src/qt/dataobj.cpp +++ b/src/qt/dataobj.cpp @@ -156,56 +156,56 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format, return false; } -void wxDataObject::AddDataTo(QMimeData &mimeData) const +void wxDataObject::QtAddDataTo(QMimeData &mimeData) const { - const size_t count = GetFormatCount(); - wxDataFormatArray formats(count); - GetAllFormats(formats.get()); + const size_t count = GetFormatCount(); + wxDataFormatArray formats(count); + GetAllFormats(formats.get()); - // how to add timestamp? + // how to add timestamp? - // Unfortunately I cannot find a way to use the qt clipboard with - // a callback to select the data type, so I must copy it all here + // Unfortunately I cannot find a way to use the qt clipboard with + // a callback to select the data type, so I must copy it all here - for (size_t i = 0; i < count; i++) - { - const wxDataFormat format(formats[i]); + for (size_t i = 0; i < count; i++) + { + const wxDataFormat format(formats[i]); - int size = GetDataSize(format); - if (!size) - continue; + int size = GetDataSize(format); + if (!size) + continue; - QByteArray bytearray(size, 0); - GetDataHere(format, bytearray.data()); - mimeData.setData(wxQtConvertString(format.GetMimeType()), bytearray); - } + QByteArray bytearray(size, 0); + GetDataHere(format, bytearray.data()); + mimeData.setData(wxQtConvertString(format.GetMimeType()), bytearray); + } } -bool wxDataObject::SetDataFrom(const QMimeData &mimeData) +bool wxDataObject::QtSetDataFrom(const QMimeData &mimeData) { - const size_t count = GetFormatCount(Set); - wxDataFormatArray formats(count); - GetAllFormats(formats.get(), Set); + const size_t count = GetFormatCount(Set); + wxDataFormatArray formats(count); + GetAllFormats(formats.get(), Set); - for (size_t i = 0; i < count; i++) - { - const wxDataFormat format(formats[i]); + for (size_t i = 0; i < count; i++) + { + const wxDataFormat format(formats[i]); - // is this format supported by clipboard ? - if (!mimeData.hasFormat(wxQtConvertString(format.GetMimeType()))) - continue; + // is this format supported by clipboard ? + if (!mimeData.hasFormat(wxQtConvertString(format.GetMimeType()))) + continue; - DoSetDataFrom(mimeData, format); - return true; - } + QtSetDataSingleFormat(mimeData, format); + return true; + } - return false; + return false; } -void wxDataObject::DoSetDataFrom(const QMimeData &mimeData, const wxDataFormat &format) +void wxDataObject::QtSetDataSingleFormat(const QMimeData &mimeData, const wxDataFormat &format) { - QByteArray bytearray = mimeData.data(wxQtConvertString(format.GetMimeType())); - SetData(format, bytearray.size(), bytearray.constData()); + QByteArray bytearray = mimeData.data(wxQtConvertString(format.GetMimeType())); + SetData(format, bytearray.size(), bytearray.constData()); } //############################################################################ @@ -219,18 +219,18 @@ wxBitmapDataObject::wxBitmapDataObject( const wxBitmap &bitmap ) { } -void wxBitmapDataObject::AddDataTo(QMimeData &mimeData) const +void wxBitmapDataObject::QtAddDataTo(QMimeData &mimeData) const { - mimeData.setImageData(GetBitmap().GetHandle()->toImage()); + mimeData.setImageData(GetBitmap().GetHandle()->toImage()); } -bool wxBitmapDataObject::SetDataFrom(const QMimeData &mimeData) +bool wxBitmapDataObject::QtSetDataFrom(const QMimeData &mimeData) { - if (!mimeData.hasImage()) - return false; + if (!mimeData.hasImage()) + return false; - SetBitmap(wxBitmap(QPixmap::fromImage(qvariant_cast(mimeData.imageData())))); - return true; + SetBitmap(wxBitmap(QPixmap::fromImage(qvariant_cast(mimeData.imageData())))); + return true; } //############################################################################# @@ -247,9 +247,9 @@ void wxTextDataObject::GetAllFormats(wxDataFormat *formats, } #endif -void wxTextDataObject::DoSetDataFrom(const QMimeData &mimeData, const wxDataFormat &WXUNUSED(format)) +void wxTextDataObject::QtSetDataSingleFormat(const QMimeData &mimeData, const wxDataFormat &WXUNUSED(format)) { - SetText(wxQtConvertString(mimeData.text())); + SetText(wxQtConvertString(mimeData.text())); } //#############################################################################