more efficient use of string functions.
Change-Id: I3d95d6379eaab025b18449b706f93631a2132aad
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
the path is processed, and afterwards fixForOutput()ed again. the first
call makes no sense (even if it registered some variables that are gone
in the second call, that would be pointless exactly because they are gone).
Change-Id: I251f1e4858bec36f3a7a9427c2ba78031b35a2d3
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
commands come already fully expanded and quoted from the project.
Change-Id: I239d5c305f5f65d32c832bc09bfd1c322051e149
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
no other generator does it. if it actually buys anything, it should be
re-instantiated differently.
Change-Id: I8431702ac7d558d65fd28a7f9e36bb49db2eb253
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
the logic was such that if the bundle name already had the specified
extension which was not the default extension, the default extension
would be appended, too. i don't think that was the intention ...
now we simply put the default into QMAKE_BUNDLE_EXTENSION if its empty -
the variable is not used anywhere else where it would be expected to
preserve its emptiness, so this is safe.
Change-Id: Ied34d10f9fe60756bddc0037dcb2f1d3bbfd3e12
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
there is no reference to it anywhere.
Change-Id: I72403be6c8294d9b2e64075ebd428eba24d97097
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
this isn't some fuzzy logic, the call sequence is well determined.
Change-Id: I1696b49ed687da83d2969efcfe23ac6565630020
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
it never left the rudimentary stage. should it ever be re-added, it
needs to be done basically from scratch anyway.
Change-Id: I76858c8a2c90235f228f7a6e5a178a10a2669d37
Reviewed-by: Rolland Dudemaine <rolland@ghs.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
suppose we queried QT_INSTALL_DOCS/get. if no [EffectivePaths] existed,
we'd try [Paths]. if that didn't exist, either, we'd use the built-in,
which is relative. so we'd query QT_INSTALL_PREFIX ... without the /get,
which is technically wrong.
this doesn't currently matter, as all groups have the same built-in
defaults anyway, but it may (hint hint) matter later on.
Change-Id: I5a3746e80ca1bfbf2f37db3604cc351bddeacd94
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
it's not worth making things more complicated to remove the duplication of
one real LOC.
Change-Id: Iddbd0db7d0f81b80192b3980dbe2316b246a3b57
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
With auto-vectorization enabled in QtGui, the 32bit version of
qPremultiply is faster than the 64bit version since it can be vectorized
wider (4x on 128bit as opposed to 2x). Since all our important 64bit
targets have SIMD, that makes the 64bit version pointless.
Change-Id: I4e9070a3a3c8e2b54f17a95ba0aee0405cbb8ec9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
There are currently only two users, but I have patches in
the pipeline which mark some other function noinline, so
proavtively centralize the ifdef'ery involved.
Change-Id: I1f02351fdc903d4e026089e12b8a976ed6a8d603
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The function used a QMap<int,int> to map the %n's to the index
in the args array.
By way of construction, the key was sorted in ascending order
while the values, initially all -1, were later reassigned to be
0...map.size()-1, ie. std::iota().
The only information this data structure stores is therefore
the sorted %n's. For that, a sorted vector is a vastly superior
data structure.
Go one step further and use QVarLengthArray to avoid
allocating any memory for the common case of just a few
placeholders.
As an artifact of the underlying refactoring, the management
of that data structure has been moved to a separate class,
ArgMapper.
Runtime for the following test from tst_qstring:
QString str("%1 %2 %3 %4 %5 %6 %7 %8 %9 foo %10 %11 bar"); // not timed
str = str.arg("one", "2", "3", "4", "5", "6", "7", "8", "9");
str = str.arg("ahoy", "there");
went down from 2.2us to 1.5us.
Change-Id: Ic552615fbac646b78ba05eb4e3215e63d202fd94
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reduce the number of (non-regex) splitString instantiations from
six to two by:
- Passing separators by (const QChar*, int) and using qFindString()
instead of indexOf()
- Passing QString as QStringRef when the output is QVector<QStringRef>.
Doing so also allows to drop the MidMethod template parameter since
QString::midRef() is no longer being used.
(Somewhat disappointing) effects on Linux GCC 4.9 stripped release builds:
text -500B
data +-0B
relocs +-0
Change-Id: Id89e2814d5f7da5170181d863167517943c2e0cd
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: I9c09a3e2dfb90eb22d4509ac6c450a0bb5da48f6
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
pthread_getthreadid_np(3) is defined in pthread_np.h, not pthread.h.
Additionally, it was added during the FreeBSD 9 time frame, so add a
version check to use it only when we know it is present.
Change-Id: I4d716d9bfb189d10128b6d458a47045e130b51e8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Commit b6191b16 ("Merge remote-tracking branch 'origin/5.4' into dev")
merged commit 350c60b ("Link against QMAKE_LIBS_EXECINFO when using
backtrace(3)") into the dev branch, but the conflict resolution left out
the actual line that changed LIBS_PRIVATE.
Change-Id: I6e716ed375abdc534a1f20e412ce7c56ee85d6c0
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
In d7ca800a87 another parameter was
introduced to unify ShortcutOverride. The call to it in qnsview.mm
accidentally passed false as last parameter which would go to count
instead of tryShortcutOverride. The patch wasn't released yet, so this
regression doesn't need a change log entry.
Thanks to Felipe Seoane for spotting this!
Change-Id: Ide2211806caf742d649e0d5dadcc47fd032d2cdf
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
The class hasn't been used for a while anymore. Since it's
private, simply remove it from QtGui.
Change-Id: Ia0911d1c8b8836d963a51c8e354c96bc1ee4093f
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Change e910c36a3f unintentially included
a cropped version of this icon to test what happens with non-square
tray icons. Now reverting to the original version.
Change-Id: If49de2f54bfce7f11576317908f8742abffc105a
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Mainly because of a change in certificates which is causing failing
tests.
Change-Id: I8304e5ac4107428a250b71be5df7b5399a811017
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@digia.com>
We expect floating-point math to be IEEE754 compliant.
Change-Id: I2b257177f2ef5fce38ac4d8fd76f746dc7b9fc15
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
- a convenience method thats checks if the matrix
has no projective coefficients.
Change-Id: Ieea8ac2e4237b471a683ad5010672b1e89a0c953
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
This warning is not necessary. We don't warn in doneCurrent or QOpenGLWindow either.
Task-number: QTBUG-44094
Change-Id: Icb3cf51137258c939d5dfb653cf98ded3c147aac
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
And show a warning so we have a chance of knowing what
happened.
Change-Id: I9ddf3842b7d19946876ac1a2375611e8c13bbb9a
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
When there are source files with the same file name in different
directories of the project, then nmake's inference rules might pick up
the wrong source file. Note that this even happens when only one of those
files is in SOURCES. The existence of conflicting file names is enough
to cause hard-to-find build failures.
The usual work-around for this situation is CONFIG+=no_batch.
This is now done automatically when a conflict situation is detected and
a warning message is printed.
Task-number: QTBUG-13496
Change-Id: Icd81027407d3d489dbc50231e5ed8bcb91f8d2bc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
We would return true when opening assets in read/write mode despite
the fact that the files are not writable. The logic now matches
that of the qrc file engine.
This also adds a unit test for Android-specific issues.
[ChangeLog][Android][Important Behavior Changes] Opening assets with
QIODevice::ReadWrite now returns false to correctly indicate that the
files are not writable.
Change-Id: I019cc27861fc9b000dc13c5e0a38c0fc09a08671
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
All the features implemented here are done by QTreeWidget, which also
sets PartiallyChecked when appropriate.
Change-Id: I8c8b515478708d1b7a853e7b8d963dd8fc9863fb
Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
ItemIsTristate means QTreeWidget determines the check state of parent
items based on the check state of child items.
Checking/unchecking the parent propagates to children; but setting
the parent to PartiallyChecked shouldn't do that, especially since it can
lead to children without ItemIsTristate having PartiallyChecked check state.
Change-Id: Ibc8b7c77d9ec4c1578c07f3c62581edb770f8439
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
ItemIsTristate is now again purely for enabling the automatic management
of the check state of QTreeWidgetItems, while ItemIsUserTristate is
separate from that and lets the user select the three states manually.
This restores the original behavior of ItemIsTristate for QTreeWidgetItems,
which got broken by letting the user cycle through the states too.
[ChangeLog][QtWidgets][QTreeWidget] Restored Qt 5.1 behavior of
QTreeWidgetItems with ItemIsTristate to enable automatic management
of the check state. User-editable tristate checkboxes are now enabled
by setting the new flag ItemIsUserTristate.
Task-number: QTBUG-40060
Change-Id: I341f5e983804d3b4f27982520bb6647f3014cccc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
This adopts c26d5cf6ef
and moves some code around.
Change-Id: Icbc1f4e0cfa6c6b994c3e5096cf1cc66bc0b32f9
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Most important changes:
* Fixes for Arabic, Hangul, Hebrew, Indic,
Mandaic, Myanmar, and New Tai Lue shapers.
* Fixed out-of-bounds access in Indic shaper.
* Build and stability fixes, various optimizations.
Change-Id: I4f0e32c017f62fe576bee41a430d3da6d571de80
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
An external screen should always stay in the native orientation of the
screen, and not be affected by rotations of the device. If the user
requires the external content to follow the device rotation, this
can be done explicitly by listening to orientation changes of the
main screen, or using QSensors.
Change-Id: I3a98655d11915f0db107930e7d97a24417656bc9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Allows the QPlatformScreen to verify that the QScreen is alive before
sending events to QPA for the given screen (which will assert if the
screen is being destroyed).
Change-Id: Ie77674fead3e0a4d4f6fedbf1f7f3c98364c7485
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
See comments in QPlainTextDocumentLayout::hitTest(). Since
QPlainTextEdit does not do hit testing on the document layout
level, allow QPlainTextEditControl to override anchorAt() so
that hit testing can be done on the widget level instead.
Change-Id: I70247eafae96897382a0c7db7d596128a03e7a6c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Generally speaking, QOpenGLWindow subclasses are going to use some
various QOpenGL* wrapper object to handle their buffers, FBOs, etc.
Some of those QOpenGL* wrappers are QObjects, hence it should be safe
to have them as child objects, and expect Qt to clean them up properly;
but that doesn't happen because of how the destruction will work.
In particular, when the subclass object is deleted, there may not be
the right OpenGL context set as current. The deletion will go up to
~QObject, where the child objects will be deleted, resulting in a crash.
That will *also* happen if someone connected to the context's
aboutToBeDestroyed() signal: the context will in fact be deleted
after the child objects, since it's stored in QOpenGLWindowPrivate,
whose dtor will be run after ~QObject (!).
Now, in the general case, QOpenGLWindow subclasses should always
have a dtor in which they call makeCurrent() (also because various QOpenGL*
class are not QObjects, hence they're kept around as full members
instead of pointers-to); but at the same time we should clean up
properly the QObject children.
All of the above of course stands for QOpenGLWidget as well.
Task-number: QTBUG-44094
Change-Id: I2379041fe175416936f6d40292039f773a515b35
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
The patch adds convenience functions for working on C++11's new char
width specific unicode strings u16string and u32string.
[ChangeLog][QtCore][QString] Added methods for convenient conversion
to and from std::u16string and std::u32string.
Change-Id: I67c082e4755c592d61daaaaa70c8867ef0b23dcb
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>