Enable switching application to fullscreen mode. This is mostly required
for desktop targets of WinRT.
Task-number: QTBUG-54517
Change-Id: I67e4020bc2ec8da86d94815e5765959f4ae2b63f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
The if-condition was broken, so items weren't removed from
the container as appropriate. Accessing such dangling items
caused a crash later on exit.
Task-number: QTBUG-54432
Task-number: QTBUG-54462
Change-Id: I98fd9f29a93d72e3e4a8f0fb6bac40ad4728ba6f
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
After the Anniversary update of Windows 10 (update 1607), color fonts
using the Adobe/Mozilla format with embedded SVGs are detected as
color fonts by DirectWrite, but they do not contain any colored layers.
The result of this was that we would no longer draw these fonts using
the pen color, but we would also not support the colored glyphs in the
fonts. In order to still support using these fonts as regular
monochromatic fonts, we check if there is actually a palette in the
font file before registering it as a color font.
[ChangeLog][QtGui][Windows] Fixed rendering Adobe/Mozilla format
color fonts with other colors than black after Windows 10 Anniversary
update.
Task-number: QTBUG-55097
Change-Id: I8d74787e49530d1167b9f2533ffdf7ab814c3358
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Add option "nodirectwrite" to turn off DirectWrite fonts
and "nocolorfonts" to turn off DirectWrite for colored fonts.
Task-number: QTBUG-55096
Task-number: QTBUG-55097
Change-Id: If12133fbd20dc7657b3616eff833a8e8c116e070
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Move the code from QtWidgets/QFileIconEngine into a new class with
virtuals in QtPlatformSupport so that platforms can reuse it.
Prototypically use the class in the Windows and macOS QPA plugins.
Remove QPlatformTheme::fileIconPixmap() and change the type
of the hint QPlatformTheme::IconPixmapSizes from QList<int>
to QList<QSize> so that it fits better with the icon code.
Change-Id: I580e936f3507218757565ca099272cd575b3a779
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Specify the display to use by setting environment variable
QT_QPA_EGLFS_DISPMANX_ID Possible values are :
0: MAIN LCD
1: AUX LCD
2: HDMI
3: SDTV
4: FORCE LCD
5: FORCE TV
6: FORCE OTHER
Change-Id: I146db9a7f423bd4c6c1716c64d3df4d2388e85f9
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
The warning printed when wrapping foreign windows is
missing a parameter. Amends change
f2ef587906.
Task-number: QTBUG-41186
Change-Id: Iefbd174c1acc42e87fd1a764d96452b1745aa4c0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Emoji characters as input by the virtual keyboard are received
as a sequence of surrogates. Store state internally when a high
surrogate is received and send off the sequence when the matching
low surrogate is received via input method.
Task-number: QTBUG-50617
Change-Id: I91e763ec3e0747d6852f7c5c2057a67b0c24e0f5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Changes the lookup of the canonical "english" font name, so that also
corresponding style-name and preferred names can be found.
This patch does not use that extra information, and should not change
any behavior.
Change-Id: I40805f81e6b35dcc98f9459c5cf96f13a8d789f2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Now that QCocoaMenuLoader is a singleton, we can access
it the natural way. In all cases, it already needed to
be done in an Objective-C file, so it doesn't change
anything from this point of view.
Furthermore, we decide to remove private accessor APIs
in QCocoaApplication and QCocoaApplicationDelegate which
are now redundant.
Change-Id: I4190ed2e2536b778482c513727e279c9318acb7e
Reviewed-by: James Turner <james.turner@kdab.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Conflicts:
configure
5.7 now supports clang on android; but dev re-worked configure
src/gui/kernel/qevent.h
One side renamed a parameter of a constructor; the other added an
alternate constructor on the next line. Applied the rename to both
for consistency.
tests/auto/tools/moc/tst_moc.cpp
Each side added a new test at the end.
.qmake.conf
Ignored 5.7's change to MODULE_VERSION.
configure.json
No conflict noticed by git; but changes in 5.7 were needed for the
re-worked configure to accommodate 5.7's stricter handling of C++11.
Change-Id: I9cda53836a32d7bf83828212c7ea00b1de3e09d2
Running QWidget or other raster window-based apps with
QT_QPA_EGLFS_ROTATION=180 will now flip the screen as expected.
In addition, 90 and -90 are supported too. These will affect the
reported screen geometry as well.
The OpenGL mouse cursor is repositioned and rotated accordingly. For
true OpenGL content the rotation is ignored. Hardware mouse cursors
(DRM) ignore it as well for the time being.
[ChangeLog][Platform Specific Changes] QWidget-based applications
running on the eglfs platform plugin can now request 180 or 90 degrees
rotated output by setting the QT_QPA_EGLFS_ROTATION environment
variable.
Task-number: QTBUG-39959
Change-Id: I3570b515d0233c6c6a0e813899b935ee222eab62
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
In Android 7, some fonts are packed in .ttc files. We fix this
simply by including them when populating the font database.
Freetype supports this and in fact,
QBasicFontDatabase::populateFontDatabase() also adds *.ttc.
[ChangeLog][Android] Fixed CJK font resolution on
Android 7.
Task-number: QTBUG-53511
Change-Id: Iebe51b0e6ba2d6987693306cd9a12013ce886b58
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Change QOpenGLTextureBlitter to be a public API, as it was originally intended.
There are now significant external uses outside qtbase (C++ compositor examples
in QtWayland), and the API is considered proven enough.
[ChangeLog][QtGui] QOpenGLTextureBlitter, a utility class to draw textured quads,
has been made public.
Change-Id: If7a2c94e1494195e2aa375d214932fa7b4c78321
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Windows with "Qt::BypassWindowManagerHint" flag can't be activated by
mouse. They can be activated only from code calling "activateWindow()"
or "requestActivate()" methods.
The patch applies also for "Qt::ToolTip" and "Qt::Popup" windows which
have implicit "Qt::BypassWindowManagerHint" flag.
The patch fixes some major issues:
- don't activate tooltips on mouse press - this causes that Qt "thinks"
that original windows loses its focus causing e.g. that text cursor
stops blinking,
- don't activate X11 tray icon - this causes that the active window
looses its focus by clicking tray icon.
The patch restores the Qt4 behavior.
Task-number: QTBUG-53993
Change-Id: I80b226f2f5ea0ebbfe8922c90d9da9f4132e8cce
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Change window creation code in QWindow to not assert should
platform window creation fail for foreign windows.
Prototypically add check to the Windows QPA plugin.
[ChangeLog][Windows][Important Behavioral Changes] QWindow::fromWinId()
may return 0 when passing invalid window handles.
Task-number: QTBUG-41186
Change-Id: I936112607ec6e0838d36ac2a72aa88b869df5c23
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
User Input events flushed out by those calls have been observed
to cause crashes.
Task-number: QTBUG-39842
Change-Id: I950b80f2863def5b28e9fe46ef2b73aa6db2592f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
'Orphan' popups were already partially fixed as a side-effect of
10126b37d2 (orphan since the 'parent' is moving
but popup stays in a now wrong position).
This patch also tries to fix the case when a window closed.
Change-Id: I0bbf474ab4f3b845d8bd337dae2abbae23192d0e
Task-number: QTBUG-46262
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Conflicts:
src/corelib/io/qtemporarydir.cpp
One side encapsulated a repeated piece of #if-ery in a local define;
the other added to the #if-ery. Made its addition to the other's.
src/corelib/kernel/qeventdispatcher_unix_p.h
One side moved some members into a struct; this collided with a #undef
check that neither side now has. Discarded the #undef part.
src/gui/opengl/qopengltexturehelper_p.h
5.7 deleted a bunch of methods; not clear why merge got confused.
src/tools/moc/moc.cpp
One added a name to the copyright header; another changed its URL.
Change-Id: I9e9032b819f030d67f1915445acf2793e98713fa
When the mouse wheel step is set to "Scroll one screen", querying
SPI_GETWHEELSCROLLLINES returns the special value unsigned(-1). Return the
default instead of converting it to int in that case since Qt does not
implement it.
Task-number: QTBUG-52384
Change-Id: I793e5c09103fe0c7c4a378aba97e9f63ae1c2f35
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
QMacPasteboard's dtor skips LazyRequest promises and this leaves pasteboard
manager in broken state, since we release the pasteboard itself
of the next step in destructor. As a result, not only Qt's app doing D & D
(and thus via QCocoaDrag creating a stack-allocated QMacPasteboard) can die
suddenly when somebody inspects a pasteboard, this 'somebody' ... can also
die amazingly. So now we DO resolve promises using PasteboardResolvePromises
(but we also preserve the original intent of not providing or providing empty
data for lazy requests).
Task-number: QTBUG-54663
Task-number: QTBUG-54832
Change-Id: I3ce90bd0a012dd3cbb30c93b2b17dce9473acb28
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
In MySQL, the character set named utf8 uses a maximum of 3 bytes
per character and contains only BMP characters.
It does not support supplementary characters.
In version 5.5.3, a new UTF-8 character set called
utf8mb4 has been introduced, which supports 4-byte characters.
[ChangeLog][QtSql][QSqlDatabase] When connecting to a MySQL server
whose version is 5.5.3 or higher, the default connection charset
is now utf8mb4 instead of utf8 to allow 4-byte UTF-8 encodings.
Change-Id: I718bd23212afd67367b39d4ce7da2a99ae0f1cca
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
This seems to be a leftover from pre-QPA Cocoa menus time.
Change-Id: I1bcfb3a882f500a63a5dec0fbe01f4541e14d54a
Reviewed-by: James Turner <james.turner@kdab.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
In some auto-tests, we create several instances of
QGuiApplication (though seldom, if ever, simultaneously).
However, the QCocoaMenuLoader instance was never properly
deallocated, resulting in NSApplication.servicesMenu
to still be assigned. This resulted in an exception being
raised (NSInternalInconsistencyException) the second time
we would construct a QCocoaMenuLoader.
The CPU cycles saving solution is to make QCocoaMenuLoader
a singleton. This approach is also safe since this class'
initialization doesn't depend on any state in QGuiApplication
(even the application name is fetched from either the main
bundle or the app's args).
This also allows us to clean up some code in QCocoaApplication
and QCocoaApplicationDelegate who have suffered from lack of
attention over the years.
Change-Id: Ic4c859d628ab8abd9b469b99c64293582f8e363d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Since 10.6, the first menu is always identified
as the application menu. See remark about Nibless
apps and the application menu in,
https://developer.apple.com/library/prerelease/content/releasenotes/AppKit/RN-AppKitOlderNotes/index.html
Therefore, we can get rid of the NIB file together
with the loading logic we had in place (and which,
incidentaly, was using deprecated API).
Change-Id: I99bf0e9d8ea749a9be9295fa12602335abc6548e
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Most APIs related to ProcessSerialNumber have
been deprecated since 10.9.
Change-Id: I6be5ae92cfe2c8f80d557af6c6a79c0cd016ba90
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
The delivery of hover events creates unnecessary overhead on touch
platforms. This allows Qt Quick Controls 2 to determine whether the
underlying platform wants hover effects. The hover effects are enabled
by default for the classic desktop platforms: Linux, Windows & macOS.
Change-Id: Ia4e7b5c0fcb7af8f1c47e06fb28086cffdf35976
Task-number: QTBUG-50003
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Since Android 5.0 Google introduce a nasty bug[1] which calls
JNI_OnLoad more than once.
Basically every time when a library is loaded JNI_OnLoad is
called if found, but it calls *again* JNI_OnLoad of its .so
dependencies! So, JNI_OnLoad of libQt5Core.so gets called may times,
this is not a problem as long as it's called from Qt's java delegate
class loader. The problem is that the application .so file *must* be
called from default class loader to allow the user to find his custom
Activity/Service stuff.
[1] Workaround https://code.google.com/p/android/issues/detail?id=215069
Change-Id: Ia71209658ef56056b560018597608acf7cb0f9ea
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
emit missing updateCompleted() in some conditions after
QNetworkConfigurationManager::updateConfigurations() is called.
* There is no wifi devices.
* The wifi device returns error when scan is called.
Change-Id: I2668644249a0584bf43efea95348424aa64ab4a6
Reviewed-by: Lorn Potter <lorn.potter@canonical.com>
Conflicts:
qmake/library/qmakebuiltins.cpp
qmake/library/qmakeevaluator.cpp
qmake/library/qmakeevaluator.h
qmake/project.h
QMakeEvaluator:
* evaluateConditional(): one side changed return type, the other
changed a parameter type.
* split_value_list(): one side changed a parameter adjacent to where ...
* expandVariableReferences(): ... the other killed one overload and
changed the survivor
src/corelib/io/qlockfile_unix.cpp
One side changed a #if condition, the other moved NETBSD's part of
what it controlled.
src/corelib/tools/qdatetime.cpp
One side fixed a reachable Q_UNREACHABLE in toMSecsSinceEpoch(), the
other moved it from the private class to the public one, in the midst
of the "short date-time" optimization, which confused diff entirely.
One side changed a QStringLiteral to QLatin1String, the other rewrote
adjoining code.
src/network/kernel/qauthenticator.cpp
Both rewrote a line, equivalently; kept the dev version.
src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h
One side changed #if-ery that the other removed.
tools/configure/configureapp.cpp
One side added a check to -target parsing; the other killed -target.
tests/auto/testlib/selftests/expected_cmptest.lightxml
tests/auto/testlib/selftests/expected_cmptest.teamcity
tests/auto/testlib/selftests/expected_cmptest.txt
tests/auto/testlib/selftests/expected_cmptest.xml
tests/auto/testlib/selftests/expected_cmptest.xunitxml
Regenerated using generate_expected_output.py
I note that quite a few other expected_* come out changed, now.
There was no git-conflict in
src/widgets/kernel/qformlayout.cpp
but it didn't compile; one side removed some unused methods; the other
found uses for one of them. Put FixedColumnMatrix<>::removeRow(int)
back for its new user.
Change-Id: I8cc2a71add48c0a848e13cfc47b5a7754e8ca584
Conflicts:
qmake/library/qmakeevaluator.cpp
One side changed the iterator to use ranged-for, the other changed its
body; they only conflicted because the latter had to add braces around
the body, intruding on the for-line. Trivial resolution.
Change-Id: Ib487bc3bd6e3c5225db15f94b9a8f6caaa33456b
Emit a warning when the function is called before show()
as it does not have any effect in that case.
Amends change 69839e55c1.
Task-number: QTBUG-41309
Change-Id: I7c2bb21735d8e41d525c5e00213b0e278ae5c774
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Previously, QWindowsTheme had a hardcoded list of of available file icon sizes.
As the sizes depend on the Windows display scale factor, this can lead to
undesired scaling of icons.
Maintain an array of the standard sizes against which the sizes are
matched; refresh in display change.
Task-number: QTBUG-54561
Change-Id: If36de2f30c8a230cc7bd8eeb4dfc9f201aeda5e4
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
After initialization bsdkeyboard and bsdmouse didn't notify
QInputDeviceManager about new input devices so parts of Qt that relied
on these notifications (like QFbCursor) were not aware about new
functionality.
Set number of keyboard/pointer devices to 1 when bsdkeyboard and
bsdmouse plugins successfully initialized
Change-Id: I440826d2b7f3653fd43e58df8239346ba1e8a223
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
... and re-use them in QImageReader, QJpegHandler, QPngHandler.
Change-Id: Iec89e47205f3c420e1e7eb4a2d3c1fbfe887fd8c
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Another one of Cocoa's capricious behaviors. Evidence shows that
the menu item's submenu property needs to be set before we can
set the item's hidden property. We ensure this is the case by
getting the NSMenuItem through QCocoaMenu::attachedItem() instead
of QCocoaMenuBar::nativeItemForMenu() in QCocoaMenuBar::syncMenu().
Change-Id: Id50356dae5f556fa3d745ba9a5982e5a72bf0ac2
Task-number: QTBUG-54637
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Jason Haslam <jason@scitools.com>
if the environment variable is set, but the buglist file cannot be found,
we should fall back to the built-in buglist instead of not using any.
Change-Id: I370a1f21238efd155b46f0e7071734f5d3c6c343
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
QScopedPointer deletes with delete, but a pointer returned from
new[] needs to be deleted with delete[].
Fix by using QVarLengthArray instead of QScopedPointer(new TCHAR[]).
Change-Id: I2f1f252379a9ac1ee919901b5efcec9cec31261e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Change-Id: I606c865e980b8ab8a8027c4b6d322c0bbd05c992
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Lorn Potter <lorn.potter@canonical.com>
Because the QMenu::aboutToShow() signal is emitted
way after -[QCocoaMenuDelegate menu:updateItem:
atIndex:shouldCancel:], we miss the opportunity to
attach the submenu to the menu item.
The solution is to track the "open" state of the
NSMenu. Then, if any submenu item gets added while
the NSMenu is open, then we immediately attach the
native item to the menu.
Change-Id: I1f3a84ed3832520344da07e06cb3483ad6bd4ffd
Task-number: QTBUG-54633
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Replace it with QL1S in QStringBuilder expressions
and in overloaded functions.
Replace patterns 'QString::number() + QStringLiteral'
and 'QStringLiteral + QString::number()' with
QString::asprintf.
Saves some text size.
Change-Id: Ib39b2332264dfc3df04e77f2c101b47a1030cef4
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It is possible for a screen to be disconnected while it is doing an
update of the available screens. Therefore before returning the pointer
to the screen then it should be rechecked that the index is still within
the range of available screens.
Change-Id: Iaa08070e79a72cb309d8a24cea786a5dccf6b719
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
when qtbase is configured with -fontconfig and -system-freetype.
This fix is necessary after 060e0f6628.
Used the same approach as in 16864c42d6.
Change-Id: Idece0dc11d89e38266c95de1769be751c06324ef
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Not only these functions are never called, one of
them also calls deprecated APIs.
Change-Id: I172043b7059316e029a853e48e7f22f08e2a8b69
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
After change 14efcaa392, foreign
windows no longer have a corresponding QWindowsWindow. This should
not block wheel events when checking for blocking modal windows.
Amends change 14efcaa392.
Task-number: QTBUG-54430
Change-Id: I1ac87445844946bafc214024e27da08c4f884d79
Reviewed-by: Tim Blechmann <tim@klingt.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Non-top level raster windows still have screen windows associated
with them though they are not intended to be visible.
This causes problems if they have children (as they do when QGLWidgets
are used) since their children will also not be visible.
So, if we have a window with a parent, force them to post but set the
transparency to discard so they remain invisible.
This allows the example hellogl_es2 to run correctly.
Change-Id: I67e24dc59b29ce789376498c2477349fa50020e1
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
I don't think fae8ee8b42 was enough. I've
started getting small fonts in Qt Creator under some other
circumstances.
Change-Id: I1cc7601489634e96833cfffd1456caea823aa84a
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
The condition
iconType != kGenericApplicationIcon
is never false, therefore we will never execute
the else statement. Consequently, overlyaIcon
will always be null.
This was triggered by the deprecation of
ProcessSerialNumber related APIs since 10.9.
Change-Id: If9eec1d2cc6e7e5b0c5323d4550f0c823a5eb0d8
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Move those to the equivalent {to,set,from}SecsSinceEpoch(), except for
the cases that did QDateTime::currentDateTime{,Utc}().toTime_t. Those
are best implemented with QDateTime::currentSecsSinceEpoch().
Change-Id: Ib57b52598e2f452985e9fffd145a366c92cfda20
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
On tvOS the system will deliver UIPress events for touch gestures on the
remote such as pressing up, down, left, or right, as well as for the
dedicated hardware buttons, such as menu or play/pause. We deliver
these as Qt key events when possible (the siri, volume and home button
can't be handled).
Change-Id: Id4bd4960e3036a7b8b67cf5b9e9d653f233dc4af
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
bsdmouse implements basic and extended level of psm(4) protocol. On
extended level only x and y coordinates are used. Plugin specification
is device filename, default value is /dev/sysmouse.
bsdkeyboard implements keyboard input for raw terminal mode. Plugin
specification is device name, normally /dev/ttyv[0-9], if not provided
STDIN file descriptor is used.
[ChangeLog][Platform Specific Changes] Added bsdmouse and bsdkeyboard
input plugins for FreeBSD.
Change-Id: I3c7b6f5cc22b4f1e405d56efc8b7ef2daa1dac74
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
This will allow dropping of files from Qt applications to applications
like Skype, which only accept "text/plain", but not "text/uri-list" or
"text/x-moz-url".
Task-number: QTBUG-53238
Change-Id: I01bca5c8e20647cedfc9323f542ab07f0cc48658
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
There was a leftover function for loading EGLFS device integrations
from the time before device integrations were plugins.
Change-Id: I88606d14f773f4cf9f68e0341044e8281ed86442
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Calling `xkb_state_update_mask` with correctly set `depressed_mods` allows xkb to
return keys on level three or above (and not the equivalent level one key).
To preserve level two shortcuts (return equivalent level one key)
`depressed_mods` gets only set, if the pressed key is on level three or above.
Example shortcuts which now will work:
Shortcut German Layout (de) [AltGr is a level three switch]
Ctrl+@ Ctrl+AltGr+Q
Shift+1 Shift+1 (as before)
Shortcut German Neo Layout (de neo) [1] [AltGr is a level five switch]
Left AltGr+S
[1] http://neo-layout.org
Task-number: QTBUG-53121
Change-Id: I637a01edc9f2f92a5d3e7a24f5051fb1d3ac2f7f
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Point to the README.md of the project; the old URL
http://code.google.com/p/angleproject is now redirected
to the bugtracker.
Change-Id: I293fc150d5b6c08f16effe8921010050faa264b5
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Silence warning in case DPI awareness was set externally unless
debug is enabled.
Task-number: QTBUG-54416
Change-Id: Id48769e3d4be3047f582e331633905c640930f21
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Send synthesized expose event while shrinking the QWindow. This fixes
the regression which can break some applications which need the paint
events while shrinking the QWindow.
Added auto test.
Task-number: QTBUG-54040
Change-Id: Iaa992abba67f428237fa12c6cae56592b8fcadb0
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
There was some leftover code that used qt_conv16ToRgb from Qt 4.
Change-Id: If34df00c828ae749d59824ad055e0e82928af9a8
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Plugin failed to build with clang due to missing Q_DECL_OVERRIDE
Change-Id: Idad54f3f0ea7403c388b39189d86cfab10f9fb04
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
The VNC platform plugin is a port from the 4.8 code, which only
supported embedded Linux. Right now that is the only platform this is
tested with so unless there is a need for other platforms to be hosting
applications over VNC we should limit it to only being built on unix
platforms that are not Android, or Darwin.
Change-Id: I49407669ee8ca6e9e3ed95b5bb350c7730839cf8
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
There were many development debug statements still intact, so now they
have been removed. Some Debug messages were turned into Warnings when
it makes sense to warn the end user of something. The rest of the
useful debug messages were converted to be in the qt.qpa.vnc logging
catagory.
Change-Id: I8e9525f02794ab5eccd4c8fcbc2b1f7c9c25b482
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
It is now possible to specify a port number to run the VNC server on, as
well as the screen properties:
Logical Size
Physical Size
Depth
Change-Id: I79b38c6e37ad5abb5e158eca9a17d7e8a86e692f
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Previously it was only possible for one client to connect at a time.
Now it is possible for multiple clients to connect to the VNC server and
view and interact with the application.
Change-Id: I886583a3abea2955367bf2da490127b041b5c5fb
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Client side cursors are a major performance optimization,
avoiding the need to transmit images to the client
just because the cursor has moved.
Change-Id: Icdf4ff948571d39d82c86d251bca46390889d02f
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Make sure we receive key events from the VNC client and
forward them to the app through the QPA interface.
Change-Id: I8d44d614670ec753e35ff36fa3ef2d74b07f4bbc
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
The basics work and the VNC client is showing pixels
Change-Id: Ie31efce2f31dd5f57af209dcc9c8f9aace730afd
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
The workaround may cause flicker, so only use it when necessary.
Task-number: QTBUG-7865
Change-Id: I813aa0669727303bc947a85a8893a90f29d3ff24
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
The logging category symbol clashed when linking applications with both
kms backends present.
This is no longer an issue in 5.7 where the symbol is in the shared kms
support lib, but for 5.6 we need to use a different symbol name.
Change-Id: I3c323109d6c498e044289455b3d31567a4d5928c
Reviewed-by: Ralf Nolden <nolden@kde.org>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
We previously treated Qt::ApplicationStateInactive as a valid state to
expose windows in, to prevent a visible flash of black screen at app
startup between iOS hiding the launch screen and Qt drawing it's first
frame, but this lag is no longer an issue, so we can apply the best
practice of only rendering during Qt::ApplicationStateActive. This may
prevent crashes during application suspension.
Task-number: QTBUG-52493
Change-Id: I271281ed6fb857e6849cdb88cc2d8251d1bba1df
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Call currentFont() only once. It does a conversion from a Pango font
description string to a Qt font, so not entirely trivial operation.
Change-Id: Ic67b7c5b0874621c51a5cce4766acd4243d3dfde
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
GTK does not emit the "color-activated" signal as expected, so make
sure currentColorChanged() gets emitted the same way it's done for
QGtk3FontDialogHelper. This ensures that QML bindings get re-evaluated
as appropriate.
Change-Id: Id00f144e8b9a08afee57ef6a6033972cdc4307b0
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
UIScreen.applicationFrame is not defined at all on tvOS.
Was broken by 88ebee5cd7
Change-Id: I692f464d538561961b40a6fbdcab51a3320e5779
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
And blacklisted a few tests in tst_QUdpSocket.
Conflicts:
src/android/jar/src/org/qtproject/qt5/android/QtNative.java
src/corelib/global/qglobal.cpp
src/corelib/global/qsystemdetection.h
src/corelib/io/qfileselector.cpp
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp
tests/auto/network/socket/qudpsocket/BLACKLIST
Task-number: QTBUG-54205
Change-Id: I11dd1c90186eb1b847d45be87a26041f61d89ef6
error #3781: comparing a pointer to void and a pointer to a function is nonstandard
Change-Id: Ib57b52598e2f452985e9fffd1458fd651d3985d2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Currently TuioTouch plugin reports touch areas of size 1x1.
It's inconsistent with the platform plugins which report
empty touch areas when their size is unknown.
Change-Id: I253e4f7a95e8fb3ecc76c809a9be2afe3c976bef
Reviewed-by: Ariel Molina R <ariel@edis.mx>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp: In member function ‘bool QEglFSKmsEglDeviceIntegration::setup_kms()’:
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp:391:28: error: ‘encoder’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
m_drm_encoder = encoder;
^
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp:392:29: error: ‘connector’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
m_drm_mode = connector->modes[0];
^
cc1plus: all warnings being treated as errors
Change-Id: Ic444450d06a6dd8047bd6871febb08a4a3fde6f9
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
When using threaded rendering the render-thread might be half-way into
rendering a frame when the application is backgrounded, resulting in
the following swap happening on a non-exposed window. This may result
in the system killing the application, as rendering is not supposed to
happen when an application is backgrounded, so we skip the flush.
Change-Id: I9ab8f2c4617391fd827558af9fb473f1734b3688
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Using dispatch_async to deliver the initial application state at startup
was broken, as that would leave the application in the default application
state, inactive, until the next runloop pass. This became a problem when
an application was started backgrounded, eg. in response to location
updates or a Bluetooth accessory waking it up, as it would have a small
window of time at startup where it would think it was able to render
content (since the window was exposed), while in fact the application
was running in the background. iOS will in these situations kill the app
for doing background rendering.
Change-Id: I1ab4a6af08a154d8625c6451b4b5c8f4453e6b43
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
During device rotation, the backing CEAGLLayer of our custom UIView is
resized by the system. Normally this is the time where we would then
reconfigure the corresponding renderbuffer that we render to, which
shares memory with the CEAGLLayer, but we chose a lazy approach where
we'd defer the reconfigure until client code actually called makeCurrent.
This caused problems because not only did we implement the lazy reconfig
in makeCurrent, but in every QIOSContext function that operated on the
default FBO, including swapBuffers(). When using threaded rendering,
such as in Qt Quick, the render thread may be half way in rendering a
new frame when the system resizes the CEAGLLayer, and we pick up that
resize on the swapBuffer call and allocate a new renderbuffer, before
flushing the queued up GL commands that were operating on another
renderbuffer of a different size. This resulted in the following crash:
0 - gpus_ReturnObjectErrorKillClient()
1 - gpusSubmitDataBuffers()
2 - glrFlushContextToken()
3 - flush(__GLIContextRec*)()
4 - QIOSContext::swapBuffers(QPlatformSurface*)
...
We solve this by still being lazy in how we reconfigure, but limit the
reconfigure to makeCurrent(). If the CEAGLLayer is resized in between
two frames, we skip the half-drawn frame. The old frame will then be
scaled to match the new size by the system, but this is preferable to
flushing a new frame that may have been drawn with two conflicting
window geometries.
Task-number: QTBUG-50017
Change-Id: Ie229f26d156dfbfc7ed8d9efd0eb5e992eee73f1
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Improves performance over the default timer-implementation, and allows
us to control the rate and paused state of the display link.
Change-Id: I05761b6eb48f5e91af35735e2faa477427cd8440
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
this apparently makes no difference except for not creating bogus .prl
files - presumably, the correct path is coming from somewhere else
already.
Change-Id: Ia3f3c44e506ba14b533ff097f05acecf1e86cfb3
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Currently TuioTouch plugin reports touch areas of size 1x1.
It's inconsistent with the platform plugins which report
empty touch areas when their size is unknown.
Change-Id: Iea8ad38a5712b666126780411380d963877b0229
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Ariel Molina R <ariel@edis.mx>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
If QT_NO_TABLETEVENT defined, then there is no sense to create tablet
events.
Its better to create general touch events in this case.
Task-number: QTBUG-53887
Change-Id: I2fabc2241158d54d6c39a2f6071ab874f7debd39
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
NSWindow does not support 'utility window' style, but NSPanel - does.
If we first create a normal widget, then later make it a Qt::Tool,
we still have NSWindow with (now) invalid 'floating panel' window level
(but no 'utility window' style) - it's a window that stays on top even
when we switch to a different application.
Change-Id: I691bc6f681cdf8bc2a9637444da33e7e6200ee2f
Task-number: QTBUG-45938
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
QGtk3Menu provides native stand-alone context menus, which is not
covered by the recently introduced QDBusPlatformMenu (limited to
global menubars and system trays).
Change-Id: Ida42ebaf69444e6b3150dc0ccf9b44e80cf71c20
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
The refactoring in ec4eb4db61 contained some
typos, apparently.
Change-Id: I92b24750f498b2548ef0668839c3db21d5a0e320
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
More explicit that we're falling back to m_geometry on non-iOS platforms.
Change-Id: I09bd5270aee5edb977983893a8407218eea0f74a
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
The fromCGPoint function was left out for QSize, as the foundation type is
using CGFloats internally. Clients should use an explicit QSizeF::toSize()
when potentially throwing away precision.
Change-Id: I12d43ae0881f09ad8d79f2caaa000c3983f4ef30
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
The fromCGPoint function was left out for QPoint, as the foundation type is
using CGFloats internally. Clients should use an explicit QPointF::toPoint()
when potentially throwing away precision.
Change-Id: I12a37e8f81c86b7ada56066cc18ee29709cc21e3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
[ChangeLog][QtGui][Platform Specific Changes] Added bsdfb
platform plugin for FreeBSD. Plugin renders directly to
framebuffer, no hardware acceleration supported. bsdfb accepts
"fb", "size", "offset", and "mmsize" arguments with the same
format as linuxfb.
Change-Id: I5f5cea0b5ed70d5c6f8d01dc547f54c731bcae5f
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
The fromCGRect function was left out for QRect, as the foundation type is
using CGFloats internally. Clients should use an explicit QRectF::toRect()
when potentially throwing away precision.
Change-Id: I0d4c5c5a4e6a45ea3287e3f37a00b69b0bfdefcf
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
The Apple documentation explicitly says that you should call super
when implementing these methods.
Change-Id: I584bb140a4a5bde88927b379ab19158a78c6fea9
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Don't set transient parent property when Qt::Window flag is set.
Delete transient parent property if a window doesn't have a transient parent.
Force setting standard window flags for Qt::Window only if there are no other
flags.
Amends 98c10a02c5
Task-number: QTBUG-52550
Change-Id: I68ee715b632487e9dd0e7ffbbfc0c2cdd0f0e151
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
While probably valid, these warnings are beyond the
user's control, and more likely a sign of Qt's own
expectations or misbehavior. So, we should not annoy
the users with them.
This change introduces the same logging category as
3ee01f7403 in 5.7 as is a partial backport to
simplify a subsequent 5.6 to 5.7 merge.
Change-Id: Ica2e3b1c5bc372923fd823b5d7d537d319835685
Task-number: QTBUG-42846
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
The current implementation of drag and drop requires Redstone 2 Update
(SDK version 14322) to be fully functional. The API is limited for
previous versions.
However, this mostly affects passing allowed operations between sender
and receiver, the rest is mostly functional still.
Once RedStone 2 is out (estimated July 2016) we can bump the minimum SDK
version to 14322.
Task-number: QTBUG-50827
Change-Id: I5bab9d36a228d68c1809c241a64168d48c353335
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Now that the minimum deployment target (and thus SDK) is 10.9 for OS X
and 7.0 for iOS, all code paths affecting platform versions lower than
the aforementioned are removed.
Change-Id: Id985c7259c4ac069319d88f2c29c9559ae9e8641
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
These plugins can't be used on Android, but they are built, installed
and also bundled into every .apk file.
Change-Id: I3326c913282af5bd43e1c732de9ae2f255711414
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
This allows external integrations to be developed against it.
Also uniforms all class names as QEglFSFoo.
Change-Id: I72ff37c0fcdf1ccd37110b4c36874d6c99b2e743
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Remove every usage of the _WIN32_WCE macro outside of 3rd party
source code directories.
Change-Id: Ia7e859bd6dcaef10c66674612c8e440f9a2dee56
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
This merge also blacklists a flaky tst_QGL::clipTest test on
OpenSUSE 13.1.
Conflicts:
src/network/socket/qnativesocketengine_winrt.cpp
tests/auto/opengl/qgl/BLACKLIST
Task-number: QTBUG-53133
Change-Id: I14b431aa5a189b7dd1d3e2dfff767d15df20fde3
Previously dragging only displayed the type of operation provided by the
system. Now, in case a pixmap is specified, an image is shown.
Also incorporated some cleanups.
Task-number: QTBUG-50827
Change-Id: I471e2081eabfed014b08d189538d1d62cdb7248e
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Allow Qt applications to receive drops. Dragging is not supported yet
and will be handled in a separate commit.
Task-number: QTBUG-50827
Change-Id: I684e3d5685ce73f74805691f6ac7bbc45e2d19ec
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
It was confusing me until i found we have another one so i think it makes sense
to remove it if no-one uses it.
Change-Id: I49bdb8d795f7617c193c8b62690ee34dc154d2f8
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Without this, the newly-added screen will still have the
scaleFactorProperty unset, which means QScreen::devicePixelRatio will
return 1.0. That differs from what happens if the screen had been
detected when the application started.
This is part of the fix for the bug report, but insufficient.
Task-number: QTBUG-53500
Change-Id: Id3aab65533904562a6cbfffd14502365d86bd36d
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
platformsupport/fontdatabases/fontdatabases.pri disables all font
databases except CoreText on OS X, so this is required for
linking. Otherwise, we get undefined reference linker errors:
Undefined symbols for architecture x86_64:
"vtable for QBasicFontDatabase", referenced from:
QMinimalIntegration::fontDatabase() const in
qminimalintegration.o
Change-Id: I31298e973803b4d6eedbf61607056114d1556584
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Ensure we return a correct QLocale on iOS by overriding
QPlatformInputContext::locale().
A broader implementation involving subclassing QSystemLocale
will be done in dev.
Task-number: QTBUG-48772
Change-Id: I5250bdad320cbe66d63456926f6eab6fc2865424
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
This allows us to pass pointers to storage that is not an array of
uchar, which it hardly ever is.
Change-Id: Ifea6e497f11a461db432ffff14490d2c2df21906
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Another compile fix when compiling qt with -stdc++ c++98 option. Replace
nullptr with Q_NULLPTR.
Change-Id: I7765905031fa91250dbbcc9768b9e8b109e7594d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Small adjustment to a76d709. Instead of removing the selection
handles immediately when an object loses focus, we choose to
animate them out the same way we do when we lose selection.
We do this by setting the handle visibility to false, which will
trigger the fade-out animation. Then we wait a for the animation
to finish before we remove and delete them fully.
Change-Id: Iaa93969af086000d9e1cf8a39bd12c6a8b70c89e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
- QCocoaWindow::setContentView calls -removeFromSuperView
and this is not valid for a view that is a content view for a NSWindow:
using it will release the view but not clear the window.contentView pointer.
Set contentView to nil instead.
Fixing this makes visible the second problem:
- QNSWindowHelper in its -handleWindowEvent: can access content view and assumes
it's QNSView - it is not always guaranteed and can result in invalid message
sent to a view, we can use m_qtView instead (it will be nil if it
has a type different from QNSView, the call will be noop then).
Task-number: QTBUG-53325
Change-Id: I0472eba8165a04b6a3f81b2171b3bb9827ff5681
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
If the return value is less than 0 which signifies an error then trying
to malloc that will cause an exception.
Change-Id: Ia0153d4cb7aac1dacb509280b45be149a093b7c4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Set the error mode flag SEM_NOOPENFILEERRORBOX when calling Win32 API
SHGetFileInfo() to prevent it from prompting to insert media
as does QStorageInfoPrivate::mountedVolumes().
Task-number: QTBUG-32457
Task-number: QTBUG-48823
Change-Id: I01a2f99b5a75b39dd729509ca319f634e3dcd695
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
We need to be careful about calling textDidChange on the input
delegate, since that will reset the internal IM state in UIKit
and stop any ongoing text composition or spell checking.
For that reason we set m_inSendEventToFocusObject to true whenever
we send an IM event to Qt, to not call the abovementioned method when
callbacks from UIKit is the reason for changing the text.
But until now we never applied the same protection for key events.
This lead to ligatures not working correctly (e.g when using Korean
IM), since UIKit composes ligatures by first selecting the characters
that can be truncated, then do a deleteBackwards, then insert the ligature.
And deleteBackwards leads us to send backspace key events, which
ends up in a textDidChange call, which confuses UIKit.
This patch will ensure we don't call textDidChange as a result of
sending key events.
Task-number: QTBUG-52486
Change-Id: Ida268edae517f55a5b5f975340a5d3821f7b8f52
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
We only track left and right mouse buttons when dragging. But
some applications may do this with other mouse buttons.
In this case, instead of tracking which button was pressed and
which one was released, we just ask Cocoa for the current state.
Change-Id: I0df7799b7ae6d7816377f881bc0ede867737d245
Task-number: QTBUG-53374
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
It is assumed that this happens automatically but that is not always the
case. Do not become stuck with a non-functional D3D11-backed EGL environment.
Instead, try again as if QT_ANGLE_PLATFORM=d3d9 was requested.
Task-number: QTBUG-52056
Change-Id: I12ac6ca5f1d06f9504d05120d8e1053e97edfab3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Add convenience QWindowsWindow::formatWindowTitle() and use
that in QWindowsIntegration::createPlatformWindow().
Task-number: QTBUG-53394
Change-Id: I76ebade97c5af71ffa3d11075511b94a54a3dbf8
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
QIOSTextInputOverlay was excluded from build not member variable was
not, leading to link errors
Change-Id: Ia9c09c503decb596907a17dc8fe8fd0f8d5f657f
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reportedly, clearing the clip region is sufficient to fix the issue.
InvalidateRect() should be avoided when handling WM_PAINT as it
may cause events.
Task-number: QTBUG-7865
Change-Id: Id9a7c280fcc2c8242bb34c34e73e53c3146e7a6e
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
When a URL is dropped on a Firefox window, the "text/x-moz-url" data
takes precedence over the "text/uri-list". The "text/x-moz-url" is
interpreted as UTF16, however, the data from Qt 5 applications is not
in the correct format. The code to create correct UTF16 data exists,
but it is not called for two reasons: The atomName will never be
"text/x-moz-url" because it is changed to "text/uri-list" by
mimeAtomToString() and the InternalMimeData::hasFormatHelper() case is
already handled above and the else part will never be considered.
This patch fixes the check and brings it into the right order.
Task-number: QTBUG-49947
Change-Id: I5ebd31914cc6c1417c513c1ff09e0e858a16915d
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
When dropping URLs from Firefox or Chrome, the contents are encoded as
UTF16, but not correctly decoded. Moreover, the special handling of
"text/x-moz-url" drops does not work because this format is converted to
"text/uri-list" before. This fixes the handling for URL list and also
for UTF16 "text/html".
Task-number: QTBUG-47981
Change-Id: I1153f21ede07b2bfe4d104e0fe8bc8487ec5c165
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
EGL headers including X headers has traditionally been problematic due
to getting macros for Status, None, etc.
In most cases this is not an issue anymore because on embedded one will
almost always use a driver targeting the framebuffer or DRM/KMS and
therefore the EGL headers do not pull in X dependencies.
Furthermore, Mesa supports MESA_EGL_NO_X11_HEADERS which we set, avoiding
the problem altogether with Mesa regardless of targeting X11 or KMS.
However, other drivers do not have this option. On i.MX6 for instance,
targeting X11 is problematic due to not having EGL_API_FB defined, which
in turn means the EGL headers pulls in X headers in order to be able to
define the native display and window types as Display and Window.
Try to play nice with this use case by reshuffling the includes and
undefining the problematic names.
This restores patch set 2 from the previously merged, and then reverted
commit. This here is safe since the egl.h include and the following undefs
are only done internally for eglfs and can have therefore no effect on
other code.
Task-number: QTBUG-52928
Change-Id: I383e783d5064dc8fb41f3ef56d2a4f4fcd31a6cf
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
Clean up helper definitions required for old SDKs and MinGW and
move the remaining ones to the files that require them.
Ensure compilations with MinGW 4.9.
Task-number: QTBUG-51673
Change-Id: I607989dd1d9197f237c6d021209a2c94aeb84021
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Pass -xplatform macx-tvos-clang to configure to build.
Builds device and simulator by default.
Added ‘uikit’ platform with the common setup.
Also added QT_PLATFORM_UIKIT define (undocumented).
qmake config defines tvos (but not ios).
tvOS is 64bits only (QT_ARCH is arm64) and requires bitcode to be
embedded in the binary. A new ‘bitcode’ configuration was added.
For ReleaseDevice builds (which get archived and push to the store),
bitcode is actually embedded (-fembed-bitcode passed to clang). For all
other configurations, only using bitcode markers to keep file size
down (-fembed-bitcode-marker).
Build disables Widgets in qtbase, and qtscript (unsupported,
would require fixes to JavaScriptCore source code).
Qpa same as on iOS but disables device orientation, status bar, clipboard,
menus, dialogs which are not supported on tvOS.
Change-Id: I645804fd933be0befddeeb43095a74d2c178b2ba
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
QDialogButtonBox does not have translations, it queries
QPlatformTheme for button texts. So in order to ensure
that the buttons added to QColorDialog natively are
translated it should be set to use QPlatformTheme instead.
Change-Id: I67d0e509398aa81f9de9b8785544c1e23bb596d9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
7edd10e6c added this compression feature, but some applications may
need to disable it.
[ChangeLog][X11] It's now possible to unset AA_CompressHighFrequencyEvents
to disable the new X event compression feature that was added in 5.6.0.
This is a replacement for the WA_NoX11EventCompression flag in Qt 4.
Task-number: QTBUG-44964
Change-Id: I37a9c8a4831f1c02eda0f03b54125f3255d25500
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
In commit c6c9304, the earlier size limit of 128 was raised to the
format's defined maximum of 256. But the required special storage of
this size in the image structures was not implemented. Hence,
attempting to store such big icons would result in invalid image
files.
Fix the size storing details, and add some autotests of ico format
writing since that was practically uncovered.
Task-number: QTBUG-53259
Change-Id: I00e17a04e90c32dcf1124ba5adaf53728fb74dc7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
The combination of vendor and device ID being 0000 indicates, that the
standard VGA driver is used, and happens when using Qt in a:
- Windows 7 machine without proper GPU drivers
- Windows 7 machine with disabled GPU
- HyperV vm
The default driver does neither support D3D9 nor D3D11 properly so that
we have to fall back to warp mode for ANGLE.
Change-Id: Ia766e32d680c910a50ec3d6b5002892cdb90fdbb
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
The standard https://freedesktop.org/wiki/Specifications/XDND/
states: "In order for the proxy window to behave correctly, the
appropriate field of the client messages, window or data.l[0],
must contain the ID of the window in which the mouse is located,
not the proxy window that is receiving the messages."
So compare it with the current target window instead of the
current proxy window.
Change-Id: Ie31fd3aeadebcf5a9be7b9a9194f35a4ec7bdebb
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
The native display was simply invalid.
Task-number: QTBUG-53225
Change-Id: I682fb1d91dbea3dab971a079060d181fc313da46
Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
Allows to get rid of some QStringLiterals.
Change-Id: I546aace6876cf373b1cb67269fcc3d042dfd3aac
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
QCocoaWindow::setMouseGrabEnabled/setKeyboardGrabEnabled calls
resignKeyWindow. According to Apple's docs, we should _never_ call
this function (it's done by Cocoa automatically).
Calling this function leaves a window in weird state where it can
not become key again until you explicitly make another window key first.
Task-number: QTBUG-53050
Change-Id: I7a887659df8df11880328ffa2adc07c4a3af63e6
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Depending on the windowstate passed to QWinRTWindow constructor we might
act on the uiElement which has not been created yet. This happened
especially in release mode, probably due to timing.
Hence delay uiElement changes until we created it in the constructor and
can ensure it is valid.
Change-Id: I00daa9fcf8542a0535bbcb663a76d85c36e510e2
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Since QCocoaMenu can live longer than its m_attachedItem pointer,
this pointer is becoming invalid after QCocoaMenuItem deleted
(and its 'm_native' was released).
Task-number: QTBUG-53251
Change-Id: I6d97b75b2c09e2443cd21415c5db94206d5d89ce
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
In some cases the mouse release event won't arrive, i.e. when window is
minimized on button press. Check for mouse buttons state on mouse move
event and properly unset the mousePressWindow to avoid blocking
enter/leave events in this case.
Amends: c511466d74
Change-Id: I543a75104f528df1bf644bace13f78a6af017455
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
The mouse release event which ends the drag and drop operation must be
forwarded to the window where the drag started, and not to the
QShapedPixmapWindow, which is not supposed to handle input events.
Task-number: QTBUG-52541
Change-Id: I24a7c7b331a06342ac28b420ff9467aa05fe00dd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Always clearing to opaque black makes it impossible to create
semi-transparent overlays with linuxfb. Instead, behave like other
platforms' backingstores: if the target image has an alpha channel,
clear to transparent instead and set the correct composition mode.
Task-number: QTBUG-52475
Change-Id: I2db4588e0112e200a3aa5eed49f806c37d7ca8b5
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
Add a "CONFIG += qpa/basicunixfontdatase" to the -system-freetype block
so that the FreeType libraries are included in LIBS.
Task-number: QTBUG-35767
Change-Id: I81e18e72e068d5ac240cba79bab880e50a033860
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Not all classes inheriting QAccessibleInterface implement
QAccessibleInterface::window(), so, go up the hierarchy to find
one that does.
The window is required to be able to determine the correct
scale factor for the screen when High DPI scaling is active.
Fixes multimonitor issues for QtWidgets.
Amends change d7a3b61459.
Task-number: QTBUG-52943
Change-Id: I81733765faee4d296bd6ea046bc2cecb018eb28d
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
This patch extends 5b54c352ed
by abstracting the watcher pattern. The class is specialized
for QCocoaWindow since it's aware of the QObject sentinel there.
We update the usage in QNSWindowHelper and extend it to the
forward window (this one is used for mouse coordinate conversion
when docking windows).
Change-Id: I628415527593daec835bbad1b6e83d13fe7b6703
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
If the geometry is being changed at some point while showing
the widget after reparenting, we set the Cocoa frame on the
QNSView. This results in Cocoa invalidating the view and
calling drawRect: before we get a chance to flush the backing
store.
This may be an issue if the previous parent toplevel window
has been deleted. In that case, the backing store pointer is
a dangling one, resulting in a crash.
Change-Id: I18b5dd7794a3bde8815daf3f84e4113a37aaea90
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Or, "Give Cocoa a Chance to do its Magic"
Some menubar items, like the "Edit" menu, get extra items added
at some point by Cocoa. Evidence points out to those extra items
being added right after the NSMenu holding the menubar is set as
the current menubar. At that point, both the child NSMenu and its
NSMenuItem (the entry in the menubar) must have their title set.
Therefore, we must set the menubar native item's title before
QCocoaMenuBar::updateMenuBarImmediately() sets the main menu.
Task-number: QTBUG-53085
Change-Id: Idd775cf0e3485739f38363a84cfed8d2db9cb662
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Marko Kangas <marko.kangas@theqtcompany.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Change-Id: If78f6afeeeda5ea46a2ed17c6938fa25be9802fe
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
This patch will add touch based text selection support
to Qt from the iOS plugin.
QIOSTextInputOverlay will listen to changes to the
focus object, and if IM enabled, create three different
gesture recognizers that tracks what the user is doing.
The first recogniser detects if the user does a press
and hold on the text when there is no selection. If
triggered, it will show a loupe that follows the touch
around together with the cursor.
The second recogniser will instead be active when text
is selected, and takes care of drawing a set of handles
on each side of the selection. If the user drags on any
of the handles, a loupe will show that follows the
touch/text line together with the handle.
The third recogniser detects if the user does a tap, and
depending on if there's a selection, or if the cursor didn't
move, it will show or hide the edit menu.
The handles and loupe are implemented as overlays using
Core Animation layers.
Change-Id: Idff6e40e12307a458c9c399b0487bb976fce29c8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
From testing on iOS, StartDragTime should be adjusted
slightly, from 500 (default in qplatformtheme.cpp) down
to 300. This will also affect how long the user needs
to press before the text selection magnifier shows
up for doing text selections.
Change-Id: I42ebfec6f0dc809b5d392412cf8f70d128ee6246
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
If mesa-10.2.7 is installed, gbm_bo_create returns NULL
(QEglFSKmsCursor ctor, qeglfskmscursor.cpp:80), but after
that the pointer m_bo is used in function QEGlFSKmsCursor::changeCursor
without verification.
Task-number: QTBUG-52404
Change-Id: I5b1b15d751e46a5200248e7a8642f7917dedd220
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
7edd10e6c added this compression feature, but it's not a good idea for
drawing-tablet applications, because smooth drawing depends on receiving
every movement of the stylus.
Also show the device ID in qt.qpa.input.devices category logging.
[ChangeLog][X11] The new X event compression feature that was added in
5.6.0 no longer applies to motion events from drawing tablets.
Task-number: QTBUG-44964
Change-Id: Icd2ca8ca77d8f80c2f39160c74208db10e382501
Reviewed-by: Gatis Paeglis <gatis.paeglis@theqtcompany.com>
This can be enabled with QT_MAC_DONT_OVERRIDE_CTRL_LMB=1
environment variable. The goal is to provide consistent
cross-platform input when it's more desirable than full
platform comformance.
Change-Id: I3b96733077bd1c0367edeef21a98a44b15425807
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
In 5.7 the Gbm prefix was added but the .pro file was not updated.
This breaks static builds.
Task-number: QTBUG-53136
Change-Id: I37af46ff768bf8c1dc9269892db25d61b76c0376
Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
EGL headers including X headers has traditionally been problematic due
to getting macros for Status, None, etc.
In most cases this is not an issue anymore because on embedded one will
almost always use a driver targeting the framebuffer or DRM/KMS and
therefore the EGL headers do not pull in X dependencies.
Furthermore, Mesa supports MESA_EGL_NO_X11_HEADERS which we set, avoiding
the problem altogether with Mesa regardless of targeting X11 or KMS.
However, other drivers do not have this option. On i.MX6 for instance,
targeting X11 is problematic due to not having EGL_API_FB defined, which
in turn means the EGL headers pulls in X headers in order to be able to
define the native display and window types as Display and Window.
Try to play nice with this use case by reshuffling the includes and
undefining the problematic names.
Task-number: QTBUG-52928
Change-Id: I059f26b340b6e442e7296055915d18f5a1ce7a7f
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
Prompted by Coverity CID 11720 (allegedly recently new in dev but
long-standing in 5.6). Even assuming the class is used correctly -
test initialize() and only use if that succeeded - the destructor
would have passed uninitialized arguments to munmap() and ioctl().
Noticed a double close along the way: it's been fixed on dev but
should have been fixed in 5.6, too. Documented why ioctl() failure in
switchToGraphicsMode() should at least do no harm.
Change-Id: Ie26a9eefa435b5ff5b1a02e03e29469b8db72d3c
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
The printf-style version of QDebug expands to a lot less code than the
std::ostream-style version. Of course, you pay in type safety (but
compilers warn about it these days), you cannot stream complex Qt
types and streaming QStrings is awkward, but in many cases you
actually improve on readability.
But the main reason is that something that's not supposed to be
executed under normal operation has no business bloating executable
code size.
This is not an attempt at converting all qWarnings() to printf-style,
only the low-hanging fruit.
In this second part, replace
qWarning() << "" << non-QString
with
qWarning("..%.", non-QString).
QString (and QUrl etc) have special escaping handling when streamed
into QDebug, so leave those alone. They also seem to expand to less
code than the qPrintable() alternative, so there's no reason to
replace them.
Saves 2KiB, 3.4KiB, ~750b and ~450b in text size in QtCore, Gui,
Network and Widgets, resp., on optimized GCC 5.3 AMD64 builds.
Change-Id: Iae6823e543544347e628ca1060d6d51e3b04d3f4
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
newer versions of qt creator understand QMAKE_EXTRA_COMPILERS and
INSTALLS, so there is no need to list the files twice.
Change-Id: Iccf3cc3248daf3422b8c366c2eb2d2f46c5f08d1
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
On iPhone 6(s) Plus devices, or when display zoom is enabled in an iPhone 6,
the render buffer is scaled before being output on the physical display.
We have to take this into account when computing the physical size.
Task-number: QTBUG-50941
Change-Id: I318f3a866d039fccf0ba08f381fc9d8bcd676acd
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Unfortunately, the improved patch for QTBUG-45812 fixed things for
Chromium, but did no longer work for Emacs. This fixes commit [269fdb]
to make it work for both Emacs and Chromium.
Task-number: QTBUG-45812
Change-Id: I2fca708503f27679681bc6959de1ad94943a063e
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
On platforms where it makes sense, add the implementation that makes
returning a QImage possible. This makes it possible to grab raster
windows.
Change-Id: I89241728aa6f7811c56bb66cd86a64aa961d71f8
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Recent changes to the xcb platform plugin added logic to paint to a
server-side X Pixmap when the MIT-SHM extension is unavailable. Those
changes also added logic to keep track of the dirty areas that need to
be flushed to the server from the backing store when the backing store
is flushed to a window.
Because a single QRegion was used to track those areas, nested paint
operations no longer accurately tracked all the dirty areas. Consider:
void Widget::paintEvent(QPaintEvent *) {
QPainter p1(this);
for (int i = 0; longRunningOperationInProgress(); i++) {
QPixmap pixmap(size());
QPainter p2(&pixmap);
p2.drawText(pixmap.rect(), i & 1 ? "Working." : "Working..");
p2.end();
QBackingStore *bs = backingStore();
bs->beginPaint(rect());
p1.drawPixmap(0, 0, pixmap);
bs->endPaint();
bs->flush(rect(), windowHandle());
}
p1.fillRect(rect(), Qt::red);
p1.drawText(rect(), "Done!");
}
While this code could be restructured, it is a common pattern in legacy
Qt applications which cannot be easily changed.
Change-Id: I3b919266abe41c96a584cb02f41cafac3f9d1d7c
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
... by replacing them with C++11 range-for loops.
To avoid detaches of these mutable Qt containers,
wrap the container in qAsConst().
Saves more than 2KiB in text size on optimized GCC 6.0
Linux AMD64 builds.
Change-Id: I9610e711edc01d2a1ba19fef65d6b000ffc77255
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
In addition to pen events being handled as tablet events, we create
touch events. Same principle is used on other platforms as well. This
allows devices as Surfaces to use the pen with Qt applications.
Furthermore, the first update event does not have to be a press event,
as in a pen has proximity values describing a move without touch, but
also the HoloLens uses touch points as permanent pointer devices. They
all send an exit event once released or out of range. Hence, clean up
the internal touchpoint hash when the touch device is gone, not on
release.
Task-number: QTBUG-38681
Change-Id: I38acaa034a3cfe224098bfa36bfead5428f4db16
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
IInputStream::ReadAsync might create a separate buffer to fill in data.
Passing a buffer with GetAddressOf() can cause a memory leak of the size
of data to be read.
Instead, pass a separate buffer pointer and continue to use this one
after the async operation. This way, the OS can decide whether to switch
buffers or not, keeping ref counting in sync.
Task-number: QTBUG-52961
Change-Id: I9dfb627287142355ebcf74ca52427b4e8108e8d1
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Workaround for Apple rdar://25792119: If you invoke -setShowsAlpha:
multiple times before showing the color picker, its height grows
irrevocably. Instead, only invoke it once, when we show the dialog.
Task-number: QTBUG-44620
Change-Id: I8ffc803b4216cdb466a651951f9f987a7b6c1f2e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
... by replacing them with C++11 range-for loops.
The function QObject::children() returns by const-reference,
so its result can be passed to range-for without further changes.
Saves ~300B in text size on optimized GCC 6.0 Linux AMD64 builds.
Change-Id: I8360e946774b0d30233c0fa68f318872da61e867
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
... (or trivially marked const) local variables,
parameters, or data members, by replacing them with
C++11 range-for loops.
Saves ~1.5KiB in text size on optimized GCC 6.0
Linux AMD64 builds.
Change-Id: Ief6c0cbf08bcdcda28cb8ce6d72a13b7b6ac59c2
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
... by stopping the work when finding the first RGB candidate,
and otherwise only remembering the first candidate as a fall-back.
This way, we don't need to allocate memory as we did when collecting
the candidates in a QVector.
Saves more than 800b in text size on optimized GCC 6.0 Linux AMD64
builds.
Change-Id: I7d0cae69fa421fed881dd5a0f1aa45035d8f7461
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
... iterate over the container itself instead. Avoids
temporary QList creation as well as the lookup cost
when actually calling value(key).
Saves more than 1KiB in text size on optimized GCC 6.0
Linux AMD64 builds.
Change-Id: If4b2fb7eada0e9cde72ab101a5f6e5cb1ba64054
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
In some cases we move menu items around, therefore we should
not rely on QCocoaMenu::items() being the actual items inside
the menu. But, since the NSMenu is updated before hand, we can
rely on NSMenu.numberOfItems instead.
Change-Id: Icd4497beca4f52a6d38408eeaa2e6ec71b579685
Task-number: QTBUG-52931
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
The MSVC STL warns when passing naked pointers as non-bounded
iterators to algorithms such as std::equal and std::copy, in
an attempt to inform users that the range specified by that
iterator has an implicit minimum size that the caller of the
algorithm must ensure is met:
warning C4996: 'std::_Equal1': Function call with parameters that may be unsafe - \
this call relies on the caller to check that the passed values are correct. To \
disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to \
use Visual C++ 'Checked Iterators'
When building Qt, as well as when building user projects with
qmake (cf. 0a76b6bc7f), we
globally disable this warning (with -D_SCL_SECURE_NO_WARNINGS),
but since we started using STL algorithms in public headers (e.g.
in qvector.h), users get this warning in their own projects now,
unless they, too, define said macro. But such a requirement is
against the Qt policy to have headers that are warning-free as
much as possible.
The suggested way of fixing this warning is to wrap the naked
pointer in a stdext::unchecked_array_iterator before passing it
to the algorithm, cf. examples in
https://msdn.microsoft.com/en-us/library/ttcz0bys%28v=vs.120%29.aspx
or, together with the capacity-made-explicit, in a
stdext::checked_array_iterator.
To avoid ifdefs for platforms that don't have these extensions
(which, incidentally, for the unchecked case, includes MSVC 2012),
wrap the calls in macros.
The end game here is to drop -D_SCL_SECURE_NO_WARNINGS, at least
for public headers, even though this commit also adds the wrapper
to implementation and private header files.
An alternative to the wrapper would have been the version of
std::equal that takes four iterators. However, that is a C++14
library feature, while this version of Qt still needs to compile
with a C++98 compiler, and, more importantly, there isn't, and
never will be, a corresponding 4-iterator version of std::copy.
Task-number: QTBUG-47948
Done-with: Stephen Kelly <steveire@gmail.com>
Change-Id: I1bbab257fb5f1c5042939c382a412b596112ff26
Reviewed-by: Stephen Kelly <ske@ableton.com>
... by replacing them with C++11 range-for loops.
This is the simplest of the patch series: Q_FOREACH took a
copy, so we do, too. Except we don't, since we're just
catching the return value that comes out of the function
(RVO). We can't feed the rvalues into range-for, because
they are non-const and would thus detach.
Change-Id: I982851f15868e62b7a191676ddf4ba6b92c0a42d
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
... to prevent hidden detach(es| attempts).
Saves ~160b in text size on optimized GCC 6.0
Linux AMD64 builds.
Change-Id: I74e1f1304c522b9a4349918e99f562853ec8684e
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
... by aggregating similar blocks under multiple case
labels, and caching functions's return values.
Even saves a few bytes in text size on optimized GCC 6.0
Linux AMD64 builds.
Change-Id: I5784567a09732b4e55b64163b69e7a946f0783ae
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Use High DPI when interfacing with the Accessibility API.
Task-number: QTBUG-52943
Task-number: QTBUG-50991
Change-Id: Ica4489222dca5d58864172470e634f709deb69f8
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This is equivalent to d7db6c6c19 on the
xcb platform.
Task-number: QTBUG-51617
Change-Id: I837a764c8382244307ba6aa02bd8bde12bd08bff
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
... by replacing them with C++11 range-for loops.
This is the simplest of the patch series: Q_FOREACH took a
copy, so we do, too. Except we don't, since we're just
catching the return value that comes out of the function
(RVO). We can't feed the rvalues into range-for, because
they are non-const and would thus detach.
Change-Id: Ia086b1f3d072dd56c3545780490be03346df2880
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
The flag causes context validation to be skipped by ANGLE. If validation
is active nothing is rendered on Windows Phone (just a black screen) for
widget applications.
Everything works as expected without validation so we do without it.
Change-Id: I6f9ea249b653ba5a602bc33e75105c57b686b92d
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Drops without matching time stamp do not work. I have fixed the issue by
reanimating the findXdndAwareParent() function (adapted to XCB) and
using it to find a matching transaction if all else fails.
Task-number: QTBUG-45812
Change-Id: Ibca15bbab02ccf2f25280418e9edf36972ebf9a0
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
The synthesis of mouse events for unhandled tablet events is now in
cross-platform code, so the platform plugins don't need to do it.
Task-number: QTBUG-47007
Change-Id: I948be398e4b1ab627a8dc97ca20c08dba4390238
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
... by replacing them with C++11 range-for loops.
To avoid detaches of these mutable Qt containers,
wrap the container in qAsConst().
Change-Id: I9158c507f9249a7322b11c982bfcab1e6ed4a38a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
... (or trivially marked const) local variables,
parameters, or data members with trivial loop bodies,
by replacing them with C++11 range-for loops.
Change-Id: I25e9e2148abd7676305ebd18754dc647f217e48b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Previously the user only got informed about the application getting
inactive or hidden, but not when the application was reactivated again.
This can cause problems with applications using for instance a camera as
that gets disabled when not being active and never return to a active
state again.
Change-Id: I5c1d8750db8e75043ecf261616a0bc98434a3863
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
When IM hints changes (e.g as a result of transferring focus
between Qt objects), we sometimes need to reconfigure the keyboard.
And the way we do that is to create a new QIOSTextResponder that
matches the new configuration and tell it to become first responder.
And in that process we need to ensure that we don't clear the
focus object when the old text responder resigns. After all, it was
the one requesting the new IM configuration in the first place.
Since we set FirstResponderCandidate to point to the new text responder
just before telling the old one to resign, we can use that variable
to check if were in a first responder transition before clearing the
focus object.
Change-Id: I05bfb8180700a92a8f14f496044457583bcd38d3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
QWindowsStaticOpenGLContext::doCreate(): Invoke
QWindowsOpenGLTester::supportedRenderers() only when needed; specifically,
do not unnecessarily call it when GLES/SW renderer is specified.
Amends change b4c8e15174.
Task-number: QTBUG-49541
Task-number: QTBUG-52693
Change-Id: I58d1c584d194f8e7fee35ee16b77575f86d3c22e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
This modification enables to use notification feature of SQLite with Qt
SQL driver, enables to subscribe for notifications and also to remove
notifications. close() is added to destructor to unregister
notifications in case it is used in multiple threads.
[ChangeLog][QtSql][SQLite] Adding notification feature to SQLite driver
Change-Id: I8b98787f5214a406357646a98711a8ff6045a0dd
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
The given size is mostly ignored and the resulting pixmaps typically end up
in a QIcon, which will clobber the DPR anyways when returning a pixmap
for a given size.
Moreover, returning a message box icon with a DPR > 1 when
high DPI scaling is active and Qt::AA_UseHighDpiPixmaps is not set
causes the pixmap to become too small due to some scaling error.
Task-number: QTBUG-52622
Change-Id: I8aaaa97667d6c168040e19b7edad9dfb7517f70f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
The synthesis of mouse events for unhandled tablet events is now in
cross-platform code, so the platform plugins don't need to do it.
xi2HandleTabletEvent's signature included an eventListener which is
no longer needed; removing it makes it look needlessly inconsistent
with the signature of xi2ReportTabletEvent; and while we're at it,
might as well make the events const and deal with the repercussions.
Task-number: QTBUG-47007
Change-Id: I0f76c8ed2d2b0baed0652bc68286f1734b8b72ff
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
All internal settings are stored as strings, if the requested setting
value doesn't exist, or the type conversion fails, then an exception
is thrown. Instead of making use of the convenience functions we can
just get the original string an convert it ourself.
Task-number: QTBUG-52574
Change-Id: Ic410244a373318e167437eea4381335a907ccbf9
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Set Qt::FramelessWindowHint so that the translucency logic triggers
correctly (raster windows). Fixes the splash screen of Qt Linguist
to be transparent.
Change-Id: I3d50129b7f15bee0eff6ce3318c7f0fec055dc45
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Make sure we always set the base feature as a flag in qtconfig, and
set the sub-feature in addition if it's being used.
Change-Id: Icfeb0ec1ac9e1a615b5b22eb5fcce47e0e7fc153
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Commit b9d386f2cc neglects to account for
the scanline padding requested by the X server. This can result in visual
artifacts if padding is required. This commit fixes this by factoring in
the X server's requested scanline padding when calculating image stride.
Change-Id: I082cb7101ec3a9c554b9b58a76f53f780b87d31e
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Starting from 10.11 beginGestureWithEvent/endGestureWithEvent never
gets called, we must test event.phase instead (magnify/rotate gestures).
For a magnify/rotate gesture, we'll first test phase (on 10.11)
and manually call our begin/endGestureWithEvent.
Task-number: QTBUG-48666
Change-Id: I69752b3c6578360b98607ceea2cffb5c166bb7c9
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Separates the generic kms classes into a own kms static lib
called QtEglFsKmsSupport. The eglfs_kms plugin was changed
to use these base classes and got renamed accordingly to
QEglFSKmsGbm*.
The eglfs_kms_egldevice plugin got extended to also derive
from the kms base classed and by this provides multi-screen
support
Change-Id: I6de6a754e94cb8d52cf8e658b03c6bd6637674a1
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
On Windows Phone / Windows 10 Mobile, there are the status bar
and sometimes a navigation bar, which are hiding the visible
window area. In the Windows Phone code paths, the area of the
status bar was tracked and the visual area was dynamically shrinked.
This patch enables that we use ApplicationView::visibleBounds() on
every target (except Windows 8.1) to get the visible area of the
application. Its change event is now also used as a resize trigger
for manual resizing through user.
Task-number: QTBUG-51163
Change-Id: I7abe2a0978418cc941e118e212426852474c026a
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
If a mask region contains a point - the event is _not_ masked out.
Task-number: QTBUG-52533
Change-Id: I56d0276f5e3853479c2687addb95c2600edd3cda
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Later versions of OS X allow you to auto-hide the menu bar, which should
free up 22 pixels vertically at the top of the screen in the available
geometry. Due to how the NSScreens are invalidated (asynchronously), we
pick up this geometry change too late, resulting in QWindows maximizing
as if the menu bar was still there.
To work around this we explicitly tell the system to apply the default
presentation options before initializing the QScreen properties, which
results in the NSScreen being invalidated synchronously and having the
right available geometry.
Change-Id: I40d6ef2211165d53e0825173e3b6c6c17a5a954e
Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
The size in RRCrtcChangeNotify is a size of the mode and it is
not rotated. At the same time when we call RRGetCrtcInfo, it
returns a rotated size, which is then passed to
QXcbScreen::updateGeometry(const QRect &geom, uint8_t rotation).
So to pass the expected size to QXcbScreen::updateGeometry()
after receiving RRCrtcChangeNotify, we should rotate the size
according the screen rotation.
Change-Id: If5b5b52403b077d3cd64b9a05d938bb9ac00b1e0
Reviewed-by: Daniel Vrátil <daniel.vratil@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
The majority of these changes is about #ifdef-ing the Linux-specific use
of /dev/fb0.
The display handle is also acquired using fbGetDisplay(), which is
equivalent to fbGetDisplayByIndex(0) but is also portable.
Change-Id: I6f460edc9c06ae7461a6aab2a816ac6f645208c4
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>