Changed cornerarea to be visible only if both scrollbars are visible.
Removed unused Q_DEAD_CODE_FROM_QT4_MAC hasMacSizeGrip case.
Task-number: QTBUG-44084
Change-Id: I4f240268902fa42496befd3754133145d28d4ad6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Since we use CoreText API to populate the font DB, we
should also make sure we use consistent data when doing
queries.
This partially reverts and ameds b619c35d85.
Change-Id: I6a3470fbee719ae1ea3085c252a4870040b9af1a
Task-number: QTBUG-41487
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
On devices by some vendors (Android 4.4+), the default UI theme
will have translucent system UI which is placed on top of the
main activity layout. When this is unexpected, it may lead to
the system UI overlapping with the application's UI on these
devices. By default we tell Android to account for the system UI
in the main activity's layout, so that the window contents are
positioned outside of it. This is done with a new outermost layout
which is just used to size the QtLayout correctly.
Since there is a use case where people explicitly want translucency
on the system UI and have adapted its contents to accommodate for
this, we supply the android.app.allow_overlapping_system_ui setting
which can be set to true in the AndroidManifest.xml to override the
default behavior.
[ChangeLog][Android] On devices with translucent system UI, Qt's
window is now positioned to avoid overlap with this by default.
This behavior can be overridden in the application's
AndroidManifest.xml.
Change-Id: I2b34e948f3bd655f883f30b0419d9c6ba69242be
Task-number: QTBUG-38700
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
When showing a QWindow, we transfer first responder status to its
QUIView. If another QWindow was active with a text responder at
that point, the text responder will loose first responder status
in favor of the new view, and the keyboard will hide.
Now, if the new window has a focus object with the same IM state
as the previous focus object (in the previous window), m_imeState
will not change, and QIOSIntegration::update() will assume that
nothing needs to be done to show the keyboard, even if it's
actually hidden.
This patch will change the logic, so that we:
- show the keyboard if its supposed to be visible, even if
m_imeState did not change.
- Only recreate the text responder if it needs a different
configuration than the one we already got (not only
from changes to Qt::ImEnabled)
Task-number: QTBUG-40695
Change-Id: I6f6788af4cbff5c7abe4f5a29e23a7cefea6b711
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
MSVC creates .lib file when ever dll with exports is built. Remove
this file too in distclean target.
Task-number: QTBUG-44685
Change-Id: I84ecb57626926b5bce06a200ff2b705fd2117686
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
We now have support for more complex exclusive builds configurations,
e.g., on iOS with simulator and device configurations, so we can't hard
code the logic for choosing the right exclusive build to test.
Change-Id: I358687b297b7bf1eb28eef0ef0aaf44b89860404
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
QGuiApplication sets options passed to the plugin through -platform
as properties on the QPlatformNativeInterface. To handle those we need
to inherit QPlatformNativeInterface first (which is the QObject
subclass), and include the Q_OBJECT macro.
Change-Id: Ia496851c64cbb0036c26e7ed0683d0ecfa8319cc
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
It's pretty easy to forget to run qmake from a vcvars prompt. Doing so
causes the UUID to get persistently written as empty, breaking the
vc project.
Change-Id: I5badb31ad4f606abbe8c71979019e097c748e07a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Peng Wu <peng.wu@intopalo.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
We need to track the active popup globally, having
parent windows track child popups is not sufficient
since there may be one or more intermediate windows
in between the event receiving window and popup window.
Add API to QOCocoaIntegration for tracking the global
popup window and use it instead of the per-window
tracking. Make sure to only close popups on clicks
outside the popup only. Add code to QNSView::handleMouseEvent
that redirects mouse events to the active popup.
Add manual test.
Change-Id: Ia3e3fd42d8fddf5c69f0c6879b333ca544521f61
Task-number: QTBUG-43464
Task-number: QTBUG-31937
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
qdoc's QML parser has fallen behind the QML: parser in
QtDeclarative. Bring it up to date.
Change-Id: I12a688873564762434852960350c56655004e460
Task-number: QTBUG-44868
Reviewed-by: Martin Smith <martin.smith@digia.com>
In case the loadGlyph() was called for a glyph to fetch metrics only,
loadGlyphFor() never fetches the data for that glyph
but returns a non-null result.
Change-Id: I2b258c4b7880059d41dc02f1e5a43903706d3888
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
and only cache non-scalable glyphs in defaultGlyphSet
if a requested transform is translation.
Change-Id: I49d936736871bd455e573335c014ddefe8bb915e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
And avoid conversion when the cached FT transform could be used.
Change-Id: I9f6bf0a6c6fa166092de698f3ddbbf203e2b3820
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
QFontEngineMulti expects the fallback families list to be initialized
prior to the first call to engine(int), however in some scenarios,
the initialized and cached engine gets destroyed and re-created later,
with no fallback families list set, which causes an assertion.
Change-Id: I8d19cc91f3a067f6bf77b36bd87010dd967b4c49
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This was easy to hit with KDE Plasma 5.2.1; KWindowSystem called
QX11Info::appRootWindow() which in turn tried to dereference a nullptr
returned from QXcbConnection::primaryScreen().
#0 QXcbConnection::rootWindow (this=<optimized out>)
at qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbconnection.cpp:1303
#1 0x00007fc26da096d7 in QXcbNativeInterface::rootWindow (this=this@entry=0x7fc27d1734d0)
at qtgui-5.5.9999/work/qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbnativeinterface.cpp:425
#2 0x00007fc26da0ab21 in QXcbNativeInterface::nativeResourceForIntegration (this=0x7fc27d1734d0, resourceString=...)
at qtgui-5.5.9999/work/qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbnativeinterface.cpp:223
#3 0x00007fc27c563148 in QX11Info::appRootWindow (screen=screen@entry=-1)
at qtx11extras-5.5.9999/work/qtx11extras-5.5.9999/src/x11extras/qx11info_x11.cpp:158
#4 0x00007fc27a98c444 in NETEventFilter::nativeEventFilter (this=0x7fc27d425b60, ev=0x7fc264004ad0)
at kwindowsystem-5.7.0/work/kwindowsystem-5.7.0/src/kwindowsystem_x11.cpp:192
#5 0x00007fc2795d0a8a in QAbstractEventDispatcher::filterNativeEvent (this=<optimized out>,
eventType=..., message=message@entry=0x7fc264004ad0, result=result@entry=0x7ffc96ecf348)
at qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qabstracteventdispatcher.cpp:460
#6 0x00007fc26d9ea941 in QXcbConnection::handleXcbEvent (this=this@entry=0x7fc27d173580, event=event@entry=0x7fc264004ad0)
at qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbconnection.cpp:971
Change-Id: I98a5d767cd7e143f00666f6fc78e9dc10893513d
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
QVarlengthArray is not a good data structure when you need
to dynamically append to it without knowing its size in advance,
as it reallocates on every append. Use a QVector instead.
Task-number: QTBUG-44737
Change-Id: I68eab11eacd8368e94943511874aead823a149ab
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The existing check fails to detect the case where white space characters
other than the space character are replaced by space characters
without the length actually changing and returns the original string.
Task-number: QTBUG-44936
Change-Id: Ice6faa975f8b41f185c76f6d0d4ff81603e25eb3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Using a byte array here simplifies the logic while being more efficient.
It also removes warnings about using deprecated QString methods.
Change-Id: Ia1384dfb92e953c56179647b92a41b59cd26d9ea
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Commit ebef2ad136 did it for Q_ASSERT, but
I somehow forgot to do it for Q_ASSERT_X. Do it now.
This includes the fix from 9a3d7adaad to
silence a Clang warning.
Change-Id: Iee8cbc07c4434ce9b560ffff13ca066a5b5ab5d4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
One of the reasons why we use "int" everywhere: to avoid this annoyance
about different types and having to explicitly cast to silence the
compiler.
qsslsocket_openssl.cpp(690) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
Change-Id: Ia0aac2f09e9245339951ffff13c8bdad334ce108
Reviewed-by: Richard J. Moore <rich@kde.org>
It has been a historical mistake that there wasn't a const overload.
Change-Id: Ia0aac2f09e9245339951ffff13c8d8b70f206a99
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
On some platforms show() may result in the window being shown full
screen, depending on the defaultWindowState of the platform. If
that's the case, the resulting window size does not follow
the requested size (though the internal normal geometry should).
We need to use showNormal, so that we guarantee that the window
state is WindowNoState.
Change-Id: Ied080eaca13d759501ea292b5e6b2df4e3b32426
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Also track the allocated buffer length and re-use the existing
buffer instead of allocating a smaller one, where possible.
Change-Id: I494519d653522622b1fe4ec80ac9035e2c3d9714
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Re-use font engine obtained in the first place
Change-Id: Icdc2ad404ba9b2aadf2732e95c43a47aa957a6fb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Use a built-in JSON file in case the QT_OPENGL_BUGLIST environment
variable is not set. When QT_OPENGL_BUGLIST is set, the built-in list
is ignored.
To make the implementation simpler and more readable, some of the code
in QWindowsOpenGLTester is reshuffled a bit. It also caches the results
now, so it is safe and fast to call supportedRenderers() and friends
multiple times.
The blacklist currently contains the Intel card from QTBUG-43263 (Intel
GMA / HD3000 ?) and may also apply to QTBUG-42240.
[ChangeLog][QtGui] Qt now contains a built-in GPU driver blacklist for
Windows that disables the usage of desktop OpenGL with some older cards
that are known to be unstable with opengl32.dll.
Task-number: QTBUG-42240
Task-number: QTBUG-43263
Change-Id: I1ecd65b51fca77925317d52048e7ab01d9b8797c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
When climbing the menu hierarchy, it's sounder to
check whether the actual QPA menu is enabled. This
way we can trigger modifier-less shortcuts even in
submenus.
Task-number: QTBUG-38256
Task-number: QTBUG-42584
Change-Id: I13a27027306bce0f0732b05bf9469f3b77028f73
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
This allows us to lazily load icons from the platform theme
by reimplementing the pixmap(). Otherwise, we would instantiate
pixmaps in several sizes even though we would not need them
right away. Since, at least on OS X, icon sizes can go up to
128x128 pixels, we can end up saving an order of magnitude of
memory on icon pixmaps alone if we only use the smallest sizes
in our application.
Two side modifications are included. The first allows sub-
classing QPixmapIconEngine by exporting this class. The second
fixes the q_ptr in QFileIconProviderPrivate which was never set.
Change-Id: I91af322ded2823e475703871e607773177ae25d3
Task-number: QTBUG-41796
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
If you call libraryPaths() before constructing a QCoreApplication,
intersting things may happen.
Task-number: QTBUG-38598
Change-Id: I2861746277e391ede9e921e4a8ad825007e25fa0
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Need to emit availableGeometry not geometry
Task-number: QTBUG-44916
Change-Id: I6eb7eb0b8e46d6d8249fa67f57374b25e21f2ade
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Apparently failures can occur not just when doing eglMakeCurrent() but
also when creating window surfaces.
Change-Id: Ife1210293d5120fd41352164d9c89e83fb5ce468
Reviewed-by: Michael Brüning <michael.bruning@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Support statically linking the MSVC/mingw runtime libraries without
manually tweaking mkspecs. This is helpful for projects like the
installer framework.
MSVC does not support mixing MT[d]/MD[d] flags in different
compilation units. The static_runtime option is therefore added
to both QT_CONFIG and CONFIG.
Change-Id: Ifd6dc9c362090457de8e2c62477d0445f9479722
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
The QFile::exists() check in the end was redundant if one of the
!QFile::exists() had returned false before. By always doing the
positive check we can get rid of it and also avoid excessive
nesting.
Also, on OSX the isEmpty() clause probably never evaluated
to true, with the effect that qt.conf in an applicationDirPath was
never found.
Change-Id: I750735741b707d3e98c4bf6c6b9558618e1fcc59
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This allows QGtkStyle to check the role and do appropriate styling
(bold font) for the label.
Task-number: QTBUG-43736
Change-Id: I735f5f7ffadd7a435fa9e28fab45b202eec0252e
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
In QXcbWindow::setParent(), the window may not have a screen,
and in that case we cannot get the root window in this way.
Task-number: QTBUG-44719
Change-Id: I719e5e2f8cad13b1460b4d9df6ffd6c4a48e0d37
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
If a parameter contains quotes the check for "-binary" fails.
Change-Id: I27148b590d85291a93f1992dfd277fb857bec6e2
Reviewed-by: Stephen Kelly <steveire@gmail.com>
Let's not try to to compare our QTimeZone handling with the system one.
Our handling goes beyond the range of the POSIX APIs, so that's a recipe
for error.
Change-Id: Iee8cbc07c4434ce9b560ffff13ca4a4f335bdbae
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
It is possible for there to be a HCBT_CREATEWND hook which can set the
touch window flags already while the window is being created. Therefore
we want to defer to those settings instead as they should take precedence.
Change-Id: If8dcbd34db2b3bbbfb1bc36731665fb17fb87c24
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Querying X server for data can be very expensive, especially when there
are multiple processes querying it at the same time (which is exactly what
happens when screen configuration changes and all Qt applications receive
XRandR change notifications). This patch is aiming to reduce the number of
queries to X server as much as possible by making use of detailed information
available in the RRCrtcChangeNotify and RROutputChangeNotify events.
Firstly, the backend now does not rebuild all QXcbScreens on any change (which
involved the very expensive xcb_randr_get_screen_resources() call), but only
builds the full set of QXcbScreens once in initializeScreens(), and then just
incrementally updates it.
Secondly, it avoids querying X server for all screens geometry as much as
possible, and only does so when CRTC/Output change notification for a particular
screen is delivered.
As a result, handling of all XRandR events on screen change is reduced from tens
of seconds to less then a seconds and applications are better responsive after
that, because we don't block the event loop for long. The X server is also more
responsive after the screen change, since we are not overloading it with requests.
Change-Id: I9b8308341cada71dfc9590030909b1e68a335a1f
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>