Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.6.0 Beta
-
None
-
3f482fad3c136b1b2f485dce823985bfa0922a3e
Description
Qt Base change d921a9bd157b04242722ab4326c5f2ea8e88cbea broke binary and source compatibility.
The issue has been discussed in detail in https://codereview.qt-project.org/#/c/139410/ and https://codereview.qt-project.org/#/c/138979/.
At its core, the change makes two previously publicly accessible but undocumented constructors of the exported QTextCursor class private (and changes the signature of one of them). The constructors were using pointers to QTextCursorPrivate and QTextDocumentPrivate, produced by other public exported functions such as QTextDocument::docHandle(). In code using this interface (such as in Qt Creator) the type of the handle is not explicitly used, it really acts as an opaque handle there.
The author of the patch argues that the handle type and the missing documentation clearly marks it as private API independent of the fact that it is exported and publicly accessible and therefore exempts it from the usual BC and SC guarantee. Several other people disagree with this view.
No matter of the original intent of the API or whether the API is considered unfortunate or not, the change mentioned does break both source and binary compatibility. The base change is needless insofar as there is no user or depending change benefiting from it and it ill-affects an interface that has been stable and in use for years at least in Qt Creator.
A change to revert the SC and BC breakage is here: https://codereview.qt-project.org/#/c/147496