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())); } //#############################################################################