summaryrefslogtreecommitdiffstats
path: root/dist/changes-5.2.0
blob: 09888a353ca760a1d80350618a2ed49f3996b30c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
Qt 5.2 introduces many new features and improvements as well as bugfixes
over the 5.1.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:

  http://qt-project.org/doc/qt-5.2

The Qt version 5.2 series is binary compatible with the 5.1.x series.
Applications compiled for 5.1 will continue to run with 5.2.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:

  http://bugreports.qt-project.org/

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

****************************************************************************
*                   Important Behavior Changes                             *
****************************************************************************

 - Qt is now compiled with qreal typedef'ed to double on all
   platforms. qreal was a float on ARM chipsets before. This guarantees more
   consistent behavior between all platforms Qt supports, but is binary
   incompatible to Qt 5.1 on ARM. The old behavior can be restored by
   passing -qreal float to configure.
 - The supported date range in QDateTime has been reduced to about +/- 292
   million years, the range supported by the number of msecs since the Unix
   epoch of 1 Jan 1970 as stored in a qint64, and as able to be used in the
   setMSecsSinceEpoch() and toMSecsSinceEpoch() methods.

 - QUrl and QUrlQuery:
   * [QTBUG-31660] QUrl no longer considers all delimiter characters
     equivalent to their percent-encoded forms. Now, both classes always
     keep all delimiters exactly as they were in the original URL text.
   * [QTBUG-31660] QUrl no longer decodes %7B and %7D to "{" and "}" in the
     output of toString()
   * QUrl no longer supports QUrl::FullyDecoded mode in authority() and
     userInfo(), nor QUrl::DecodedMode in setAuthority() and setUserInfo().
   * [QTBUG-31945] QUrl no longer decodes %23 found in the fragment to "#"
     in the output of toString(QUrl::FullyEncoded) or toEncoded()
   * QUrl now defaults to decoded mode in the getters and setters for
     userName, password, host, topLevelDomain, path and fileName. This
     means a '%' in one of those fields is now returned (or set) as '%'
     rather than "%25". In the unlikely case where the former behavior was
     expected, pass PrettyDecoded to the getter and TolerantMode to the
     setter.
   * QUrl now normalizes the path given in setPath, removing ./ and ../ and
     duplicate slashes.

****************************************************************************
*                          Library                                         *
****************************************************************************

QtCore
------

- QtAlgorithms
  With STL no longer being optional for building and using Qt, a number of parts
  of QtAlgorithms no longer make sense, and have therefore been deprecated.

  Replacements are available in the STL, and generally have much better
  performance, but are not instantly source-compatible in all cases. For
  instance, specialization of qLess or qSwap means that a direct port to
  std::sort from qSort may not be possible, as std::sort does not use any of
  them; a possible workaround is explicitly passing a qLess functor to
  std::sort:

      std::sort(container.begin(), container.end(), qLess<T>());

  The functions in QtAlgorithms that have been deprecated, along with their
  STL counterparts, are:
    - qBinaryFind (std::binary_search / std::lower_bound)
    - qCopy (std::copy)
    - qCopyBackward (std::copy_backward)
    - qEqual (std::equal)
    - qFill (std::fill)
    - qFind (std::find)
    - qCount (std::count)
    - qSort (std::sort)
    - qStableSort (std::stable_sort)
    - qLowerBound (std::lower_bound)
    - qUpperBound (std::upper_bound)
    - qLess (std::less)
    - qGreater (std::greater)

 - QDateTime:
   * [QTBUG-26161][QTBUG-29666] Fully implement support for Qt::TimeSpec of
     Qt::OffsetFromUTC, added new methods for offsetFromUTC(),
     toTimeSpec(), and toOffsetFromUTC().
   * Added convenience methods for fromMSecsSinceEpoch() and fromTime_t()
     to take time spec to be used in returned datetime.
   * Add method timeZoneAbbreviation() to return effective time zone
     abbreviation.
   * The debug datastream is now an ISO-like format instead of Qt::TextDate
   * The Standard Time to Daylight Time transition for Qt::LocalTime is now
     handled correctly. Any date set in the "missing" hour is now
     considered invalid. All date math results that fall into the missing
     hour will be automatically adjusted to a valid time in the following
     hour.
   * Added new method isDaylightTime() to return if the datetime is in
     Daylight Time or not.
   * Add support for a new Qt::TimeZone spec to be used with QTimeZone to
     define times in a specific time zone.

 - QJson:
   * [QTBUG-33229] The Writer and the Parser now fully accept non-character
     unicode points.

 - QJsonValue:
   * Added QJsonValue::toInt().

 - QStandardPaths:
   * QStandardPaths::enableTestMode is deprecated and is replaced by
     QStandardPaths::setTestModeEnabled.

 - QTime:
   * [QTBUG-30250] When calling QTime::toString(Qt::TextDate) and
     QTime::toString(Qt::ISODate), milliseconds are now included in
     the returned string. This also applies to
     QDateTime::toString(Qt::TextDate) and
     QDateTime::toString(ISODate).
   * Added new methods fromMSecsSinceStartOfDay() to create a new QTime
     from an msecs value, and msecsSinceStartOfDay() to return the QTime as
     the number of msecs since the start of the day.

 - QTimeZone:
   * Added new QTimeZone class to support time tone calculations using the
     host platform time zone database and the Olsen time zone ID's.

 - QUrl:
   * [QTBUG-33229] QUrl now fully accepts non-character unicode points;
     they are encoded as percent characters; they can also be pretty
     decoded

 - QUtf8:
   * [QTBUG-33229] UTF-8 now accepts non-character unicode points; these
     are not replaced by the replacement character anymore

 - QVariant:
   * Fixed QVariant::canConvert with longlong
   * Variant containing enum types can now be converted to integer

QtDeclarative
-------------

 - ColorDialog:
   * Added currentColor property.

QtGui
-----
 - Session Management:
   * [QTBUG-28228] The new QPlatformSessionManager class brings back
     the session management functionality. It allows the
     implementation of platform specific behavior related to session
     management. For platform that don't support this feature the
     default behavior has not changed.  Both X11 and Windows session
     management are supported.

 - QPolygonF:
   * When a QVariant holds a QPolygonF() then it will be correctly seen as
     a null QVariant.

QtNetwork
---------

- API was added to store and resume TLS session tickets.

- The minimum support openssl version has been increased to openssl 1.0. The
  code to support older versions has not been removed, but is no longer
  supported.

- An off-by-one error in NTLM proxy authentication has been fixed.

- Various improvements to reduce the memory used by qtnetwork have been made.

- Improved support for HTTP proxy authentication.

- Support for preconnecting to servers before making HTTP and HTTPS
  connections. This allows for much reduced latency when the hosts to be
  connected to are known.

QtPrintSupport
--------------

 - QPrintDialog:
   * Added support for setting CUPS job options in the print dialog.
   * Added support for setting CUPS Banner pages in the print dialog.
   * Added support for setting CUPS Page Set (even/odd pages only) in the
     print dialog.
   * Added support for setting CUPS Pages Per Sheet and Pages Per Sheet
     Layout options
   * Added CUPS server-side print range support for apps that can't support
     print range option themselves

QtSql
-----

Changes in Qt 5.1.0 (missing from released changelog dist/changes-5.1.0)
 - [QTBUG-28088] Remove dependency of DB driver headers on qsqlcachedresult_p.h.
 - Deprecate QSqlError setters. The constructor is sufficient, since it has
   a parameter for each member variable.
 - Rename the SQL driver header files to _p.h (make private)
   The drivers were never public API. They were exposed by mistake in
   public headers. What's more, they have #include'd a private header
   (qsqlcachedresult_p.h) since at least Qt 4.5.1. That means no one used
   those headers in Qt 4 (private headers weren't installed then) and
   it's unlikely anyone did in 5.0.
 - ODBC: Implemented lastInsertId() for some ODBC compatible databases.
 - PSQL: Make lastInsertID work for tables without OIDs.
 - [QTBUG-14904] SQLITE: Fix for Sql query aliases with dots
 - [QTBUG-2192] ODBC: fix loss of milliseconds when binding QDateTime
 - [QTBUG-30076] PSQL: escape backslashes only when server requires it
   IMPORTANT: Applications that implemented their own workarounds must be
   updated to avoid misbehavior and SQL injection vulnerabilities.
 - [QTBUG-10569] ODBC: fixed QODBCResult::exec() return value for DELETE
   operations when no rows are affected.
 - ODBC: Fixed loss of column metadata on SQL_NO_DATA.
 - QSqlTableModel: expose methods for getting primary values.
 - ODBC: Fixed possible cause of spurious errors (commit af35ee291a1bbbc8)

Changes in Qt 5.2.0
 - [QTBUG-29261] IBASE: Construct a valid QTime when creating timestamps for
   iBase SQL driver.
 - [QTBUG-33389] PSQL: Format QDateTime following ISO8601.
 - Add QSQLITE_OPEN_URI option to QSQLITE driver

QtWidgets
---------

 - QFileDialog::setDefaultSuffix() removes leading dot characters.
 - QSizePolicy got a retainSizeWhenHidden attribute.
 - [QTBUG-31602] QSpinBox size calculation will now be fixed when
   stylesheets are used.

 - QAbstractItemView:
   * [QTBUG-7232] QTBUG-7232 - In ItemViews scrollbars will now by default
     only scroll 1 pixel when scrollMode is set to scrollPerPixel. That is
     it will (when scrollMode is scrollPerPixel) do what is stated in the
     documentation, and no longer automatically adjust the scrollbars
     singleStep. The user can now control that value.

  - QAbstractScrollArea:
    * QAbstractScrollArea now has a SizeAdjustPolicy. If it is set to
      AdjustToContents it will make use of the protected viewportSizeHint()
      virtual function. This function returns a suggested size based on
      contents. Note that although the viewportSizeHint() virtual function
      was reserved in 5.0, user code was not supposed to be overriding it
      (as the function was private and undocumented).  Code that was
      overriding viewportSizeHint() needs to be recompiled against 5.2 for
      this feature to work correctly.

 - QHeaderView:
   * [QTBUG-4346] A maximumSize for sections has been introduced. The
     maximum section size is by default the largest possible section size
     which in Qt 5.2 has been limited to 1048575 pixels.

 - QFileDialog:
   * [QTBUG-34132] QFileDialog does not instantiate widgets if a native
     dialog will be used instead.  Therefore some accessors which previously
     returned unused objects will now return null.  As before, you can set
     the DontUseNativeDialog option to ensure that widgets will be created
     and used instead.

 - QListView:
   * [QTBUG-1180] Dragging an item outside the QListView in icon mode
     doesn't lose the icon.

 - QTableView:
   * [QTBUG-4206] resizeToContents will now adjust to actual contents
     and not just visible area. QHeaderView::setAutoResizePrecision()
     has been introduced to control how precise the autoResize should
     be.

 - QTreeView:
   * QTreeView now has setTreePosition to allow the treestructure to
     show data from other columns than logicalindex zero.


****************************************************************************
*                      Platform Specific Changes                           *
****************************************************************************


Qt for Windows
--------------
 - QCoreApplication::arguments() changed the handling of single quotes, double quotes
   and the backslash character, in order to match what argv[] contains.
   In particular, single quotes are no longer removed from the argument string.
   (QTBUG-15379, QTBUG-30628)

Qt for Android
--------------

 - Project structure and deployment has changed with the introduction of
   androiddeployqt. Source and build files are no longer mixed, and the
   build files for the APK package should not be touched. Customizing
   the build files is possible. Read the documentation for androiddeployqt
   for more information.

 - Status bar visibility is now controlled by Qt, so the window state will
   override settings in the AndroidManifest.xml. The default is still to
   show the status bar (QWindow::showMaximized()). Use
   QWindow::showFullScreen() to hide it.

Windows
-------

 - [QTBUG-33409][QTBUG-8764][QTBUG-10032] Fixed virtual key mapping on
   Windows.