[neon/forks/pyqt5/Neon/release] /: New upstream version 5.15.5+dfsg

Dmitry Shachnev null at kde.org
Mon May 2 22:19:25 BST 2022


Git commit 94a23c15b86b3e8943f883dd9e3ce0a9832eecbf by Dmitry Shachnev.
Committed on 18/10/2021 at 14:40.
Pushed by sitter into branch 'Neon/release'.

New upstream version 5.15.5+dfsg

M  +623  -0    ChangeLog
M  +6    -0    NEWS
M  +1    -3    PKG-INFO
M  +0    -2    README
M  +1    -1    configure.py
M  +1    -1    pyproject.toml
M  +2    -1    pyuic/uic/Compiler/qtproxies.py
M  +1    -1    qpy/QtCore/qpycore_decorators.cpp
M  +4    -2    qpy/QtCore/qpycore_pyqtmethodproxy.cpp
M  +1    -1    qpy/pylupdate/fetchtr.cpp
M  +27   -16   qpy/pylupdate/metatranslator.cpp
M  +2    -2    sip/QtCore/qglobal.sip
M  +2    -0    sip/QtCore/qpycore_qmap.sip
M  +1    -0    sip/QtGui/qpdfwriter.sip
M  +1    -1    sip/QtWidgets/qcompleter.sip

https://invent.kde.org/neon/forks/pyqt5/commit/94a23c15b86b3e8943f883dd9e3ce0a9832eecbf

diff --git a/ChangeLog b/ChangeLog
index ed03b14e..40df35eb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,61 @@
+2021-10-07  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, pyuic/uic/Compiler/qtproxies.py:
+	Fixed pyuic's handling of QFontDatabase.
+	[ab35506238c2] [5.15.5] <5.15-maint>
+
+2021-09-25  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, qpy/QtCore/qpycore_pyqtmethodproxy.cpp:
+	Fixed the invocation of meta-type methods so that the result is
+	available.
+	[24ff630d737f] <5.15-maint>
+
+2021-08-10  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* lib/README:
+	Fixed the README.
+	[a44fc2eef805] <5.15-maint>
+
+2021-07-09  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, PyQt5.msp:
+	Fixed the ordering of the QCompleter ctors so that a
+	QAbstractItemModel argument doesn't get interpreted as a parent
+	QObject argument.
+	[288f50b3e9c8] <5.15-maint>
+
+2021-05-21  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, qpy/QtCore/qpycore_qmap.sip:
+	Fixed the QMultiMap mapped type.
+	[0c05544ec6ad] <5.15-maint>
+
+2021-05-20  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* qpy/QtCore/qpycore_decorators.cpp:
+	Improved an error message.
+	[76943e2449c4] <5.15-maint>
+
+2021-04-15  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, PyQt5.msp:
+	Added the missing QPdfWriter.setPageSize() overload.
+	[f8aaea7a6ade] <5.15-maint>
+
+2021-04-14  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, qpy/pylupdate/fetchtr.cpp, qpy/pylupdate/metatranslator.cpp:
+	pylupdate5 now assumes the UTF-8 codec and specifies v2.1 as the .ts
+	file format.
+	[9314488ea608] <5.15-maint>
+
 2021-03-05  Phil Thompson  <phil at riverbankcomputing.com>
 
+	* .hgtags:
+	Added tag 5.15.4 for changeset b30547186181
+	[e53432659118] <5.15-maint>
+
 	* NEWS:
 	Released as v5.15.4.
 	[b30547186181] [5.15.4] <5.15-maint>
@@ -11337,3 +11393,570 @@
 	examples/dialogs/classwizard/classwizard_rc2.py,
 	examples/dialogs/classwizard/classwizard_rc3.py,
 	examples/dialogs/classwizard/images/background.png,
+	examples/dialogs/classwizard/images/banner.png,
+	examples/dialogs/classwizard/images/logo1.png,
+	examples/dialogs/classwizard/images/logo2.png,
+	examples/dialogs/classwizard/images/logo3.png,
+	examples/dialogs/classwizard/images/watermark1.png,
+	examples/dialogs/classwizard/images/watermark2.png,
+	examples/dialogs/configdialog/configdialog.py,
+	examples/dialogs/configdialog/configdialog.qrc,
+	examples/dialogs/configdialog/configdialog_rc2.py,
+	examples/dialogs/configdialog/configdialog_rc3.py,
+	examples/dialogs/configdialog/images/config.png,
+	examples/dialogs/configdialog/images/query.png,
+	examples/dialogs/configdialog/images/update.png,
+	examples/dialogs/extension.py, examples/dialogs/findfiles.py,
+	examples/dialogs/standarddialogs.py, examples/dialogs/tabdialog.py,
+	examples/dialogs/trivialwizard.py, examples/draganddrop/README,
+	examples/draganddrop/delayedencoding/delayedencoding.py,
+	examples/draganddrop/delayedencoding/delayedencoding.qrc,
+	examples/draganddrop/delayedencoding/delayedencoding_rc2.py,
+	examples/draganddrop/delayedencoding/delayedencoding_rc3.py,
+	examples/draganddrop/delayedencoding/images/drag.png,
+	examples/draganddrop/delayedencoding/images/example.svg,
+	examples/draganddrop/draggableicons/draggableicons.py,
+	examples/draganddrop/draggableicons/draggableicons.qrc,
+	examples/draganddrop/draggableicons/draggableicons_rc2.py,
+	examples/draganddrop/draggableicons/draggableicons_rc3.py,
+	examples/draganddrop/draggableicons/images/boat.png,
+	examples/draganddrop/draggableicons/images/car.png,
+	examples/draganddrop/draggableicons/images/house.png,
+	examples/draganddrop/draggabletext/draggabletext.py,
+	examples/draganddrop/draggabletext/draggabletext.qrc,
+	examples/draganddrop/draggabletext/draggabletext_rc2.py,
+	examples/draganddrop/draggabletext/draggabletext_rc3.py,
+	examples/draganddrop/draggabletext/words.txt,
+	examples/draganddrop/dropsite.py,
+	examples/draganddrop/fridgemagnets/fridgemagnets.py,
+	examples/draganddrop/fridgemagnets/fridgemagnets.qrc,
+	examples/draganddrop/fridgemagnets/fridgemagnets_rc2.py,
+	examples/draganddrop/fridgemagnets/fridgemagnets_rc3.py,
+	examples/draganddrop/fridgemagnets/words.txt,
+	examples/draganddrop/puzzle/example.jpg,
+	examples/draganddrop/puzzle/puzzle.py,
+	examples/draganddrop/puzzle/puzzle.qrc,
+	examples/draganddrop/puzzle/puzzle_rc2.py,
+	examples/draganddrop/puzzle/puzzle_rc3.py, examples/effects/README,
+	examples/effects/lighting.py, examples/graphicsview/README,
+	examples/graphicsview/anchorlayout.py,
+	examples/graphicsview/collidingmice/collidingmice.py,
+	examples/graphicsview/collidingmice/images/cheese.jpg,
+	examples/graphicsview/collidingmice/mice.qrc,
+	examples/graphicsview/collidingmice/mice_rc2.py,
+	examples/graphicsview/collidingmice/mice_rc3.py,
+	examples/graphicsview/diagramscene/diagramscene.py,
+	examples/graphicsview/diagramscene/diagramscene.qrc,
+	examples/graphicsview/diagramscene/diagramscene_rc2.py,
+	examples/graphicsview/diagramscene/diagramscene_rc3.py,
+	examples/graphicsview/diagramscene/images/background1.png,
+	examples/graphicsview/diagramscene/images/background2.png,
+	examples/graphicsview/diagramscene/images/background3.png,
+	examples/graphicsview/diagramscene/images/background4.png,
+	examples/graphicsview/diagramscene/images/bold.png,
+	examples/graphicsview/diagramscene/images/bringtofront.png,
+	examples/graphicsview/diagramscene/images/delete.png,
+	examples/graphicsview/diagramscene/images/floodfill.png,
+	examples/graphicsview/diagramscene/images/italic.png,
+	examples/graphicsview/diagramscene/images/linecolor.png,
+	examples/graphicsview/diagramscene/images/linepointer.png,
+	examples/graphicsview/diagramscene/images/pointer.png,
+	examples/graphicsview/diagramscene/images/sendtoback.png,
+	examples/graphicsview/diagramscene/images/textpointer.png,
+	examples/graphicsview/diagramscene/images/underline.png,
+	examples/graphicsview/dragdroprobot/dragdroprobot.py,
+	examples/graphicsview/dragdroprobot/dragdroprobot.qrc,
+	examples/graphicsview/dragdroprobot/dragdroprobot_rc2.py,
+	examples/graphicsview/dragdroprobot/dragdroprobot_rc3.py,
+	examples/graphicsview/dragdroprobot/images/head.png,
+	examples/graphicsview/elasticnodes.py,
+	examples/graphicsview/padnavigator/backside.ui,
+	examples/graphicsview/padnavigator/images/artsfftscope.png,
+	examples/graphicsview/padnavigator/images/blue_angle_swirl.jpg,
+	examples/graphicsview/padnavigator/images/kontact_contacts.png,
+	examples/graphicsview/padnavigator/images/kontact_journal.png,
+	examples/graphicsview/padnavigator/images/kontact_mail.png,
+	examples/graphicsview/padnavigator/images/kontact_notes.png,
+	examples/graphicsview/padnavigator/images/kopeteavailable.png,
+	examples/graphicsview/padnavigator/images/metacontact_online.png,
+	examples/graphicsview/padnavigator/images/minitools.png,
+	examples/graphicsview/padnavigator/padnavigator.py,
+	examples/graphicsview/padnavigator/padnavigator.qrc,
+	examples/graphicsview/padnavigator/padnavigator_rc2.py,
+	examples/graphicsview/padnavigator/padnavigator_rc3.py,
+	examples/graphicsview/padnavigator/ui_backside.py,
+	examples/ipc/README, examples/ipc/localfortuneclient.py,
+	examples/ipc/localfortuneserver.py,
+	examples/ipc/sharedmemory/dialog.py,
+	examples/ipc/sharedmemory/dialog.ui,
+	examples/ipc/sharedmemory/image.png,
+	examples/ipc/sharedmemory/qt.png,
+	examples/ipc/sharedmemory/sharedmemory.py,
+	examples/itemviews/README,
+	examples/itemviews/basicsortfiltermodel.py,
+	examples/itemviews/chart/chart.py,
+	examples/itemviews/chart/chart.qrc,
+	examples/itemviews/chart/chart_rc2.py,
+	examples/itemviews/chart/chart_rc3.py,
+	examples/itemviews/chart/mydata.cht,
+	examples/itemviews/chart/qtdata.cht,
+	examples/itemviews/coloreditorfactory.py,
+	examples/itemviews/combowidgetmapper.py,
+	examples/itemviews/customsortfiltermodel.py,
+	examples/itemviews/dirview.py,
+	examples/itemviews/editabletreemodel/default.txt,
+	examples/itemviews/editabletreemodel/editabletreemodel.py,
+	examples/itemviews/editabletreemodel/editabletreemodel.qrc,
+	examples/itemviews/editabletreemodel/editabletreemodel_rc2.py,
+	examples/itemviews/editabletreemodel/editabletreemodel_rc3.py,
+	examples/itemviews/editabletreemodel/mainwindow.ui,
+	examples/itemviews/editabletreemodel/ui_mainwindow.py,
+	examples/itemviews/fetchmore.py,
+	examples/itemviews/pixelator/images/qt.png,
+	examples/itemviews/pixelator/pixelator.py,
+	examples/itemviews/pixelator/pixelator.qrc,
+	examples/itemviews/pixelator/pixelator_rc2.py,
+	examples/itemviews/pixelator/pixelator_rc3.py,
+	examples/itemviews/puzzle/example.jpg,
+	examples/itemviews/puzzle/puzzle.py,
+	examples/itemviews/puzzle/puzzle.qrc,
+	examples/itemviews/puzzle/puzzle_rc2.py,
+	examples/itemviews/puzzle/puzzle_rc3.py,
+	examples/itemviews/simpledommodel.py,
+	examples/itemviews/simpletreemodel/default.txt,
+	examples/itemviews/simpletreemodel/simpletreemodel.py,
+	examples/itemviews/simpletreemodel/simpletreemodel.qrc,
+	examples/itemviews/simpletreemodel/simpletreemodel_rc2.py,
+	examples/itemviews/simpletreemodel/simpletreemodel_rc3.py,
+	examples/itemviews/simplewidgetmapper.py,
+	examples/itemviews/spinboxdelegate.py,
+	examples/itemviews/stardelegate.py, examples/layouts/README,
+	examples/layouts/basiclayouts.py, examples/layouts/borderlayout.py,
+	examples/layouts/flowlayout.py, examples/mainwindows/README,
+	examples/mainwindows/application/application.py,
+	examples/mainwindows/application/application.qrc,
+	examples/mainwindows/application/application_rc2.py,
+	examples/mainwindows/application/application_rc3.py,
+	examples/mainwindows/application/images/copy.png,
+	examples/mainwindows/application/images/cut.png,
+	examples/mainwindows/application/images/new.png,
+	examples/mainwindows/application/images/open.png,
+	examples/mainwindows/application/images/paste.png,
+	examples/mainwindows/application/images/save.png,
+	examples/mainwindows/dockwidgets/dockwidgets.py,
+	examples/mainwindows/dockwidgets/dockwidgets.qrc,
+	examples/mainwindows/dockwidgets/dockwidgets_rc2.py,
+	examples/mainwindows/dockwidgets/dockwidgets_rc3.py,
+	examples/mainwindows/dockwidgets/images/new.png,
+	examples/mainwindows/dockwidgets/images/print.png,
+	examples/mainwindows/dockwidgets/images/save.png,
+	examples/mainwindows/dockwidgets/images/undo.png,
+	examples/mainwindows/mdi/images/copy.png,
+	examples/mainwindows/mdi/images/cut.png,
+	examples/mainwindows/mdi/images/new.png,
+	examples/mainwindows/mdi/images/open.png,
+	examples/mainwindows/mdi/images/paste.png,
+	examples/mainwindows/mdi/images/save.png,
+	examples/mainwindows/mdi/mdi.py, examples/mainwindows/mdi/mdi.qrc,
+	examples/mainwindows/mdi/mdi_rc2.py,
+	examples/mainwindows/mdi/mdi_rc3.py, examples/mainwindows/menus.py,
+	examples/mainwindows/recentfiles.py,
+	examples/mainwindows/sdi/images/copy.png,
+	examples/mainwindows/sdi/images/cut.png,
+	examples/mainwindows/sdi/images/new.png,
+	examples/mainwindows/sdi/images/open.png,
+	examples/mainwindows/sdi/images/paste.png,
+	examples/mainwindows/sdi/images/save.png,
+	examples/mainwindows/sdi/sdi.py, examples/mainwindows/sdi/sdi.qrc,
+	examples/mainwindows/sdi/sdi_rc2.py,
+	examples/mainwindows/sdi/sdi_rc3.py,
+	examples/mainwindows/separations.py, examples/network/README,
+	examples/network/blockingfortuneclient.py,
+	examples/network/broadcastreceiver.py,
+	examples/network/broadcastsender.py,
+	examples/network/fortuneclient.py,
+	examples/network/fortuneserver.py, examples/network/ftp/ftp.py,
+	examples/network/ftp/ftp.qrc, examples/network/ftp/ftp_rc2.py,
+	examples/network/ftp/ftp_rc3.py,
+	examples/network/ftp/images/cdtoparent.png,
+	examples/network/ftp/images/dir.png,
+	examples/network/ftp/images/file.png,
+	examples/network/http/authenticationdialog.ui,
+	examples/network/http/http.py, examples/network/loopback.py,
+	examples/network/threadedfortuneserver.py,
+	examples/opengl/2dpainting.py, examples/opengl/README,
+	examples/opengl/grabber.py, examples/opengl/hellogl.py,
+	examples/opengl/overpainting.py, examples/opengl/samplebuffers.py,
+	examples/opengl/textures/images/side1.png,
+	examples/opengl/textures/images/side2.png,
+	examples/opengl/textures/images/side3.png,
+	examples/opengl/textures/images/side4.png,
+	examples/opengl/textures/images/side5.png,
+	examples/opengl/textures/images/side6.png,
+	examples/opengl/textures/textures.py,
+	examples/opengl/textures/textures.qrc,
+	examples/opengl/textures/textures_rc2.py,
+	examples/opengl/textures/textures_rc3.py, examples/painting/README,
+	examples/painting/basicdrawing/basicdrawing.py,
+	examples/painting/basicdrawing/basicdrawing.qrc,
+	examples/painting/basicdrawing/basicdrawing_rc2.py,
+	examples/painting/basicdrawing/basicdrawing_rc3.py,
+	examples/painting/basicdrawing/images/brick.png,
+	examples/painting/basicdrawing/images/qt-logo.png,
+	examples/painting/concentriccircles.py,
+	examples/painting/painterpaths.py,
+	examples/painting/svgviewer/files/bubbles.svg,
+	examples/painting/svgviewer/files/cubic.svg,
+	examples/painting/svgviewer/files/spheres.svg,
+	examples/painting/svgviewer/svgviewer.py,
+	examples/painting/svgviewer/svgviewer.qrc,
+	examples/painting/svgviewer/svgviewer_rc2.py,
+	examples/painting/svgviewer/svgviewer_rc3.py,
+	examples/painting/transformations.py, examples/phonon/README,
+	examples/phonon/capabilities.py, examples/phonon/musicplayer.py,
+	examples/pyuic/compile-on-the-fly.py, examples/pyuic/demo.ui,
+	examples/pyuic/load_ui1.py, examples/pyuic/load_ui2.py,
+	examples/richtext/README, examples/richtext/calendar.py,
+	examples/richtext/orderform.py,
+	examples/richtext/syntaxhighlighter.py,
+	examples/richtext/textobject/files/heart.svg,
+	examples/richtext/textobject/textobject.py, examples/script/README,
+	examples/script/helloscript.py, examples/sql/README,
+	examples/sql/cachedtable.py, examples/sql/connection.py,
+	examples/sql/querymodel.py, examples/sql/relationaltablemodel.py,
+	examples/sql/tablemodel.py, examples/threads/README,
+	examples/threads/mandelbrot.py, examples/threads/semaphores.py,
+	examples/threads/waitconditions.py, examples/tools/README,
+	examples/tools/codecs/codecs.py,
+	examples/tools/codecs/encodedfiles/iso-8859-1.txt,
+	examples/tools/codecs/encodedfiles/iso-8859-15.txt,
+	examples/tools/codecs/encodedfiles/utf-16.txt,
+	examples/tools/codecs/encodedfiles/utf-16be.txt,
+	examples/tools/codecs/encodedfiles/utf-16le.txt,
+	examples/tools/codecs/encodedfiles/utf-8.txt,
+	examples/tools/customcompleter/customcompleter.py,
+	examples/tools/customcompleter/customcompleter.qrc,
+	examples/tools/customcompleter/customcompleter_rc2.py,
+	examples/tools/customcompleter/customcompleter_rc3.py,
+	examples/tools/customcompleter/resources/wordlist.txt,
+	examples/tools/i18n/i18n.py, examples/tools/i18n/i18n.qrc,
+	examples/tools/i18n/i18n_rc2.py, examples/tools/i18n/i18n_rc3.py,
+	examples/tools/i18n/translations/i18n_ar.qm,
+	examples/tools/i18n/translations/i18n_ar.ts,
+	examples/tools/i18n/translations/i18n_cs.qm,
+	examples/tools/i18n/translations/i18n_cs.ts,
+	examples/tools/i18n/translations/i18n_de.qm,
+	examples/tools/i18n/translations/i18n_de.ts,
+	examples/tools/i18n/translations/i18n_el.qm,
+	examples/tools/i18n/translations/i18n_el.ts,
+	examples/tools/i18n/translations/i18n_en.qm,
+	examples/tools/i18n/translations/i18n_en.ts,
+	examples/tools/i18n/translations/i18n_eo.qm,
+	examples/tools/i18n/translations/i18n_eo.ts,
+	examples/tools/i18n/translations/i18n_fr.qm,
+	examples/tools/i18n/translations/i18n_fr.ts,
+	examples/tools/i18n/translations/i18n_it.qm,
+	examples/tools/i18n/translations/i18n_it.ts,
+	examples/tools/i18n/translations/i18n_jp.qm,
+	examples/tools/i18n/translations/i18n_jp.ts,
+	examples/tools/i18n/translations/i18n_ko.qm,
+	examples/tools/i18n/translations/i18n_ko.ts,
+	examples/tools/i18n/translations/i18n_no.qm,
+	examples/tools/i18n/translations/i18n_no.ts,
+	examples/tools/i18n/translations/i18n_pt.qm,
+	examples/tools/i18n/translations/i18n_pt.ts,
+	examples/tools/i18n/translations/i18n_ru.qm,
+	examples/tools/i18n/translations/i18n_ru.ts,
+	examples/tools/i18n/translations/i18n_sv.qm,
+	examples/tools/i18n/translations/i18n_sv.ts,
+	examples/tools/i18n/translations/i18n_zh.qm,
+	examples/tools/i18n/translations/i18n_zh.ts,
+	examples/tools/regexp.py,
+	examples/tools/settingseditor/inifiles/licensepage.ini,
+	examples/tools/settingseditor/inifiles/qsa.ini,
+	examples/tools/settingseditor/settingseditor.py,
+	examples/tutorials/addressbook/README,
+	examples/tutorials/addressbook/part1.py,
+	examples/tutorials/addressbook/part2.py,
+	examples/tutorials/addressbook/part3.py,
+	examples/tutorials/addressbook/part4.py,
+	examples/tutorials/addressbook/part5.py,
+	examples/tutorials/addressbook/part6.py,
+	examples/tutorials/addressbook/part7.py,
+	examples/webkit/domtraversal/domtraversal.py,
+	examples/webkit/domtraversal/ui_window.py,
+	examples/webkit/domtraversal/window.ui,
+	examples/webkit/fancybrowser/fancybrowser.py,
+	examples/webkit/fancybrowser/jquery.min.js,
+	examples/webkit/fancybrowser/jquery.qrc,
+	examples/webkit/fancybrowser/jquery_rc2.py,
+	examples/webkit/fancybrowser/jquery_rc3.py,
+	examples/webkit/formextractor/form.html,
+	examples/webkit/formextractor/formextractor.py,
+	examples/webkit/formextractor/formextractor.qrc,
+	examples/webkit/formextractor/formextractor.ui,
+	examples/webkit/formextractor/formextractor_rc2.py,
+	examples/webkit/formextractor/formextractor_rc3.py,
+	examples/webkit/formextractor/ui_formextractor.py,
+	examples/webkit/framecapture.py, examples/webkit/googlechat/form.ui,
+	examples/webkit/googlechat/googlechat.py,
+	examples/webkit/googlechat/ui_form.py,
+	examples/webkit/previewer/previewer.py,
+	examples/webkit/previewer/previewer.ui,
+	examples/webkit/previewer/ui_previewer.py,
+	examples/webkit/simpleselector/simpleselector.py,
+	examples/webkit/simpleselector/ui_window.py,
+	examples/webkit/simpleselector/window.ui, examples/widgets/README,
+	examples/widgets/analogclock.py, examples/widgets/calculator.py,
+	examples/widgets/calendarwidget.py,
+	examples/widgets/charactermap.py, examples/widgets/digitalclock.py,
+	examples/widgets/groupbox.py, examples/widgets/icons/icons.py,
+	examples/widgets/icons/images/designer.png,
+	examples/widgets/icons/images/find_disabled.png,
+	examples/widgets/icons/images/find_normal.png,
+	examples/widgets/icons/images/monkey_off_128x128.png,
+	examples/widgets/icons/images/monkey_off_16x16.png,
+	examples/widgets/icons/images/monkey_off_32x32.png,
+	examples/widgets/icons/images/monkey_off_64x64.png,
+	examples/widgets/icons/images/monkey_on_128x128.png,
+	examples/widgets/icons/images/monkey_on_16x16.png,
+	examples/widgets/icons/images/monkey_on_32x32.png,
+	examples/widgets/icons/images/monkey_on_64x64.png,
+	examples/widgets/icons/images/qt_extended_16x16.png,
+	examples/widgets/icons/images/qt_extended_32x32.png,
+	examples/widgets/icons/images/qt_extended_48x48.png,
+	examples/widgets/imageviewer.py, examples/widgets/lineedits.py,
+	examples/widgets/movie/animation.mng,
+	examples/widgets/movie/movie.py, examples/widgets/scribble.py,
+	examples/widgets/shapedclock.py, examples/widgets/sliders.py,
+	examples/widgets/spinboxes.py, examples/widgets/styles.py,
+	examples/widgets/stylesheet/images/checkbox_checked.png,
+	examples/widgets/stylesheet/images/checkbox_checked_hover.png,
+	examples/widgets/stylesheet/images/checkbox_checked_pressed.png,
+	examples/widgets/stylesheet/images/checkbox_unchecked.png,
+	examples/widgets/stylesheet/images/checkbox_unchecked_hover.png,
+	examples/widgets/stylesheet/images/checkbox_unchecked_pressed.png,
+	examples/widgets/stylesheet/images/down_arrow.png,
+	examples/widgets/stylesheet/images/down_arrow_disabled.png,
+	examples/widgets/stylesheet/images/frame.png,
+	examples/widgets/stylesheet/images/pagefold.png,
+	examples/widgets/stylesheet/images/pushbutton.png,
+	examples/widgets/stylesheet/images/pushbutton_hover.png,
+	examples/widgets/stylesheet/images/pushbutton_pressed.png,
+	examples/widgets/stylesheet/images/radiobutton_checked.png,
+	examples/widgets/stylesheet/images/radiobutton_checked_hover.png,
+	examples/widgets/stylesheet/images/radiobutton_checked_pressed.png,
+	examples/widgets/stylesheet/images/radiobutton_unchecked.png,
+	examples/widgets/stylesheet/images/radiobutton_unchecked_hover.png,
+	e
+	xamples/widgets/stylesheet/images/radiobutton_unchecked_pressed.png,
+	examples/widgets/stylesheet/images/sizegrip.png,
+	examples/widgets/stylesheet/images/spindown.png,
+	examples/widgets/stylesheet/images/spindown_hover.png,
+	examples/widgets/stylesheet/images/spindown_off.png,
+	examples/widgets/stylesheet/images/spindown_pressed.png,
+	examples/widgets/stylesheet/images/spinup.png,
+	examples/widgets/stylesheet/images/spinup_hover.png,
+	examples/widgets/stylesheet/images/spinup_off.png,
+	examples/widgets/stylesheet/images/spinup_pressed.png,
+	examples/widgets/stylesheet/images/up_arrow.png,
+	examples/widgets/stylesheet/images/up_arrow_disabled.png,
+	examples/widgets/stylesheet/mainwindow.ui,
+	examples/widgets/stylesheet/qss/coffee.qss,
+	examples/widgets/stylesheet/qss/default.qss,
+	examples/widgets/stylesheet/qss/pagefold.qss,
+	examples/widgets/stylesheet/stylesheet.py,
+	examples/widgets/stylesheet/stylesheet.qrc,
+	examples/widgets/stylesheet/stylesheet_rc2.py,
+	examples/widgets/stylesheet/stylesheet_rc3.py,
+	examples/widgets/stylesheet/stylesheeteditor.py,
+	examples/widgets/stylesheet/stylesheeteditor.ui,
+	examples/widgets/stylesheet/ui_mainwindow.py,
+	examples/widgets/stylesheet/ui_stylesheeteditor.py,
+	examples/widgets/tetrix.py,
+	examples/widgets/tooltips/images/circle.png,
+	examples/widgets/tooltips/images/square.png,
+	examples/widgets/tooltips/images/triangle.png,
+	examples/widgets/tooltips/tooltips.py,
+	examples/widgets/tooltips/tooltips.qrc,
+	examples/widgets/tooltips/tooltips_rc2.py,
+	examples/widgets/tooltips/tooltips_rc3.py,
+	examples/widgets/wiggly.py, examples/widgets/windowflags.py,
+	examples/xml/README, examples/xml/dombookmarks/dombookmarks.py,
+	examples/xml/dombookmarks/frank.xbel,
+	examples/xml/dombookmarks/jennifer.xbel,
+	examples/xml/saxbookmarks/frank.xbel,
+	examples/xml/saxbookmarks/jennifer.xbel,
+	examples/xml/saxbookmarks/saxbookmarks.py,
+	examples/xmlpatterns/README,
+	examples/xmlpatterns/schema/files/contact.xsd,
+	examples/xmlpatterns/schema/files/invalid_contact.xml,
+	examples/xmlpatterns/schema/files/invalid_order.xml,
+	examples/xmlpatterns/schema/files/invalid_recipe.xml,
+	examples/xmlpatterns/schema/files/order.xsd,
+	examples/xmlpatterns/schema/files/recipe.xsd,
+	examples/xmlpatterns/schema/files/valid_contact.xml,
+	examples/xmlpatterns/schema/files/valid_order.xml,
+	examples/xmlpatterns/schema/files/valid_recipe.xml,
+	examples/xmlpatterns/schema/schema.py,
+	examples/xmlpatterns/schema/schema.qrc,
+	examples/xmlpatterns/schema/schema.ui,
+	examples/xmlpatterns/schema/schema_rc2.py,
+	examples/xmlpatterns/schema/schema_rc3.py,
+	examples/xmlpatterns/schema/ui_schema.py, installers/AddToPath.nsh,
+	installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi,
+	installers/StrSlash.nsh, installers/mysql-config.bat, installers
+	/psql-config.bat, installers/pyqt-check.py, installers/pyqt-
+	config.bat, installers/qsci-config.bat, installers/qt5-config.bat,
+	installers/sip-config.bat, lib/LICENSE.commercial,
+	lib/LICENSE.commercial.short, lib/LICENSE.gpl,
+	lib/LICENSE.gpl.short, lib/LICENSE.internal,
+	lib/QMetaObjectFormats.txt, lib/README,
+	lib/SubclassCode/QtGuiQt4.versions,
+	lib/SubclassCode/QtNetwork.versions, lib/SubclassCode/mksccode.py,
+	lib/UpdatingArgumentNames.txt, lib/__init__.py, lib/configure.py,
+	lib/license.py.commercial, lib/license.py.internal, lib/pyqt-
+	gpl.sip, lib/pyqt-internal.sip, pylupdate/fetchtr.cpp,
+	pylupdate/main.cpp, pylupdate/merge.cpp,
+	pylupdate/metatranslator.cpp, pylupdate/metatranslator.h,
+	pylupdate/numberh.cpp, pylupdate/proparser.cpp,
+	pylupdate/proparser.h, pylupdate/sametexth.cpp,
+	pylupdate/simtexth.cpp, pylupdate/simtexth.h,
+	pylupdate/translator.cpp, pylupdate/translator.h, pyrcc/main.cpp,
+	pyrcc/rcc.cpp, pyrcc/rcc.h, pyuic/uic/Compiler/__init__.py,
+	pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/indenter.py,
+	pyuic/uic/Compiler/misc.py, pyuic/uic/Compiler/proxy_metaclass.py,
+	pyuic/uic/Compiler/qobjectcreator.py,
+	pyuic/uic/Compiler/qtproxies.py, pyuic/uic/Loader/__init__.py,
+	pyuic/uic/Loader/loader.py, pyuic/uic/Loader/qobjectcreator.py,
+	pyuic/uic/__init__.py, pyuic/uic/driver.py, pyuic/uic/exceptions.py,
+	pyuic/uic/icon_cache.py, pyuic/uic/objcreator.py,
+	pyuic/uic/port_v2/__init__.py, pyuic/uic/port_v2/as_string.py,
+	pyuic/uic/port_v2/ascii_upper.py, pyuic/uic/port_v2/invoke.py,
+	pyuic/uic/port_v2/load_plugin.py, pyuic/uic/port_v2/proxy_base.py,
+	pyuic/uic/port_v2/string_io.py, pyuic/uic/port_v3/__init__.py,
+	pyuic/uic/port_v3/as_string.py, pyuic/uic/port_v3/ascii_upper.py,
+	pyuic/uic/port_v3/invoke.py, pyuic/uic/port_v3/load_plugin.py,
+	pyuic/uic/port_v3/proxy_base.py, pyuic/uic/port_v3/string_io.py,
+	pyuic/uic/properties.py, pyuic/uic/pyuic.py, pyuic/uic/uiparser.py,
+	pyuic/uic/widget-plugins/phonon.py, pyuic/uic/widget-
+	plugins/qaxcontainer.py, pyuic/uic/widget-plugins/qscintilla.py,
+	pyuic/uic/widget-plugins/qtdeclarative.py, pyuic/uic/widget-
+	plugins/qtwebkit.py, qpy/QtCore/qpycore.pro,
+	qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp,
+	qpy/QtCore/qpycore_chimera.h,
+	qpy/QtCore/qpycore_chimera_signature.cpp,
+	qpy/QtCore/qpycore_chimera_storage.cpp,
+	qpy/QtCore/qpycore_classinfo.cpp, qpy/QtCore/qpycore_classinfo.h,
+	qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp,
+	qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_namespace.h,
+	qpy/QtCore/qpycore_post_init.cpp.in,
+	qpy/QtCore/qpycore_pyqtboundsignal.cpp,
+	qpy/QtCore/qpycore_pyqtboundsignal.h,
+	qpy/QtCore/qpycore_pyqtconfigure.cpp,
+	qpy/QtCore/qpycore_pyqtmethodproxy.cpp,
+	qpy/QtCore/qpycore_pyqtmethodproxy.h,
+	qpy/QtCore/qpycore_pyqtproperty.cpp,
+	qpy/QtCore/qpycore_pyqtproperty.h, qpy/QtCore/qpycore_pyqtproxy.cpp,
+	qpy/QtCore/qpycore_pyqtproxy.h, qpy/QtCore/qpycore_pyqtpyobject.cpp,
+	qpy/QtCore/qpycore_pyqtpyobject.h,
+	qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h,
+	qpy/QtCore/qpycore_pyqtslot.cpp,
+	qpy/QtCore/qpycore_qabstracteventdispatcher.cpp,
+	qpy/QtCore/qpycore_qmetaobject.cpp,
+	qpy/QtCore/qpycore_qmetaobject_helpers.cpp,
+	qpy/QtCore/qpycore_qmetaobjectbuilder.h,
+	qpy/QtCore/qpycore_qobject_getattr.cpp,
+	qpy/QtCore/qpycore_qobject_helpers.cpp,
+	qpy/QtCore/qpycore_qobject_helpers.h,
+	qpy/QtCore/qpycore_qpynullvariant.cpp,
+	qpy/QtCore/qpycore_qpynullvariant.h, qpy/QtCore/qpycore_qstring.cpp,
+	qpy/QtCore/qpycore_qstringlist.cpp, qpy/QtCore/qpycore_qvariant.cpp,
+	qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_shared.h,
+	qpy/QtCore/qpycore_sip.h, qpy/QtCore/qpycore_sip_helpers.cpp,
+	qpy/QtCore/qpycore_sip_helpers.h, qpy/QtCore/qpycore_types.cpp,
+	qpy/QtCore/qpycore_types.h, qpy/QtCore/qpynullvariant.sip,
+	qpy/QtCore/qwineventnotifier.sip, qpy/QtDBus/qpydbus.pro,
+	qpy/QtDBus/qpydbus_api.h, qpy/QtDBus/qpydbus_chimera_helpers.cpp,
+	qpy/QtDBus/qpydbus_chimera_helpers.h,
+	qpy/QtDBus/qpydbus_post_init.cpp,
+	qpy/QtDBus/qpydbuspendingreply.cpp,
+	qpy/QtDBus/qpydbuspendingreply.h,
+	qpy/QtDBus/qpydbuspendingreply.sip, qpy/QtDBus/qpydbusreply.cpp,
+	qpy/QtDBus/qpydbusreply.h, qpy/QtDBus/qpydbusreply.sip,
+	qpy/QtDeclarative/qpydeclarative.pro,
+	qpy/QtDeclarative/qpydeclarative_api.h,
+	qpy/QtDeclarative/qpydeclarative_chimera_helpers.cpp,
+	qpy/QtDeclarative/qpydeclarative_chimera_helpers.h,
+	qpy/QtDeclarative/qpydeclarative_listwrapper.cpp,
+	qpy/QtDeclarative/qpydeclarative_listwrapper.h,
+	qpy/QtDeclarative/qpydeclarative_post_init.cpp,
+	qpy/QtDeclarative/qpydeclarativelistproperty.cpp,
+	qpy/QtDeclarative/qpydeclarativelistproperty.h,
+	qpy/QtDeclarative/qpydeclarativelistproperty.sip,
+	qpy/QtDeclarative/qpydeclarativepropertyvaluesource.h,
+	qpy/QtDeclarative/qpydeclarativepropertyvaluesource.sip,
+	qpy/QtDesigner/qpydesigner.pro,
+	qpy/QtDesigner/qpydesignercontainerextension.h,
+	qpy/QtDesigner/qpydesignercontainerextension.sip,
+	qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.h,
+	qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.sip,
+	qpy/QtDesigner/qpydesignercustomwidgetplugin.h,
+	qpy/QtDesigner/qpydesignercustomwidgetplugin.sip,
+	qpy/QtDesigner/qpydesignermembersheetextension.h,
+	qpy/QtDesigner/qpydesignermembersheetextension.sip,
+	qpy/QtDesigner/qpydesignerpropertysheetextension.h,
+	qpy/QtDesigner/qpydesignerpropertysheetextension.sip,
+	qpy/QtDesigner/qpydesignertaskmenuextension.h,
+	qpy/QtDesigner/qpydesignertaskmenuextension.sip,
+	qpy/QtGui/qpygui.pro, qpy/QtGui/qpytextobject.h,
+	qpy/QtGui/qpytextobject.sip, qpy/QtOpenGL/opengl_types.sip,
+	qpy/QtOpenGL/qpyopengl.pro, qpy/QtOpenGL/qpyopengl_api.h,
+	qpy/QtOpenGL/qpyopengl_attribute_array.cpp,
+	qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp,
+	sphinx/buffer_interface.rst, sphinx/build_system.rst,
+	sphinx/conf.py, sphinx/dbus.rst, sphinx/deploy_commercial.rst,
+	sphinx/designer.rst, sphinx/gotchas.rst, sphinx/i18n.rst,
+	sphinx/incompatibilities.rst, sphinx/incompatible_apis.rst,
+	sphinx/index.rst, sphinx/installation.rst, sphinx/introduction.rst,
+	sphinx/keyword_arguments.rst, sphinx/new_style_signals_slots.rst,
+	sphinx/old_style_signals_slots.rst, sphinx/pickle.rst,
+	sphinx/pyqt_qsettings.rst, sphinx/pyqt_qvariant.rst,
+	sphinx/python_shell.rst, sphinx/python_v3.rst, sphinx/qml.rst,
+	sphinx/qt_properties.rst, sphinx/qt_v5.rst, sphinx/resources.rst,
+	sphinx/static/default.css, sphinx/static/logo.png,
+	sphinx/static/logo_tn.ico, sphinx/webkit.rst,
+	test/dbus/test_multibus.py, test/runtests.py,
+	test/tests/__init__.py, test/tests/classes/__init__.py,
+	test/tests/classes/test_QObject.py,
+	test/tests/classes/test_QSettings.py,
+	test/tests/classes/test_QStringList.py,
+	test/tests/classes/test_QVariant.py,
+	test/tests/metaobject/__init__.py,
+	test/tests/metaobject/test_connections.py,
+	test/tests/metaobject/test_connections_old_style.py,
+	test/tests/metaobject/test_connectslotsbyname.py,
+	test/tests/metaobject/test_destroyed.py,
+	test/tests/metaobject/test_gc_slots.py,
+	test/tests/metaobject/test_invoke.py,
+	test/tests/metaobject/test_pyqtproperty.py,
+	test/tests/metaobject/test_pyqtsignal.py,
+	test/tests/metaobject/test_pyqtsignature.py,
+	test/tests/metaobject/test_pyqtslot.py,
+	test/tests/metaobject/test_qvariantmap.py,
+	test/tests/metaobject/test_sender.py,
+	test/tests/metaobject/test_signal.py, test/tests/misc/__init__.py,
+	test/tests/misc/test_pickle.py, test/tests/misc/test_repr.py,
+	test/tests/pyuic/QMainWindow/MainWindow00.ui,
+	test/tests/pyuic/QToolBox/ToolBox00.ui,
+	test/tests/pyuic/QToolBox/ToolBox01.ui,
+	test/tests/pyuic/QWidget/Widget00.ui,
+	test/tests/pyuic/QWidget/Widget01.ui,
+	test/tests/pyuic/QWidget/Widget02.ui,
+	test/tests/pyuic/QWidget/Widget03.ui,
+	test/tests/pyuic/QWidget/Widget04.ui,
+	test/tests/pyuic/QWidget/Widget05.ui, test/tests/pyuic/__init__.py,
+	test/tests/pyuic/test_pyuic.py, test/v2_unicode.py,
+	test/v3_unicode.py:
+	Initial import of PyQt5 based on a stripped down PyQt4.
+	[b135a1e082d2]
diff --git a/NEWS b/NEWS
index 949bc5b0..d2b1edbc 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+v5.15.5 7th October 2021
+  - Added the missing QPdfWriter.setPageSize() overload.
+  - pylupdate5 now assumes that the default codec is UTF-8 and specified v2.1
+    as the .ts file format.
+  - Bug fixes.
+
 v5.15.4 5th March 2021
   - Packaging bug fixes.
 
diff --git a/PKG-INFO b/PKG-INFO
index 9bb4fa85..385ad30c 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: PyQt5
-Version: 5.15.4
+Version: 5.15.5
 Requires-Python: >=3.6
 Summary: Python bindings for the Qt cross platform application toolkit
 Home-Page: https://www.riverbankcomputing.com/software/pyqt/
@@ -56,8 +56,6 @@ The GPL version of PyQt5 can be installed from PyPI::
 
     pip install PyQt5
 
-The wheels include a copy of the required parts of the LGPL version of Qt.
-
 ``pip`` will also build and install the bindings from the sdist package but
 Qt's ``qmake`` tool must be on ``PATH``.
 
diff --git a/README b/README
index 1c4de0d6..b90f2ca2 100644
--- a/README
+++ b/README
@@ -46,8 +46,6 @@ The GPL version of PyQt5 can be installed from PyPI::
 
     pip install PyQt5
 
-The wheels include a copy of the required parts of the LGPL version of Qt.
-
 ``pip`` will also build and install the bindings from the sdist package but
 Qt's ``qmake`` tool must be on ``PATH``.
 
diff --git a/configure.py b/configure.py
index c6663e41..bb5f88a1 100644
--- a/configure.py
+++ b/configure.py
@@ -28,7 +28,7 @@ import sys
 
 
 # Initialise the constants.
-PYQT_VERSION_STR = "5.15.4"
+PYQT_VERSION_STR = "5.15.5"
 SIP_MIN_VERSION = '4.19.23'
 
 
diff --git a/pyproject.toml b/pyproject.toml
index 29505c6f..553e835b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -6,7 +6,7 @@ build-backend = "sipbuild.api"
 # Specify the PEP 566 metadata for the project.
 [tool.sip.metadata]
 name = "PyQt5"
-version = "5.15.4"
+version = "5.15.5"
 summary = "Python bindings for the Qt cross platform application toolkit"
 home-page = "https://www.riverbankcomputing.com/software/pyqt/"
 author = "Riverbank Computing Limited"
diff --git a/pyuic/uic/Compiler/qtproxies.py b/pyuic/uic/Compiler/qtproxies.py
index 6fa866cc..8041d2b0 100644
--- a/pyuic/uic/Compiler/qtproxies.py
+++ b/pyuic/uic/Compiler/qtproxies.py
@@ -1,6 +1,6 @@
 #############################################################################
 ##
-## Copyright (C) 2020 Riverbank Computing Limited.
+## Copyright (C) 2021 Riverbank Computing Limited.
 ## Copyright (C) 2006 Thorsten Marek.
 ## All right reserved.
 ##
@@ -278,6 +278,7 @@ class QtGui(ProxyNamespace):
     class QPainter(ProxyClass): pass
     class QPalette(ProxyClass): pass
     class QFont(ProxyClass): pass
+    class QFontDatabase(ProxyClass): pass
 
 
 # These sub-class QWidget but aren't themselves sub-classed.
diff --git a/qpy/QtCore/qpycore_decorators.cpp b/qpy/QtCore/qpycore_decorators.cpp
index ef35d591..18c32398 100644
--- a/qpy/QtCore/qpycore_decorators.cpp
+++ b/qpy/QtCore/qpycore_decorators.cpp
@@ -55,7 +55,7 @@ PyObject *qpycore_pyqtslot(PyObject *args, PyObject *kwds)
         return 0;
 
     Chimera::Signature *parsed_sig = Chimera::parse(args, name_str,
-            "a pyqtSlot type argument");
+            "a pyqtSlot argument");
 
     if (!parsed_sig)
         return 0;
diff --git a/qpy/QtCore/qpycore_pyqtmethodproxy.cpp b/qpy/QtCore/qpycore_pyqtmethodproxy.cpp
index d17766e9..1634e4b1 100644
--- a/qpy/QtCore/qpycore_pyqtmethodproxy.cpp
+++ b/qpy/QtCore/qpycore_pyqtmethodproxy.cpp
@@ -207,8 +207,10 @@ static PyObject *pyqtMethodProxy_call(PyObject *self, PyObject *args,
 
     if (!failed)
     {
-        failed = !method.invoke(mp->qobject, ret, a0, a1, a2, a3, a4, a5, a6,
-                a7, a8, a9);
+        Py_BEGIN_ALLOW_THREADS
+        failed = !method.invoke(mp->qobject, Qt::DirectConnection, ret, a0, a1,
+                a2, a3, a4, a5, a6, a7, a8, a9);
+        Py_END_ALLOW_THREADS
 
         if (failed)
         {
diff --git a/qpy/pylupdate/fetchtr.cpp b/qpy/pylupdate/fetchtr.cpp
index 1089c71d..03eecb34 100644
--- a/qpy/pylupdate/fetchtr.cpp
+++ b/qpy/pylupdate/fetchtr.cpp
@@ -198,7 +198,7 @@ static void startTokenizer( const char *fileName, int (*getCharFunc)(),
     yyParenLineNo = 1;
     yyCodecForTr = codecForTr;
     if (!yyCodecForTr)
-        yyCodecForTr = QTextCodec::codecForName("ISO-8859-1");
+        yyCodecForTr = QTextCodec::codecForName("UTF-8");
     Q_ASSERT(yyCodecForTr);
     yyCodecForSource = codecForSource;
 
diff --git a/qpy/pylupdate/metatranslator.cpp b/qpy/pylupdate/metatranslator.cpp
index 5c5f6d8e..fa206422 100644
--- a/qpy/pylupdate/metatranslator.cpp
+++ b/qpy/pylupdate/metatranslator.cpp
@@ -72,7 +72,10 @@ static bool encodingIsUtf8( const QXmlAttributes& atts )
             return ( atts.value(i) == QString("UTF-8") );
         }
     }
-    return false;
+
+    // tr() and trUtf8() became identical in Qt v5.6 so we assume UTF-8 if not
+    // specified otherwise.
+    return true;
 }
 
 class TsHandler : public QXmlDefaultHandler
@@ -247,6 +250,18 @@ static QString numericEntity( int ch )
            .arg( ch, 0, 16 );
 }
 
+static QString protect_qs(const QString &qs)
+{
+    QString protected_qs(qs);
+
+    protected_qs.replace(QLatin1String("\""), QLatin1String("""))
+        .replace(QLatin1String("<"), QLatin1String("<"))
+        .replace(QLatin1String(">"), QLatin1String(">"))
+        .replace(QLatin1String("&"), QLatin1String("&"));
+
+    return protected_qs;
+}
+
 static QString protect( const QByteArray& str )
 {
     QString result;
@@ -281,7 +296,7 @@ static QString protect( const QByteArray& str )
 static QString evilBytes( const QByteArray& str, bool utf8 )
 {
     if ( utf8 ) {
-        return protect( str );
+        return protect_qs(QString::fromUtf8(str));
     } else {
         QString result;
         QByteArray t = protect( str ).toLatin1();
@@ -394,7 +409,7 @@ MetaTranslator& MetaTranslator::operator=( const MetaTranslator& tor )
 void MetaTranslator::clear()
 {
     mm.clear();
-    codecName = "ISO-8859-1";
+    codecName = "UTF-8";
     codec = 0;
 }
 
@@ -432,17 +447,18 @@ bool MetaTranslator::save( const QString& filename ) const
         return false;
 
     QTextStream t( &f );
-    t.setCodec( QTextCodec::codecForName("ISO-8859-1") );
+    t.setCodec("UTF-8");
 
     //### The xml prolog allows processors to easily detect the correct encoding
     t << "<?xml version=\"1.0\"";
     t << " encoding=\"utf-8\"";
-    t << "?>\n<!DOCTYPE TS><TS version=\"2.0\"";
+    t << "?>\n<!DOCTYPE TS>\n<TS version=\"2.1\"";
     if (!languageCode().isEmpty() && languageCode() != QLatin1String("C"))
-        t << " language=\"" << languageCode() << "\"" <<\
-            " sourcelanguage=\"" << sourceLanguageCode() << "\"";
+        t << " language=\"" << languageCode() << "\"";
+    if (!sourceLanguageCode().isEmpty())
+        t << " sourcelanguage=\"" << sourceLanguageCode() << "\"";
     t << ">\n";
-    if ( codecName != "ISO-8859-1" )
+    if (codecName != "UTF-8")
         t << "<defaultcodec>" << codecName << "</defaultcodec>\n";
     TMM::ConstIterator m = mm.begin();
     while ( m != mm.end() ) {
@@ -463,10 +479,7 @@ bool MetaTranslator::save( const QString& filename ) const
             }
         } while ( ++m != mm.end() && QByteArray(m.key().context()) == context );
 
-        t << "<context";
-        if ( contextIsUtf8 )
-            t << " encoding=\"UTF-8\"";
-        t << ">\n";
+        t << "<context>\n";
         t << "    <name>" << evilBytes( context, contextIsUtf8 )
           << "</name>\n";
         if ( !comment.isEmpty() )
@@ -481,8 +494,6 @@ bool MetaTranslator::save( const QString& filename ) const
                 continue;
 
             t << "    <message";
-            if ( msg.utf8() )
-                t << " encoding=\"UTF-8\"";
             if ( msg.isPlural() )
                 t << " numerus=\"yes\"";
             t << ">\n";
@@ -511,10 +522,10 @@ bool MetaTranslator::save( const QString& filename ) const
                 languageAndCountry(m_language, &l, &c);
                 QStringList translns = normalizedTranslations(msg, l, c);
                 for (int j = 0; j < qMax(1, translns.count()); ++j)
-                    t << "            <numerusform>" << protect( translns.value(j).toUtf8() ) << "</numerusform>\n";
+                    t << "            <numerusform>" << protect_qs(translns.value(j)) << "</numerusform>\n";
                 t << "        ";
             } else {
-                t << protect( msg.translation().toUtf8() );
+                t << protect_qs(msg.translation());
             }
             t << "</translation>\n";
             t << "    </message>\n";
diff --git a/sip/QtCore/qglobal.sip b/sip/QtCore/qglobal.sip
index 6ef96e61..9ddfb581 100644
--- a/sip/QtCore/qglobal.sip
+++ b/sip/QtCore/qglobal.sip
@@ -29,8 +29,8 @@ int PYQT_VERSION;
 const char *PYQT_VERSION_STR;
 
 %ModuleCode
-static int PYQT_VERSION = 0x050f04;
-static const char *PYQT_VERSION_STR = "5.15.4";
+static int PYQT_VERSION = 0x050f05;
+static const char *PYQT_VERSION_STR = "5.15.5";
 %End
 const int QT_VERSION;
 const char *QT_VERSION_STR;
diff --git a/sip/QtCore/qpycore_qmap.sip b/sip/QtCore/qpycore_qmap.sip
index b642b734..ccff1310 100644
--- a/sip/QtCore/qpycore_qmap.sip
+++ b/sip/QtCore/qpycore_qmap.sip
@@ -347,6 +347,8 @@ template<_TYPE1_, _TYPE2_>
     PyErr_SetString(PyExc_NotImplementedError,
             "converting to QMultiMap<_TYPE1_, _TYPE2_> is unsupported");
 
+    *sipIsErr = 1;
+
     return 0;
 %End
 };
diff --git a/sip/QtGui/qpdfwriter.sip b/sip/QtGui/qpdfwriter.sip
index d3a78566..bb76554d 100644
--- a/sip/QtGui/qpdfwriter.sip
+++ b/sip/QtGui/qpdfwriter.sip
@@ -36,6 +36,7 @@ public:
     void setCreator(const QString &creator);
     virtual bool newPage();
     virtual void setPageSize(QPagedPaintDevice::PageSize size);
+    bool setPageSize(const QPageSize &pageSize);
     virtual void setPageSizeMM(const QSizeF &size);
     virtual void setMargins(const QPagedPaintDevice::Margins &m);
 
diff --git a/sip/QtWidgets/qcompleter.sip b/sip/QtWidgets/qcompleter.sip
index 46f5e826..2e4f1ab3 100644
--- a/sip/QtWidgets/qcompleter.sip
+++ b/sip/QtWidgets/qcompleter.sip
@@ -41,9 +41,9 @@ public:
         CaseInsensitivelySortedModel,
     };
 
-    QCompleter(QObject *parent /TransferThis/ = 0);
     QCompleter(QAbstractItemModel *model, QObject *parent /TransferThis/ = 0);
     QCompleter(const QStringList &list, QObject *parent /TransferThis/ = 0);
+    QCompleter(QObject *parent /TransferThis/ = 0);
     virtual ~QCompleter();
     void setWidget(QWidget *widget /Transfer/);
     QWidget *widget() const;



More information about the Neon-commits mailing list