From e28ab8974dc825d06b780ffa4e6fc3193d55a4da Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 21 Oct 2022 15:34:33 +0200 Subject: [PATCH] Avoid some simple to fix deprecation warnings with Qt 5.14 Replace the deprecated functions with the new equivalents when this doesn't really change the code semantics. Also add new compat.h private header where more functions like wxQtGetWidthFromMetrics() can be added in the future. There are still quite a few of deprecation warnings requiring more changes remaining. --- include/wx/qt/private/compat.h | 26 ++++++++++++++++++++++++++ src/qt/bitmap.cpp | 2 +- src/qt/choice.cpp | 2 +- src/qt/dc.cpp | 3 ++- src/qt/listbox.cpp | 6 +++--- src/qt/region.cpp | 11 ++++++++--- src/qt/treectrl.cpp | 12 ++++++------ src/qt/utils.cpp | 2 +- src/qt/window.cpp | 22 ++++++++++++++-------- 9 files changed, 62 insertions(+), 24 deletions(-) create mode 100644 include/wx/qt/private/compat.h diff --git a/include/wx/qt/private/compat.h b/include/wx/qt/private/compat.h new file mode 100644 index 0000000000..60f8a0ea23 --- /dev/null +++ b/include/wx/qt/private/compat.h @@ -0,0 +1,26 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/qt/private/compat.h +// Purpose: Helpers for dealing with various Qt versions +// Author: Vadim Zeitlin +// Created: 2022-10-21 +// Copyright: (c) 2022 Vadim Zeitlin +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_QT_PRIVATE_COMPAT_H_ +#define _WX_QT_PRIVATE_COMPAT_H_ + +#include + +// Hide the difference in name of QFontMetrics::width() in various Qt versions. +inline int +wxQtGetWidthFromMetrics(const QFontMetrics& metrics, const QString& string) +{ +#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) + return metrics.horizontalAdvance( string ); +#else + return metrics.width( string ); +#endif +} + +#endif // _WX_QT_PRIVATE_COMPAT_H_ diff --git a/src/qt/bitmap.cpp b/src/qt/bitmap.cpp index c8c3336d62..8ebc15c676 100644 --- a/src/qt/bitmap.cpp +++ b/src/qt/bitmap.cpp @@ -212,7 +212,7 @@ wxBitmap::wxBitmap(const wxString &filename, wxBitmapType type ) void wxBitmap::InitFromImage(const wxImage& image, int depth, double WXUNUSED(scale) ) { - Qt::ImageConversionFlags flags = nullptr; + Qt::ImageConversionFlags flags; if (depth == 1) flags = Qt::MonoOnly; m_refData = new wxBitmapRefData(QPixmap::fromImage(ConvertImage(image), flags)); diff --git a/src/qt/choice.cpp b/src/qt/choice.cpp index 2afbd74f88..aafaee9920 100644 --- a/src/qt/choice.cpp +++ b/src/qt/choice.cpp @@ -232,7 +232,7 @@ int wxChoice::DoInsertOneItem(const wxString& item, unsigned int pos) void wxChoice::DoSetItemClientData(unsigned int n, void *clientData) { - QVariant variant = qVariantFromValue(clientData); + QVariant variant = QVariant::fromValue(clientData); m_qtComboBox->setItemData(n, variant); } diff --git a/src/qt/dc.cpp b/src/qt/dc.cpp index 4a176a538c..7cbe3d62cd 100644 --- a/src/qt/dc.cpp +++ b/src/qt/dc.cpp @@ -23,6 +23,7 @@ #include "wx/qt/dc.h" #include "wx/qt/private/converter.h" #include "wx/qt/private/utils.h" +#include "wx/qt/private/compat.h" #include #include @@ -383,7 +384,7 @@ void wxQtDCImpl::DoGetTextExtent(const wxString& string, { // note that boundingRect doesn't return "advance width" for spaces if (x != nullptr) - *x = metrics.width( wxQtConvertString(string) ); + *x = wxQtGetWidthFromMetrics(metrics, wxQtConvertString(string)); if (y != nullptr) *y = metrics.height(); } diff --git a/src/qt/listbox.cpp b/src/qt/listbox.cpp index 4ebc993462..1d257a19c4 100644 --- a/src/qt/listbox.cpp +++ b/src/qt/listbox.cpp @@ -245,7 +245,7 @@ void wxListBox::DoSetSelection(int n, bool select) return; } - m_qtListWidget->setItemSelected( m_qtListWidget->item(n), select); + m_qtListWidget->item(n)->setSelected(select); } int wxListBox::DoInsertItems(const wxArrayStringsAdapter & items, @@ -275,7 +275,7 @@ int wxListBox::DoInsertOneItem(const wxString& text, unsigned int pos) void wxListBox::DoSetItemClientData(unsigned int n, void *clientData) { QListWidgetItem* item = m_qtListWidget->item(n); - QVariant variant = qVariantFromValue(clientData); + QVariant variant = QVariant::fromValue(clientData); item->setData(Qt::UserRole, variant); } @@ -316,6 +316,6 @@ void wxListBox::UnSelectAll() { Q_FOREACH(QListWidgetItem* l, m_qtListWidget->selectedItems()) { - m_qtListWidget->setItemSelected( l, false ); + l->setSelected(false); } } diff --git a/src/qt/region.cpp b/src/qt/region.cpp index b835c56c47..21e67c46f5 100644 --- a/src/qt/region.cpp +++ b/src/qt/region.cpp @@ -334,8 +334,8 @@ wxRegionIterator::wxRegionIterator() wxRegionIterator::wxRegionIterator(const wxRegion& region) { - m_qtRects = new QVector< QRect >( region.GetHandle().rects() ); - m_pos = 0; + m_qtRects = nullptr; + Reset(region); } wxRegionIterator::wxRegionIterator(const wxRegionIterator& ri) @@ -369,7 +369,12 @@ void wxRegionIterator::Reset(const wxRegion& region) { delete m_qtRects; - m_qtRects = new QVector< QRect >( region.GetHandle().rects() ); + auto qtRegion = region.GetHandle(); + m_qtRects = new QVector< QRect >(); + m_qtRects->reserve(qtRegion.rectCount()); + for (const auto& r : qtRegion) + m_qtRects->push_back(r); + m_pos = 0; } diff --git a/src/qt/treectrl.cpp b/src/qt/treectrl.cpp index af65bc105a..b6fffa2404 100644 --- a/src/qt/treectrl.cpp +++ b/src/qt/treectrl.cpp @@ -671,7 +671,7 @@ wxColour wxTreeCtrl::GetItemTextColour(const wxTreeItemId& item) const wxCHECK_MSG(item.IsOk(), wxNullColour, "invalid tree item"); const QTreeWidgetItem* qTreeItem = wxQtConvertTreeItem(item); - return wxQtConvertColour(qTreeItem->textColor(0)); + return wxQtConvertColour(qTreeItem->foreground(0).color()); } wxColour wxTreeCtrl::GetItemBackgroundColour(const wxTreeItemId& item) const @@ -679,7 +679,7 @@ wxColour wxTreeCtrl::GetItemBackgroundColour(const wxTreeItemId& item) const wxCHECK_MSG(item.IsOk(), wxNullColour, "invalid tree item"); const QTreeWidgetItem* qTreeItem = wxQtConvertTreeItem(item); - return wxQtConvertColour(qTreeItem->backgroundColor(0)); + return wxQtConvertColour(qTreeItem->background(0).color()); } wxFont wxTreeCtrl::GetItemFont(const wxTreeItemId& item) const @@ -760,8 +760,8 @@ void wxTreeCtrl::SetItemDropHighlight(const wxTreeItemId& item, bool highlight) fg = GetForegroundColour(); } - qTreeItem->setBackgroundColor(0, wxQtConvertColour(bg)); - qTreeItem->setTextColor(0, wxQtConvertColour(fg)); + qTreeItem->setBackground(0, wxQtConvertColour(bg)); + qTreeItem->setForeground(0, wxQtConvertColour(fg)); } void wxTreeCtrl::SetItemTextColour( @@ -772,7 +772,7 @@ void wxTreeCtrl::SetItemTextColour( wxCHECK_RET(item.IsOk(), "invalid tree item"); QTreeWidgetItem *qTreeItem = wxQtConvertTreeItem(item); - qTreeItem->setTextColor(0, wxQtConvertColour(col)); + qTreeItem->setForeground(0, wxQtConvertColour(col)); } void wxTreeCtrl::SetItemBackgroundColour( @@ -783,7 +783,7 @@ void wxTreeCtrl::SetItemBackgroundColour( wxCHECK_RET(item.IsOk(), "invalid tree item"); QTreeWidgetItem *qTreeItem = wxQtConvertTreeItem(item); - qTreeItem->setBackgroundColor(0, wxQtConvertColour(col)); + qTreeItem->setBackground(0, wxQtConvertColour(col)); } void wxTreeCtrl::SetItemFont(const wxTreeItemId& item, const wxFont& font) diff --git a/src/qt/utils.cpp b/src/qt/utils.cpp index e723e4114c..d06077a203 100644 --- a/src/qt/utils.cpp +++ b/src/qt/utils.cpp @@ -38,7 +38,7 @@ void wxQtFillMouseButtons( Qt::MouseButtons buttons, wxMouseState *state ) { state->SetLeftDown( buttons.testFlag( Qt::LeftButton ) ); state->SetRightDown( buttons.testFlag( Qt::RightButton ) ); - state->SetMiddleDown( buttons.testFlag( Qt::MidButton ) ); + state->SetMiddleDown( buttons.testFlag( Qt::MiddleButton ) ); state->SetAux1Down( buttons.testFlag( Qt::XButton1 ) ); state->SetAux2Down( buttons.testFlag( Qt::XButton2 ) ); } diff --git a/src/qt/window.cpp b/src/qt/window.cpp index e774253d8f..a42919c38d 100644 --- a/src/qt/window.cpp +++ b/src/qt/window.cpp @@ -32,6 +32,7 @@ #include "wx/tooltip.h" #include "wx/qt/private/utils.h" #include "wx/qt/private/converter.h" +#include "wx/qt/private/compat.h" #include "wx/qt/private/winevent.h" #define VERT_SCROLLBAR_POSITION 0, 1 @@ -224,7 +225,7 @@ static const char WINDOW_POINTER_PROPERTY_NAME[] = "wxWindowPointer"; /* static */ void wxWindowQt::QtStoreWindowPointer( QWidget *widget, const wxWindowQt *window ) { QVariant variant; - qVariantSetValue( variant, window ); + variant.setValue( window ); widget->setProperty( WINDOW_POINTER_PROPERTY_NAME, variant ); } @@ -413,8 +414,8 @@ void wxWindowQt::PostCreation(bool generic) // // Set the default color so Paint Event default handler clears the DC: - wxWindowBase::SetBackgroundColour(wxColour(GetHandle()->palette().background().color())); - wxWindowBase::SetForegroundColour(wxColour(GetHandle()->palette().foreground().color())); + wxWindowBase::SetBackgroundColour(wxColour(GetHandle()->palette().window().color())); + wxWindowBase::SetForegroundColour(wxColour(GetHandle()->palette().windowText().color())); GetHandle()->setFont( wxWindowBase::GetFont().GetHandle() ); @@ -614,7 +615,7 @@ void wxWindowQt::DoGetTextExtent(const wxString& string, int *x, int *y, int *de QFontMetrics fontMetrics( font != nullptr ? font->GetHandle() : GetHandle()->font() ); if ( x != nullptr ) - *x = fontMetrics.width( wxQtConvertString( string )); + *x = wxQtGetWidthFromMetrics(fontMetrics, wxQtConvertString( string )); if ( y != nullptr ) *y = fontMetrics.height(); @@ -1341,7 +1342,12 @@ bool wxWindowQt::QtHandleResizeEvent ( QWidget *WXUNUSED( handler ), QResizeEven bool wxWindowQt::QtHandleWheelEvent ( QWidget *WXUNUSED( handler ), QWheelEvent *event ) { wxMouseEvent e( wxEVT_MOUSEWHEEL ); - e.SetPosition( wxQtConvertPoint( event->pos() ) ); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) + QPoint qPt = event->position().toPoint(); +#else + QPoint qPt = event->pos(); +#endif + e.SetPosition( wxQtConvertPoint( qPt ) ); e.SetEventObject(this); e.m_wheelAxis = ( event->orientation() == Qt::Vertical ) ? wxMOUSE_WHEEL_VERTICAL : wxMOUSE_WHEEL_HORIZONTAL; @@ -1451,7 +1457,7 @@ bool wxWindowQt::QtHandleMouseEvent ( QWidget *handler, QMouseEvent *event ) case Qt::RightButton: wxType = wxEVT_RIGHT_DCLICK; break; - case Qt::MidButton: + case Qt::MiddleButton: wxType = wxEVT_MIDDLE_DCLICK; break; case Qt::XButton1: @@ -1475,7 +1481,7 @@ bool wxWindowQt::QtHandleMouseEvent ( QWidget *handler, QMouseEvent *event ) case Qt::RightButton: wxType = wxEVT_RIGHT_DOWN; break; - case Qt::MidButton: + case Qt::MiddleButton: wxType = wxEVT_MIDDLE_DOWN; break; case Qt::XButton1: @@ -1499,7 +1505,7 @@ bool wxWindowQt::QtHandleMouseEvent ( QWidget *handler, QMouseEvent *event ) case Qt::RightButton: wxType = wxEVT_RIGHT_UP; break; - case Qt::MidButton: + case Qt::MiddleButton: wxType = wxEVT_MIDDLE_UP; break; case Qt::XButton1: