The object is never copied, so there's no point in using a cow'ed list implementation.
Apart from the usual API adaptions (isEmpty() -> empty(), append() -> push_back()),
alse replaced two foreach-loops with ranged-for. The first one does not call into
out-of-line functions, and doesn't modify the container it iterates over, so is
safe.
The second does call into out-of-line functions, but they are const. The loop does
not modify the container it iterates over, either, so is also safe (except for some
fishy const_cast somewhere, or const being lost due to shallowness of const).
Also replaced explicit-iterator loops with ranged-for where possible.
Change-Id: I60b0f2d356846d527bfbaa6a0ecbb8395013b852
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
The object is never copied, so there's no point in using a cow'ed list implementation.
Also port two explicit-iterator loops to ranged-for, as one is necessary
(because of constBegin()) and the other is for consistency.
Change-Id: Ia7f080060d6b675a76b55d197af08161389082a9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Casting towards more derived classes is "downcasting",
not "upcasting".
Change-Id: I1373a073ba81fb2c2b77c35ac1916a53ce30b86c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Add noexcept and honor the RO3 to silence warnings.
In theory this could also be constexpred, but there might
still be compilers we support that do not have constexpr initialization
for atomics...
Change-Id: Ibb94a2f4392908451cf7985d48f999581f03398d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The internal QByteArrays are kept in a QList, so we can use
int to get the count. This matches what operator[] takes,
and gets rid of a bunch of warnings when iterating over a QByteData
using a plain int as a index variable.
Change-Id: Ib44d4101612135b976979a8464442e94706f8736
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is a 1:1 replacement for std::exchange, and should be removed once
Qt fully depends on C++14. It's too versatile a tool to miss it, so
provide a copy.
[ChangeLog][QtCore][QtGlobal] Added qExchange(), a drop-in for C++14's std::exchange()
Change-Id: I31c4f1141e7a99f99ea65eb36ddf9d68b7847337
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is in preparation of deprecating QLinkedList.
Change-Id: Id5018b7fbc89f8b76b86e97cd09d18b4b8cb6234
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The macro needed to avoid generating headers_*.o from the header files.
Change-Id: I4fc5ec2432661493e337e1779d79373dedff0132
Reviewed-by: David Faure <david.faure@kdab.com>
QtANGLE is set on MODULE_AUX_INCLUDES so the headers can be found when
building with ANGLE (gui.pro) but the pkg-config file is missing this
header and the Qt headers cannot be compiled with the path from this
config.
Fixes: QTBUG-75495
Change-Id: I4d795b3495b8d08c65f9ddffad4fc838b4f04c31
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
This is in preparation of deprecating QLinkedList.
Change-Id: I7540b784736a48cf4857d1969440d35ec64457e2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Remove the bogus default constructor and copy special member function
of the structs there. They just disable move semantics and the
compiler will be happy to generate them for you when you let it.
These classes are all pure inline, so remove the export macros.
Last, not least, remove the broken assignment operator of
QVertexIndexVector. The copy constructor was implicitly declared, so
was doing something completely different (the correct thing, I might
argue), while the hand-rolled, useless op= checked this->t to check
which of the vectors to copy (instead of checking other.t, which it
later copies).
Change-Id: I696f01602e02c0ddb2e5348ec85fd2a622544226
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
In preparation of deprecating QLinkedList.
This actually simplifies the code, since std::list has a ctor from size,
which QLinkedList lacks, and which the code worked around by using
initializer_list.
Change-Id: I07f9d590f863d9e4e00de73339cdfa27079f6e03
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
As exported classes, their dtors should be out-of-line, lest we
can never add something to them afterwards.
Change-Id: I706281ca3fb285f9f00152f2e3fb34795699d69f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The code meant to extract GLX_SAMPLE_BUFFERS_ARB, not GLX_SAMPLES_ARB,
which is read a few lines below.
Change-Id: Id50a1863cab56ed6084d4a2359a956a9db1222fa
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Make it noexcept and add an overload as a free function.
[ChangeLog][QtCore][QPointer] Added a free swap function.
Change-Id: I50744b9bae6a52db71b2da39e310619b3a0d6510
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This is in preparation of deprecating QLinkedList.
There is but one substantial change: Instead of copying the linked list,
we move it now, and instead of copying items between these two lists, we
use std::list::splice(), which just relinks nodes. It is a bit surprising
that the comment on the ProValueMapStack suggests references into the
container must remain stable, and then some code changes addresses by
making copies of the elements.
This was probably a bug waiting to manifest itself.
Since nothing else in qmake is using QLinkedList now, remove qlinkedlist.o
from the qmake build.
Change-Id: I08a5b0661466bf50ad8f9f8abf58bc801aef4ddc
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Both in drawAndClipSpans(), as well as callee QSpanCollection::spansInRect(), a QSet is used
to ensure uniqueness of elements. In both cases, the QSet is converted to QList, and the list
is iterated over.
Just iterate over the QSet directly...
Change-Id: I8c7d17246a3cf836659026bfeadb987f37e476bb
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This is preparation of moving from QLinkedList to std::list, which is in
preparation of deprecating QLinkedList.
Change-Id: Ief259bc8c7178be5ca04812c6890cf65d86c069d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Do not specialize std::swap, just add swap in Qt's namespace.
Also add swap() for QWeakPointer, and sprinkle noexcept.
Change-Id: Ifb06c214f1865d42f3f2cddf5f980aede6bde185
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This amends change 587bdd144b. As we have
added QUrl we should also add QUrlQuery because the former uses the
latter.
Change-Id: Iab3b0cb91ef65e673c6c2db4c30fad5660ff30fd
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
This is used by uClibc, at least.
[ChangeLog][QtCore][QTimeZone] The TZDB back-end now recognizes the
contents of /etc/TZ as a fall-back for $TZ (as used by uClibc).
Fixes: QTBUG-75565
Change-Id: I3067e2d023cf30a85633575b5d7dc0ee3ec36927
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The TZ environment variable can validly contain a POSIX rule, rather
than an IANA ID, as described here:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03
However, if TZ were set to such a value, leading to it being used as
systemTimeZoneId(), it would be passed to QTzTimeZonePrivate::init(),
which is a no-op unless it manages to open a zoneinfo/ file with the
given ianaId as name. When the environment variable doesn't name a
zoneinfo/ file, we would thus get an invalid time-zone. We can,
instead, check whether the ianaId looks like a valid POSIX rule and,
if it does, use it as m_posixRule, enabling us to correctly handle
this case.
Tweak parsing of POSIX rules so that a zone using name "UTC" or "GMT"
with an offset other than 0 will be rejected as invalid. This avoids
parsing a zone name such as "GMT+17" or "UTC+00:01" as a POSIX rule,
where it should be understood as an offset from UTC (and only certain
well-established offsets are supported).
Added two test-cases to tst_QTimeZone::tzTest() for validity of a
POSIX zone value - a simple one constructed during discussion of the
bug, the other taken from an example in:
http://leaf.sourceforge.net/doc/buci-tz3.html
Task-number: QTBUG-75565
Change-Id: Ia5cb1cc56b13b0f6b56258e48be98d04d909e32a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Using the information from grafana we can unblacklist all the things
which are consistently passing.
Change-Id: I79917ca9c40e1df2dab46bb54cc0a2bd4a1a4621
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Using the information from grafana we can unblacklist all the things
which are consistently passing.
Change-Id: I3676d9cb5f9167039c3d1963521fa85785210f7c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Using the information from grafana we can unblacklist all the things
which are consistently passing.
Change-Id: If04963cd5f9a53ee2293d596f9111ebcb1add532
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Also undo changes in setNetworkAccessible and setConfiguration
since they introduced a change in behavior, which results
in auto-test failing.
Change-Id: I5d74c47338bff8f964ba2e27256902c79303e00f
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Clang generates a 'constant-logical-operand' warning when it finds
a non-boolean constant in a logical operation. Just make
the enum's base type as bool here to suppress the warning.
Change-Id: Ie53f53fa54f57535f89598bdabc4d893f6a1cc32
Fixes: QTBUG-75737
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Conflicts:
src/corelib/tools/qlocale_data_p.h
(Regenerated by running the scripts in util/local_database/)
src/gui/opengl/qopengltextureuploader.cpp
Done-With: Edward Welbourne <edward.welbourne@qt.io>
Done-With: Allan Sandfeld Jensen <allan.jensen@qt.io>
Change-Id: I12df7f066ed0a25eb109f61c4b8d8dea63b683e2
The triangular tab shape is not reproducible with setting style border
options, so it should be painted with the usual code path, also when a
custom background has been set.
Fixes: QTBUG-72096
Change-Id: I7bc1c0579386b8ea7266ce6456534c2519d9addf
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Can now detect nested quotes and code blocks inside quotes, and can
rewrite the markdown too.
QTextHtmlParser sets hard-coded left and right margins, so we need to do
the same to be able to read HTML and write markdown, or vice-versa,
and to ensure that all views (QTextEdit, QTextBrowser, QML Text etc.)
will render it with margins. But now we add a semantic memory too:
BlockQuoteLevel is similar to HeadingLevel, which was added in
310daae539 to preserve H1..H6 heading
levels, because detecting it via font size didn't make sense in
QTextMarkdownWriter. Likewise detecting quote level by its margins
didn't make sense; markdown supports nesting quotes; and indenting
nested quotes via 40 pixels may be a bit too much, so we should consider
it subject to change (and perhaps be able to change it via CSS later on).
Since we're adding BlockQuoteLevel and depending on it in QTextMarkdownWriter,
it's necessary to set it in QTextHtmlParser to enable HTML->markdown
conversion. (But so far, nested blockquotes in HTML are not supported.)
Quotes (and nested quotes) can contain indented code blocks, but it seems
the reverse is not true (according to https://spec.commonmark.org/0.29/#example-201 )
Quotes can contain fenced code blocks.
Quotes can contain lists. Nested lists can be interrupted with
nested code blocks and nested quotes.
So far the writer assumes all code blocks are the indented type.
It will be necessary to add another attribute to remember whether the
code block is indented or fenced (assuming that's necessary).
Fenced code blocks would work better for writing inside block quotes
and list items because the fence is less ambiguous than the indent.
Postponing cursor->insertBlock() as long as possible helps with nesting.
cursor->insertBlock() needs to be done "just in time" before inserting
text that will go in the block. The block and char formats aren't
necessarily known until that time. When a nested block (such as a
nested quote) ends, the context reverts to the previous block format,
which then needs to be re-determined and set before we insert text
into the outer block; but if no text will be inserted, no new block
is necessary. But we can't use QTextBlockFormat itself as storage,
because for some reason bullets become very "sticky" and it becomes
impossible to have plain continuation paragraphs inside list items:
they all get bullets. Somehow QTextBlockFormat remembers, if we copy it.
But we can create a new one each time and it's OK.
Change-Id: Icd0529eb90d2b6a3cb57f0104bf78a7be81ede52
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
- QObjects are always passed by pointer not by reference, by convention
- writeTable() takes QAIM rather than QATM to make testing via
QStandardItemModel possible in the future
Change-Id: I5bc6b8cd9709da4fb5d57d98fa22e0cb34360944
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Importer fixes:
- the first list item after a heading doesn't keep the heading font
- the first text fragment after a bullet is the bullet text, not a
separate paragraph
- detect continuation lines and append to the list item text
- detect continuation paragraphs and indent them properly
- indent nested list items properly
- add a test for QTextMarkdownImporter
Writer fixes:
- after bullet items, continuation lines and paragraphs are indented
- indentation of continuations isn't affected by checkboxes
- add extra newlines between list items in "loose" lists
- avoid writing triple newlines
- enhance the test for QTextMarkdownWriter
Change-Id: Ib1dda514832f6dc0cdad177aa9a423a7038ac8c6
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
It's a private header; but to be able to use it in a test, it has to
be as clean as a public header.
Change-Id: I868372406e62acc24051a6523fee89bb911a61f9
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
As seen in several occasions, both in user code and in Qt proper,
people make these mistakes. What makes it harder to spot is that it doesn't
look like a typo, and feels natural (natural as Q_OS_LINUX instead of Q_OS_LIN feels).
There's been a P1 in qtdeclarative/ and currently there's a Q_OS_WINDOWS usage
in qtwebengine.
This is a recurring problem, no matter how much people test and review
these errors will happen, so the alias is justified.
Change-Id: If6943b52e17f0c8b238c36bb1f7834802123f12a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
If the deadline is far in the future, the conversions to nanoseconds
or internal arithmetic may overflow and give an invalid object, thus
the deadline may end up in the past. Added a test to the testlib
selftest for sleep.
[ChangeLog][QtCore][QDeadlineTimer] Fixed integer overflows
leading to immediate timeouts.
Task-number: QTBUG-69750
Change-Id: I9814eccdf9f9b3add9ca66ec3e27e10cd5ad54a8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Make sure "this" still exists when we're done sending the
readNotification.
The crash manifested itself when connecting to certain websites as they
would reply with status 403, then close the connection. On our end we
would then handle this "remote host closed" followed by handling the
data we received. The http code handles the data successfully and sees
we are done and there is nothing more to do, so it closes the
connection. Which leads to closing QAbstractSocket, which closes
native socket again and then deletes it.
Fixes: QTBUG-75620
Change-Id: I233c67f359aa8234f1a2c4ea9463108b08c9165f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Add it to the name lookup and add verbose formatting
to the debug operator.
Task-number: QTBUG-73014
Change-Id: I31ee31bc28ef563fdbc0adedcea03546ced5faad
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Try to replace all wordings like '.. to 0' with '.. to \nullptr'. Also
checked for 'null pointer' and similar.
Change-Id: I73341f59ba51e0798e816a8b1a532c7c7374b74a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>