We don't receive ButtonRelease event after closing a popup
by clicking outside of the client area. Thus the internal
state of mouse buttons in the xcb plugin becomes outdated
until we receive ButtonRelease event.
This commit updates the internal state of mouse buttons
from MotionNotify events. So when a user will move a mouse
on the client area, the xcb plugin will send a mouse event
with updated buttons to Qt Gui and QGuiApplication will
detect the following mouse events correctly.
Task-number: QTBUG-32609
Task-number: QTBUG-35065
Task-number: QTBUG-43776
Task-number: QTBUG-44166
Task-number: QTBUG-44231
Change-Id: Ica334dfbf04f7ef81db86b25262328fe5da11808
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
This change is a step closer to working with openssl 1.2 which makes
this struct opaque.
Change-Id: I3897142657edc0fa4053142b6ef743c2b00c013e
Reviewed-by: Peter Hartmann <peter-qt@hartmann.tk>
QDoc keeps a list of files it generates (or copies) to the output
directory, for writing it to a .qhp file later on.
In single-exec mode, QDoc processes several qdocconf files
without deleting the generator in between. Therefore, we need to
clear the list of files whenever the generator is initialized,
to avoid duplicating the filenames across multiple .qhp files.
Change-Id: Ibc2a6b171466aa1db6cfe3da9a820d5ba2845004
Reviewed-by: Martin Smith <martin.smith@digia.com>
The current SQL plugins path are still Qt 4 style. This patch adds
qtbase to ensure users will be directed to the right place.
Change-Id: I11bf933864f0a8955079bf7175eb1e33bb5bc07f
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
replace qt-project.org/doc with doc.qt.io
also rename macosx-building.html -> osx-building.html
Change-Id: I5b4aaa187562b653407f1f99947df748c3240554
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Change-Id: I503e4e4c50a147cc1d81019228593f502132f28a
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
In some documents, "{QObject}s" was used which didn't show up as link. This is
fixed by using "\l{QObject}s" instead.
Change-Id: I90dbd543790842b242a11f3f94a32d4273ebb38d
Reviewed-by: Martin Smith <martin.smith@digia.com>
Task-number: QTBUG-44390
Change-Id: I1a800c709d3543699131ffff13c19789a12dac0b
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
Instead of constructing a QString that describes the QDateTime
instance, stream the constituents of the string into QDebug
directly, using op<< for Q_ENUM, now that it's available.
Adapt test to new format of enums.
Effects on Linux GCC 4.9 stripped release builds:
text -1068B
data +-0B
relocs +-0
Change-Id: I1a5ce28904edd7d0f6c8d982fd41c52e3536e036
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
[ChangeLog][QtWidgets] Added QPlainTextEdit::createStandardContextMenu(QPoint)
overload that takes the position in document coordinates. This method enables
the actions that are sensitive to the given position eg. where the user clicked.
Change-Id: I47ed7a1afc4fcfb3318c9b7af37867aeb7f2aa35
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
The app can set a directory url before showing the dialog.
Since we don't really know if the dialog is going to
be native or not at that point, it is too early to warn.
Change-Id: Ie9875ca90a500258841bad702ee864a46775641c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
If the app sets a directory url that is not a local
file, the url would be cleared just before showing the
dialog. The reason is that we try to convert the url
to a local file when preparing helper options, but fail.
Trying to convert the url in the first place is wrong, since
the app should be able to point the file dialog to any url, not
just local directories.
Since QFileDialogPrivate::init() calls
QFileDialog::setDirectoryUrl(), and setDirectoryUrl() calls
options->setInitialDirectory(), there should be no reason
to set initialDirectory once more in
QFileDialogPrivate::helperPrepareShow(). The easiest fix
is therefore to remove the code in initHelper() that modifies
the initial url.
Change-Id: Ia6c2113e867b1156cf9d59d347116f7df8c06d93
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
The current attempt to fix the problem described in b8d0fac5a9
has shown to have unforeseen issues. The assert in the
patch has been triggered in user code (see bug report), which, when
looking more closely, shows that the assert cannot be guaranteed
for all cases. E.g if user code (or Qt drag'n'drop code) starts a new
event loop upon receiving the move event, this can deliver new mouse
events before the move returns, which will trigger the assert.
So it seems like the most correct solution is to *post* the second button
event after all (directly trailing the move event), to at least make sure
mouse events are being delivered in the correct order. The crash that caused
the original change will need to be fixed by other means.
Task-number: QTBUG-38597
Change-Id: I47633d1ea310b7c16e937ef0404d9954281452c3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Change a4e1c15b1 will cause setGeometry to take immediate effect
by doing a synchronuous layout and a flush. As a side-effect, the
flush will also send posted touch events. So if the current
setGeometry call comes from a touchMove, a touchEnd might
be delivered before the touchMove returns.
A crash in QToolBar drag-n-drop is seen from this. There
drag data is deleted on mouse release (during the flush), while
a mouse move is already handled on the stack. When the code returns
to the move handler, drag-data has been deleted, and we have a crash.
Since the root problem is that we flush events on a callback from
the app, we can be more careful and precise by only flushing non-user
input events from layoutSubviews.
Change-Id: I3f5e025d774d21509ef837de9d7e85a1ac6e48cc
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
For PicturesLocation we add a second path pointing to
system assets. This url is understood by both QFile (using
a dedicated file engine), and QFileDialog, such that if
you point the dialog to the url, it will show a native
image picker dialog.
Change-Id: Ic79393440ab399ed4802cc6d84ec7ad36cbb9369
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
This will add a file dialog backend on iOS. The implementation
will check if a dialogs initial directory points to the system
picture location, and if so, present a UIImagePickerController.
Otherwise it will return false upon show, which causes
QFileDialog to use the widget based version as fallback.
Change-Id: I276b630911652b6d28f60763decc7ec38f00c817
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
This patch will add a new file engine that lets the
app load images from the asset library using QFile.
The engine will recognize file names with the scheme
'assets-library', which is the same scheme returned
by UIImagePickerController.
This patch will be the first of a set of patches
that lets the user open a native image picker dialog
by using a QFileDialog with directory set to
QStandardPaths::PictureLocation. This patch will
ensure that the url returned from the dialog can
be loaded using QFile.
AssetsLibrary, which is used in this patch, is actually
deprecated in favor of the new Photos framework. But
since the latter is only supported from iOS8, we
choose to use the former framework for now.
Change-Id: If2a6eb394ae4df55fb4e9e1dc245a1574d38618a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Similar to what we've done to QString, only we print each byte that is
not ASCII as \OOO (octal representation).
[ChangeLog][QtTest] QtTest now prints an escaped version of
QByteArrays that failed to compare with QCOMPARE, instead of the hex
dump.
Change-Id: I6a8c43f138c66c998280998a242b43cd579666a0
Reviewed-by: Richard J. Moore <rich@kde.org>
This also reduces the number of variables modified in each loop from two
(l and i) to one (just i) and avoids calling str.length() all the
time. Those should be no-op changes, but why not help the optimizer?
Change-Id: I8895c35f84d545dba45bffff13bc4147ae53eaab
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
We know the size, so use it instead of allowing QVector to reallocate.
Change-Id: I2d18c30ef0d050326bb03c54da61459c40eb7af6
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Similar to 46b2c74eaf, skip the translations at
all costs. They allocate, and are very expensive. To ensure we try harder to
skip them, also avoid checking styles at all unless one has been provided.
This increases delegates_text from 209 items to 221 items for me.
Change-Id: Ia18b07de7b48cee356e9506a0c5d7129621d79d2
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Currently QDBus relies on a key in QMetaClassInfo to understand the DBus interface name.
This patch allows QDBus to also use a specified interface name in the registerObject call
instead of relying on QMetaClassInfo that might not be there (if the QObject was created
in QML or Javascript for example).
Change-Id: Ie02b2c67e7deb07f43e35eb166c11833fcbf38f3
Task-number: QTBUG-44074
Reviewed-by: Kevron Rees <kevron.m.rees@intel.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is a no-op change. It doesn't improve or worsen the code at all.
Change-Id: Ifd5273842370ca9bce0ed74f2f2d54d453797948
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Linux's socket(2) system call can take SOCK_NONBLOCK and let us avoid
the extra two fcntl(2) to change the setting after it's created.
Change-Id: Ie0d7a2d51acc21acd850cbee6d0f76e27b1ae859
Reviewed-by: Richard J. Moore <rich@kde.org>
QJsonObject requires that, since it does binary searches for the keys.
Change-Id: I8a7a116f51864cecb52fffff13bc24660c1cc1ac
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Make sure touches that were already released on an earlier
SYN_REPORT are not re-marked as TouchPointStationary.
This change has no effect on type A event processing since there
the contact state is never zeroed.
Change-Id: I2d4d705d2b3fae424b6245a75d4015dc2d86ad35
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
backtrace_symbols is very slow because it tries to find the function
name from the address. In order to do that it needs to do a linear search
over all symbols. (Because the hash table goes the other way to find the
address from the symbol name)
The code is going to skip a few frames from QtCore. Since we cannot know
how many, we take a few more than necessary.
This patch changes the additional number of frames from 15 to 7
(Usually, there are about 5 suppressed frames).
We call backtrace_symbols several times for only one frame at the time.
So we are not looking up addresses we don't need after we printed the
right number of frames.
Calling many times backtrace_symbols means we do more malloc, but that's
negligible compared to the time we save. We anyway do a lot of other
allocations because of the regexp operations and such
So this patch is then saving about 10 frames lookups which allow to print
about 6 qDebug per miliseconds instead of only 2 when using %{backtrace depth=2}
Change-Id: Ic6ece2145d53dc570c80fcb0e4455dcef6bc40cb
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Don't use index-based iteration, but use iterators assigning
end() to a variable.
Change-Id: Ia87532349855fa3baa748b62224fc8adf3395dc0
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
- Add support for reading out feature lists from GPU bug lists
in Chromium format (supporting OS + version, exceptions lists,
device ids and vendor ids).
Add a overloads allowing for passing file name,
data or JSON documents.
- Test reading in tst_qopenglconfig
- Prototypically have the Windows plugin read the file
from the environment variable "QT_OPENGL_BUGLIST" and
turn off renderers depending on the standard keyword
"disable_d3d11" and newly introduced keywords
"disable_d3d9", "disable_desktopgl".
- QT_OPENGL_BUGLIST can point to an absolute or relative
path, in which case it is resolved via QLibraryInfo::SettingsPath
and QStandardPaths::ConfigLocation.
[ChangeLog][QtGui][Windows]
Introduce experimental feature allowing the user to specify
a GPU driver buglist with some additional keywords to chooose
the GL renderer backend depending on GPU.
Task-number: QTBUG-43263
Change-Id: I8c20b0e8ee3cf575b91d0672bf405c42d3e9fb64
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
It wasn't Q_DECL_EXPORT'ed, and there is no other user in QtCore.
Effects on Linux GCC 4.9 stripped release builds:
text -344B
data +-0B
relocs +-0
Change-Id: Iea0577d58057a145f87a00ec33995d03bacd4f88
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
...instead of rolling a new one on each use.
Effects on Linux GCC 4.9 stripped release builds:
text -156B
data +-0B
relocs +-0
Change-Id: I49e20ea859928d010990fc7a22545dbc1ef106ec
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Help the compiler by building the new status flags in a local
instead of a member variable. Enables value tracking for that
piece of data across several non-inline function calls, leading
to less redundant reads through this->.
Effects on Linux GCC 4.9 stripped release builds:
text -248B
data +-0B
relocs +-0
Change-Id: I2db21439464ad0fff8163a908de3b15df7c4ab6d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Apparently, determining that constant at compile time is a bit too much
work for GCC.
Effects on Linux GCC 4.9 stripped release builds:
text -276B
data +-0B
relocs +-0
Change-Id: I23144e64d57e3a2e1061e69b20f2b72575c273d8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
The short month names all have length 3, so store them in a multi-
dimensional const char array instead of as a pointer table.
Effects on Linux GCC 4.9 stripped release builds:
text -196B
data -64B
relocs -12 (est., somehow relinfo.pl reports nonsense on QtCore)
Change-Id: If5f83e4f1eb5ba0b0f54b4144abec8b88fb8529f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
On Haiku the '/' filesystem is a pure namespace to mount
in the actual root partition (/boot), and therefor returns
0 for free/available/total bytes.
Change-Id: I60d4786389e01ee271f6cd1aba6f96b19e6a828f
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Use Haiku's BVolumeRoster API to provide information
about available mount points in QStorageInfo.
Change-Id: I058bbb5f3f33372edc55d3e51079d3e16815f29f
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It has been only an accessor until now.
[ChangeLog][QtGui][QScreen] added devicePixelRatio property
Change-Id: I3b9d0aed437cc11a8ddb5b601dd8db6ed5ca9748
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
also update some broken links while we are at it ...
Change-Id: I9707a01b01be82e229c8f135c9ae093d73fd1204
Reviewed-by: Martin Smith <martin.smith@digia.com>
Remove the ia32 data since there are no linux x86 machines in
the CI system (which makes the data useless from an automated
testing point of view) and most people use x64 these days anyway.
Change-Id: Ifdf8850767869eb2706e2a9d6396314d1fb25500
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
This operation is the exact opposite to QQuaternion::fromAxisAndAngle()
(so that it is a way to extract the axis and angle values suitable
to create the same quaternion via QQuaternion::fromAxisAndAngle()).
Change-Id: I41fda58f5fb2b867cccd6b2faf58ab671fa070da
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>