When keeping a key pressed CorePhysicalKeyStatus'
RepeatCount stays 1 while WasKeyDown changes from
false to true. Thus WasKeyDown should be used to
determine the auto repeat status of the key event.
Task-number: QTBUG-52055
Change-Id: I7cde6b92473bd5335e85418c2b92cfe8f338975c
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
So far no capabilities (but internetClient for Windows 10) were added by
default, which forced developers to always manually edit the
WINRT_MANIFEST.capabilities(_device) property.
This allowed to leave out non-required capabilities and keep the created
manifest clean, examples being microphone for multimedia.
However, this also breaks first user experience as deeper knowledge
about this topic is required. Furthermore this is inconsistent with
other platforms like Android, where all capabilities are set by default
and developers need to edit the manifest manually in any case.
With this change, modules can define the capability set to enable all
features in the module. If developers want to disable some again, they
need to adapt the generated manifest. From our experience this needs to
be done in any case, latest at publishing stage when the store
manipulates the manifest.
Task-number: QTBUG-38802
Change-Id: I6d522268ee0afbfa00a30dbdd5e6ec9f415bebf3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
There is access to session manager functions which are not present when
building with -no-sm.
Change-Id: I1c92b4a70f7adb56816877930fb9f55b04ff8940
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
On Windows only URLs up to 2083 characters are supported, so longer
URLs are truncated.
Task-number: QTBUG-52271
Change-Id: I625e4d089df4d977d39e61e5831611e04260e729
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
According to RFC 2640, FTP uses UTF-8 encoding. Fix the conversions
accordingly.
Task-number: QTBUG-52303
Change-Id: I615199b3d074fc3861f25df113dda672525766b6
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
Their implementations were swapped.
Found while extending tst_qstringapisymmetry, which only exists in
dev, so test will be added to dev once this change has merged up.
[ChangeLog][QtCore][QStringRef] Fixed relational operators against
(const char*) to return the correct result.
Change-Id: I3f331037571b9a543a6885802836b768143d1c1a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Pass the DC obtained drawBackground() to drawBackgroundDirectly(),
saving a call to hdcForWidgetBackingStore() to find it.
Pass the error code from the Win32 API DrawThemeBackground()
to the calling functions.
Change-Id: I1c25241f53d87e4429ad924f7b2e29da215d7e4f
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Separate factors in QWindowsCursor::createPixmapCursor()
and apply factor to the hotspot.
Task-number: QTBUG-52276
Change-Id: Ia5a5db39ddc2bc4215a23ff8625431af9b4a76d8
Reviewed-by: Adam Light <aclight@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Its "rules" are actually guidelines, its suggested regex was wrong,
its actual implementation was fuzzier than its documentation suggested
and the exception it tacitly permitted should be distinguished from
the stricter rules it otherwise appears to implement. There was also
a redundant check ('-' had been handled earlier in the chained if).
Explain why the situation is tricky, fix the regex mentioned (making
it more readable, too) and note what might be worth doing a little
more fussily, without actually changing code behavior.
Change-Id: I93fa0da0640a134e5d84011b435a186576824063
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This might be useful for IDE or other tools to be made aware of Qt macros.
This is inspired to what QtCreator[1] and moc-ng[2] does. But they are forced
to redefine or inject code at precise location which might be difficult.
This is going to make it easier to use libclang in qdoc.
With this change, the tooling can just predefine the macro QT_ANNOTATE_FUNCTION
and QT_ANNOTATE_CLASS to get what they need.
Example with libclang:
"-DQT_ANNOTATE_CLASS(type,...)=static_assert(sizeof(#__VA_ARGS__),#type);"
"-DQT_ANNOTATE_CLASS2(type,a1,a2)=static_assert(sizeof(#a1,#a2),#type);"
"-DQT_ANNOTATE_FUNCTION(a)=__attribute__((annotate(#a)))"
"-DQT_ANNOTATE_ACCESS_SPECIFIER(a)=__attribute__((annotate(#a)))"
"-DQ_CLASSINFO(name,value)=static_assert(sizeof(name,value),\"qt_classinfo\");"
"-DQ_REVISION(v)=__attribute__((annotate(\"qt_revision:\" QT_STRINGIFY2(v))))"
[1] qt-creator/cplusplus/wrappedQtHeaders/QtCore/qobjectdefs.h
[2] https://code.woboq.org/mocng/src/qobjectdefs-injected.h.html
Change-Id: I88fcb28f1dbb3d26ea82f10e9948e68a18c795e9
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
The instance of QWindowsStaticOpenGLContext has been observed to be 0.
Task-number: QTBUG-52387
Change-Id: I1ca97c6df0d96e732ae62354e03f465cd461bcb4
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
The logic for activating a delayed popup menu on QToolButton is a bit
cumbersome: when the button is pressed, a timer is started. This timer
however doesn't get reset if the button is released before the timer
expires. Instead, the function triggered by the timer checks if the
button is pressed at that time. If so, the popup menu is shown.
This logic allows the user to press-release a QToolButton many times
and suddenly get a popup menu appear way before the expected timeout
for the popup expired. That's because the first press started the timer,
and then the button happened to be down when the timer expired.
Instead, always *re*start the timer on a button press, and cancel
the timer when the button is released.
Change-Id: I3e0849264fdb6f670d018ebb5012eb15fa699cfb
Task-number: QTBUG-48906
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
That configuration causes gcc to create non portable code and thus
should not be used.
Task-number: QTBUG-51938
Change-Id: Ib134bd0b12811c15805943180c41af8f411e6453
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Ensures that QStyleOption is correctly initialized.
This prevents possible styling issues due to
QStyleOption's reporting version 0, see qstyleoption_cast.
This enables users to handle more cases in their QProxyStyle.
For now the test is only used for QCommonStyle.
Change-Id: I768db00b12b46890343fffe44e4f562762e9cf80
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
The change in bc1796f for QTBUG-42503 only works for scaling down
pixel-doubled images. Smaller images scale up incorrectly. Fixed by
setting the devicePixelRatio of the scaled pixmap to the
devicePixelRatio of the label.
Also, caching was broken by not accounting for scaling by
devicePixelRatio in the condition.
Change-Id: I6e1503652e61683a16312c74f46b79d28c880848
Task-number: QTBUG-46846
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
The format to use was computed, every time round a loop, in both
branches of a ?: choice, duplicating code and potentially computation.
Pull it out into a const computed once before the loop.
A conditional return 2 is pointless for the #if-branch which returns 2
unconditionally, so move it into the #else.
Change-Id: Ia583e958e24f9f37b92cb3f2a173bc07e88bcd06
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Native applications do open the native input pane when the touch release
happens, not during press. Widget applications seem to not ask the
theme, so it was acting like native there already. For Qt Quick
applications the platform theme is queried, now returning true for
SetFocusOnTouchRelease.
As a side-effect this also fixes QTBUG-52295, as showInputPanel() at
press time causes issues with focus handling, causing the input pane to
disappear again.
Task-number: QTBUG-52295
Change-Id: I6da6a0126f695233b7c8a399a1549a8b7c824af2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
For some reason this setter wasn't protected against setting
the same value again, and always did work (including resizing
the last section when setting it to false).
Change-Id: I044404eef95d52d165100254f3afd489997e0872
Task-number: QTBUG-52308
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
QAbstractSlider might register and use small scroll events that would
scroll less than a single line. Since we consume the scroll-event we
should accept it, so it doesn't scroll other widgets too.
Task-number: QTBUG-49549
Change-Id: I7c64c5f6cae46f02ba21058abbecb791fc3c88eb
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Avoid rounding errors, thus preventing sizes becoming
too small when High DPI scaling is in effect. Also fix
division by zero crashes should a scale factor be below 1.
Task-number: QTBUG-49374
Task-number: QTBUG-51552
Change-Id: I72718521bc3c7f6b0e42392ea2d2d3bbc61e2faa
Reviewed-by: Marko Kangas <marko.kangas@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
Previously, the style defaulted to drawing via pixmaps when the device
transformation of the QPainter was more complex than TxTranslate.
Introduce an enumeration describing the transformation to be able
to identify the scaling used by High DPI scaling and allow for direct
drawing in that case as well. Add scale factors.
Create pixmaps with device pixel ration in drawBackgroundThruNativeBuffer()
if High DPI scaling is in effect.
Issues: Borders may go missing due to the up-scaling/rounding.
Code branches for DrawBackgroundEx==0 are not touched since it is
assumed these old versions of Windows do not run in High DPI.
Task-number: QTBUG-49374
Change-Id: Idfe1887e4fac3be2843438dc76cb4971a198ab2a
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
Remove the font-size declarations from the CSS, rely on the default
sizes for each element. This solves two issues:
- The user-configured font size (both in Assistant and Qt Creator
Help) is correctly taken into use. Previously, adjusting the
font size resulted in resizing fonts only for some of the text
elements.
- QTextBrowser backend seems to assume a DPI of 96 for all
platforms, and font-sizes in 'pt' units are scaled accordingly.
However, on OS X this resulted in font sizes too small to read.
Change-Id: Iaab3ad07e387912ad7391df982d4bfe7047f0b20
Task-number: QTBUG-51709
Task-number: QTBUG-51885
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Meta modifier is not found in some configurations which triggers an
assert. Instead of assert, ignore the modifier if it is not found.
Task-number: QTBUG-52298
Change-Id: I258cee4014a30162afebb423eadaf07ef0ed6a1f
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
For these states, geometry change will be sent from the code called
by setWindowState(); the geometry obtained immediately after window
creation is then no longer valid.
Task-number: QTBUG-52231
Change-Id: Ia7cbe95e73c5dd4126bb63d448b83f2cab6a53a1
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
... to avoid unnecessary allocations with
both case sensitive and case insensitive paths.
Optimize 4413254ff6
Change-Id: I4288831d641f7a0ee67f2efd2f5d4f023df0d39c
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Don't access first() of a potentially-empty QList.
Check for QHostInfo::error() first.
Also change to constFirst() to prevent a detach.
Change-Id: I91fa0bbfb21f62af29abdb23b4869a7f039b259e
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Found by UBSan:
itemmodels/qabstractitemmodel.h:426:28: runtime error: left shift of negative value -1
Fix by casting the lhs of the left-shift operator to uint
before shifting. Since Qt assumes two's complement repre-
sentation of signed integers, this should yield the same
result as the old code, but without UBs.
It is critically important that the result is identical
to the old code (modulo the compiler exploiting the UB,
which this patch aims to prevent even in future compilers),
because the function is inline, and changing the hash value
would mean changing the layout of a QHash<QModelIndex,.>
between users compiled against the old and new libraries.
Change-Id: I7b826a34fb78b02021e40c3f85fd11af398dbec4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
In keyboardSearch(), QAbstractItemView unconditionally called
QElapsedTimer::restart().
Calling restart() on an invalid QElapsedTimer is undefined
behavior:
qelapsedtimer_unix.cpp:192:9: runtime error: signed integer overflow: 3313808 - -9223372036854775808 cannot be represented in type 'long int'
qelapsedtimer_unix.cpp:193:10: runtime error: signed integer overflow: 534150461 - -9223372036854775808 cannot be represented in type 'long int'
qelapsedtimer_unix.cpp:194:17: runtime error: signed integer overflow: -9223372036851462000 * 1000000000 cannot be represented in type 'long long int'
The code already checked the timer for validity, and did not
use the return value of restart() in case of an invalid timer,
but the check came too late.
Fix by checking the return value of QElapsedTimer::isValid()
earlier, and calling start() instead of restart() instead.
Fix the same error in QTreeView, which has a c'n'p copy of
the buggy code.
Change-Id: I9751465394707d9348d5c05a0b1b2be147eceb2e
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
The flags here are passed to a private QVariant constructor, and they
really represent a boolean - IsPointer or not.
Because the flag for the key_type was incorrectly populated with the
flag for the value_type, memory would be corrupted when using a mapping
type whose value_type is a pointer, but whose key type was not, such as
QMap<QString, int*>
This typo has been there since the concept was introduced in commit
v5.2.0-alpha1~807 (Add container access functionality for associative
containers in QVariant., 2013-04-05).
Task-number: QTBUG-52246
Change-Id: I9ecb13c603015eed2dc2ca43947fa0ecd6be8b5a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
The QScrollerTimer instance allocated by QScrollerPrivate was never
freed. I've absolutely no idea why QScroller has such a messy
d-pointer handling, so go for the easiest approach: exploit the
fact that QScrollerPrivate is a QObject and parent the QScrollerTimer
to it.
Change-Id: I500edc9d0d14b2fb9eec02712229970eb2b9fe81
Task-number: QTBUG-52280
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
People use this, so make sure there's a test for it.
I don't expect this test to fail, but static and
dynamic checkers should be presented with this
use-case, so they have a chance of warning, because
certain implementation strategies of QPointer may
make this code undefined.
Change-Id: I334bd73204ba4e186c4098fc6b7188917407e020
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>