Previously the jclass handle was part of the key used for caching the
class' methods and fields. Using the jclass handle is not ideal, but
it meant that we could easily create a key when the only identifier we
had was the jobject or jclass handle. However, in Android 5.1, the
re-use of handles seems to be more aggressive and therefore increasing
the chance of a collision in the cache look-up.
This change removes caching for all calls where we don't know the class
name, as that is the only thing that guarantees that we create unique
keys for each class. The consequence of this is that only calls that
provide a class name will benefit from the internal caching.
Task-number: QTBUG-45748
Change-Id: I0039d04e7c068debc9e3b3983632c45dc8e52309
Reviewed-by: Frank Meerkoetter <frank.meerkoetter@basyskom.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Because if it doesn't, then calling dbus_type_is_fixed or is_basic may
result in a failed assertion.
process 16304: arguments to dbus_type_is_fixed() were incorrect,
assertion "_dbus_type_is_valid (typecode) || typecode ==
DBUS_TYPE_INVALID" failed in file dbus-signature.c line 345.
Change-Id: Idf715b895bac4d56b4afffff13db2ed71b1516a5
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
The test is always marked as XPASS in CI.
Change-Id: I629bdec6f038cd8b6208fc4db61c67a9ea003b2e
Task-number: QTBUG-22326
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
eglPostSubBufferNV is used to communicate the size of the window, as
otherwise there is no way for the renderer to know if the last frame was
rendered in landscape or portrait, causing rendering glitches when the
orientation changes. The rotation flags are utilized in a few additional
places now to fix some corner cases where the rotation was not applied.
This patch should be squashed into "ANGLE-Improve-Windows-Phone-Support"
during the next ANGLE rebase.
Task-number: QTBUG-44333
Task-number: QTBUG-43502
Change-Id: Iec37f7531854184819c30c87eab82d96d56ff133
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
This allows the plugin to communicate the swap region to ANGLE and avoid
glitches when the orientation changes.
Task-number: QTBUG-44333
Change-Id: I40240cbcb3aaec92dbf4a82f4957965e92b9c3da
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
We were fetching "lastText" too late, and setting the opacity
of the clear button to 0.
Change-Id: I82c2aea7dab4af4424fb57e12f78d07a0374457e
Task-number: QTBUG-45518
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
For some reason, each column in a QColumnView is a QAbstractItemView,
*including* the preview widget's column. Unfortunately,
the preview widget's column class was not overriding scrollContentsBy,
so scrolling it had no effect.
A more comprehensive solution would be a major refactoring of the
code to make that column a plain Q(Abstract)ScrollArea, as it doesn't
need QAIV's APIs at all, but I don't want to change code and risk
breaking behavior.
Change-Id: Ice500a8eaef13c295df4cc274b9f80d9a24c65f4
Task-number: QTBUG-11392
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
GCC 5 combined with a recent binutils have a new optimization that
allows them to generate copy relocations even in -fPIE code. Clang has
the same functionality when compiling an executable with -flto. We need
to let the compilers know that they cannot use copy relocations, so they
need to use really position-independent code.
Position independent code throughout is not really required. We just
need the compilers to use position-independent access to symbols coming
from the Qt libraries, but there's currently no other way of doing that.
Task-number: QTBUG-45755
Change-Id: I0d4913955e3745b69672ffff13db5df7377398c5
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This reverts commit d0eba497c1.
A better fix is to use -fPIC instead of just -fPIE fo
-reduce-relocations.
Task-number: QTBUG-45755
Change-Id: I1759291b684fd76d4009e4be9ba1354eb056e659
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The test keeps failing. The approach of sending mouse move events is
inherently fragile due to the use of QCursor::setPos and the expectation
that that produces the correct sequence of mouse move events.
Change-Id: I07ec75460b70c27152e8775deffcb77fa9328d0c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Previously, implementation was spread between qlayout.cpp and qlayoutitem.cpp
and the docs between those two files and qsizepolicy.qdoc.
Move everything into a new qsizepolicy.cpp.
Change-Id: Id15c2c13572b7b8863be596603100f388eafea07
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This allows subclasses to submit any queued events that have to be
handled before normal operation starts. For example, if an error event
got generated during initialization which has to be handled by the
state machine, the startup hook in the private class can be used to post
those events and have the state machine handle them appropriately.
Change-Id: I62249a31d8840f47bc19920870ad5da9647e61f9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
When there are conflicting transitions, a transition that is nested
deeper (i.e. more specific) has priority. If two transitions have the
same nesting level, the one that comes first in the document order gets
priority.
Before this patch, only the document order was considered.
Change-Id: I58f188c270cabe2c386a783ceef7a0a955105425
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
The global shared context is now always enabled on iOS. This means that
contexts used by QOpenGLWindow/Widget and QQuickWindow/Widget and the
iOS backingstore will share with each other.
[ChangeLog][QtGui] QOpenGLWidget and QQuickWidget are now supported on iOS.
Task-number: QTBUG-40034
Change-Id: Ibfb99ffcb18f8f8d263662fbf237bc348fc730ee
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
If the flag is set, report to UIKit that it should
continue searching for the touch target by returning
'NO' from [UIView pointInside:].
Change-Id: I723f64fd855284fa60d0be18b2535dfa61f31381
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Widgets can have the attribute Qt::WA_ShowWithoutActivating
set, which is forwarded to QWindow as a property
(_q_showWithoutActivating). Both The cocoa plugin and
the windows plugin check for this property before
activating a window upon setVisible, so lets do the
same for the iOS plugin.
Note that this is not the same as shouldAutoActivate, since
the window should gain focus like normal if the user
taps on it.
Change-Id: Ie6c95d4044906d97f0a03d27009a23d462c6ca34
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Factor out the check since it's needed both
when loading assets and when creating an entry list.
Note that the file flags returned from the file engine
will report if the asset is not readable due to
authorization status, so we don't need to check this
again when trying to load.
Change-Id: I77ebbc370f0a7a6020ed484e53ece32bc7fa51bd
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
This patch will implement support for listing all available
pictures on the device by e.g doing:
QDir dir(QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).last());
QStringList list = dir.entryList();
Change-Id: I52a07ba48e074bc6e509f2ed3afc3dfea17abc5d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
[ALAssetsLibrary assetForUrl:] will not load assets coming from ALAssetsGroupPhotoStream. Such
assets can be stored in the cloud and might need to be downloaded first. Unfortunately, forcing
that to happen is hidden behind private APIs ([ALAsset requestDefaultRepresentation]). So if
the user through QIOSFileDialog opens the photo stream folder and chooses a
photo inside it, QIOSFileEngineAssetsLibrary will fail loading it.
This patch implements a work-around that basically asks ALAssetLibrary to enumerate all assets
in the photo library, and stop once we find an asset with the correct url. At that point we also
have a pointer to a ALAsset that can be used for loading. This is off course a slow way of loading
an asset, but at least better than not being able to load it at all.
Change-Id: Ie50344974f043f909ee94fa12e7eb4a40a666c7f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Add support for enumerating all available assets on the device.
Trailing patches will use the class to fetch a list of all available
assets for directory listing, and to search for assets that cannot be
loaded by [ALAssetsLibrary assetForURL:].
Change-Id: I319721b536b14424fc8f54f683513aa7ca64e7f0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
The current solution hard-codes a settings path that on iOS
will point to a write protected path inside the sandbox. So
change the QSP fallback in QSettings to also include iOS.
Note that changing settings path would normally be problematic
since it would cause migration issues. However, since the
current solution can never have worked on iOS, starting
to use QSP now should be fine.
Change-Id: Iecad7d84595aee24ca0e2446fa5997296ad8b5a8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
It's supposed to mirror QWidget's one, but this one isn't virtual,
making it useless.
Change-Id: I0dc531bd12b5e18fa11816c03ef5b3941851198f
Task-number: QTBUG-45633
Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
Change 939f21be53 introduced a crash when dragging data from
a 3rd party app into the app. Basically the current code assumed
that we always have QCocoaIntegration::instance()->drag()->currentDrag()
but this seems to only be the case if the drag was started by the
app itself.
The crash was found by testing the fridgemagnets example. Just
drag text from other app into the example to see it crash.
Also, refactored the cursor code into a separate method
to simplify code reading.
Change-Id: Ica611a4452a0dd02e01451111aeda14c879f8f1b
Reviewed-by: Filipe Azevedo <filipe.azevedo@kdab.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
The GLX and EGL integrations are skipped correctly but the base class still
contained createPlatformOpenGLContext() with OpenGL-specific types.
Task-number: QTBUG-44998
Change-Id: I727ded7ca8589b163fc1271709dd718572b51c3e
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Necessary for iOS. In addition to swizzle we also need to communicate the need
for flipping, so switch to flags instead of bools.
Task-number: QTBUG-40034
Change-Id: I055e591afd838878503be6f5f69aa7347965d9cf
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
If the asset url indicates that this file engine points
to the asset folder, report the file as a directory.
Also, if the app is authorized to access assets, report
that the directory has read access.
Change-Id: Ic8f656fa30a1b2a0ec6402e8b19256bdf5f7345e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Don't report read access to assets if we know that we are unauthorized
to load them. Note that if authorization is ALAuthorizationStatusNotDetermined
we continue to report read access, since we don't really know the permissions
until we try to load.
Change-Id: If51cfe9f5c57f8f33f463bddf81a77fade5fb89d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Resolve m_assetUrl already when setting file name. The variable will be
used several places in patches that follows.
At the same time, change the logic to be more robust to work around QDir
removing slashes (both single a double) after the scheme. In the end, what
matters is that we still recognize the file name as an asset url, and that we can
restore the original url based on the hash-tag contained inside the file name.
Change-Id: I988c6a73b2484e46d63917b442c13aa5a3666787
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
On touch platforms, QCursor::pos() will only be 'valid' when a
touch event has (at least once) been translated to a mouse event.
Currently this never happens in QtQuick since QtQuick always
accepts all touch events and performs its own translations.
So rather than setting the geometry of QShapedPixmapWindow from
QCursor directly, we instead base it on mouse events. This will
ensure that we never try to set the geometry of the window to
an 'invalid' value, which can cause a crash on platforms like iOS.
Note that we currenly miss an API in Qt to get the current
touch points. When that is in place, we can also set
a correct start position for the window before the
first mouse move event arrives.
Task-number: QTBUG-45877
Change-Id: I320598e87d43f6e9e087c204a69b95465128f468
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Inform the platform that it should not activate the window
when shown by setting Qt::WindowDoesNotAcceptFocus. This compliments
the already set Qt::WindowTransparentForInput, which specifies
that mouse/touch events should also pass through the window. In
other words, the window is just for showing output and should not
respond to input.
Change-Id: I3e90a28be2f2e27e2044effedf64f47c94a857a5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
The class inherited QSharedData, had a non-virtual clone() function and
a non-virtual operator==() which compared QPlatformPrintDevice::id().
Derived classes implemented clone() and operator==() comparing ids
to no effect. The class does not have any setters modifying its values,
so detaching, copying and assigning does not make sense.
Remove the inheritance, clone(), and operator==() and make the class
a non-copyable base class. Use a QSharedPointer instead of
a QSharedDataPointer to store it in QPrintDevice.
Remove copy constructors and clone() reimplementations that were never
called in implementations.
Found while investigating QTBUG-44991.
Task-number: QTBUG-44991
Change-Id: Ib79354b37048d04d50d936f1d0ae06c36efaac00
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
In single-exec mode, QDoc must never skip documentation warnings
as there is no subsequent QDoc run to re-execute the same code
paths (in generate phase) that generate warnings.
Change-Id: I8da2f16cfb12b3b3509249d1c9941d63733176a9
Reviewed-by: Martin Smith <martin.smith@digia.com>
The failing test has been blacklisted in 3ed6f74fb2.
Change-Id: I5a2defd839e2f98690fc8cea9ff18e7503caf0de
Task-number: QTBUG-25294
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
this allows LD_LIBRARY_PATH to take precedence over the hard-coded
rpath, which is the only sane thing to do (which is also why i'm not
adding an option to disable it).
this behavior is consistent with non-linux systems.
the windows version has no auto-detection, just like for gold linker
usage.
Task-number: QTBUG-3069
Change-Id: Ief9ba032291c898d75d76ecc740390954382a804
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
This is for example useful when looking for a possible BLACKLIST
file while doing a shadow build.
Add autotests for blacklist.
Change-Id: I41d3939d31d21d10187fefcb82604736d911b6ad
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
The change would remove the noexception hint on MSVC versions that
doesn't support noexcept but supports their older 'throw()' hint.
Change-Id: Ie5163f2413522f427279f59c8562c0ce4769bc82
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
There is no ApplicationsLocation on iOS (at least not one that
is public API). NSApplicationDirectory just points to a non-existing
write-protected path inside the app sandbox. Rather than returning something
we know is wrong, it's better to return an empty string.
Change-Id: I2ebc151f15509ed5699af05def5c708a56eeaf31
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
NSDesktopDirectory points to a non-existing write-protected path inside
the app sandbox. According to QSP documentation, we should fall back to
use the home directory instead.
Change-Id: I2c370af7758ac043eddcff84aa287eacc754ae38
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>