source: trunk/CHANGES.OS2@ 780

Last change on this file since 780 was 740, checked in by Dmitry A. Kuminov, 15 years ago

Updated README and CHANGES for 4.6.2.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Revision Author Id
File size: 23.6 KB
Line 
1This document contains a brief list of the most important OS/2-specific changes
2in the Qt library from release to release.
3
4
5CHANGES
6
7
84.6.2 (14-05-2010)
9
10 Improvements:
11
12 - general: Updated Qt codebase to version 4.6.2 (see the changes-4.6.2 file
13 for details). Note that this version is binary incompatible with the
14 previous version (see README.OS2 for more information).
15
16 - general: Implemented support for the OS/2 platform in the webkit module. The
17 webkit module is used in many complex web-based applications such as web
18 browsers to implement the JavaScript support. Note that the script module
19 uses the JavaScript implementation from the WebKit project too and it was
20 also ported to OS/2. The webkit module is always present in the official Qt
21 build but is disabled by defautl in the custom builds due to big compilation
22 times.
23
24 - general: Use declspec(dllexport) on OS/2 to significantly reduce the number
25 of exports in generated DLLs. This mode is on by default which reduces the
26 number of exported symbols by 90-100% in Qt DLLs and makes it not necessary
27 to split the QtGui DLL in 3 parts in debug mode. The old method which causes
28 all public symbols to be exported is still available using the "export_all"
29 CONFIG option (see README.OS2 for details).
30
31 - general: Provide the "doc" WPI archive that contains the Qt reference
32 documentation.
33
34 - corelib: Implemented native (XWP-based) file system watcher for OS/2 that
35 does not eat CPU (which is best noticed in file dialogs showing directories
36 containing hundreds of files. Requires XWorkplace to be installed.
37
38 - corelib: Implemented deriving the defaut locale from the process country
39 code if LANG is not set and integration with the system locale object
40 (System Setup -> Country Palette). See the QT_PM_NO_SYSTEM_LOCALE
41 description in README.OS2 for details.
42
43 - gui: Implemented printing support through CUPS. Refer to section "PRINTING
44 SUPPORT" in README.OS2 for details.
45
46 - gui: Implemented painting in widgets using DIVE (direct interface video
47 extensions). Using DIVE gives a significant graphical performance boost, up
48 to 100% in BLIT mode and 130% in FBSWM mode, depending on the combination of
49 the graphics hardware, video driver and the current screen mode. See the
50 QT_PM_DIVE and QT_PM_NO_DIVE description in README.OS2 for more details.
51
52 - gui: Improved the painting speed when not using DIVE. The performance boost
53 varies from 30% to 200% (e.g. 3 times faster), depending on the combination
54 of the graphics hardware, video driver and the current screen mode.
55
56 - gui: Enabled MMX/SSE support (on by default) to speed up graphical
57 operations by a couple of percents.
58
59 - gui: Enabled accessibility support on OS/2. Note that in order to use the
60 accessibility functions, a QAccessibleBridge plugin for the corresponding
61 accessibility device is necessary but none of them exist at the present
62 time.
63
64 - gui: Use native file icons in standard Qt file dialogs.
65
66 - assistant: Enabled the help module and made the Qt Assistant tool build on
67 OS/2. Also enabled help and assistant examples and demos.
68
69 - demos: Enabled the browser demo application that makes use of the webkit
70 module.
71
72 - demos: Enabled the qtdemo example that demonstrates all Qt features and
73 acts as a launcher for other example and demo applications.
74
75 - gnumake/os2-g++: Switch the compiler to using the i486 instruciton set for
76 code generation. This gives around 3% of the performance boost when
77 painting. As a drawback, the code will no longer run on i386 PCs but it is
78 assumed that it does not make sense to use Qt4 on these computers.
79
80 Fixes:
81
82 - general: Fixed: Building Qt applications with the "dev" WPI archive would
83 fail due to extra spaces in the output object file names.
84
85 - corelib: Fixed: Regular files were treated as sequential streams which made
86 the seek functionality unavailable. This in particular affected Qt Designer
87 that didn't expect sequential streams when reading .ui files and refused to
88 load files bigger than 8192 bytes as a result.
89
90 - corelib: Make sure the hardware error popup dialogs do not appear when
91 opening the standard Qt file dialog and selecting a removable drive with no
92 media inserted even with AUTOFAIL=YES in CONFIG.SYS
93
94 - corelib: QProcess: Fixed: Data could not be successfully read or written to
95 the standard streams of the started process in 'highmem' link mode (which is
96 on by default since 4.5.1 GA), as well as in normal link mode in some
97 situations.
98
99 - corelib: Fixed QProcess::startDetached() which would not work in 'highmem'
100 mode.
101
102 - corelib: QProcess: Fixed: Having stderr of a started child process
103 redirected to a pipe (which is the default) would indirectly cause an
104 impossibility to write anything to its stdin.
105
106 - corelib: QProcess: Get rid of the unexpected "DosQueryNPipeSemState returned
107 87" warning.
108
109 - corelib: QFileSystemWatcher: In the fall-back polling watcher, increased the
110 sleep time between checks of all watched files from 1 second to 3 seconds to
111 decrease the CPU load on big sets of watched files. Also, replaced the sleep
112 between checking individual items with the yield call as it doesn't give
113 significant improvement but just causes more CPU cycles to be spent between
114 each check.
115
116 - corelib: Always return true from QFileInfo::isRoot()/isDir() for paths
117 referring to root directories of drives with no media and always return
118 false from QFileInfo::exists() for them. Also, don't lstat() on such paths
119 since they are definitely not symlinks. This improves the file dialog
120 appearance and behavior for removable drives.
121
122 - corelib: Protect against the frozen system when QSocketNotifier is given an
123 unsupported socket (for example, an OS/2 file handle). There is still 100%
124 CPU load in this case, but the application can be at least closed using
125 normal means.
126
127 - corelib: Sockets: Fixed: "has data to read" socket notifications would be
128 sometimes delivered with a delay depending on the frequency of timers which
129 could significantly slow down network data transfer.
130
131 - corelib: QTemporaryFile: Fixed: Files were opened in O_TEXT mode which
132 caused unexpected LF <-> CRLF translation. In particular, this broke
133 QNetworkDiskCache functionality (seen in e.g. demos/browser as missing
134 images and CSS sheets when read from cache).
135
136 - corelib: Fixed: Clear FPU CW in qdtoa() to avoid the floating point
137 exception in various scenarios [patch by rudi].
138
139 - gui: Fixed assertion in QVector::at() at startup.
140
141 - gui: Fixed assertion at #1125 in qwidget.cpp (due to an attempt to
142 re-instantiate QDesktopWidget during application termination).
143
144 - gui: Select the correct icon for the drive letter in standard file dialogs
145 depending on the drive type (floppy, hard disk etc) [patch by rudi].
146
147 - gui: Fixed crash in PMMERGE during resize & move of the top level window
148 with the complex layout (caused by reading outside the bitmap data).
149
150 - gui: Fixed: Never add tooltip windows to the top-level window list and only
151 do so for splash windows if they have the Qt::WindowTitleHint flag set.
152
153 - 3rdparty: Added OS/2 support to clucene used by the help module for fulltext
154 search in help files [based on the patch by rudi].
155
156 - configure.cmd: Fixed: QT_BUILD_KEY (and QLibraryInfo::buildKey()) would
157 always contain "release", even in debug builds, which caused debug builds to
158 load the release plugins and refuse the debug ones.
159
160 - qmake/os2-g++: Use -Wl, to pass the object list response file to the
161 linker as is instead of the expanded list of objects (this overcomes the
162 64KB limitation of the total process command line length in OS/2).
163
164
1654.5.1 GA (05-02-2010)
166
167 Improvements:
168
169 - general: Switched the compiler to the GCC 4.4.2 build provided by Paul
170 Smeldey. This gives better standard conformance, better code optimization
171 and provides more compact DLLs and EXEs whose size is greater than ~1M.
172
173 - corelib: QSettings: Use IniFormat (plain INI files) when NativeFormat is
174 requested instead of the Open32 registry which is known to be unstable and
175 can be easily corrupted. The old behavior may be restored using the
176 QT_PM_REGISTRY environment variable.
177
178 - corelib: Use UniStrcoll for QString::localeAwareCompare() for locale-aware
179 comparison of NLS strings.
180
181 - gui: Implemented full Direct Manipulation (Drag And Drop) support. This
182 includes dragging text, URLs and files between PM and Qt applications,
183 dragging any MIME data across Qt applications, setting custom drag pointer
184 pixmaps, painting in widgets while dragging.
185
186 - gui: Implemented session management with the QSessionManager class.
187
188 - gui: Fully implemented the QDesktopServices class.
189
190 - gui: Added support for numpad keys and for some common multimedia keys
191 recognized by eCS (volume, home, search, favorites).
192
193 - gui: QCursor: Added missing cursor shapes and implemented support for custom
194 cursor shapes.
195
196 - gui: Implemented QFontDatabase::addApplicationFont()/removeApplicationFont()
197 and friends.
198
199 - gui: Implemented proper generation of possible key and modifier combinations
200 for a given key event. This in particular enables Ctrl+<letter> shortcuts
201 for non-Latin languages and also makes Ctrl+<letter>, Alt+<letter> and
202 similar shortcuts language-neutral.
203
204 - gui: QWidget: When setting the parent, take the parent's resolve masks to
205 make sure attributes imposed by the user on the parent won't be overriden
206 byv the natural palette for this widget if it differs from
207 QApplication::palette() [vendor bug].
208
209 - gui: Use a normal border for top-level Tool widgets since the thin one is
210 too thin and cannot be resized.
211
212 - gui: Implemented delivering of QEvent::NonClientAreaMouse* events to
213 top-level widgets. This enables undocked dock widgets to be docked back by
214 a double click on the title bar and also by moving over the dock areas.
215
216 - plugins: Enabled the sqlite3 plugin which makes the sql module (and
217 applications depending on it) actually usable.
218
219 - tools: Enabled the Qt Designer application.
220
221 - tools: Enabled the following toos: pixeltool, q3toq4, xmplatterns.
222
223 - qmake/os2-g++: Recognize the "map" option in the CONFIG variable that allows
224 to turn the generation of .map files on and off. The option is set by
225 default.
226
227 - qmake/os2-g++: Recognize the "highmem" option in the CONFIG variable that
228 allows to enabled memory support in LIBC for genereated DLLs and
229 executables. The option is set by default.
230
231 Fixes:
232
233 - corelib: Created wrappers for all Win* and Gpi* calls that restore the FPU
234 Control Word to what C/C++ programs expect. This fixes crashes in various
235 Qt applications (e.g. mp3diags) due to SIGFPE.
236
237 - corelib: QLibraryInfo: Fixed: qt.conf would not have been loaded if a
238 component path was requested before QCoreApplication instance creation.
239
240 - corelib: QLibraryInfo: Changed default "Settings" path to %ETC%/xdg.
241 Also use %ETC%/qtsys.conf as the system-wide qt.conf instead of
242 %ETC%/qt/qtsys.conf.
243
244 - corelib: QFSFileEngine: Fixed: On OS/2, trailing spaces in file names are
245 ignored ("readme " = "readme") but kLIBC doesn't handle this well so strip
246 them before passing to LIBC APIs.
247
248 - corelib: QFile::copy(): Use DosCopy() instead of read/write.
249
250 - corelib: Fixed: QProcess::startDetached() would either crash or fail to
251 start a process.
252
253 - corelib: Fixed: QFileInfo::isExecutable() would return true for all files on
254 local OS/2 file systems.
255
256 - gui: Fixed: Popups shown when another application is active were not
257 controllable with keyboard and didn't close on an outside mouse click.
258
259 - gui: Fixed: Visible title bar and frame of the top-level window after
260 switching to fullscreen.
261
262 - gui: Fixed: Wrong widget-relative mouse position in mouse events. This fixes
263 problems with dragging widget splitters (separators) in applications using
264 dock widgets.
265
266 - gui: Fixed: QEvent::Enter/Leave events were delivered incorrectly if the
267 alien child widget belonging to a native parent intersected with a native
268 child of this parent (this in particular caused extended tool bars to
269 immediately un-extend once the mouse moves over the extended part).
270
271 - gui: Fixed: Mouse press events replayed after closing the popup by clicking
272 outside it had incorrect coordinates. This resulted into various kinds of
273 misbehavior including spatial text selection in QTextEdit widgets after
274 closing popups by clicking inside these widgets.
275
276 - gui: Fixed: The default application icon embedded into the executable was
277 not actually used as the default window icon for top-level widgets.
278
279 - qmake/os2-g++: Do not use EXEPACK tool on static libraries.
280
281 - qmake: Several fixes to make install targets work correctly.
282
283
284Beta 5 (06-12-2009)
285
286 Improvements:
287
288 - gui: Added support for the system clipboard. Qt can now exchange plain text,
289 HTML (Mozilla application suite) and bitmaps with other PM applications, as
290 well as all supported MIME data types with other Qt-based applications.
291
292 - corelib: Use system unicode conversion routines to convert from the system
293 code page to Unicode and back. This makes it unnecessary to specify the
294 system encoding in the LANG environment variable -- Qt will use the system
295 encoding of the current process.
296
297 - gui: Implemented support for the IME input box (used on DBCS systems) in Qt
298 applications with a known limitation that the input box is always positioned
299 at the lower left corner of the top-level window.
300
301 - gui: Improved font handling on DBCS systems (patch by komh):
302 * Read national face names from font files instead of always taking the
303 Latin name.
304 * Use the PM_AssociateFont registry key to select a fallback font for
305 missing characters.
306
307 - gui: Implemented QPixmap::grabWindow() which takes a screenshot of a window.
308
309 - gui: Steal the Alt key from the PM which prevents the PM system menu to be
310 shown when single Alt is pressed in a Qt application. The system menu may
311 still be called using Alt+Space. Note that this also disables all default
312 shortuts from the system menu (Alt+F7, Alt+F10 etc.) so that they available
313 to Qt applications now. Exceptions are Alt+F4, Ctrl+Esc, Alt+Esc which are
314 not passed to Qt and will function as in regular PM applciations.
315
316 - general: Binary Qt library builds are made portable: they do not contain
317 hard-coded paths to various Qt components any more and use relative
318 locations whenever possible. See
319 http://svn.netlabs.org/qt4/browser/tags/4.5.1-os2-beta5/doc/src/qt-conf.qdoc
320 for more info.
321
322 - corelib: Improved the polling QFileSystemWatcher implementation so that it
323 doesn't eat all CPU when there are more than 100 items to watch, like when
324 showing a file open dialog with many files in a directory.
325
326 - qmake: Improved processing of the project library list (LIBS variable) to
327 avoid appearance of raw library names that require substitution (fixes the
328 debug build of linguist).
329
330 - qmake: Added support for DEF_FILE_VERSION, DEF_FILE_DESCRIPTION and
331 DEF_FILE_VENDOR project variables that allow to embed the description
332 string into a generated DLL or executable. For compatibility with other
333 platforms, these variables by default are mapped to VERSION,
334 QMAKE_TARGET_PRODUCT + QMAKE_TARGET_DESCRIPTION + QMAKE_TARGET_COPYRIGHT and
335 QMAKE_TARGET_COMPANY, respectively.
336
337 Fixes:
338
339 - gui: Table views showed alternate rows in black color instead of light gray.
340
341 - gui: If some font style (e.g. Bold) does not provide characters for some
342 script (e.g. Cyrillic) while the Normal style does, a different font will be
343 chosen for Bold Cyrillic instead of drawing empty boxes.
344
345 - corelib: Fixed two issues related to loading text codec plugins from the
346 application's directory.
347
348 - corelib: Fixed QDir::absoluteFilePath(), midir()/mkpath(), rmdir()/rmpath()
349 that didn't properly handle relative and UNC paths which could cause various
350 path-related failures.
351
352 - corelib: Properly report root directories of drives to Qt. This makes
353 letters of removable drives always seen by Qt (for example, in the file open
354 dialog) even if the medium isn't currently inserted.
355
356 - corelib: Fixed unnecessary access to removable drives and a long delay and
357 noice caused by it when showing a file open dialog in Qt applications.
358
359
360Beta 4 (11-11-2009)
361
362 Improvements:
363
364 - Added sound support (implemented QSound class).
365
366 - Added system tray support (QSystemTrayIcon class). This support requires
367 the Extended system tray XCenter plugin to be installed. See the note above
368 on how to compile and install this plugin.
369
370 - Enabled QPlugin support on OS/2. This in turn enables SVG support for
371 QIcon (which is built as a Qt plugin DLL by default).
372
373 - Better widget modality support (widgets blocked by modality cannot be
374 activated and moved using the mouse and the title bar anymore).
375
376 - Added support for 'console' and 'windows' CONFIG options in .pro files.
377 Now, if 'windows' is present, the target executable will have the WINDOWAPI
378 attribute set which effectively makes it a PM application. This, in
379 particular, disables standard input, output and error streams so that when
380 started, the application will not have a console window attached to it.
381 By default, 'console' mode is active unless you perform a release build and
382 the application is linked against the QtGui library ('QT = gui' in .pro),
383 in which case the default is 'windows'.
384
385 - Improved paint speed in Qt windows which should increase overall graphical
386 UI performance by 10%-20% in Qt4 applications.
387
388 - Implemented setting window icons for top-level windows (using
389 QWidget::setWindowIcon()).
390
391 - Added LxLite support to provide compression for executables and DLLs. The
392 compression is controlled by the 'exepack' CONFIG option which is turned on
393 by default for release builds if the LxLite executable is present in PATH
394 during the configure.cmd invocation. The compression may be turned off on a
395 per-project basis by adding a 'CONFIG -= exepack' line to the .pro file.
396
397 - Improved the section of this README.OS2 file that describes how to properly
398 set the LANG variable to have correct national characters in file names and
399 in window titles of Qt applications.
400
401 Fixes:
402
403 - QProcess: The executable's path was not always added to BEGINLIBPATH.
404
405 - Fixed-size top-level widgets could not be moved.
406
407 - Application crash after pressing a button in a dialog window that resizes
408 this dialog (for example, makes it bigger to show more information).
409
410 - Resizing top level windows using the top border broke mouse coordinates so
411 that Qt tought you pressed the mouse button in a different place of the
412 window than where you actually did it.
413
414 - Events posted with QCoreApplication::postEvent() were only processed upon
415 receiving a next message from the system. This caused funny delays such as
416 controls in a Qt window still indicating the input focus (the dotted
417 rectangle) after the window was deactivated and losing this indication only
418 when the mouse pointer was moved over the window.
419
420 - Don't replay mouse button press on a push button that is showing a popup
421 menu but instead hide the popup menu and unpress the button to get more
422 native look and feel.
423
424 - Deactivating the window with a push button showing a popup menu would hide
425 the popup but leave the button pressed.
426
427 - Fixed incorrect Qt dirty widget region calculation when processing WM_PAINT
428 messages. This fixes a lot of redraw problems (menu items in the main menu
429 bar, text in combo-boxes, various redraw problems in smplayer when switching
430 interfaces and going to/from fullscreen, and similar).
431
432
433Beta 3 (17-10-2009)
434
435 Improvements:
436
437 - Added proper font support. All outline (scalable) fonts visible in the Font
438 Palette should be now recognized by Qt. The fonts are hinted and antialiased
439 using the Freetype2 library when drawing text.
440
441 - System fonts and colors are now used by default for Qt widgets.
442
443 - configure.cmd now generates the main Makefile to simplify building of Qt.
444
445 - corelib: QProcess: Implemented child termination detection.
446
447 - corelib: QProcess: Implemented redirection to another QProcess.
448
449 - corelib: QProcess now uses native pipes for stream redirection. This fixes
450 various issues like 'Socket operation on non-socket' errors during
451 parent-child communication.
452
453 - corelib: QProcess: Make sure that the directory containing the executable
454 file is always searched (first) for DLLs needed by this executable. This
455 makes it unnecessary to change the current directory to the executable's
456 directory or add it to LIBPATH before starting the Qt application.
457
458 - corelib: QProcess can now start applications of different type (e.g. PM
459 applications from text-mode applications) directly.
460 QProcess::startDetached() also works.
461
462 - qmake: In debug_and_release mode, 'release-(all|clean|distclean|install|
463 uninstall)' and 'debug-(all|clean|distclean|install|uninstall)' make
464 targets are now available.
465
466 Fixes:
467
468 - Doing 'make clean' could result into a hang due to CMD.EXE command line
469 length limitation.
470
471 - corelib: Fixed: QProcess: Lost data during stream redirection.
472
473 - corelib: QSettings could sometimes distort data when saving it to the
474 registry (by replacing some characters with codes 0x80 and above with '?').
475
476
477Beta 2 (17-09-2009)
478
479 Improvements:
480
481 - Ported the network module (QtNetwork4.dll) and added to the default build.
482
483 - Added modules sql, svg, xmlpatterns, scripttools, plugins to the default
484 build.
485
486 - gui: Added recognition of dead keys which makes it possible to type
487 umlauts and other accented characters that require composition.
488
489 - gui: Implemented standard cursor shapes in Qt applications.
490
491 Fixes:
492
493 - qmake: Fixed the trailing slash problem which caused qmake to generate
494 incorrect makefiles and fail to build the Qt library on some platforms.
495
496 - configure.cmd: Return to the root source tree directory after building
497 qmake.
498
499 - qmake: Automatically use different link flags when linking qmake with WLINK.
500
501 - qmake: Recognize TARGET_SHORT that allows to specify a short DLL name
502 (vital for OS/2 which reqires DLL names to be in 8x3 format).
503
504 - build: Set short DLL names for Qt modules on OS/2 using TARGET_SHORT.
505
506 - corelib: Various fixes to file system classes that deal with the file name
507 case (which should be ignored on OS/2) and forward and back slashes.
508
509 - corelib: Fixed: QMutex could let more than one thread access the protected
510 resource.
511
512 - corelib: Standard stream redirection in QProcess should now work for
513 kLIBC-based child processes. Redirection for all other applications
514 (such as CMD.EXE) will be added later (seems to be a kLIBC bug/feature).
515
516 - gui: Fixed erroneous QFileDialog behavior (duplicate entires in the list,
517 incomplete contents of the root directory of the current drive).
518
519 - gui: Fixed: Ctrl+A..Z should generate characters with codes 0x01-0x1F.
520
521 - gui: Fixed: Close popups when resizing/moving the top level window.
522
523 - gui: Enabled actual enforcing min/max Qt widget constraints for top-level windows.
524
525 - gui: Fixed child widget duplication when resizing top level widgets after
526 showing a popup; moving native child widgets should now work correctly.
527 This also fixed a number of redraw problems (for example, drawing the main
528 menu and tool bars in smplayer, moving tool bars around in other
529 applications such as textedit from the demo folder).
530
531
532Beta 1 (29-08-2009)
533
534 - First public release.
Note: See TracBrowser for help on using the repository browser.