Commit Graph

15684 Commits

Author SHA1 Message Date
David Faure
a9b6a78e54 QThreadPool: fix race at time of thread expiry.
The current synchronization mechanism was racy: decrementing waitingThreads
and then hoping that the wakeOne will wake a thread before its expiry
timeout happens. In other words, on timeout, a just-assigned task would
never run. And then no other task would run, if maxThreadCount is reached.

Fixed by using a queue of waiting threads (rather than just a count), and by
moving the wait condition into the thread itself, so we know precisely
which one we're waking up, and we can remove it from the set of waiting threads
before waking it up, and therefore it can determine on wakeup whether it
has work to do (caller removed it from the queue) or it expired (it's still
in the queue). This is reliable, whereas the return value from QWaitCondition::wait
isn't reliable, when the main thread has already decided that this thread
has work to do.

Task-number: QTBUG-3786
Change-Id: I1eac5d6c309daed7f483ac7a8074297bfda6ee32
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-10-31 17:45:58 +01:00
Marc Mutz
94fd108ea4 QPlainTextEdit: use QSignalBlocker
Change-Id: I581e60c4efd985fb909614459229806185f9501c
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:58:44 +01:00
Marc Mutz
a6f0f07782 QMenu: use QSignalBlocker
Change-Id: I41006d2b6f1454382b8c0bede20999d882b66f26
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:58:38 +01:00
Marc Mutz
6861fb2577 QFontComboBox: use QSignalBlocker
Change-Id: I6a9eab39088275427e4282ee590fda439b2f2901
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:58:34 +01:00
Marc Mutz
180e28ef50 QTreeWidget: use QSignalBlocker
Change-Id: I0b69cd5680dfae6349bd4a952f358fe0b4acb2ff
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:58:30 +01:00
Marc Mutz
694e822080 QInputDialog: use QSignalBlocker
Change-Id: I711dbc0c35bc51ad3149e3d7b41e716bc9ab94b5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:58:25 +01:00
Marc Mutz
64050fe92e QPrintPreviewWidget: use QSignalBlocker
Change-Id: Ic2d48c8e2c9c3c6f06e67ebf7e12bd4899b421aa
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:58:20 +01:00
Marc Mutz
abbffdd4be QTabWidget: use QSignalBlocker
Change-Id: I4621e6b504c531903210242cf0f1cf12e7538784
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:58:15 +01:00
Marc Mutz
91c682e719 QMdiArea: use QSignalBlocker
Change-Id: I54bb64531b1b9639bec163a96baae67b9cabd16b
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:58:11 +01:00
Marc Mutz
b5a4be09aa QDockAreaLayout: use QSignalBlocker
This change changes the point where signals are unblocked again in
QDockAreaLayoutInfo::updateTabBar() to include the final tabBar->count()
call. This should not be a problem, as count() is a const function and
thus shouldn't emit any signals.

Change-Id: I6f3dc5696a9c31db51fbe4cdee4b9d83ddeaf61f
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:58:06 +01:00
Marc Mutz
b2d3d6365e QDateTimeEdit: use QSignalBlocker
Change-Id: I4983e96a51220f40644d202d76e92a889ae9431a
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:57:59 +01:00
Marc Mutz
48894cc75b QAbstractSpinBox: use QSignalBlocker
This change changes the point where signals are unblocked again in
QAbstractSpinBoxPrivate::updateEdit() to include the final update()
call. This should not be a problem, as update() merely posts an
event and shouldn't emit any signals.

Change-Id: I4b2ae109f057792b573ad6ea168ca77c18c773d0
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:57:47 +01:00
Marc Mutz
8d7b0a8c3e QFontDialog: use QSignalBlocker
Change-Id: I7be3ac4a7e6988d768e1db68f10a6920aa825a76
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:57:26 +01:00
Marc Mutz
4003d44ca2 QFileDialog: use QSignalBlocker
Change-Id: I32a631493138a777458557232da084f497adc526
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:57:22 +01:00
Marc Mutz
3549dfe8b8 QColorDialog: use QSignalBlocker
Change-Id: Id680d9b934760cdd6a20579518199bd388b56e5d
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:57:19 +01:00
Marc Mutz
0326c036d6 QItemSelectionModel: use QSignalBlocker
Change-Id: Ib88db7516fd7dd8f10a86444c506f3294948e79b
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:57:14 +01:00
Marc Mutz
ed827acc27 QSignalBlocker: (new) RAII class for QObject::blockSignals()
I don't think I ever worked on a project of non-trivial
size that didn't at some point add a QSignalBlocker.

This commit adds code, tests and documentation. Later
commits will convert naked blockSignals() calls to use
QSignalBlocker.

The implementation is purely inline to avoid the heavy
overhead of cross-dll function calls for this miniscule
task. This should not be a problem because QSignalBlocker
only uses public API and a pattern that we anyway need
to keep working until Qt 6, at least, so even changing
the implementation later will be no problem as the old
implementation lurking in non-recompiled code will be
acceptable, too.

This implementation is an evolution from KDTools'
KDSignalBlocker, with the following changes:
- Implements unblock() and reblock()
- Uses the return value of blockSignals() instead of a
  separate signalsBlocked() call.

Change-Id: I1933dfd72a0f5190324be377cfca3c54cf3d6828
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-30 12:56:44 +01:00
Thiago Macieira
bf6a345baa Doc: update the documentation of QStandardPaths to be more thorough
Specifically, note what paths can be empty and which ones can't (modulo
system mis-configuration, like an empty $HOME var) and describe what
implications there are for application-specific paths and for global
(user) paths.

Change-Id: If6c11aab466ba50f3a9685dce52dd51b86426f27
Reviewed-by: David Faure <david.faure@kdab.com>
2013-10-29 16:11:46 +01:00
Oto Magaldadze
e913972d52 added QAbstractSpinBox::setGroupSeparatorShown function.
[ChangeLog][QtWidgets][QAbstractSpinBox] QTBUG-5142 - This will
allow a group (thousand) separator to be shown in QSpinBox
and QDoubleSpinBox widgets.

Task-number: QTBUG-5142

Change-Id: I2e23f5f83c93bb092a2dbd784e06d17d40d42909
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2013-10-29 12:12:16 +01:00
Marc Mutz
fc5d07cee3 QLCDNumber: remove unused header #include
Change-Id: Ic1608a11a48c373b7ad816c1305cce0fe236425b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2013-10-29 12:11:54 +01:00
Roger Maclean
e65f568a8f Improve mapping between Font Config and Qt font attributes
It was sometimes impossible to select the desired font due to the code
completely ignoring the FC_WIDTH attribute and poor mapping of the
FC_WEIGHT attribute. The result was that it was easy to have a font file
that was inaccessible by Qt since it shared attributes with another
font file.

The FC_WIDTH attribute is now fetched and used unchanged as the font's
stretch value other than ensuring it is within the allowed range.

For FC_WEIGHT, the code no longer matches the value with the closest
QFont::Weight enum but instead does a piecewise linear mapping so
that Qt enum values match Font Config ones to the extent possible.

Also removed bogus call to fetch the width that was doing nothing with it.

Change-Id: Id39715f14a617c1d0e00ecf5a7d391cab99adc03
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2013-10-27 23:51:16 +01:00
Marc Mutz
7f1017931c Add empty dist/changes-5.3.0 file
Change-Id: Iea2f6bb3b1d5c922167c4e96c825c08db9aa1b4e
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
2013-10-26 00:39:51 +02:00
John Layt
041abb9316 QPrintSupport: Move QAbstractPrintDialog test into QPrintSupport
Move the test for QAbstractPrintDialog from widgets into printsupport

Change-Id: Ia7595fa650a7ad565df3090207500ed06564e842
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2013-10-26 00:39:51 +02:00
Roger Maclean
10014e0831 Add configuration for building with imf support on QNX
Avoid need to modify qnx.pro in src/plugins/platforms/qnx to
build with imf support.  By default detects if necessary headers
and libraries are available.  Can also be explicitly requested or
disabled with -imf and -no-imf options.

Change-Id: I3f9780fc189a33e4c93fb4f950111121f8e947c3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-10-25 20:17:40 +02:00
Roger Maclean
db98b052ac Add support for BB10 input method framework
Added input method support for the BB10 variant of Qt to the extent
possible using standard Qt APIs.  This adds support for text predictions
and entry of languages such as Chinese.

Change in interface to QQnxAbstractVirtualKeyboard was made because it
is felt the new one is slightly nicer.  It doesn't appear safe to
assume the focus object has a particular property and in fact in my tests
the code failed to work.

In some cases the code uses variable and function naming at odds with
normal Qt coding standards.  This has been done for functions called
and data provided by the BB10 input system as for those of us who
need to maintain such things, it makes their meaning considerably
clearer.

While qqnxinputcontext_imf.cpp was used as an initial base for
development one can consider the new version as largely new code. I
don't believe the original version was ever complete and in any event
would not compile.

Change-Id: I09470801ffa237cee67da40c0b3d02ed5c77531e
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2013-10-25 20:17:21 +02:00
J-P Nurmi
1f22c1d981 Introduce QTextDocument::baseUrl
Required for QQuickText & friends to implement image resource handling
in a clean way - to get rid of QQuickTextDocumentWithImageResources and
eventually make QQuickTextEdit's document interchangeable.

Change-Id: I97314a6c3e2d5726539d5722795a472631388cb0
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2013-10-25 14:18:05 +02:00
Oliver Wolff
2ced0cb08d Clean up common winrt/winphone mkspec
Change-Id: I010bf977e01fab2f39184bbe730ec70128cc2982
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-10-25 09:19:01 +02:00
Andrew Knight
07ee43142b qmake: Support MSVC2013 for WinRT builds
Change-Id: I1c102f0b029616997d72933a90c0f9a2a3a9e222
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2013-10-25 09:00:37 +02:00
Oliver Wolff
c241e4aa49 WinRT: Added msvc2013 mkspecs
Change-Id: I052f6ba19056e7c0df6d7ea5548eb4dac4db125e
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2013-10-25 09:00:35 +02:00
Frederik Gladhorn
840f6a40e6 Merge remote-tracking branch 'origin/stable' into dev
Change-Id: Ie56539b2e0be611a363b5f15ae5412a78d6945a2
2013-10-24 12:48:42 +02:00
Kai Koehne
2e3870fe37 Reserve some space for future use in QLoggingCategory
Currently Qt offers only debug, warning, critical message types for
general use. Most logging frameworks offer more ... let's save
some space for future message types.

Change-Id: Icb4333da5c8f5277fd10d8a01b06d95369662bdc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-10-24 10:18:26 +02:00
Sean Harmer
6d3e821349 Remove doc references to non-existing functions in QSurfaceFormat
Change-Id: I5a9de5b719e111e47a1ea7334609695f1db6149a
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
2013-10-24 00:32:08 +02:00
Jonathan Hoffmann
5cc76dae7e BlackBerry: improve BPS event lifetime management
In QEventDispatcherBlackberry::select(), if an event handler called
through filterEvent() starts a nested event loop by creating a new
QEventLoop, we will recursively enter the select() method again.
However, each time bps_get_event() is called, it destroys the last
event it handed out before returning the next event.  We don't want it
to destroy the event that triggered the nested event loop, since there
may still be more handlers that need to get that event, once the
nested event loop is done and control returns to the outer event loop.

So we move an event to a holding channel, which takes ownership of the
event.  Putting the event on our own channel allows us to manage when
it is destroyed, keeping it alive until we know we are done with it.
Each recursive call of this function needs to have it's own holding
channel, since a channel is a queue, not a stack.

However, a recursive call into the select() method happens very rarely
compared to the many times this method is called.  We don't want to
create a holding channel for each time this method is called, only
when it is called recursively.  Thus we have the instance variable
d->holding_channel to use in the common case.  We keep track of
recursive calls with d->loop_level.  If we are in a recursive call,
then we create a new holding channel for this run.

Change-Id: Ib3584676d2db5a9a3754a1535d5fb6c9e14f5dbb
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
2013-10-23 19:09:54 +02:00
Wolfgang Bremer
fe61f2d6b2 Rename BlackBerry arm mkspecs to be aligned with NDK structure
The current NDK uses CPUVARDIR variable to define whether x86 or armle-v7 is used.
Therefore, the whole structure uses these two definitions to separate simulator
and device builds. Renaming blackberry-armv7le-qcc to blackberry-armle-v7-qcc
allows to directly use CPUVARDIR during Qt5 builds.
For compatibility reasons the old folder is kept and includes the new qmake.conf.

Change-Id: Ia7feeeabe16eda48140a65178af28cbb9bd085a9
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2013-10-23 19:09:54 +02:00
Friedemann Kleint
d8745d249f Windows: Handle WM_SYSCOLORCHANGE as theme change.
Task-number: QTBUG-34170

Change-Id: I6ca11ab67c1e2752300fc167fb8f3c4f0d9ae2b8
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-10-23 19:09:54 +02:00
Friedemann Kleint
7c1b39705c Fix crash in QXcbDrag.
handleStatus() was called with drag==0 when releasing the mouse over the
desktop.

Task-number: QTBUG-33920
Change-Id: I553647d1e734934b7c6caf4c984683cff88f9162
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2013-10-23 19:09:54 +02:00
Kai Koehne
17809b41a6 Fix typo in check for MINGW_W64 version
Got introduced in 9b187bcd6a256b53cc2fb85500

Change-Id: I1d713f8309d3d8568ea836cc1d29f9dca685ac01
Reviewed-by: Jonathan Liu <net147@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2013-10-23 19:09:54 +02:00
Venu
e55ecc4a55 Doc: Added a link to the Qt Quick Test page
Task-number: QTBUG-33316
Change-Id: Ib8c479837cac4b7cca47b979cbb2dad0aaae6412
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Caroline Chao <caroline.chao@digia.com>
2013-10-23 19:09:54 +02:00
Shawn Rutledge
7e30d3afd3 QFileDialog can delete files too, not just directories
After Ic12de12ec51c20de52d040514e90be5e783add43 this functionality
was broken.  Added an autotest.

Task-number: QTBUG-34159
Change-Id: I8f41b7073dc57fea855ab87796f09e8a91520d13
Reviewed-by: David Faure <david.faure@kdab.com>
2013-10-23 19:09:54 +02:00
BogDan Vatra
483a9d83f0 Don't crash if the platform plugin is not initialized
Change-Id: I999411816192edbd2bf40c6bda92d6e94fb3d1b0
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-10-23 14:08:36 +02:00
Oswald Buddenhagen
f3785471b7 de-duplicate QT_MODULES
Change-Id: I8f1bf08070abb1ba05a4fdb14e7de9e7da5b3ec7
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-10-23 13:43:27 +02:00
Oswald Buddenhagen
7d462a2fb4 return()-related break() insanity is not necessary in qt5
Change-Id: I593c7160e44d51d25dee76c56c2e5580345ab42a
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-10-23 13:43:23 +02:00
Oswald Buddenhagen
a0a0b6446c don't suggest to use qtAddModule(), it's internal API
Change-Id: Idf01d0dd74a0708014b7fca33611535c604a75f9
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2013-10-23 13:43:19 +02:00
BogDan Vatra
0096264800 Fix deploy mechanism.
The order of "android:value" and "android:name" attributes can be changed when
saving the XML document. Use placeholders instead.

Change-Id: I9a97bb0df2d2d16c8a9443a21ce7d3290e0ab466
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2013-10-23 13:23:12 +02:00
BogDan Vatra
744a201853 Move untranslatable stings to AndroidManifest.xml
strings.xml file is used to store strings that can/should be internationalized.

Change-Id: I2fc305b6917752e9f502bd4beb172205ba4f9fba
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-10-23 13:22:57 +02:00
Gunnar Sletta
cbcfbd798f Rely on isLayered() to decide layering
The logic here was a bit broken. Every QWindow has an opacity
which is 1 by default so the expose was hit for every single
window, regardless of it being layered or not.

Change-Id: I04873cd5db1cd147708e7de140f5947d3a01e9e1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2013-10-23 13:15:54 +02:00
Jonathan Liu
5d8a882c11 Fix misaligned selection region with text when centered
If the text is centered, the x/y position in the selection QRectF may
be a multiple of 0.5 which is rounded up. This rounding causes
misalignment of the selection region with the text.

The alignment is fixed by using qFloor on the x and y components.

Task-number: QTBUG-34218
Task-number: QTBUG-34234
Change-Id: I4f2fadeb38602f62a93773c6e5faecf03b28069f
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
2013-10-23 10:54:44 +02:00
Paul Olav Tvete
aa7fa09312 Android/LinuxFb: fix QWidget::showFullScreen()
Previously, showFullScreen() had a race condition: it depended
on QFbScreen::setGeometry() being called after the window state was
set (that would trigger QPlatformScreen::resizeMaximizedWindows(), which
was the only part of the code that reacted to WindowFullScreen).
On Android this caused random behaviour.

Task-number: QTBUG-33294
Change-Id: I228e6af4139af1a47387e7d80757d7b46e859580
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2013-10-23 10:19:10 +02:00
Paul Olav Tvete
bd3f3f31bf Android: Make platform menu more robust
Don't crash and lock up the whole device when people try to
remove menu items that don't exist.

Task-number: QTBUG-34246
Change-Id: I4396d252c5af93e021c9e218dbab7c0e7f190d9d
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-10-23 10:18:45 +02:00
J-P Nurmi
a83983d861 QTextHtmlParser: restore the default link color from app palette
The default link color used to be resolved to the link color of the
application palette, but got lost during the Qt 5 modularization (see
commits 7351a43 and 3f9a7f9).

Task-number: QTBUG-28998
Change-Id: I7f07427f6c03f83c557100938ad9f7a39349d303
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2013-10-23 00:01:44 +02:00