This is a regression introduced by 65b39b3cdc.
Task-number: QTBUG-34540
Change-Id: I1f78337b13c806f6b6794b769cfe99206445ce7a
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Qml has a bunch of hooks in QObject, that are callbacks as function pointers
when things happen in QObject. QtDeclarative (Qml1) only needs one callback,
for object destruction. In preparation for allowing both run-times to co-exist,
this patch forks the callback, keeping the "default" variant for QtQml and
having a *_qml1 variant for QtDeclarative. QtQml continues to set the callback
variable for the default and QtDeclarative will set the _qml1 variant.
It is however a limitation that a QObject instance can only be exposed to _one_
engine at a time, and it is not possible to make a transfer. Double exposure
will result in crashes.
This patch alone is not sufficient to fix the bug, the
QQmlData/QDeclarativeData structures in Qml1 and Qml2 need to be extended to
allow distinction at run-time.
Task-number: QTBUG-35006
Change-Id: I3bac023873b5656a8a4f117fe816bafcda77b67d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This restores the ability from the Qt 4.x series to honor the static
contents region in the backbuffer when resizing a widget. The fix
only applies when running under Windows.
Task-number: QTBUG-34799
[ChangeLog][QtWidgets][Windows] Update QWidgetBackingStore and QWindowsBackingStore to support Qt::WA_StaticContents
QWidgetBackingStore::staticContents() was updated for windows to *not* unconditionally return false. It now
returns true if it has a non-empty static widgets list. QWindowsBackingStore::resize(...) was updated to honor
the provided static contents region. It now copies the static region into the new backbuffer in a manner similar
to what was done in Qt4. The difference is that this version accounts for the possibility of the new buffer having
a smaller region than the old buffer. In Qt4 the ::prepareBuffer method was only called when the buffer was resized
larger.
Change-Id: I135ff8fb16f52759089f1e7353426303c4504db3
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
When encountering QSurfaceFormat::DefaultRenderableType, the surface
format choosers should not default to OpenGL ES, but rather desktop
OpenGL when Qt has been configured without ES2 support.
Change-Id: I57aa7cfe63ebe0ffb32f4ba32808e62b0a4589f8
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
QString::replace() has no way of escaping capture group references,
so simply disarm double backslashes. of course this is broken, but
we'd need to reimplement it from scratch to fix it properly. "corner
case" ...
Change-Id: I357fbfd22c9c4a68809e5af6efad1de3a95706b5
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Certain key sequences (like press alt, press left, release left,
release alt) can cause an assert in qwindowskeymapper. This
behavior was introduced in change
I4f7709a90906b03f4504deea1ff5c361e9f94b3f (Fix virtual key
mapping on MS Windows). The place that seems to cause the new
behavior is changing the bitmask for obtaining the event's scancode.
With the changed bitmask releasing the alt key in the given
key sequence causes the WM_KEYUP event to trigger a WM_CHAR event
which should not happen there. To be honest I don't know how having
the extended bit inside the scancode fixes the behavior but it seems
to do and I could not find another place which might cause the
breakage.
Task-number: QTBUG-35005
Change-Id: Ia18c2681ea311196441a5cd15017e220ac095674
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
There is no real printing support though, it just prepares
the land for bringing printing support for API-19+.
Change-Id: Iabf78499f8fe1e4d2527e339cee5746acb8f3b3f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Plain QNX 6.5.0 does not have a libpps, the new QNX
has a libpps and BlackBerry has it as well. So we need
a configure check to not open another mkspec for this
platform. This fixes the plain QNX 6.5.0 build.
Change-Id: Id4b3876f2385bcb5f3df426945532e7e26133f24
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
In QNX 6.6, libclipboard isn't part of the base SDP, and QT_NO_CLIPBOARD
is set unconditionally on plain QNX anyway. The clipboard-based implementation
isn't compiled when QT_NO_CLIPBOARD is set, so only try to link libclipboard
when actually building with clipboard support (BB10).
Change-Id: I54eb4fadb6bf239a83884796f5758cb79a5677ef
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
The previous patch removed a call to setGeometry, and now only calls
setGeometryHelper. This means the screen window will be resized, but
Qt won't know about our new window size. The scene graph of a QtQuick2
application would layout and render to the wrong target size.
Fixed by adding a call to QWindowSystemInterface::handleGeometryChange
if we decide to use a different geometry than suggested by the window.
Task-number: QTBUG-34930
Change-Id: Ie91c2edc45c47f5bf1d45aed981b969fcc3f40dd
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Change Ia8ef48f3 introduced a regression: Trying to paint onto a
QImage, QPicture or QPrinter from outside the main thread incorrectly
shows a warning saying that it is not supported.
The patch was incorrect because 'extraCondition' was used in the
non-default branches of the switch and thus not passing
extraCondition==true caused the message appear even when it shouldn't
have.
Let's just remove the extraCondition parameter altogether since it is
not used in practice anyway.
Change-Id: Id2e56c585d1f1013f24942cbcd53305fbb66aeba
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Having it disabled caused issues with our backing-store implementation,
which assumes that the backing store is retained, but for us is backed
by a GL context.
Change-Id: I18d05e226c7cf949adcd3b71801ffd845fa6d83d
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
QWidget::show_sys() assumes synchronous geometry behavior by trying to
resize both the platform window and the backing store if the widget's
view of what the geometry is doesn't match the platform window's.
The problem with that is that it's the widget which is not up to date,
not the window, as the widget is not waiting for resize events before
applying any resize logic. Instead of trying to fix widgets, we throw
our hands in the air and give QtWidgets the synchronous behavior it
assumes from the platform.
Change-Id: I1b9241b9b13df661dc7f41c4cb8ecd02f5572256
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
The QBackingStore API doesn't require clients to precede flush() with a
beginPaint() call, but our backingstore is backed by a GL context, so
it's up to us to ensure it's current before swapping.
Change-Id: Ia6119bf0e835448b1fd383d933df6f88fa4f298a
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
QSysInfo::MacintoshVersion is initialized before the main thread's release
pool has been set up, so we have to wrap the UIKit usage in our own pool.
Change-Id: I80e2c068339e0251f38ecf55fcfb764594eb3ad7
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Matches the Android behavior, and gives an easy and predictable way to
show true fullscreen windows that is similar to how one would do it on
a desktop platform.
We keep the statusbar visibility in sync with the window state of the
active window.
Change-Id: Ia4b99e03f83e19f9ef56cc99b9d477cc6da4c734
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
When setting the geometry on our UIView, or when reporting it back to Qt
in our layoutSubviews callback, we need to take into account that the
root viewcontroller may be not be positioned at 0,0 in the screen's
window. Even when using the wantsFullScreenLayout property of the view
controller this may be the case on iOS7 when the in-call status-bar is
visible.
Change-Id: I0ca706c1c9aff8ba4f3b4ccdf83dba713bd5c9c2
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Geometry changes may come from Qt itself, or spontaneously from the windowing
system. In both cases we deal with them through the layoutSubviews callback,
which we now ensure gets called after we set a new geometry on the UIView
frame, by using the setNeedsLayout message.
We take care to persist the requested geometry from Qt immediately in our
setGeometry() function, so that subsequent calls to QWindow::geometry()
will report back the requested geometry. Clients can however not rely
on this geometry until they've received a corresponding resize event,
which we trigger from layoutSubviews.
Since the new geometry reported in layoutSubviews may be different from
what the user requested, we ensure to pass on both the new and the "old"
geometry, so that Qt will send the appropriate resize and move events.
Instead of building expose events on top of the existing layout
mechanism provided by iOS, we hook into the more logical point,
which is the display-phase. Since a EAGL view normally doesn't
need to "display" anything this takes a few overrides on UIView.
Once we have the hooks we need, we can distinguish between a QWindow
backing needing layout, and needing displaying.
Finally, we flush both the resize and expose events, as that's what
iOS expects of us when asking us to layout or display. The result
is that Qt is able to synchronously resize subwindows and prepare
new GL rendering for the next frame.
Change-Id: I4c03e3db3fe886163284ba1a342699e217e88cbb
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Allows us to skip passing __MAC_NA and __IPHONE_NA when we don't care
about that platform.
Change-Id: Ie265beb457d057de06ae64970684d67e59062b1c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Replace deprecated CFPropertyListCreateXMLData with
CFPropertyListCreateData
Change-Id: I284f1906cfb3da7692f04e2924c989c572efce30
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
The default font size turned out to be slightly too small for
comfort on touch devices. This tweaks the size from a 12-point equivalent
to a 14-point equivalent. (Point sizes aren't real point sizes because of
compatibility with iOS.)
Change-Id: I6d970fdd5bba8199cabdf1aaaaac10d19c53c654
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Change-Id: I883291dc72eef82aaea2e2b039dfb33c7f56e98b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
In XCode only the pro file was shown in the Supporting Files group as
it was the first one in the list. The others were not shown as it was
recreating the temporary QStringList each time instead of appending to
it.
Change-Id: Ifbc40a25156cf639eaa34b410f534726c41b6232
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
If the two QObjecs are connected and destroyed at the same time, it
is possible to hit a case where QObject::metaObject and QObject::disconnectNotify
is called on a destroyed object.
This patch moves the calls up before the removal of the connection. This
ensure the sender object will have to block on the receivers connection
mutex and can not finish destruction before disconnectNotify is called.
Task-number: QTBUG-34131
Change-Id: I398116fe7bc6a195991aff9961d89a8b0ac8d53c
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
After introducing support for QSysInfo::macVersion() for iOS we need
clients to link to UIKit when using QtCore, as that's where the UIDevice
class lives.
Change-Id: I0a9c2e2506c61ac5619fd000ebd10c2ab9e037cf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Fix ICU compile test for MinGW by adding the INCLUDE and LIB environment
variables to the compiler flags. The logic is the same as in qmodule.pri.
Task-number: QTBUG-34971
Change-Id: I192e06643517087587ec4a5dffe4698c2078011a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Avoid menus showing up at 0,0 which is a taskbar area when running
Unity.
Task-number: QTBUG-33972
Change-Id: I156eec78248cec1708adf6bcf2e9ddcc98b7d8c4
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
GL functions should come from the context, not the desktop GL lib, when
Qt is configured for OpenGL ES 2 (e.g. ANGLE).
Change-Id: I794e1d5989ac72d2e98070d20e91f9c2c4cb7183
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
There is a known bug where duplicate textChanged signals are
triggered on backspace/delete. The bug has been seen on Windows,
Mac, and Linux. Gabi showed that this duplicate signal is caused by
two calls to finishEdit(), one direct and one nested,
in QTextCursorPrivate::remove().
To attempt a fix, I removed the direct call and do not change the
nested call. This change only affects text buffers when they
receive remove commands.
This seems to fix the problem, shown by the test project
uploaded to the bug tracker and also in countTextChangedOnRemove
in tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp.
Further analysis of finishEdit() and QTextCursorPrivate::remove():
finishEdit() calls signals contentsChanged() as long as a valid block
is being edited. Remove() calls finishEdit for all non-table edits,
so finishEdit will be called for most cases.
Methods in the public QTextCursor all seem to set adjusted_anchor
and anchor, none reading it directly, so I haven't found publicly
observable consequences to "adjusted_anchor = anchor = position;".
Task-number: QTBUG-15003
Change-Id: Ic35f25ee81c4007867b47cd8be03c146a673f86d
Reviewed-by: Graham Coleman <ravelite@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Qt::WA_Mapped maps (sic) to windowHandle()->isExposed(), and we set/update
it in QWidgetWindow::handleExposeEvent(). Setting it directly in show_sys
shortcuts QPA and assumes showing a window is synchronous on all platforms,
resulting in trying to flush the widget backingstore when the window was
not exposed yet (due to discardSyncRequest starting to return false).
This reverts commit 829b1d13b2.
Change-Id: I0bd700d4939bc69ba184d8586435b68ec3dd72fb
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
In particular this triggers in some cases of package building
where we are using a Qt version which for some reason has
forward slashes in its install prefix. Any mkdir command
run with this Qt build will fail because only backslashes are
recognized as path separators.
Task-number: QTBUG-34886
Change-Id: I2f957c6d348852ec555a67a35ae39921523b7b3e
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
The file "locale.alias" (located in the same directory as "compose.dir"),
contains following text:
"This file contains alias name of locale.
Each alias name is described within one line.
The first word is the alias name (simplified locale name)
the second word is full locale name."
Therefore, if initial search in the compose.dir fails to find a match we
make sure that a 'full locale name' was used in the initial search, if not,
we try again.
Task-number: QTBUG-32461
Change-Id: Ie7766658f22433524bd6e4bc829e32c6e3a0cbd0
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This was a tweak to fix a bug in 2005 which has probably outlived its
usefulness, plus an accumulation of workarounds on top. (started as
48b5266e8ff9b472a16290dd923fe24dd0b6989b in the historical repo)
Task-number: QTBUG-34760
Change-Id: I2c01269e43636385ee5c89305c6b90f4a7f2c537
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Some of the examples that where tagged with "android" are no longer
supported (e.g., video widget), others just don't work.
This patch replaces those that have equivalent examples that are known
to work, plus some new ones that where missing (Camera, AndroidExtras
and AudioOutput).
Change-Id: I9173ab31d0ef0b55613fd5342e7d2e6d95d4d980
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
This fixes a regression introduced by
be405c86f8.
Task-number: QTBUG-34988
Change-Id: Id825b51d4d94826819d2405bb711886db3db8bc8
Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Since we guard against overriding the geometry in setGeometry() when a window
has a window state, we need to use a custom method to lay out windows that
calls applyGeometry() instead.
Change-Id: I6508e6aac6746c024a6172f709b8339b35b40994
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
The private method dateForLocalTime() was not checking that transitions
were valid, resulting in infinite looping when a time zone didn't have
any future transitions.
Change-Id: I0e5d07063861778dd86056a80c36fdd9f9d36133
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Fix parsing of TZ file abbreviations, to correctly return cases where
POSIX rule doesn't have separate DST rules, and where abbreviation
is a sub-string of another abbreviation, otherwise any toString() call
will crash.
Add test to exercise all available time zones, especially useful for TZ
file to confirm all file format variations dealt with. Fix parsing of
Version 3 of TZ file, and ICU display name, to allow all files generated
from release 2013f to pass, otherwise isValid() call will crash.
Task-number: QTBUG-34061
Change-Id: Ie0b6abc218adff1c8967eb33fdb0762041d2305f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>