There are many direct QImage conversions that doesn't need to be direct
but only are because they are faster than the generic conversion. This
patch optimizes the generic conversions and then removes all the direct
conversions that are now no faster than the generic.
Change-Id: I3dc5f44cc7f6358fd66420e9974eebaf2c7ca59c
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
There are more than 1000 new entries since the table has been
generated the last time.
Some auto tests needed to be adjusted, because some entries in
the TLD table were removed while others were added.
Change-Id: I4ceec392836d2031dfef49a0c5a857c31b36bb4c
Reviewed-by: Richard J. Moore <rich@kde.org>
Now we take into account also the subrole of the element.
Change-Id: I471e7c6620e704780cef48266ef302ec8b56466d
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Not tested as I have no idea what VoiceOver uses it for (it seems to
never query this attribute during any operation I tested).
Change-Id: Ie5e2b765a9956bcf2be9b659b8914e393ed1ea90
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
This enables users with "Speak text under mouse after delay" set in
VoiceOver Utility > Verbosity > Announcements to hover mouse over text
in QTextEdit and have it spoken by VoiceOver. It also allows users with
Trackpad Commander on to interact with the text area (VO-Shift-arrow
down) and "touch-explore" the text while holding their finger on the
trackpad and moving it around.
[ChangeLog][QtWidgets][Accessibility][OS X] VoiceOver users of QTextEdit
can now use mouse and touch exploration on trackpad to point at text to
have spoken to them.
Change-Id: I6cfaa8b1ff2179cce027b22539ba9ee4f3ee7f3f
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
When returning a rect for AXBoundsForRange, we always incorporated one
more character. Along with this one more character being often either a
newline or the first character of new softline, visual bounds often got
wrongly and unnecessarily multiline when in fact only single line was
correct.
Also noticeable when moving character by character (VO-Shift-arrow
left/right) - now only one character is being shown (as opposed to two
before). Still due to VoiceOver bug, for bounds of width less than 8
points, it will draw bounds width with of 8 points (reported as
<rdar://problem/19370707>). But still this is an improvement for cases
with bounds of width more or equal to 8 points.
[ChangeLog][QtGui][Accessibility][OS X] Visual bounds returned by
QTextEdit were singificantly improved, this enables VoiceOver to draw
properly positioned VoiceOver cursor.
Change-Id: Idc50310f8016fbcc01b061d27b655c72922a4807
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Add the NSOpenGLPFANoRecovery pixel format attribute.
This disables the software rendering fallback and
makes compositing OpenGL and raster NSViews using
Core Animation layers possible.
With QT_MAC_WANTS_LAYER enabled, native NSViews now
stack correctly with QWindows with OpenGL content.
One known limitation is that this mode currently
supports main-thread rendering only.
Change-Id: I2060cceda846b305b33b47f2eba3cb7cb838039c
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
The QWindow and QCocoaWindow may be deleted
before the QNSView (which Cocoa keeps a reference
to).
Clear pointers to the Qt windows on QCocoaWindow
destruction and add null-pointer check to QNView::isOpaque.
Change-Id: I71764886c27bf1d14fb4e684c15e7c72e1c0a17c
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Adds conversion from QJsonArray and QJsonObject, and report missing
conversion failures for other QJsonValues.
Change-Id: Ic0c3a952657912401db877b068f7fcc3c08c94c2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
We're documenting that this context exists, therefore applications
are allowed to assume that it exists. For the same reason, we
should expose it as public API -- an application should be allowed
to upload GL objects before creating or showing QOpenGLWidgets
that use them.
Change-Id: Iedbba7cd393018d93833fd2a6b02cce0639a89b4
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Don't use index-based iteration, but use iterators.
Change-Id: If8dabd56ff880191bb53861e31bfa6a007802c9c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Instead of filling a QString with lots of temporaries in-between,
simply stream everything into QDebug directly.
Requires the use of #ifndef QT_NO_DEBUG_STREAM because of the
explicit mentioning of QDebug.
Further simplified it by removing the complicated trailing-comma
handling. The struct-like output can tolerate a trailing comma
which has been allowed in C/C++ since its inception.
Change-Id: I0393a37cd21a50e902c8cb9f8b752ebb946d1669
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
It is no longer required since registered enumerations now
have an output operator for QDebug.
Change-Id: Ib85be4b98f301993c6cda2638b84586d541af841
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
QPlatformTheme::keyBindings() performs a binary search
into an ordered list of StandardKey -> Key Sequence
mappings where each StandardKey can have multiple
key sequences.
Previously the order of the Key Sequences in the
returned list would be indeterministic and, except
for the designated pri-1 key sequence, would not
necessarily correspond to the list order. (The
ordering was dependent on where the binary search
"hits", which again depends on the size of the list.)
This caused trouble when adding mappings, since it
would change the order in the returned key sequence
list for existing mappings and confusingly cause
(apparently) unrelated test failures.
Fix this by replacing the manually coded binary search
with std::equal_range.
One test case needed to be fixed up because it had the
result in the wrong order (verified by looking at
QPlatformTheme::keyBindings).
Change-Id: I555ca2736b1a8e6454dc79645a8246f80119cfc2
Done-with: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Make sure from{JulianDay,MSecsSinceStartOfDay}() are in a constexpr'able form
by introducing new private ctors that allow formulating these functions as
single expressions.
Change-Id: Iee98edb74e63c32e98781b885bbb2c5ef5867fd9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This also enables NRVO in almost all callers (a macro
prevents it in one case), saving one default construction
and one (move) assignment per call.
Effects on Linux GCC 4.9 stripped release builds:
text -896B
data +-0B
relocs +-0
Change-Id: Id3cde01057baaa408c4cbf95d8d15eaeeeec1604
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Bring them into a constexpr'able form, by indexing into the
string literal directly instead of into a static const char[],
which is a declaration not allowed in a C++11 constexpr
function, then mark the functions constexpr.
Change-Id: I6b32a55bf24f85caeb980c0c855b8db0952f914c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
To ensure QtCore can be rebuilt and get the exact same results,
it is undesirable to hardcode the build date into the library
Also deprecate QLibrayInfo::buildDate since it is relies on the build
date. QLibraryInfo::buildDate was originally meant for evaluation
licenses and such, but isn't used for that any longer.
Change-Id: I98e91ca3e55f877e6ac0e02de289dc29422fc9da
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
There doesn't seem to be a need for a timestamp in the include guard
anyway. The class name and similar stays the same, so it seems to just
add randomness to the build because it is possible.
Change-Id: I186d281d7ec4a3db08a128ca170e455132930cba
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Make QTextView accessibility on OS X mirror that of NSTextView in terms
of translating between positions and line numbers.
Most significantly, we report softlines (i.e. "lines" resulting from
visual wrapping induced by text view's width) as individual lines, not
just hardlines (i.e. "lines" delimited by newline characters, a.k.a.
paragraphs). This fixes keyboard echo when using just arrow up and down
(without VO prefix) as now in such case VoiceOver reads the softline
that the text cursor moved to; before this fix it read again the whole
paragraph (which it read no matter to which softline of paragraph we
moved to). This enables the user to search more effectively for the
softline they need (which they do very often when navigating text).
Further, we changed the behavior to report the trailing newline
character of a line as the last character of the line. This is
consistent with how NSTextView (and TextEdit) does things (and makes the
newline character be displayed on a braille display for the user to be
able to distinguish that this is really the end of paragraph), but could
be debated and changed as some important Apple apps do not include the
newline character in the line range (most notably Pages and Mail, both
in the document (or email text) text area). I asked about this here:
http://lists.apple.com/archives/accessibility-dev/2015/Jan/msg00000.html
This also fixes the case where empty line previously returned empty range
(length == 0) for AXRangeForLine and VoiceOver interpreted that as end of
document even if it was in the middle of document (e.g. in
examples/widgets/richtext/textedit, there is an empty line in "Lists" section
just before the last paragraph, if one attempted to move past it e.g with
VO-arrow down after interacting with the text using VO-Shift-arrow down, then
no luck).
The code is currently O(N) as the previous one, which could mean a performance
problem for bigger documents. As it seems QTextLayout has all the information
it needs to do AXLineForIndex and AXRangeForLine efficiently (I would presume
O(log N)), this should be eventually rewritten to take advantage of
that (but the required interfaces are not currently exposed through
QAccessibleTextInterface)
[ChangeLog][QtGui][Accessibility][OS X] QTextEdit now properly reports
to accessibility visual lines (softlines) as lines, instead of whole
paragraphs. This allows better VoiceOver user experience when reading
text line by line using arrows up/down.
Change-Id: Ie7f06eb919de31d0a083b3b30d26ccac4aa27301
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
The various refactorings to this code allow it compile and work
on Windows CE, so we can enable the build there.
Change-Id: I8ac56e87dca13790a76f125330a5400e4b4f5d46
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Haiku supports the realpath implementation, but failed the
original #if check because of the wrong _POSIX_VERSION.
Change-Id: Ibad12de3bf7c1031b2dff3026b5c61e5afd3f3e6
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The _POSIX_VERSION declared in Haiku is 199009L, so we have
to enable support for setenv/unsetenv explicitly until
Haiku POSIX version is updated.
Change-Id: Ic22374253b0512a6a816257db83b0c649be0585d
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
TabAllWidgets in QPlatformTheme is replaced by TabFocusBehavior.
[ChangeLog][QtGui] Expose TabFocusBehavior in QStyleHints
Change-Id: Iafaad7c6a5c6bc888d1e124e6ddcdbdc46f37b1c
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Followup to 2203d9d93e24e00d6e9bc9bda0e65a0c7f9923cc: clearRegion takes
a little time, so doing grabWindow() too soon afterwards can result in
grabbing a pixmap with undesired leftovers. And doing it every time
we render the icon causes flicker. So, do clearRegion() ASAP when showing
the icon, wait for it to happen, then grabWindow() only the first time we
render, and reuse the resulting pixmap for all future calls to paintEvent().
(The downside is, if there is any corruption during the first grabWindow(),
it's going to stay there as long as the app is running.)
Task-number: QTBUG-35658
Change-Id: If881ab192dba43758dcbb0d080663ff42057fa4f
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Until now, only the Gnome and KDE themes have done this. But
the gtk2 theme is not the same as the gnome theme. Further, Ubuntu sets
the environment variable QT_QPA_PLATFORMTHEME=appmenu-qt5 if that
plugin is installed on the system; and then with a custom build of Qt
which cannot load the module (e.g. a static build), it will again
fall back to QGenericUnixTheme instead of the gnome theme. In both
cases we want to still try to use D-Bus StatusNotifier protocol
instead of XEmbed. In general it should always be safe to check
whether or not that is possible, before falling back to the XEmbed
tray icon implementation.
Change-Id: I86d6c6f6ad410ea31770d39166d0a7e3330365a0
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
QSharedDataPointer is declared in qshareddata.h, not qsharedpointer.h
Change-Id: I4702f346ae01a8de07a6a9b50f951d2d4a89e1fb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Short version: fix build on QNX 6.5.0.
C++11 has been included on QNX 6.6.0's libcpp (Dinkum C++11 libs), while
continuing to be unsupported by the older QNX 6.5.0 toolchain.
This patch updates the mechanism for detecting the QNX's libcpp that is being
used during compile time, and also updates the list of C++11 features to be
disabled when QNX C++11 support is not present by adding
Q_COMPILER_UNICODE_STRINGS and Q_COMPILER_NOEXCEPT to it.
Change-Id: Iddb3626206a0d97d7103c1ff17ba0ae953e9a4b9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
The phase changes to ScrollEnd as soon as the user's fingers
are lifted from the trackpad; then the OS can optionally continue
sending scroll events to simulate deceleration, which are translated
into more QWheelEvents with phase ScrollUpdate. With this patch,
the phase of the final event after the momentum phase will be
ScrollEnd to indicate that the scrolling is completely finished.
[ChangeLog][QtGui][QWheelEvent] on OSX, trackpad wheel event phase
transitions occur in the order ScrollBegin, ScrollUpdate, ...,
ScrollEnd, ScrollUpdate, ..., ScrollEnd, where the second batch of
updates represent momentum events (inertial scrolling).
Change-Id: I7404ed6fbbeaff6b1fa63e226fe1800494986b7b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Use the
QDebugStateSaver saver(debug);
debug.resetFormat().nospace();
idiom to unify the formatting and whitespace handling.
Change-Id: Id346d63b3f589b60ca19e4459271d587f1a0c003
Reviewed-by: Richard J. Moore <rich@kde.org>
In case CreateFontIndirect() call fails, always fallback to a better
stock font provided by Windows (apparently, it is DEFAULT_GUI_FONT).
Change-Id: Ib78fe0d21ba4fccbba1152b81ed87c010e1220e0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
No significant changes, just stick to a released version.
Change-Id: Ib9c4ce6f7da07727e890a4ac3265fc4574e89821
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Instead of using QString::sprintf() (and converting the result back to QByteArray),
simply do the conversion from uchar to octal digits ourselves, using QtMiscTools.
Change-Id: I452c085b717c71609cd1a9465e31d90e6a0ba54b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The QTimeZonePrivate::Data type is larger than void*,
so holding them in QLists is horribly inefficient.
In addition, this type is held elsewhere in QVector,
so do that here, too.
As well as being faster, also saves 1.3K of text size on
optimized AMD64 builds.
Change-Id: I1ecf3ee0d955f6b19d2269204e2febc2ba2a9d9d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The implementation-private QTzType type is larger than void*,
so holding them in QLists is horribly inefficient.
Fix by holding it in QVector instead (it was already marked
as a primitive type before).
Text size grows by ca. 0.5K, but of course we got rid of all
those pesky heap allocations.
Change-Id: I3b70ed36fa9947b695ffc87c6f6199daa13cb7cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The implementation-private QTzTransition type is larger than void*,
so holding them in QLists is horribly inefficient.
Fix by declaring it as a primitive types (it just contains
various integers) and holding it in QVector instead.
Also optimize parseTzTransitions() by preallocating the expected
number of transitions and streaming directly into the container,
resizing to the number of successful read items on error.
Saves roughly 0.5K in text size, too.
Change-Id: Iadec7a7b0721893e477e1778c9fb54afd6e49544
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Both QTzTransitionTime and QTzTransitionRule are larger than void*,
so holding them in QLists is horribly inefficient.
Fix by declaring them as primitive types (they just contains
various integers) and holding them in QVector instead.
While we're at it, make the equality operator for QTzTransitionRule
a constexpr, noexcept non-member, and provide the inequality operator,
too.
As well as being faster, this also saves 1.5K of text size on optimized
AMD64 builds.
Change-Id: I37100522f19556101c334625818dcf8c9a712dd9
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Though only present in QT_BUILD_INTERNAL builds, accessing an unprotected
global bool is still a data race.
While the intended use of reset flag/start test/check flag is kosher
when it comes to the happens-before relation, this is no longer true when
users use two instances of QFileSystemModel at the same time.
To fix, make the bool an atomic int instead. Relaxed memory ordering
suffices, since the atomic int represents all the data. The races over
which model sets the variable is the job of the test case to resolve,
and doesn't affect other users.
Change-Id: I4d245b93a741e3457c42df6edd5b836a9bdacd83
Reviewed-by: Jason McDonald <macadder1@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Previously, number() was implemented in terms of setNum().
That makes no sense whatsoever. It creates a temporary
value which requires the function to have an exception
table and an unwinding trampoline. It also introduces
a default constructor (in number()) and a copy assignment
(in setNum()), which breaks the chain of RVOs originating
in the QLocaleData functions.
Instead, implement setNum() in terms of number().
This makes setNum() such a premature pessimisation that
it's probably best to deprecate it in the near future.
There are not many users of it in qtbase left, and it
just pollutes the QString interface.
Effects on Linux GCC 4.9 stripped release builds:
text -708B
data +-0B
relocs +-0
Change-Id: I015c9ddb1ba9c98c2c55e38e54ef7894954ac4ca
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Effects on Linux GCC 4.9 stripped release builds:
text -2024B
data +-0B
relocs +-0
Change-Id: I1a315eb0f94ade2b40be62770c6ddcfc56da9ec0
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QString::vasprintf() deals just fine with a nullptr format string,
so don't check manually.
The main advantage of dropping the check is that in two of three
cases, we can replace assignment with initialization, thus saving
one default ctor and one (move) assignment.
Change-Id: I08dd24111cd0b92f21ef9f1c3e352ede0f66afe0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
asprintf() is a GNU extension that prints into a string it
allocates internally. Arguably, that's a better name for
QString::sprintf() since it also allocates memory internally.
The main problem with QString::sprintf() isn't that it's
dangerous to use (it is), but that it's not static. It also
returns a reference instead of by-value, breaking RVO.
There is a comment about removing this function completely
in Qt 6.0, but it remains the only printf-style function
in Qt that can allocate the target string, so it's vital
for logging, e.g., and the recommended replacement code
(http://linux.die.net/man/3/vsnprintf) is a nightmare.
So this patch adds static (v)asprintf() methods to replace it.
Further patches will fix up all in-tree callers and finally
deprecate the old (v)sprintf().
Test coverage is provided through the existing tests of
sprintf(), which is implemented in terms of asprintf().
Arguably, the in-tree callers show that QByteArray would
benefit from having an asprintf(), too, as most of the
in-tree code works around its lack with calls
to to{Latin1,Local8Bit}() after using the QString version.
[ChangeLog][QtCore][QString] Added asprintf(), vasprintf().
Change-Id: I8510f8d67c22230653ec0f1c252c01bc95f3c386
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Instead of using sprintf (and #ifdef'ing our way around Windows warnings),
simply do the conversion from uchar to hex digits ourselves, using
QtMiscUtils.
Also used the Qt::Uninitialized QString ctor, as the result length is
exactly known ahead of time.
Change-Id: Ie42e5f11c608e7719f7dc33d72739c1e41901b3b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Hand-tuned in an attempt to get something that matches the normal arrow
cursor.
Task-number: QTBUG-44385
Change-Id: Iea2ee309fccb78706f47003fb11b14156fa01a50
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Making a build with an older NDK having only gl2.h results in crashing
QOpenGLTexture on devices that provide ES 3.0 or 3.1. This is because
immutable storage is supported (based on runtime checks) but the function
pointers are not there (due to ifdef checks).
Fix this like we did in other places: get rid of the ifdef and dlsym the
ES3-only symbols.
Task-number: QTBUG-44397
Change-Id: Ief518ec8c7d532aeea0075ba166baf8d22e66ec5
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Change-Id: If43dcc2b77fea5ae3ec40cc847467fc21fbd2c83
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
QAbstractSocket::close() always calls QIODevice::close(), which resets
QIODevice's internal read buffer. So it makes no sense to make same calls
from disconnectFromHost(). This made the closeCalled private member
superfluous.
Change-Id: I4ec64e9711490e44e737763e4ed7fb41bffe2556
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Since the algorithm can only be one the underlying structure can
share the same memory.
Change-Id: Ifeaa1a2d5c4ad3566cbbf847445b805876275260
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
Optional parameter DESTINATION to set target rcc file
Example:
qt5_add_binary_resources(GenerateFixture "fixture.qrc")
Task-number: QTBUG-41728
Change-Id: I9dc2fe8e7d5e9ad3873b89f75ab84a2a1b9d1d29
Reviewed-by: Stephen Kelly <steveire@gmail.com>
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.
Outdated header.LGPL removed (use header.LGPL21 instead)
Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing
combination. New header.LGPL-COMM taken in the use file which were
using old header.LGPL3 (src/plugins/platforms/android/extract.cpp)
Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license
combination
Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe
Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
Since argc/argv is modified by QCoreApplication-derived classes,
a copy of the original arguments is needed for comparison.
This fixes a crash in Qt Quick 2 tests (which use
the -qmljsdebugger=<port> argument) introduced
by dff18b8e80 .
Task-number: QTBUG-30330
Change-Id: Ic145ac923e0a7c504ab16602c8686268e4fd9700
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
When Qt runs in process with low integrity level,
and place child QWindow to HWND from less restricted process,
ChildWindowFromPointEx could fail with ERROR_ACCESS_DENIED
and QWindowsScreen::windowAt will return 0 despite mouse is on window.
Task-number: QTBUG-44332
Change-Id: I07e1594b90cbde8a9496f8d53ef247a7c69d8715
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
This enables us to do more intelligent distribution than simply doing the
rounding on each individual items geometry (which often leads to larger
spacings than specified).
Instead of doing the rounding on the output geometries, we now do the
snapping inside the layout engine. This allows us to do more intelligent
distribution of items, and spacings should always be respected.
There are some cases where items with fractional size hints might overlap
with less than a pixel. This was also the case before this patch. Those
cases are impossible to fix properly, since fractional size hints
conflicts with the snapping in some cases.
(Fractional size hints is normal for Text items.)
Task-number: QTBUG-41216
Change-Id: I01a8bc3529f0b8b028d6eb0a530c751b67ac6f4e
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Previous errors in versioned function classes for OpenGL versions
prior to 4.4 have also been fixed to comply with the new OpenGL
xml specification. Such mistakes were due to either bugs in the
old plain text specification files or problems due to the
difficulty in parsing the old spec files.
In some cases this has meant adding in missing functions that were
absent previously.
The other class of problem was when functions were erroneously
included in the versioned function classes when they should not
have been present. That is, some core profile classes incorrectly
had member functions for deprecated functions that should only
be present in the compatibility profile classes. In these cases
these incorrect functions will now trigger a qFatal if
called. This is fine as any applications that called these by mistake
in the past would have been dereferencing a null pointer as the
function pointer resolution would have failed for these functions.
[ChangeLog][QtGui] Add version function classes for OpenGL 4.4 and 4.5
and deprecate some erroneously classified functions.
Task-Id: QTBUG-33671
Task-Id: QTBUG-44364
Change-Id: I224108dcaf4f8b4933bc121827511841e2a41590
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Adds an SSE4.1 optimized version of qUnpremultiply and uses it in the
most drawing conversions methods. This gives a speed-up of little over
2x.
Change-Id: Ieb858a94ada1eb86d7af715ac1a100f1587f360d
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Unify the behavior of the different operator<< by always using
QDebugStateSaver (appending an optional space at exit), and making
sure that the space(), nospace() setting isn't 'leaked'.
Change-Id: I38e4f82fa6f7419d8b5edfc4dc37495af497e8ac
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Gnome Classic on Ubuntu shows this icon but fails to scale it down.
So if we do not pre-scale the icon, it will be too wide, and cropped.
Change-Id: If8cf98de3672deff77b99b17da5491bd6c45cfdb
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
It is unimplemented and probably unnecessary. Unintentionally included
in commit 74443d7bbb.
Change-Id: I3a1afb20e673fa0611b602a11ceca1953231ac14
Reviewed-by: Andrew Knight <qt@panimo.net>
The cipher is always valid here, so this check was never needed anyway.
Change-Id: I22be273d166702926b98f0c9443657a1dde65f6e
Reviewed-by: Daniel Molkentin <daniel@molkentin.de>
There were still ifdefs for openssl 0.9.7 and openssl 0.9.8f.
[ChangeLog][QtNetwork] Some legacy ifdefs for openssl 0.9.7 and openssl 0.9.8f
were removed, Qt will no longer build with these versions. In addition there
is no support for openssl built with NO_TLSEXT.
Change-Id: I9268515c0a125a2f6d79add8ee1cb40768e7e898
Reviewed-by: Daniel Molkentin <daniel@molkentin.de>
Having overloads for GLuint that call glUniformNi was a mistake to begin with,
and it has only been made worse when later OpenGL versions introduced unsigned
int support and glUniformNui. Note this in the docs.
Task-number: QTBUG-37012
Change-Id: Icc867221d0fbced8c4ff769deee66effa022f1b5
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
The postfix increment(decrement) creates a temp copy of *this before the
modification and then returns that copy. It's needed only when using the
old iterator and then incrementing it.
Change-Id: I7f6702de78f5f987cec3556047e76049b4ee063a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Try making it compatible with QOpenGLContext::functions() which returns
an already initialized QOpenGLFunctions.
Unfortunately we cannot make them 100% compatible because functions()
conveniently requires that the context (or a sharing context) is current.
versionFunctions() has no such requirement and we cannot safely introduce
it anymore.
What we can do is to state that as long as the context is the current one,
the initializeOpenGLFunctions() call can be omitted. If another context (or
no context) is current, the call will still be needed, like it is today.
Also, we require that the exact same context is current. Sharing does not
count since the exact behavior of sharing contexts with different versions
is unknown.
[ChangeLog][QtGui] initializeOpenGLFunctions() no longer needs to be called when
querying a versioned function wrapper object via QOpenGLContext::versionFunctions().
Change-Id: I0b4d1ae1f780da3f5dec9fc8dc67255c13faab6e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
In ES-only builds (-opengl es2) we hit the QT_OPENGL_ES_2 path which
disables all this. Not ideal since all the support is present in GLES 3.0.
Therefore, stop relying on the ifdef and do runtime checks. This also needs
defining the constants manually since they are not available in gl2.h and our
own ES2 extension headers provide some of these with silly silly suffixes.
Change-Id: I8ad7f5091a371bad1e3c6dc4898342a175016274
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Remove a typo and add the standard sentence about a dtor.
Change-Id: Ie21ad6d2e83977705ea43fdc872d08f496a32376
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Don't crash; restore windows when all screens are removed and re-added.
xcb: on configure notify, check for screen change: it may be that a
window belonging to a screen which was removed has now gotten mapped
to the new screen. On screen change, send a synthetic expose event,
because the real expose events already happened.
Task-number: QTBUG-38326
Task-number: QTBUG-32973
Task-number: QTBUG-42985
Change-Id: If334f55c248468ad3c95e7066bb14eca377d2050
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
libproxy is not part of Qt's public interface, but a helper library
used by Qt. Treat it as such by using LIB_PRIVATE.
Task-number: QTBUG-44326
Change-Id: I014f992e4b7a51de1e5a7407ce1bd08dd5352136
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Q_OS_WINRT was missing in the Windows-condition.
Condition was simplified through use of Q_OS_WIN.
Change-Id: I1a49d2d9c413dc2156930b6915e1675abcdde36f
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
The OpenSSL backend for QSslSocket return an incomplete peer certificate
chain when in server mode: it does not include the peer's certificate as
the first element of the chain.
This change fixes this issue.
Change-Id: I2f0815bca2f314a075b48a2d0b5a6d5b7af50722
Reviewed-by: Daniel Molkentin <daniel@molkentin.de>
kernel/qnetworkproxy_libproxy.cpp:152:57: error: suggest parentheses around comparison in operand of ‘&’ [-Werror=parentheses]
if (proxy.capabilities() & requiredCapabilities == requiredCapabilities)
Change-Id: I37eba3443802e4949bab03e9cb4f3fb664fa492d
Reviewed-by: Richard J. Moore <rich@kde.org>
If the window contains a widget that accepts text input, a Meta+...
shortcut will be interpreted as if no modifier was pressed. This fix
enables the usage of Meta+... shortcuts for the XCB platform plugin.
Change-Id: I80034b7e6bbbf18471c86fc77320d5038f5740be
Task-number: QTBUG-43572
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Historically, the screen number of a QWidget was stored in
QTLWExtra::screenIndex which came in via the Q_WS_QWS platform.
The variable contained the screen number of the QDesktopScreenWidget
and the desired screen number for widget creation (from parent widget
or desktop parent widgets) and was not updated according to widget
geometry or when the associated QWindow moved to another screen.
Storing the screen number is problematic in Qt 5 since it may change
when the list of QScreens in QGuiApplication is rearranged.
This change renames it to initialScreen and changes its usage to only
contain a screen number when a screen is requested by parenting
on a desktop widget or reparenting. A value of -1 indicates no screen
is requested and the number should be deduced from the geometry.
For the usage in QDesktopScreenWidget, add a method to determine the
number via index in the list of QDesktopWidget.
Task-number: QTBUG-44070
Task-number: QTBUG-44213
Change-Id: I153d19073ad4b0fd14ef3d24caa6d3e76f350e82
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
I'm having seconds thoughts about this api. Better to
not commit to it just yet.
This reverts commit ebdd4a0ba7.
Change-Id: I9725e3172b0166b56364a34db246eabb685e855d
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
When using images in QRC and giving the 1x and 2x image files
respective aliases but without any file extension
(for example 'myimage' and 'myimage@2x'),
then QIcon would fail to find the 2x variant.
Task-number: QTBUG-44049
Change-Id: I400bf6d22aeefe0aa351c68e473bf24ac2a36471
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
This patch aims to improve the documentation of setPlainText/setHtml to
let the user know that the undo stack is cleared when both these
function are called.
Change-Id: I079f9f1dd407387941777ebbc7b5a7bc6dc005ec
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Currently angle() is used in place of angleTo() to describe the
difference with intersect. This patch fixes that.
Task-number: QTBUG-44309
Change-Id: Idfc521932247f76fe15fd980ff8e87e52feec1f1
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Add qtextstream.h includes before header files define Status
Change-Id: I02e1fe710d4371100509a7fafac1eda8f436d80f
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
It _is_ the actual format after create(). This is true at least
since modularizing the GLX and EGL integration. See resolveFormat()
in the integration plugins.
This is important to clarify since other platform plugins usually
return the input (requested) format as-is. We must therefore be
careful with misleading notes as the situation is complicated enough
already.
Change-Id: I8e394680fa8fe3c80941a2a08fa873f831d6403c
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>