This reverts commit c3e416296a.
The idea of detecting non-spontaneous events by comparing
against the widget's crect has problems when sequences
of programmatic resizes occur. In addition, QWindowSystemInterface's
queueing of events is problematic for this.
Task-number: QTBUG-39611
Task-number: QTBUG-32590
Change-Id: I9ff8049add147be23e064a513e8645ae04577c6c
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
On Unix systems where the GUI event dispatcher uses a notification
system for socket notifiers that is out of band compared to select(),
it's possible for the QSocketNotifier to activate after the pipe has
been read from. When that happened, the ioctl(2) call with FIONREAD
might return 0 bytes available, which we interpreted to mean EOF.
Instead of doing that, always try to read at least one byte and examine
the returned byte count from read(2). If it returns 0, that's a real
EOF; if it returns -1 EWOULDBLOCK, we simply ignore the situation.
That's the case on OS X: the Cocoa event dispatcher uses CFSocket to get
notifications and those use kevent (and, apparently, an auxiliary
thread) instead of an in-thread select() or poll(). That means the event
loop would activate the QSocketNotifier even though there is nothing to
be read.
Task-number: QTBUG-39488
Change-Id: I1a58b5b1db7a47034fb36a78a005ebff96290efb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
strace reveals that we do ioctl(-1, FIONREAD) and get EBADF. The only
case where this could happen is inside _q_processDied, which calls the
read functions without checking if the pipe is still open.
Change-Id: I67637fc4267be73fc03d40c444fdfea89e1ef715
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The QProcessPrivate::Channel object contains some structures that may
survive the closing of the pipe, so calling this function "destroy" is
incorrect. Let it be just the closing.
For symmetry, the createChannel() function is renamed to openChannel().
Change-Id: I2899214c6e4c25835390b10ccf3931315a91589e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Similar to the previous commit, this simplifies the code.
Change-Id: Ia02b9b5174b4bc6fd04ec2534231b7db5fc914fa
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Since we only scan for XInput2 devices on application start, we will
currently miss any devices plugged in while the application is running.
This patch makes QXcbConnection listen for XInput2 hierachyChanged
events and use them to trigger a rescan of XInput2 devices.
This fixes a regression in Qt 5.3, where the scroll wheel on hot-
plugged mice does not work until the Qt application is restarted.
Change-Id: I2cdc7ca24d3ab00716cedc4b22355b6e4935b184
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
In ICU the strength parameter decides whether a comparison is
case sensitive or not.
Fix mac comparison code. It can't have worked before.
Added some basic automated testing for QCollator.
Change-Id: I2646c464fd22ccd3a93c461fa3dba4bd1d4c7b4b
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
It is NOT always the same as isEnabled().
Added a unittest to prove it.
Change-Id: I7717126835923e8c091249bfcdf81767c44fb5f7
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
They would either disappear or be positioned at bogus coordinates.
The MINMAXINFO structure works with coords from the primary screen
then uses an "interesting" algorithm to adjust to secondary screen:
Say you have a primary screen with width=1000 and secondary screen
with width=2000, here's what you get when you set ptMaxSize to:
ptMaxSize.x | Size window gets in second screen
--------------------------------------------------
500 | 500
1000 | 2000
1001 | 2001
1100 | 2100
So basically you can't get any value between 1000 and 1999
How many people use the taskbar on a second display and maximimize
a frameless window anyway ?
Task-number: QTBUG-39537
Change-Id: Ic9b3120e7fb5a9a5d97828a2e44be02ae587b92e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Namely, the Adreno 205. We used to enable this
workaround for Huawei Honor (Adreno 205).
Task-number: QTBUG-33951
Change-Id: Ic92a6913664f2f0954271c700d9ef83d27c238a7
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
According to [1] "%L" should expand to a full path for the
default (based on system's locale) Compose file.
[1] http://www.x.org/archive/current/doc/man/man5/Compose.5.xhtml
Task-number: QTBUG-35943
Change-Id: Ie803a89742d9c0aa3b2d759bea28ed403dc68c9c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
One reference to QSettings was only guarded by QT_BOOTSTRAPPED.
Change-Id: I2f9761ee88b4a45edb16054fdba3c3f11fec12ff
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Re-order the constructor parameters for QHttpNetworkConnection to be consistent with the #ifndef version.
Change-Id: Icd8be4406ff549d468e06d635fac2ddc34826b1c
Reviewed-by: Richard J. Moore <rich@kde.org>
The static method QDnsLookupRunnable::query() got an additional parameter for QTBUG-30166, but the #ifdef'd part was not updated.
Change-Id: Ifc317bfae6e02c00936e1922ec77f89fb5faf497
Reviewed-by: Richard J. Moore <rich@kde.org>
-added links to and from the overviews.
-added information on how to run the example.
-updated copyright.
Task-number: QTBUG-33597
Change-Id: Ib049cb94f136caa6916878959ae830248bd236b5
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Nico Vertriest <nico.vertriest@digia.com>
After commit c3baa7c1dc the qtdeclarativetextedit
tests in the qtquick1 module started failing. This was due to commit
852abfca6f4c349dce9b895956922f96d82df579 from 4.8 not being forward-ported from
Qt 4 to Qt 5, hence the comment in c3baa7c1dc
about the missing mousePressEvent line. It was intentionally removed and
instead used further down, which is what this patch adds and therefore acts as
forward-port of 852abfca6f4c349dce9b895956922f96d82df579.
Change-Id: I55978c961002382c1f228bf796c469c10686ba9f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
qdoc stores the 'files to open' into the example manifest. These
files are opened in Qt Creator's editor when an example is selected
from the Welcome / Examples list.
This change uses the following criteria (case insensitive), in
order of preference:
- .qml file matching the project name
- .cpp file matching the project name
- .h file matching the project name
- main.qml
- main.cpp
A 'mainFile = "true"' argument is written for the file that is
preferred to be the top-most file.
Having a main.qml file take precedence over main.cpp ensures that
most Qt Quick examples open into the relevant QML code instead of
the boilerplate C++ used for launching the application.
Task-number: QTBUG-37203
Change-Id: I2ea58a31b1284f4f7d424dd35d49a84a23a88c23
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
Don't send QCloseEvents to QWidgetWindows during
cmd-q application shutdown, since widgets will
will already have received close events from
QApplication close event handling.
Task-number: QTBUG-39398
Change-Id: I7f6e892b0042361bed7a3bc5fac8518eabfc8e4e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
In some cases, for instance if drawEllipse() was called with a null QRect
then it would still try to draw a QVectorPath without having enough points
in the list. Therefore the point_count should be checked first before
doing any drawing.
Change-Id: I9b8dbb87c73b74e9df9eb10ec790a484d05d4c46
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
The availablePrinters() method can be slow as it gets all info for every
printer which may be slow with many network printers.
Change-Id: I4bc5ef46ed4867326b60b66371178b84204639ce
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
The previous implementation used [NSApp orderedWindows]
which does not return NSPanel subclasses, which is
used by Qt dialogs and pops.
Use [NSWidow windowNumberAtPoint:belowWindowWithWindowNumber]
instead, which hit-tests on all window types. This
can potentially include windows from other processes
and non-Qt windows which needs to be filtered out.
Add EXPECT_FAIL to tst_MacGui::nonModalOrder. The
correct topLevelAt() implementation now exposes that
this test is failing.
Task-number: QTBUG-39322
Change-Id: I81afa3da964e08fe682802220d8fe81e9284205e
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Make sure all members of the IA2Locale we return are properly
initialized. Only accProbe provoked this bug, and I have no idea why
this haven't crashed earlier.
nvda probably does not query the locale, therefore it was unaffected.
Change-Id: I5a9d98eed5af56fd2a75f6cb7035ed613fd802d5
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Some keyboard layouts (German and Czech for example) have comma instead
of period on the numpad, so this key should also be considered when
setting the Qt::KeypadModifer state.
Task-number: QTBUG-38248
Change-Id: I06847a02a9334c21784790eae6fd7e1bc6de4099
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
The fallback for QStringLiteral in case C++11 features are not enabled
is QString::fromUtf8(), not QLatin1String().
Also, the result of a QStringLiteral expression _is_ a QString.
Change-Id: Ib9c2f4c13fff237de3acb2e0f64027bacea6271c
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
If the application calls "reset" or "commit" on the input
method (or forces active focus on some other item) from a text
changed or key pressed handler, iOS will sometimes throw
an exception. It does so because we try to change the state
of UITextInput (by calling textDidChange) while processing a
callback from the same place (insertText).
Optimally this should not happen since we would normally
post such events to Qt, not send them directly. But with
text input we cannot do this since UITextInput expects us
to update immediately upon receiving text input callbacks.
If not, word completion and spell checking will stop working.
This change will guard against recursive callbacks by delaying
callbacks to UITextInput when text/selection/first responder
changes.
Change-Id: I099f30adf1c5aba241fc833a45b423016f4ed8d0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
A vectorized codepath for rotating transforms were added in 5.3.0, but
was only properly tested for SSE2. The NEON version remains unfinished.
Since it was never working, this patch reverts the NEON version.
Task-number: QTBUG-39445
Change-Id: Ifbce0e03781d217ad976c6b18ac88381055cba66
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
QWidget::resize() or QWidget::move() set the new size/position values
and send events. The spontaneous events generated by the platform
should be ignored in that case.
Task-number: QTBUG-30744
Task-number: QTBUG-38768
Task-number: QTBUG-32590
Change-Id: I9c0ae38842ed76a8a88ca64fdc9bbe106b2766b7
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
A better fix is to check whether the widget already has the requested
geometry when receiving the spontaneous event from the platform in
QWidgetWindow and to suppress that.
This reverts commit 72259baa76.
Task-number: QTBUG-32590
Change-Id: I4d7a9b4c340c2d6a427727ecb8de50c3d199f7a9
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Remove return in mouseMove depending on variable mousePressed which
is not present in Qt 4. The variable was true in Qt versions
before 5.3 due to an additional mouse press event received before
a double click.
Task-number: QTBUG-39023
Task-number: QTBUG-25831
Change-Id: I57ed9284961195c71df9e9b9d697b1cfbad7c228
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Prevents a shutdown crash in the Qt Mfc migration solution.
Task-number: QTBUG-39317
Change-Id: I7f0aa40715baed57ff59682a477084347dfd45bc
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Like the EGL + xcb configuration, the -no-opengl is broken too when
it comes to translucent windows: Requesting an alpha channel is futile
since the xcb_create_window call always uses the root's depth and visual.
This is now corrected by picking a 32-bit visual.
This will make translucent windows and drag pixmaps appear correctly again.
Task-number: QTBUG-35126
Change-Id: I00e7d6e08b5fcc055ef3ea6d822561740a1f5457
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
Using a 24-bit visual for 8888 configs is wrong since we loose the
alpha channel. This breaks translucent windows and, among others,
leads to not showing drag pixmaps (that typically have transparent
areas) properly.
Change-Id: I516c84327680b76996b622831e431c29d840471e
Task-number: QTBUG-35126
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Many windowing functions are not supported (since they do not make sense)
on the embedded platforms. Provide empty implementations for a few more
to avoid showing useless warnings, in particular for widget apps. The
user cannot do anything about it and these are not errors.
Task-number: QTBUG-39081
Change-Id: I29afd981e037d1e6772bcdfc33497e6d0ae02008
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Some drivers are reported to get confused when passing different
sample counts (requested vs. actual) to the color and depth/stencil
attachments. To overcome this, pass the requested sample count to all
the attachments.
Task-number: QTBUG-33406
Change-Id: I17b0e3dbbd78de2ab0f45e95164b4f326d47aeff
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Kimmo Leppälä <kimmo.leppala@digia.com>
This was the only place where we didn't use the exceptionCheck()
function. Besides being more consistent, it's also more verbose if an
exception occurs.
Change-Id: Ib1e3dba82b0730cf189ec725f4da425d7ac85cdc
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
the install dir may contain indexes from previous builds. a build must
never refer to previous builds.
Change-Id: I67c04df8f3f82bdbebb67e280f70795ed0a76ccf
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Adds QApplicationPrivate::usesNativeStyle to check whether the
QApplication is using the native platform style.
This can be needed internally to decided whether to let the platform
plugins do stuff or do it interally, style dependent. E.g. letting the
platform plugin popup a QMenu vs. letting the style draw one.
Change-Id: Ibb5e11a4d9d1d2824685ff146786a9354ceef43c
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Some codecs can't handle the range outside ascii properly and would then
fail to read the data back in correctly.
Task-number: QTBUG-15543
Change-Id: I4c02921e787a939eeec0c7a11603b5896d756aef
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Store the value of QMessageBoxPrivate::autoAddOkButton
temporarily when automatically adding the "Show Details..."
button.
Task-number: QTBUG-39334
Change-Id: I173c83893548ee83b3d8ea2743f87686c32657e7
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
There are no automatic updates of the window when it moves, since
this is not required on most platforms. This broke drag and drop on
Android, because drag and drop creates a temporary window containing
a pixmap with a snapshot of its content. We need to make sure the old
and new location of the window is repainted when it has moved.
[ChangeLog][Android] Fixed repaint issues in drag and drop.
Task-number: QTBUG-35975
Change-Id: I7b043d728551d9963fb5acec804fb90aec5b50ff
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
This is pretty much the same thing that eglfs does.
Task-number: QTBUG-38960
Change-Id: Ibf310ca8e3a4e31e5310ab3a3d3e851eae31a4ad
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
There were several issues on startup of the application which
were caused by the fact that we would get the wrong
available screen geometry on startup, set this as the
initial surface size and then expose native windows with this
size. This would cause first a flicker of white on the early
expose and the window contents to jump around as the window was
resized to the actual available space on screen.
The fix for this is to postpone the first expose until we have
actually got a proper screen size from the main layout. We use
width,height = 0 as an indicator that the available geometry
is not yet known, and we skip posting any expose events before
this is set by the layout.
In addition, since we removed the surface before we shut down
the application, it was by a white rectangle before the
shutdown transition happens, and this white rectangle will
be animated instead of application contents.
To rectify this, we make sure the last surface in the stack
remains in the layout until it is either replaced by a different
surface or until the application has shut down. This way, the
shutdown animation will work on this surface instead.
[ChangeLog][Android] Fixed regression where there would be flickering
on startup and shutdown of the application.
Task-number: QTBUG-38960
Change-Id: Ia1579ca8c522d8beeab066f78070ad49009d0238
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
QCocoaEventDispatcher stores user input events in a queue in certain
cases. If the target of those events is destroyed, the events are later
sent to the stale window, causing a crash.
Task-number: QTBUG-39211
Change-Id: Ie55d2df5697c742bcb644ebf8c5028015a0b8148
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Don't interrupt the Qt event loop if the Qt event
loop isn't running (meaning processEvents has not/
will not be called). This can happen in the QMacNativeWidget
or plugin case where the native code calls [NSApp run]
and QApplication::exec() is never called.
In Qt 4 this was not necessary since UI event
processing was more direct: QCocoaView would call
QCoreApplication::sendMouseEvent/sendSpontaneousEvent
directly on mouse events.
Task-number: QTBUG-36225
Change-Id: I2894cbbca66a902652c9f8bc916e94ad8ce0e18e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Block flush until all bits have been flushed. This prevents Qt from trying to
draw over the buffer while it is still being cleared.
Change-Id: I49b90a7653ec3768411a1a94837bb31fec4d44e8
Reviewed-by: Frank Osterfeld <frank.osterfeld@kdab.com>
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
HSTRING needs to be released or handles will be leaked.
Instead use HString which takes care of resource management
on its own.
Task-Number: QTBUG-38115
Change-Id: I2c767776c1f22f45acd8dd77b693f30d63d894b9
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Testing whether alphaBufferSize() != 0 does not work, because when no alpha
channel is present, alphaBufferSize() can return '-1', which will cause
non-transparent windows to be wrongly cleared and an artifact will appear.
Change-Id: Id9e985f105c0bb302cc6f53960a5dbae2acdb921
Reviewed-by: Frank Osterfeld <frank.osterfeld@kdab.com>
Reviewed-by: Wolfgang Bremer <wbremer@blackberry.com>
Reviewed-by: Sergio Ahumada <sahumada@blackberry.com>
It will now share the same behavior as QGroupBox, which has NoFocus
if its not checkable.
This doesn't lure AT clients to stop and read its content (this is the
case for android accessibility) (designer seems to generate a tooltip
for each QDialogButtonBox, which will be read as the name).
Change-Id: I6cfacdd9c01299521222c773634df1e36971d982
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
gestaltSystemVersion's encoding only has room for a single version
digit. Thus, OS X 10.10 would previously have been detected as OS X 10.9
(Apple's comments in the header even warn against this).
Change-Id: I41c35b1507d39e2958a9aaffaa8c48ac380f61d9
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QSignalBlocker resets to the previous state, which might have already
been a blocked signal state.
Task-number: QTBUG-39352
Change-Id: I918cc6ea346755b940e027cee5d6704824fbba32
Reviewed-by: David Faure <david.faure@kdab.com>
Instead do it only once (in registerNatives). This is seems to be the
preferred way of doing it in other parts of the platform plugin.
Change-Id: I361a7862bb5a24b4024c7c6a30ecb14fc515d4ff
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Qt5 allows QAIM subclasses to reimplement the sibling() method. Unfortunately,
the default QAbstractProxyModel's reimplementation differs in behavior to what
the Qt4 version was doing. In particular, the Qt4 version used to use the row
and column as positions within the proxy model, while the Qt5 version mistakenly
does this at the level of source model. This is arguably broken; the caller asks
for a sibling of the proxy index, not for a sibling within the proxy model.
This change makes the QAPM::sibling work explicitly in the same way as the Qt4
code behaved.
The reimplementation of QAbstractProxyModel::sibling was introduced in
9dfba89c28. It was subsequently fixed with commit
999109866d not to return indexes from the source
model, but the logic was still different from the Qt4 version.
[ChangeLog][QtCore][QAbstractProxyModel] Fixed QAbstractProxyModel::sibling to
work in the same manner as the Qt4 code used to behave. Previously, Qt5's
implementation would treat the row and column as positions in the source model
instead of a position in the proxy itself.
Followup-to 9dfba89c28 and
999109866d
Change-Id: Ia25027b2ad9e4777ba28de2d2226d48f8cccf587
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
The sanity check added in d16508a285
didn't actually catch the case where the invalid data is large
enough to contain the offset table and table directory. Added sanity
checks to all the code that accesses the font data now, so this
should fix crashes with partial data as well as invalid data.
Task-number: QTBUG-37190
Change-Id: Ie43f10d8cf0b09007783b9b1c4d91bfed8c6b0f0
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
identified by static analysis from
http://www.viva64.com/en/b/0251/
Change-Id: I0042336d9598415b978bf9819e74639685c627b5
Reviewed-by: Martin Smith <martin.smith@digia.com>
-transferred group page from qtdoc repository
-added description in example pages
-set the example documentation to use the standard Qt thumbnail
-added an entry in the help index for the example page
Change-Id: I9d5747bc329b5ecc15acd2eb3139696931166c6f
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Call [NSApp endModalSession] at the correct time.
Calling cleanupModalSessions() from processPostedEvents()
resulted in endModalSession being called from within
[NSApp runModalSession] - ending and cleaning up the
the modal session while Cocoa is still using it.
Move the cleanupModalSessions() call to to after
runModalSession returns.
Task-number: QTBUG-37699
Change-Id: I5868def36f6869667b0bbe33733286e3e49488eb
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
This reverts parts of commit d9875f7bff,
in particular the code for "2. Make interrupt() use [NSApp abortModal]"
abortModal is not the right way to end a modal session,
and introduced bad side effects, as reported in
QTBUG-34677.
Restore this part of the event dispatcher to the
Qt 4 state.
Change-Id: Iacc2d4a0757807c87c4320c93ed4db186622945c
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
This reverts commit ff3dcc49c4.
The reverted commit is an incorrect bug-fix for a
regression introduced by adding a call to
[NSApp abortModal] in change d9875f7b.
Change-Id: I1307d1790ada740e0552d62267b6009cbccd6c4c
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
This reverts commit a9cbddf473.
The reverted commit is an incorrect bug-fix for a
regression introduced by adding a call to
[NSApp abortModal] in change d9875f7b.
Change-Id: If23463ebdfe2ff64c68739dbece73a13773683c9
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Call clear() in the destructor of QOpenGLTextureGlyphCache class to
prevent QOpenGLGlyphTexture object leak.
Change-Id: I290b09b0786d30603391e6855a21e9232b112739
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
These functions are not used anywhere. Since the classes are not
documented, we're free to remove the inline functions.
The implementation of the const function in QMapNode is also bogus: it
discards a const qualifier.
Task-number: QTBUG-39301
Change-Id: Ib8fd10a4da4b58a62cef17017ea6127c4d964325
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
QRasterPaintEngine::alphaPenBlt makes the assumption that a device with
bit depth 32 has optimized alphamapBlit and alphaRGBBlit routines.
This will fail on RGBA8888 format resulting in some text not being
rendered.
Change-Id: Ia7d88bb0e3094894affceda1acc42396b67b3677
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Note added in QNetworkReply and QSslSocket documentation.
Task-number: QTBUG-16770
Change-Id: I2dd8cfb913ec29a96b5465a905cd213713b8d537
Reviewed-by: Richard J. Moore <rich@kde.org>
This change improves the synced resizes of xcb windows and adds support
for synced resizes of glx windows.
The QXcbWindow keeps a better track on whether the window manager
expects a sync and can be in one of three states:
* no sync required
* sync required, but configure notify event not yet received
* sync required and configured
By tracking this in the QXcbWindow itself the backing store can make
use of this information and doesn't need an own heuristic to decide
whether a sync is needed.
Also this allows to add support for synced resizes of windows with an
OpenGLSurface. This is accomplished by checking the sync state after
swapping buffers. As the OpenGL context may be bound to a background
thread the sync is done using a QueuedConnection to ensure that the
sync happens in the thread which created the xcb window.
So far this is only added for GLX.
This significantly improves the resize experience of QQuickWindow and
also the initial mapping with a composited window manager in case the
compositor uses the sync protocol to determine whether the window is
ready to get painted on screen.
Change-Id: Ied0261873043d785dec652d2821fc3638292fa36
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
If the call to SQLNumResultCols fails for whatever reason then it will
not be correctly caught since the count might be higher than 0 since it is
uninitalized. This ensures that if it fails then it does not try to act as
if it succeeded.
Task-number: QTBUG-39137
Change-Id: Ifae8c1f7fac8416643f2317747f87295642a7935
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
For ASCII content, this improves the throughput because the conditional
is no longer on the codepath to storing, so the processor can perform
the store at the same time as it's doing the movemask
operation. However, the gain is mostly theoretical: benchmarking with
mostly ASCII content shows the algorithm running within 0.5% of the
previous result (which is noise).
For non-ASCII content, we're comparing the cost of doing a 16-byte store
(which may be completely overwritten) with the loop copying and shifting
left. Benchmarking shows a slight gain of a few percent.
Change-Id: I28ef0021dffc725a922c539cc5976db367f36e78
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
The static initialization of QDBusConnection::systemBus() can occur
before the creation of QCoreApplication. This causes a warning from
QDBusConnection and may cause the application to crash on exit.
Since QDBusConnection::systemBus() is just an accessor, there is no
real advantage to storing a static reference to it.
Task-number: QTBUG-39248
Change-Id: I4401810c7c2ffd21a30f9ffd41b3a46e7e09214c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
As ANGLE doesn't support GL_RGBA as the internal format for its
multisampled framebuffer extension, use GL_RGB8_OES to ensure a working
out-of-the-box experience.
Task-number: QTBUG-39283
Change-Id: Icb364225e74e5d3480a8617131a56e9f65f04ba5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Mark the window as not opaque and give it a transparent
background when layering OpenGL below the window.
Change-Id: I2188842249c592f17619f7a2c3ef1fd30958987e
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Cast the NSWindow to a QNSWindow instead. Now there
is no way we can fail to maintain the hash properly.
Change-Id: I5fd03b6fad964a61fadb3460b7063fd43ff25c79
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Clear the QCocoaWindow pointer stored on the QNSWindowHelper
when detaching from the platform window. This makes
sure callbacks from cocoa does not try access deleted
Qt window objects.
Task-number: QTBUG-39141
Change-Id: I4672eae92940dcbd59a2848e56f94b50a828bbf6
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
For whatever reason direct2d and the raster engine disagree by one pixel
about the positioning of positively sloping aliased lines. To get the same
output, we shift such lines by one pixel.
Change-Id: I4b20319770c02e3fdd212b3535ccae3c27ca9f2f
Reviewed-by: Risto Avila <risto.avila@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
If you do sock->write(data) followed by sock->close() then the data
written is not transmitted unless you flush when using QSslSocket but
is when using QTcpSocket. This change makes QSslSocket work like
QTcpSocket.
Change-Id: Ia2e1c021dc48ac0d573f78da782ea77641c03bc1
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
beginModalSessionForWindow will center the window and ignore
the set geometry. So to workaround this it checks the new value
against the old one and moves it back if need be.
Change-Id: I38bc74c04138992f2e0570fca666414025aeeba8
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
In WindowsVista style and later the sort indicator is placed above the
text as opposed to alongside it. Therefore the extra space given is moved
to the common style allowing styles that have it placed differently to
easily ensure it is not included.
Task-number: QTBUG-19915
Change-Id: Ic21fcc1d95f4c3cc2eb9c465e1c8afb9b805389a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
IANA reserves scope ID of 0x0 to mean "no scope ID", so make sure that
we don't try to set it when reading from the sockaddr_in6 structure.
Change-Id: I71b207e6f8262ab2bf9fde993288a71ba63c7572
Reviewed-by: Richard J. Moore <rich@kde.org>
Don't use only the GL version, as vendors expose many many extensions
on viable hardware.
For instance, I have a NVIDIA G210 which supports up to GL3.3, but
which features immutable storage, immutable multisampled storage,
texture buffers and ranges, stencil texturing, and cubemap arrays.
Change-Id: Ie6023ee854b679737fca982578cb2093e10d083f
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
The documentation needs to use the defined parameter names for the signals
as this is what QML will make them available as if they are used in a
connection to that signal.
Task-number: QTBUG-35694
Change-Id: I0f56b9e1ace45cfff72c45273dd64766e3c792f2
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
On Windows, it is possible to pass native Windows paper source
ids >= DMBIN_USER to QPrinter::setPaperSource() and they are
listed by supportedPaperSources().
Task-number: QTBUG-38897
Task-number: QTBUG-38888
Change-Id: I8f1264e80ce5bdddd3873602200b24eabee00502
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Factor out common code paths from the QPixmap/QImage conversion
code and use the same algorithm for copying the image data with
alpha correction as does qt_pixmapFromWinHBITMAP().
Rename the previous version of qt_imageFromWinHBITMAP() to
qt_imageFromWinIconHBITMAP() since it is used for HICON conversion.
Task-number: QTBUG-39084
Change-Id: Ia4042c33db485c3604461a5eafd6282968b36e3b
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
A typical pattern in an application is to listen
for "enter" in a line edit and transfer focus to
the next edit in the focus chain. This would currently
not work on iOS since we would force the keyboard down
after delivering the KeyPress/release events, effectively
overriding any focus handling done by the app.
This patch will hide the keyboard _before_ sending the
events, so that we don't override focus handling done
by the app. By also hiding the keyboard using
QInputMethod, the hiding will also be delayed a bit
(in QIOSInputContext) to catch subsequent hide/show calls.
Change-Id: Ic19511d494a55d1bda963ed9bc7185d63b51bc03
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
- rectify confusion and outright disinformation about argument quoting
- say that open() is an alias for start(), not the other way round, as
this is more consistent
- apply some trickery to hide mergeable startDetached() overload
- rename program -> command where it stands for a joined command line,
for consistency
- copy less information to the various overloads
- misc language fixes and reshuffling
Change-Id: I1b9c8dbed003f551ee6855044bbfc0aedddb4757
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Doing makeCurrent() followed by destroying the surface (and no
doneCurrent) results in still having the pointer stored internally
in the QOpenGLContext. If then a function like defaultFramebufferObject()
is called, the pointer is dereferenced.
To fix this, the doneCurrent() has to be called when the surface is destroyed
before the context without doneCurrent(). This is pretty much what the
user would expect anyhow.
Task-number: QTBUG-38994
Change-Id: Ibd4083d9291c7fd39b38ce81a988a8e0c9d55d60
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Instead of loading the default font "Helvetica", which is likely not
part of the package, load the first font found.
Change-Id: I225979986883a26c3fec72858cf32c3d1e45d902
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
It turns out that supporting HighRes painting with Direct2D is quite
simple. Two things are necessary.
First, we set the unit mode to D2D1_UNIT_MODE_PIXELS on all our device
contexts, which tells Direct2D that we specify everything in pixels.
Direct2D will internally do the required conversions.
Second, we scale font sizes according to DPI.
Previously rendering errors resulted when a highres mode was used, this
fixes those errors.
Task-number: QTBUG-39105
Change-Id: Ibb4dbea4746687228249e2c36d48c4bd6c5c7bf9
Reviewed-by: Risto Avila <risto.avila@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
The call to processEvents had the flags separated by a comma instead of
bitwise OR. This worked because processEvents has an optional second
argument that is an int.
Change-Id: I6dc74bc44b1d782aa7206f106c51c16eab5f2a76
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
When these extensions aren't available, use ANGLE's versions of them.
Task-number: QTBUG-31010
Change-Id: I9a85b9f4d2bb60bdb1d79c92edf241b95d0627bf
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Previously, the backing store and default framebuffer were created with
the logical screen resolution (in device-independent pixels), not the
the physical screen resolution. This lead to blurry text on high-DPI
devices. This change fixes this by creating those at full size, and
setting the device pixel ratio appropriately. Windows are still reported
in device-independent pixels, but text and images are now rendered
sharply for Qt Quick applications.
As QPainter does not support non-integer scaling, the backing store is
still drawn in DIPs and scaled by OpenGL.
Task-number: QTBUG-38464
Change-Id: I7377d4c734126825d670b8ebb65fd0dd1ef705f2
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
ANGLE has been creating the framebuffer in logical pixels instead of
physical pixels, which leads to unexpected results and side effects like
smudged anti-aliased text. This fixes the issue by multiplying the DIP
resolution by the scale factor, making the framebuffer match the physical
pixel resolution of the screen.
Change-Id: I3594995ce8e18a31b47e27165f72bc6a391b97b6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
- Unsupported code paths for WP8.0 are avoided, and new APIs are used
where appropriate (virtual keyboard)
- DirectWrite fonts are loaded on WP8.1
- Platform dialogs are used on WP8.1
Change-Id: I721006ac943ad4e248f0f1590ce247a03e40fbc0
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
The function already needs information from the engine for conversion,
moving it into the private class makes it possible to get this info
directly in the method and makes calling the method nicer.
Change-Id: I47fa9a4531d0d0605aa587fba90fbfdf036f0998
Reviewed-by: Risto Avila <risto.avila@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
This function was used only in one place and duplicated a lot of logic
with the very similar QVectorPath conversion function. Just use
QVectorPath everywhere instead.
Change-Id: I3a4821f0452634c309ca0730047ea6ef7a7591ca
Reviewed-by: Risto Avila <risto.avila@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Hooking into the caching mechanism gets us a measurable performance boost
for paths that are drawn repeatedly, around 10% on my machine when drawing
aliased arcs.
Change-Id: I32f4ed7daa8a51b5c5a9c6d5414ab5d4ef759f70
Reviewed-by: Risto Avila <risto.avila@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Implementation will be added for Qt 5.4.0 as it cannot be done
sooner.
Change-Id: I4d2626416fae99339988cd994653ce7ec753f081
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QSqlResult::bindValue(int index, ...) is increasing the memory usage
when called multiple times for same index
Task-number: QTBUG-33169
Change-Id: I4f26125f6bb994bb430dc054df5761b6ddf03075
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
This fixes an issue where, if characters were removed from several
blocks in a single edit, the document layout would end up being
corrupted since the document layout manager wouldn't re-layout the
proper number of text blocks.
Task-number: QTBUG-30051
Change-Id: Idf3a6f567120e6a5dbebf1f65f685d374219328a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
When syncing between QAction and native NSMenuItems, the ampersands
(mnemonics) were removed twice. This lead to double ampersands being
removed instead of replace with single ones.
Task-number: QTBUG-37933
Change-Id: If1d9cd247b467472647b22b38460b44b03f13d82
Reviewed-by: Liang Qi <liang.qi@digia.com>
The data given to putenv(3) becomes a part of the environment, as
described in SUSv2, so If the data is unintentionally modified or
deleted the consequence can be fatal.
In previous versions of Android, the putenv(3) implementation made a
copy of the data, so this bug has gone unnoticed.
Task-number: QTBUG-39042
Change-Id: I20559c848fded10eeae54c4700ba0f4669fe49fc
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Qt sometimes report that the selection anchor is placed before
the cursor when querying it for current selection. We need to
accomodate for this when reporting current selection back to
iOS, since it expects the range to always be positive.
When pressing backspace, iOS will select the letter that should be
deleted, and then call "deleteBackwards". If holding down backspace
for a while, it will start selecting whole words instead.
Since we reported negative ranges during this process, it caused
artifacts and stray letters to be drawn.
Task-number: QTBUG-39073
Change-Id: Ida9518307adce915adf49160b541a2f88637a0da
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Any bootstrapped tool is a development tool, by definition. So the
effects of seeding the hash with a random number can cause the same
source input to produce different binary results, which can throw some
caching tools into disarray (like the Open Build System).
There should be minimal fall out from the reduced protection against
DoS. Since those are only development tools, "specially crafted" input
implies the developer is DoS'ing him/herself.
Note: the change to qhash.cpp applies to moc and rcc, which are always
bootstrapped.
Change-Id: I061ab52036e40627c0703f1bf881455cbf848f43
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
"htmlTitle" never diverges from "fullTitle".
Change-Id: Id1ce9005311bd86aa9803836168a2bebae6db65d
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Move it from bootstrap.pro into qt_module.prf so it will apply to any
other bootstrapped libraries, like libQmlDevTools.
Variable called "SPLIT_SECTIONS" because -fdata-sections could be added
in the future, if it proves to be a benefit.
Change-Id: I3fbb004f111620a84e58e9112e9bce3afd95631e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Avoid accessing the internals of the SSL_CIPHER struct since this has
changed size etc. over time leading to binary incompatibilities.
Task-number: QTBUG-32423
Task-number: QTBUG-23363
Change-Id: I8cb399484e3a62be7d511f4b8b22c876825c87d4
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Reviewed-by: Daniel Molkentin <daniel@molkentin.de>
For Windows builds, the necessary libraries are not found
in the sdk if the wrong environment is used, which is quite
common.
Task-number: QTBUG-34940
Change-Id: I7d844649790cbfacab3154a717d318fd570c4149
Reviewed-by: Brad King <brad.king@kitware.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Recreating QCoreApplication could cause a crash in QNetworkAccessManager
constructor. That was caused by an invalid shutdown detection introduced
in f273d6fbc0.
Task-number: QTBUG-36897
Change-Id: Ib5bba773a2a4fcde690a3a93680aef551aae3a5b
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Use native direct2d stroking instead of falling back to
QPaintEngineEx::stroke which in turn calls the pure virtual
QPaintEngineEx::fill which is reimplemented in QWindowsDirect2DPaintEngine.
In some cases like arc stroking this is significantly faster (up to 3x in
my measurements) and results in better visual quality.
Change-Id: I1c86ff772ba591432ff6550c7c59704ace4f0e0f
Reviewed-by: Risto Avila <risto.avila@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
It turns out that the version we were testing against was more recent than
basic Windows 7 SP1 + Platform Update. The direct2d version that
combination produces without any other updates is 6.2.9200.16492, and it
is sufficient for us.
Change-Id: Ib9840647371e2bb5c71bf74486348444ed4b4c19
Reviewed-by: Risto Avila <risto.avila@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
libxkbcommon-x11 uses xcb_discard_reply() function which was
introduced in libxcb 1.6, this brakes the compilation in
src/3rdparty/xkbcommon/src/x11/util.c when linking with libxcb 1.5 :
linking ../../../../plugins/platforms/libqxcb.so
.obj/util.o: In function `adopt_atoms':
util.c:(.text+0x347): undefined reference to `xcb_discard_reply'
collect2: error: ld returned 1 exit status
We can use an alternative approach to discard uncollected replies
and in addition add a fix for out-of-bounds error [1]
[1] e3f751be66
Task-number: QTBUG-38952
Change-Id: Ide90f9a2e75fc79d2bab0b81adb282c8cc81c345
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
On QNX mbstowcs does not ignore last parameter (max) when first (dest)
is NULL. Set it to sufficiently large value to yield proper results on
QNX. Other platforms (standard libraries) will ignore this value anyway.
Change-Id: Ie4695254d45082e151a052bf16de684af3b1ba1e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
If the scan thread is running when QCoreWlanEngine is destroyed
it will access stale data and cause a crash.
Task-number: QTBUG-36000
Change-Id: I8cc9e39a3f7d4736da39e8b31f6963db35318f19
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
On OS X, most controls are drawn active or inactive based on their
window's main state, NOT its key ("active" in Qt) state.
Change-Id: If447d0a537bc594978f7202e7888ceacb54ec8fa
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Without it, one might run the risk of QDateTime::currentDateTime()
returning an invalid QDateTime the first time after changing timezone.
Change-Id: I3efb04d41e7fe4685f6cc5fb41b68424eb4b9eb8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>