From: Jan Engelhardt Date: 2014-12-05 19:29:16.174123839 +0100 build: fix compile errors/warnings ./src/qt/accel.cpp: In member function 'QList wxAcceleratorTable::ConvertShortcutTable(QWidget*) const': ./src/qt/accel.cpp:88:11: error: 'Node' is not a member of 'wxAccelList' gcc: ./src/qt/checkbox.cpp:122:1: warning: control reaches end of non-void function [-Wreturn-type] rpmlint: I: Program returns random data in a function rpmlint: E: wxQt-3_2 no-return-in-nonvoid-function ./src/qt/checkbox.cpp:122 Change code to use full PIMPL so that wx headers do not depend on Qt at all (this is the declared goal of wx). --- include/wx/qt/accel.h | 3 -- include/wx/qt/app.h | 2 - include/wx/qt/colour.h | 29 +++++++++++------------- include/wx/qt/window.h | 1 src/common/colourdata.cpp | 2 + src/qt/accel.cpp | 2 - src/qt/app.cpp | 1 src/qt/bitmap.cpp | 2 - src/qt/brush.cpp | 6 ++--- src/qt/calctrl.cpp | 14 +++++------ src/qt/checkbox.cpp | 2 - src/qt/clipbrd.cpp | 1 src/qt/colordlg.cpp | 4 +-- src/qt/colour.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++++ src/qt/dc.cpp | 16 ++++++------- src/qt/dcscreen.cpp | 1 src/qt/evtloop.cpp | 1 src/qt/listctrl.cpp | 4 +-- src/qt/pen.cpp | 6 ++--- 19 files changed, 103 insertions(+), 48 deletions(-) Index: wxWidgets/include/wx/qt/accel.h =================================================================== --- wxWidgets.orig/include/wx/qt/accel.h +++ wxWidgets/include/wx/qt/accel.h @@ -9,8 +9,7 @@ #ifndef _WX_QT_ACCEL_H_ #define _WX_QT_ACCEL_H_ -#include -#include +#include /* wxQt accelerators implementation: * Index: wxWidgets/include/wx/qt/app.h =================================================================== --- wxWidgets.orig/include/wx/qt/app.h +++ wxWidgets/include/wx/qt/app.h @@ -9,8 +9,6 @@ #ifndef _WX_QT_APP_H_ #define _WX_QT_APP_H_ -#include - class WXDLLIMPEXP_CORE wxApp : public wxAppBase { public: Index: wxWidgets/include/wx/qt/colour.h =================================================================== --- wxWidgets.orig/include/wx/qt/colour.h +++ wxWidgets/include/wx/qt/colour.h @@ -10,37 +10,34 @@ #ifndef _WX_QT_COLOUR_H_ #define _WX_QT_COLOUR_H_ -#include +class QColor; class WXDLLIMPEXP_CORE wxColour : public wxColourBase { public: DEFINE_STD_WXCOLOUR_CONSTRUCTORS - wxColour(const QColor& color) : m_qtColor(color) {} + wxColour(const QColor &); - virtual bool IsOk() const { return m_qtColor.isValid(); } + virtual bool IsOk(void) const; - unsigned char Red() const { return m_qtColor.red(); } - unsigned char Green() const { return m_qtColor.green(); } - unsigned char Blue() const { return m_qtColor.blue(); } - unsigned char Alpha() const { return m_qtColor.alpha(); } - - bool operator==(const wxColour& color) const - { return m_qtColor == color.m_qtColor; } - bool operator!=(const wxColour& color) const - { return m_qtColor != color.m_qtColor; } + unsigned char Red(void) const; + unsigned char Green(void) const; + unsigned char Blue(void) const; + unsigned char Alpha(void) const; + + bool operator==(const wxColour &) const; + bool operator!=(const wxColour &) const; int GetPixel() const; - QColor GetHandle() const { return m_qtColor; }; + QColor *GetHandle(void) const; protected: virtual void - InitRGBA(ChannelType r, ChannelType g, ChannelType b, ChannelType a) - { m_qtColor.setRgb(r, g, b, a); } + InitRGBA(ChannelType r, ChannelType g, ChannelType b, ChannelType a); private: - QColor m_qtColor; + QColor *m_qtColor; DECLARE_DYNAMIC_CLASS(wxColour) }; Index: wxWidgets/include/wx/qt/window.h =================================================================== --- wxWidgets.orig/include/wx/qt/window.h +++ wxWidgets/include/wx/qt/window.h @@ -11,6 +11,7 @@ #include #include +#include class WXDLLIMPEXP_FWD_CORE wxScrollBar; class WXDLLIMPEXP_FWD_CORE wxQtShortcutHandler; Index: wxWidgets/src/common/colourdata.cpp =================================================================== --- wxWidgets.orig/src/common/colourdata.cpp +++ wxWidgets/src/common/colourdata.cpp @@ -24,6 +24,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxColourData, wx wxColourData::wxColourData() { + fprintf(stderr, "%s\n", __PRETTY_FUNCTION__); m_chooseFull = false; m_dataColour.Set(0,0,0); // m_custColours are wxNullColours initially @@ -32,6 +33,7 @@ wxColourData::wxColourData() wxColourData::wxColourData(const wxColourData& data) : wxObject() { + fprintf(stderr, "%s\n", __PRETTY_FUNCTION__); (*this) = data; } Index: wxWidgets/src/qt/accel.cpp =================================================================== --- wxWidgets.orig/src/qt/accel.cpp +++ wxWidgets/src/qt/accel.cpp @@ -85,7 +85,7 @@ QList< QShortcut* > wxAcceleratorTable:: { QList< QShortcut* > qtList; - for ( wxAccelList::Node *node = M_ACCELDATA->m_accels.GetFirst(); node; node = node->GetNext() ) + for ( wxAccelList::compatibility_iterator node = M_ACCELDATA->m_accels.GetFirst(); node; node = node->GetNext() ) { qtList << ConvertAccelerator( node->GetData(), parent ); } Index: wxWidgets/src/qt/app.cpp =================================================================== --- wxWidgets.orig/src/qt/app.cpp +++ wxWidgets/src/qt/app.cpp @@ -13,6 +13,7 @@ #include "wx/qt/private/utils.h" #include "wx/qt/private/converter.h" #include +#include IMPLEMENT_DYNAMIC_CLASS( wxApp, wxAppBase ) Index: wxWidgets/src/qt/bitmap.cpp =================================================================== --- wxWidgets.orig/src/qt/bitmap.cpp +++ wxWidgets/src/qt/bitmap.cpp @@ -504,7 +504,7 @@ bool wxMask::Create(const wxBitmap& bitm if (m_qtBitmap) delete m_qtBitmap; - m_qtBitmap = new QBitmap(bitmap.GetHandle()->createMaskFromColor(colour.GetHandle())); + m_qtBitmap = new QBitmap(bitmap.GetHandle()->createMaskFromColor(*colour.GetHandle())); return true; } Index: wxWidgets/src/qt/brush.cpp =================================================================== --- wxWidgets.orig/src/qt/brush.cpp +++ wxWidgets/src/qt/brush.cpp @@ -95,7 +95,7 @@ wxBrush::wxBrush() wxBrush::wxBrush(const wxColour& col, wxBrushStyle style ) { m_refData = new wxBrushRefData(); - M_BRUSHDATA.setColor(col.GetHandle()); + M_BRUSHDATA.setColor(*col.GetHandle()); M_BRUSHDATA.setStyle(ConvertBrushStyle(style)); M_STYLEDATA = style; } @@ -103,7 +103,7 @@ wxBrush::wxBrush(const wxColour& col, wx wxBrush::wxBrush(const wxColour& col, int style) { m_refData = new wxBrushRefData(); - M_BRUSHDATA.setColor(col.GetHandle()); + M_BRUSHDATA.setColor(*col.GetHandle()); M_BRUSHDATA.setStyle(ConvertBrushStyle((wxBrushStyle)style)); M_STYLEDATA = (wxBrushStyle)style; } @@ -122,7 +122,7 @@ wxBrush::wxBrush(const wxBitmap& stipple void wxBrush::SetColour(const wxColour& col) { AllocExclusive(); - M_BRUSHDATA.setColor(col.GetHandle()); + M_BRUSHDATA.setColor(*col.GetHandle()); } void wxBrush::SetColour(unsigned char r, unsigned char g, unsigned char b) Index: wxWidgets/src/qt/calctrl.cpp =================================================================== --- wxWidgets.orig/src/qt/calctrl.cpp +++ wxWidgets/src/qt/calctrl.cpp @@ -229,7 +229,7 @@ void wxCalendarCtrl::SetHoliday(size_t d date.setDate(date.year(), date.month(), day); QTextCharFormat format = m_qtCalendar->dateTextFormat(date); - format.setForeground(m_colHolidayFg.GetHandle()); + format.setForeground(*m_colHolidayFg.GetHandle()); m_qtCalendar->setDateTextFormat(date, format); } @@ -249,9 +249,9 @@ void wxCalendarCtrl::RefreshHolidays() if ( m_windowStyle & wxCAL_SHOW_HOLIDAYS ) { if ( m_colHolidayFg.IsOk() ) - format.setForeground(m_colHolidayFg.GetHandle()); + format.setForeground(*m_colHolidayFg.GetHandle()); if ( m_colHolidayBg.IsOk() ) - format.setBackground(m_colHolidayBg.GetHandle()); + format.setBackground(*m_colHolidayBg.GetHandle()); } else { @@ -278,9 +278,9 @@ void wxCalendarCtrl::SetHeaderColours(co QTextCharFormat format = m_qtCalendar->headerTextFormat(); if ( m_colHeaderFg.IsOk() ) - format.setForeground(m_colHeaderFg.GetHandle()); + format.setForeground(*m_colHeaderFg.GetHandle()); if ( m_colHeaderBg.IsOk() ) - format.setBackground(m_colHeaderBg.GetHandle()); + format.setBackground(*m_colHeaderBg.GetHandle()); m_qtCalendar->setHeaderTextFormat(format); } @@ -303,9 +303,9 @@ void wxCalendarCtrl::SetAttr(size_t day, QTextCharFormat format = m_qtCalendar->dateTextFormat(date); if ( attr->HasTextColour() ) - format.setForeground(attr->GetTextColour().GetHandle()); + format.setForeground(*attr->GetTextColour().GetHandle()); if ( attr->HasBackgroundColour() ) - format.setBackground(attr->GetBackgroundColour().GetHandle()); + format.setBackground(*attr->GetBackgroundColour().GetHandle()); wxMISSING_IMPLEMENTATION( "Setting font" ); Index: wxWidgets/src/qt/checkbox.cpp =================================================================== --- wxWidgets.orig/src/qt/checkbox.cpp +++ wxWidgets/src/qt/checkbox.cpp @@ -116,7 +116,7 @@ wxCheckBoxState wxCheckBox::DoGet3StateV case Qt::Checked: return wxCHK_CHECKED; - case Qt::PartiallyChecked: + default: return wxCHK_UNDETERMINED; } } Index: wxWidgets/src/qt/clipbrd.cpp =================================================================== --- wxWidgets.orig/src/qt/clipbrd.cpp +++ wxWidgets/src/qt/clipbrd.cpp @@ -13,6 +13,7 @@ #include "wx/scopeguard.h" #include "wx/qt/private/converter.h" +#include #include // ---------------------------------------------------------------------------- Index: wxWidgets/src/qt/colordlg.cpp =================================================================== --- wxWidgets.orig/src/qt/colordlg.cpp +++ wxWidgets/src/qt/colordlg.cpp @@ -29,10 +29,10 @@ bool wxColourDialog::Create(wxWindow *pa if ( m_data.GetChooseFull() ) { for (int i=0; isetCurrentColor(m_data.GetColour().GetHandle()); + GetHandle()->setCurrentColor(*m_data.GetColour().GetHandle()); return wxTopLevelWindow::Create( parent, wxID_ANY, ""); } Index: wxWidgets/src/qt/colour.cpp =================================================================== --- wxWidgets.orig/src/qt/colour.cpp +++ wxWidgets/src/qt/colour.cpp @@ -10,11 +10,65 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #include "wx/qt/private/utils.h" +#include "wx/colour.h" #ifdef __BORLANDC__ #pragma hdrstop #endif +wxColour::wxColour(const QColor &color) : + m_qtColor(new QColor(color)) +{ + fprintf(stderr, "%s\n", __PRETTY_FUNCTION__); +} + +bool wxColour::IsOk(void) const +{ + return m_qtColor->isValid(); +} + +unsigned char wxColour::Red(void) const +{ + return m_qtColor->red(); +} + +unsigned char wxColour::Green(void) const +{ + return m_qtColor->green(); +} + +unsigned char wxColour::Blue(void) const +{ + return m_qtColor->blue(); +} + +unsigned char wxColour::Alpha(void) const +{ + return m_qtColor->alpha(); +} + +bool wxColour::operator==(const wxColour &color) const +{ + return *m_qtColor == *color.m_qtColor; +} + +bool wxColour::operator!=(const wxColour &color) const +{ + return *m_qtColor != *color.m_qtColor; +} + +QColor *wxColour::GetHandle(void) const +{ + return m_qtColor; +} + +void wxColour::InitRGBA(unsigned char r, unsigned char g, unsigned char b, + unsigned char a) +{ + fprintf(stderr, "%s\n", __PRETTY_FUNCTION__); + m_qtColor->setRgb(r, g, b, a); +} + int wxColour::GetPixel() const { wxMISSING_IMPLEMENTATION( "wxColour::GetPixel" ); Index: wxWidgets/src/qt/dc.cpp =================================================================== --- wxWidgets.orig/src/qt/dc.cpp +++ wxWidgets/src/qt/dc.cpp @@ -142,7 +142,7 @@ void wxQtDCImpl::SetBrush(const wxBrush& { // Use a monochrome mask: use foreground color for the mask QBrush b(brush.GetHandle()); - b.setColor(m_textForegroundColour.GetHandle()); + b.setColor(*m_textForegroundColour.GetHandle()); b.setTexture(b.texture().mask()); m_qtPainter->setBrush(b); } @@ -572,7 +572,7 @@ void wxQtDCImpl::DoDrawEllipse(wxCoord x // Save pen/brush savedBrush = m_qtPainter->brush(); // Fill with text background color ("no fill" like in wxGTK): - m_qtPainter->setBrush(QBrush(m_textBackgroundColour.GetHandle())); + m_qtPainter->setBrush(QBrush(*m_textBackgroundColour.GetHandle())); } // Draw @@ -617,8 +617,8 @@ void wxQtDCImpl::DoDrawBitmap(const wxBi QPen savedPen = m_qtPainter->pen(); //Use text colors - m_qtPainter->setBackground(QBrush(m_textBackgroundColour.GetHandle())); - m_qtPainter->setPen(QPen(m_textForegroundColour.GetHandle())); + m_qtPainter->setBackground(QBrush(*m_textBackgroundColour.GetHandle())); + m_qtPainter->setPen(QPen(*m_textForegroundColour.GetHandle())); //Draw m_qtPainter->drawPixmap(x, y, pix); @@ -648,7 +648,7 @@ void wxQtDCImpl::DoDrawBitmap(const wxBi void wxQtDCImpl::DoDrawText(const wxString& text, wxCoord x, wxCoord y) { QPen savedPen = m_qtPainter->pen(); - m_qtPainter->setPen(QPen(m_textForegroundColour.GetHandle())); + m_qtPainter->setPen(QPen(*m_textForegroundColour.GetHandle())); // Disable logical function QPainter::CompositionMode savedOp = m_qtPainter->compositionMode(); @@ -662,7 +662,7 @@ void wxQtDCImpl::DoDrawText(const wxStri QBrush savedBrush = m_qtPainter->background(); //Use text colors - m_qtPainter->setBackground(QBrush(m_textBackgroundColour.GetHandle())); + m_qtPainter->setBackground(QBrush(*m_textBackgroundColour.GetHandle())); //Draw m_qtPainter->drawText(x, y, 1, 1, Qt::TextDontClip, wxQtConvertString(text)); @@ -691,7 +691,7 @@ void wxQtDCImpl::DoDrawRotatedText(const m_qtPainter->rotate(-angle); QPen savedPen = m_qtPainter->pen(); - m_qtPainter->setPen(QPen(m_textForegroundColour.GetHandle())); + m_qtPainter->setPen(QPen(*m_textForegroundColour.GetHandle())); // Disable logical function QPainter::CompositionMode savedOp = m_qtPainter->compositionMode(); @@ -705,7 +705,7 @@ void wxQtDCImpl::DoDrawRotatedText(const QBrush savedBrush = m_qtPainter->background(); //Use text colors - m_qtPainter->setBackground(QBrush(m_textBackgroundColour.GetHandle())); + m_qtPainter->setBackground(QBrush(*m_textBackgroundColour.GetHandle())); //Draw m_qtPainter->drawText(x, y, 1, 1, Qt::TextDontClip, wxQtConvertString(text)); Index: wxWidgets/src/qt/dcscreen.cpp =================================================================== --- wxWidgets.orig/src/qt/dcscreen.cpp +++ wxWidgets/src/qt/dcscreen.cpp @@ -14,6 +14,7 @@ #include #include #include +#include IMPLEMENT_ABSTRACT_CLASS(wxScreenDCImpl, wxWindowDCImpl) Index: wxWidgets/src/qt/evtloop.cpp =================================================================== --- wxWidgets.orig/src/qt/evtloop.cpp +++ wxWidgets/src/qt/evtloop.cpp @@ -16,6 +16,7 @@ #include #include #include +#include wxQtIdleTimer::wxQtIdleTimer( wxQtEventLoopBase *eventLoop ) { Index: wxWidgets/src/qt/listctrl.cpp =================================================================== --- wxWidgets.orig/src/qt/listctrl.cpp +++ wxWidgets/src/qt/listctrl.cpp @@ -336,9 +336,9 @@ bool wxListCtrl::SetItem(wxListItem& inf if ( info.GetFont().IsOk() ) qitem->setFont(col, info.GetFont().GetHandle() ); if ( info.GetTextColour().IsOk() ) - qitem->setTextColor(col, info.GetTextColour().GetHandle()); + qitem->setTextColor(col, *info.GetTextColour().GetHandle()); if ( info.GetBackgroundColour().IsOk() ) - qitem->setBackgroundColor(col, info.GetBackgroundColour().GetHandle()); + qitem->setBackgroundColor(col, *info.GetBackgroundColour().GetHandle()); } return true; } Index: wxWidgets/src/qt/pen.cpp =================================================================== --- wxWidgets.orig/src/qt/pen.cpp +++ wxWidgets/src/qt/pen.cpp @@ -247,7 +247,7 @@ wxPen::wxPen( const wxColour &colour, in m_refData = new wxPenRefData(); M_PENDATA.setWidth(width); M_PENDATA.setStyle(ConvertPenStyle(style)); - M_PENDATA.setColor(colour.GetHandle()); + M_PENDATA.setColor(*colour.GetHandle()); } wxPen::wxPen(const wxColour& col, int width, int style) @@ -255,7 +255,7 @@ wxPen::wxPen(const wxColour& col, int wi m_refData = new wxPenRefData(); M_PENDATA.setWidth(width); M_PENDATA.setStyle(ConvertPenStyle((wxPenStyle)style)); - M_PENDATA.setColor(col.GetHandle()); + M_PENDATA.setColor(*col.GetHandle()); } @@ -276,7 +276,7 @@ bool wxPen::operator!=(const wxPen& pen) void wxPen::SetColour(const wxColour& col) { AllocExclusive(); - M_PENDATA.setColor(col.GetHandle()); + M_PENDATA.setColor(*col.GetHandle()); } void wxPen::SetColour(unsigned char r, unsigned char g, unsigned char b)