Commit Graph

3503 Commits

Author SHA1 Message Date
Sérgio Martins
ad2ea16550 Fix 1700 override warnings [-Winconsistent-missing-override]
Classes should either use or not use override, otherwise it hurts
code readability.

Some inline keywords were removed because of an error with MSVC2010:
error C2216: 'override' cannot be used with 'inline'

Change-Id: I7276d5525a92281bd0d743beb11d0dc73441443b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-03 22:52:14 +00:00
Laszlo Agocs
e445fa45b1 WGL: support reset notifications via GL_ARB_robustness
Handling context losses is unavoidable with ANGLE. Introduce
some level of support for desktop GL too by making it possible
to opt in via a new flag.

Support is added for Windows (WGL, opengl32) only for now.
In case of Windows with ANGLE setting the flag is not necessary,
context losses will be reported regardless.

Change-Id: Ic354c1382e876566538c52a4381f7ff328b7477e
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-02-03 16:16:56 +00:00
Allan Sandfeld Jensen
5bd41b850f Correct inplace conversion methods from RGBA8888 formats
The methods for inplace conversion from RGBA to ARGB was misplaced by
one step causing conversion to RGB16 to get an invalid method.

Change-Id: I3b2b4cffe993705c48613eec7d9b7c6213f57fc2
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-02-03 14:21:29 +00:00
Tor Arne Vestbø
c5db8fc74a Make it more obvious that Q_WS_ is dead code, and should perhaps be ported
We still have a bunch of Q_WS_ ifdefs in our code, which are easy to
mistake for Q_OS_ ifdefs when quickly scanning the code. By renaming
the ifdefs we make it clear that the code in question is dead.

In incremental follow-ups, we can then selectively either remove, or
port, the pieces that are dead code.

Change-Id: Ib5ef3e9e0662d321f179f3e25122cacafff0f41f
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-03 11:49:14 +00:00
Ruslan Nigmatullin
a40d390a3b Fixed icons lookup in QIcon::fromTheme
This commit fixes incorrect logic of icons' lookup if there are
fallbacks or more than one theme's directory.

According to Icon Theme Specification, Directory Layout section, theme
can be spread across several base directories by having subdirectories
of the same name. This makes possible to extend system themes by
application-specific icons without making of collisions with other
applications.

According to Icon Naming Specification, Icon Naming Guidelines section,
icon name may contain dashes to separate levels of specificity in icon
names. This makes possible to set in application very specific icon
which may be not in every theme. So it can fallback to less specific one.

Change-Id: Iafc813902a3646be56e8f1d3a2fdbf8fd32ac542
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-02 23:28:19 +00:00
Allan Sandfeld Jensen
9cd5c61455 Avoid unneeded QBrush::texture() calls
If a QBrush has been created without QPixmap the texture() method will
create one. This patch avoids that in several places by checking the
type of the texture brush before accessing it, or not accessing it at
all.

Task-number: QTBUG-43766
Change-Id: If6009fe1d5bd51b239ae2c838e5c3b904b56b11a
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-02-02 22:05:31 +00:00
J-P Nurmi
cc7d84e09e QStyleHints: restore CONSTANT to non-NOTIFYable properties
The removal of CONSTANT keywords broke intended QML usage:

  property string: Qt.styleHints.passwordMaskCharacter

and leads to such warnings:

  QQmlExpression: Expression ... depends on non-NOTIFYable properties:
    QStyleHints::passwordMaskCharacter

Change-Id: Iadc5ddcbe5c5704f146e073f514845426ff0ec4d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-02 21:55:47 +00:00
Marc Mutz
46d3c25980 Partially revert "QFixed: fix undefined behavior"
This partially reverts commit 1755038134,
which did not only fix undefined (signed left-shift), but also
implementation-defined (signed right-shift) behavior. It turned out
that code depends on a particular implementation behavior (logical
instead of arithmetic right-shift), and needs to be fixed first.

Change-Id: I9ba32d06f127d17d05e0c6f6eac3d26268587bca
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-02-02 16:43:16 +00:00
Maks Naumov
b81a52dc38 Reduce number of QRegion::rects() calls in QBlitterPaintEngine::fillRect()
And remove unused variable.

Change-Id: Ife98bbe5b02e1d18639c100ed3e58985a2ea9218
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-02 16:16:06 +00:00
Mitch Curtis
8cb611be7b Add some punctuation to QTextCursor's detailed description.
Change-Id: I3b3eab74888f283a9890321fadcae67c09c24b61
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-02-02 15:34:10 +00:00
Laszlo Agocs
aa475a30af Expose the ThreadedOpenGL cap to apps
Applications have no public API to check for the ThreadedOpenGL flag
reported by the platform plugins. Add a static function to QOpenGLContext
to give interested applications a way to decide if they should do
rendering on separate threads.

Task-number: QTBUG-44208
Change-Id: I629332512ab31fe49f842065a911270cd6cea7aa
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-02-02 14:03:29 +00:00
Laszlo Agocs
d800180f82 Utilize EGL_KHR_surfaceless_context in QOffscreenSurface when available
Use it also in the context initialization code which also relied on pbuffers
until now.

This is safe to do since QOffscreenSurface is deliberately kept minimal: we only
support it for rendering to FBOs or uploading textures, it is quite useless for
any rendering type of operation. Therefore simply not creating a surface when
the extension is available is viable and should not break anything.

While we should have done this a long time ago, the real inspiration now is
to avoid crashes with some bad EGL implementations.

Mesa in particular tends to crash in its interal configuration handling when
trying to create a pbuffer surface with more exotic attributes, for example with
multisampling enabled. Just getting rid of those properties is not an option
since the resulting pbuffer would not be compatible with the existing context.
Therefore our only option is to avoid the pbuffer altogether.

There's a so-far-ignored patch for Mesa http://patchwork.freedesktop.org/patch/38100/
which tries to solve some of this but it turns out it is not sufficient to avoid problems
with the multisampled case. So to avoid more headache, we just stop using pbuffers
there.

[ChangeLog][QtGui] QOffscreenSurface is now relying on EGL_KHR_surfaceless_context when
available, and avoids creating a pbuffer surface when the extension is present.

Change-Id: Id18742768b8e66c8d92ce65a9bf64b0296e14db7
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-02-02 14:03:24 +00:00
Allan Sandfeld Jensen
9be87085d8 Only use 32bit version of qPremultiply
With auto-vectorization enabled in QtGui, the 32bit version of
qPremultiply is faster than the 64bit version since it can be vectorized
wider (4x on 128bit as opposed to 2x). Since all our important 64bit
targets have SIMD, that makes the 64bit version pointless.

Change-Id: I4e9070a3a3c8e2b54f17a95ba0aee0405cbb8ec9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-02 11:14:00 +00:00
Frederik Gladhorn
55162dae7e Merge remote-tracking branch 'origin/5.4.1' into 5.4
Change-Id: Idadb5639da6e55e7ac8cc30eedf76d147d8d5d23
2015-01-29 10:05:01 +01:00
Lars Knoll
bcf6a3eb34 Remove unused class QPaintBuffer
The class hasn't been used for a while anymore. Since it's
private, simply remove it from QtGui.

Change-Id: Ia0911d1c8b8836d963a51c8e354c96bc1ee4093f
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-01-28 15:44:18 +00:00
Konstantin Ritt
6ef40175e5 Introduce QMatrix4x4::isAffine()
- a convenience method thats checks if the matrix
has no projective coefficients.

Change-Id: Ieea8ac2e4237b471a683ad5010672b1e89a0c953
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-28 12:37:52 +00:00
Konstantin Ritt
14419b0a2b Introduce QQuaternion::inverted()
Change-Id: I6de77082bb7c32e48fb7f7d765a58fdbe68db1fd
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-28 12:37:50 +00:00
Konstantin Ritt
a14559bc78 [QVectorND] Add missing operator/=(const QVectorND &)
Change-Id: Ic1d2912808b95e02ba5d9cb2972c81c6374bbca9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-28 12:37:47 +00:00
Laszlo Agocs
f939c3728c Bail out in composeAndFlush when makeCurrent fails
And show a warning so we have a chance of knowing what
happened.

Change-Id: I9ddf3842b7d19946876ac1a2375611e8c13bbb9a
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-28 12:37:14 +00:00
Konstantin Ritt
3c1e16df75 Micro optimizations to HB-NG path
No changes in functionality.

Change-Id: I9cf90241bdb087ef16fb0b759a5976848a197f55
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-24 17:33:00 +01:00
Tor Arne Vestbø
d824c7bcc5 Track QPlatformScreen -> QScreen using QPointer
Allows the QPlatformScreen to verify that the QScreen is alive before
sending events to QPA for the given screen (which will assert if the
screen is being destroyed).

Change-Id: Ie77674fead3e0a4d4f6fedbf1f7f3c98364c7485
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-24 13:23:54 +01:00
Giuseppe D'Angelo
7414c2c404 QOpenGLWidget/QOpenGLWindow: add a destructor which calls makeCurrent
Generally speaking, QOpenGLWindow subclasses are going to use some
various QOpenGL* wrapper object to handle their buffers, FBOs, etc.

Some of those QOpenGL* wrappers are QObjects, hence it should be safe
to have them as child objects, and expect Qt to clean them up properly;
but that doesn't happen because of how the destruction will work.

In particular, when the subclass object is deleted, there may not be
the right OpenGL context set as current. The deletion will go up to
~QObject, where the child objects will be deleted, resulting in a crash.

That will *also* happen if someone connected to the context's
aboutToBeDestroyed() signal: the context will in fact be deleted
after the child objects, since it's stored in QOpenGLWindowPrivate,
whose dtor will be run after ~QObject (!).

Now, in the general case, QOpenGLWindow subclasses should always
have a dtor in which they call makeCurrent() (also because various QOpenGL*
class are not QObjects, hence they're kept around as full members
instead of pointers-to); but at the same time we should clean up
properly the QObject children.

All of the above of course stands for QOpenGLWidget as well.

Task-number: QTBUG-44094
Change-Id: I2379041fe175416936f6d40292039f773a515b35
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-01-24 12:35:56 +01:00
Marc Mutz
3527fd62c2 src/gui/painting/painting.pri: add missing qfixed_p.h
Change-Id: Iba176345ec9448c936cd89b06ea24272df94fc1f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-24 11:11:40 +01:00
Andy Shaw
1bb05c4daa Keep the width as it is to ensure the underline is drawn correctly
When the width of the decoration was floored then in some circumstances
(such as when latin and Hangul text was mixed) an underline of the text
would appear to be broken on HiDpi screens. Since the width is correct
then we should keep it as it is to ensure it meets up correctly.

Task-number: QTBUG-44062
Change-Id: I2cbf722a9cf9c7e15caa9aad061bf28d3bd0bb59
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-01-23 15:58:15 +01:00
Konstantin Ritt
4046055caf Deprecate QFont:: rawMode()/setRawMode()
rawMode only has an effect under X11 in pre-QPA times.

Change-Id: Iaff8fed8f4ae5af5dd0399bb3ebd9d590a39a758
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-23 14:06:03 +01:00
Maks Naumov
8309758879 QTextCharFormat: fix word spacing setup
Properly check QFont::WordSpacingResolved when use setFont()
with QTextCharFormat::FontPropertiesSpecifiedOnly

Change-Id: I72f1641ef7587cbaf8fcf5fef2f3c44393b0ebfc
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-01-23 14:02:17 +01:00
Laszlo Agocs
2bc038adc9 Expose context loss
On platforms like Windows (and presumably on mobile devices too)
the loss of the context (e.g. the underlying D3D device in case of
ANGLE) is an event that can happen randomly and needs sufficient
handling.

Enhance QOpenGLContext::isValid() with the purpose of indicating
context loss.

Currently only the Windows EGL backend (ANGLE) has support for it.
Other platforms may be added later.

Task-number: QTBUG-43263
Change-Id: I8177694c1ee7cebbd5d330e34757fd94c563e6d6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-22 14:16:50 +01:00
Tor Arne Vestbø
a2b358e7f5 Only show QWindows after QScreen destruction if coming from virtual sibling
For windows that were shown on an external screen (not a virtual sibling
of the primary screen), eg. on iOS, it doesn't make sense to re-show the
window when moved back to the primary screen.

By moving the logic into the QScreen destructor, we ensure that the code
path is hit both for the old and unsupported style way of destroying
QPlatformScreen by deleting it directly, and the new and safe way
of using QPlatformIntegration::destroyScreen(), while still allowing
clients to manage the windows themselves by emitting screenRemoved()
before applying our fallback logic.

[ChangeLog][QtGui][Important Behavior Changes] QWindows will no longer
be re-shown automatically when moved from a destroyed QScreen, unless
that QScreen was a virtual sibling of the primary screen.

Change-Id: If1105bc5ef41a5392854bb97d121c998bffa3606
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-22 12:58:34 +01:00
Paul Lemire
595ed595ea Add project/unproject methods in QVector3D
Equivalent of gluProject and gluUnproject.

[ChangeLog][QtCore][QVector3D] add convenience project and unproject methods
to use like gluProject and gluUnproject

Change-Id: I6e4e3e79ea6e34d1fb0c375e15185c950b699ef0
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-22 12:39:20 +01:00
David Faure
2f097d4e23 Doc: fix copy/paste error in QTextCharFormat::setFont documentation
Change-Id: I2190975762c6283daa004b754da607829d263b0a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-01-22 12:08:42 +01:00
Eskil Abrahamsen Blomfeldt
586fd04234 OS X/iOS: Fix stretched font rendering
Setting the stretch of a QFont did not work correctly on OS X or
iOS.

Two things are needed to make it work: First of all, we need to
properly set the transform when creating the CTFont.

In addition, we need to manually scale the advances, as
CTRunGetPositions() does not do this for us. On OS X 10.6, however,
there was a regression and CTRunGetPositions() would return scaled
positions, so we exclude the step to scale the advances on this
particular version.

This is an adaptation of bc25cfdd65452efa226cbd544c9ae9803eb6748a
in Qt 4.

[ChangeLog][QtGui][OS X/iOS] Fixed a bug when rendering fonts that
were set to be stretched.

Task-number: QTBUG-43801
Change-Id: I4902a9f5e29299761e3c2c5c6d6d80ee1dea1a25
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-22 09:32:44 +01:00
J-P Nurmi
cec7dcc723 QTextDocumentLayout: handle QTextBlock visibility
Task-number: QTBUG-10153
Change-Id: I0420b9c59a7a437da28675349c14e84bfa4aea54
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-22 00:22:53 +01:00
Friedemann Kleint
fad17cf79c QFontDatabase: Make assert about failed delayed font population more verbose.
Task-number: QTBUG-43774
Change-Id: Ie55de75e31e1e569f4b4e336900a8f96f7c1b9c0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-21 19:31:14 +01:00
Tor Arne Vestbø
bdab31166c Move static part of angleBetween/transformBetween/mapBetween to QPlatformScreen
Allows the helpers to be used at QPlatformScreen construction time, before
it has been associated with a QScreen.

Change-Id: Iab8f863ef5c9339ef6e88b3d844915c03cacda74
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-21 19:11:39 +01:00
Marc Mutz
1755038134 QFixed: fix undefined behavior
Left-shifting of negative values is undefined ([expr.shift]/2).
Use multiplication with 64 instead.

There are probably more instances in this class, but this patch
already gets rid of vast amounts of ubsan errors in
tests/auto/gui/text.

Found by UBSan.

Change-Id: I89b8bb61e4decba605fe4fb3efea68b1f1eacf1a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-21 18:43:07 +01:00
Gunnar Sletta
6338b1421e Safeguard QScreen::refreshRate against buggy platform behavior
Change-Id: I891bd5272db76e8562f6722b633cc0fdaac5f7a2
Task-number: QTBUG-43853
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2015-01-21 18:38:23 +01:00
Laszlo Agocs
10472dce92 Unify input device hotplugging support for embedded
On embedded the mouse cursor will now appear and reappear regardless of
how the input handling code is loaded (via a generic plugin or compiled-in
to the platform plugin).

Instead of passing around QDeviceDiscovery instances that only works
when compiling-in the code into the platform plugin, introduce a new
internal central QInputDeviceManager. The single instance of this
provides a place to store any future input device related signals and
properties.

Also introduce mouse hotplugging support to linuxfb.

[ChangeLog][QtGui] The mouse cursor on Embedded Linux is now handling
hotplugging correctly with eglfs and linuxfb regardless of how the input
handling code is loaded (via a generic plugin or built in to the platform
plugin).

Change-Id: I147c1b04a193baf216598015264f2c06e1b20f84
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-01-21 12:32:04 +01:00
Gabriel de Dietrich
c87566bf9e Introduce QFontDatabase::isPrivateFamily()
Some platforms have the concept of private fonts (e.g., OS X and
iOS) which are generally used as system UI fonts. Since 909d3f5c7,
the platform font database has a similar but private API.

[ChangeLog][QtGui][Fonts] Added QFontDatabase::isPrivateFamily()

Change-Id: Ibdce9de534fadbbc3965be8a942c8012edeed209
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-21 12:05:35 +01:00
Frederik Gladhorn
b6191b16d4 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/global/global.pri
	src/corelib/global/qcompilerdetection.h
	src/corelib/global/qglobal.h
	src/corelib/tools/qdatetime.cpp
	src/plugins/platforms/xcb/qxcbscreen.h
	src/plugins/platforms/xcb/qxcbwindow.h
	src/widgets/dialogs/qcolordialog.cpp
	src/widgets/dialogs/qcolordialog_p.h
	tools/configure/configureapp.cpp

Change-Id: Ie9d6e9df13e570da0a90a67745a0d05f46c532af
2015-01-21 11:10:14 +01:00
Eskil Abrahamsen Blomfeldt
2603873e75 Make harfbuzz-old fallback available at run-time
The old harfbuzz code path is included as a fail safe for any
possible use case where the Harfbuzz-NG regresses, but because the
variable was checked statically, it was not actually possible to
build a releasable executable which employed the work-around.

Instead we use the regular global static pattern where the variable
is queried the first time it's needed.

Task-number: QTBUG-43850
Change-Id: I9ade76bf0825bbfefebdbdc4e6ee5571f1a3deec
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-19 13:50:32 +01:00
Sze Howe Koh
c49641a117 Doc: Fix typos
Change-Id: I29d5576902a5d1ea25558e980081952d9157f7f0
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-01-19 10:48:03 +01:00
Sze Howe Koh
0f5b970894 Doc: Remove references to QOpenGLContext::destroy()
This function is private.

Task-number: QTBUG-35907
Change-Id: I370c0bfd8fda11c68ee76ee42967f117a81b381c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-19 10:48:00 +01:00
Marc Mutz
62a96dbb53 QTextFormat: fix undefined behavior
Left-shifting of negative values is undefined ([expr.shift]/2).

Since hashValue is a uint already, rectify by casting it->key to
uint prior to shifting.

Found by UBSan.

Change-Id: I94a5311f5a4492f514f595b8fb79726df1e7d0de
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-01-19 10:41:57 +01:00
Gatis Paeglis
3c21c4581d Fix drag and drop regression
Fix regression introduced by e4becdc3d3

Add QPlatformDrag::ownsDragObject() function, QDragManager can use the
return value of this function to decide if it should take care of deleting
QDrag object or platform plugin will take care of deleting QDrag.

XCB platform plugins uses async dnd data delivery mechanism. It allows
user to drop something and then continue working with the assurance that
the target will get the data regardless of how slow the network connections
are, which means that a source window should preserve QDrag data until
dnd has finished.

Change-Id: I1fbad7380cddec98b756698993dd397409833150
Task-number: QTBUG-43436
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-19 08:15:54 +01:00
Giuseppe D'Angelo
e4d15b41e8 QOpenGLTexture: introduce texture comparison support
Shadow sampling is an old OpenGL feature (hello, OpenGL 1.3!), which
was missing from QOpenGLTexture. This commit adds the relevant support.

Change-Id: I9f6b552d806a356d24ee08121af6bc9ce684f2b5
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-17 14:26:43 +01:00
Gunnar Sletta
ebdd4a0ba7 Introducing QPlatformHardwareCompositor.
Can be used by applications to send hardware buffers directly to the
hardware compositor, if available. The primary usecase right now
will be from QtWayland to 2D composition of surface by bypassing
the OpenGL composition.

Change-Id: Ibdcdcc744c34869d3abbc11aad448a755f87161f
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-17 12:11:15 +01:00
Jørgen Lind
37956e6605 Introducing QPlatformGraphicsBuffer
Change-Id: Idcf8f75bd151a877c7097b79df998c1ffd56871c
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-01-17 08:03:34 +01:00
Allan Sandfeld Jensen
fb22d54aa1 Improve performance of path clipping in rasterizer
This patch short cuts a common loop in the gray rasterizer where it
would iterate over cells it considers invalid.

This greatly speeds up clipping paths on large paint devices, but
probably has little benefit for the FreeType origin of our rasterizer.

Task-number: QTBUG-40559
Change-Id: I30845de0b82e53b619853c6c91903793b4267615
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-01-17 06:32:29 +01:00
Giuseppe D'Angelo
0d65bf4f9f QOpenGLTexture: better document the depth/stencil features
For some reason these docs were missing, add them.

Change-Id: If17cf429925ee849a0817e0294a7db7f6dace79b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-17 06:32:27 +01:00
Thiago Macieira
9d46189a64 Remove Q_C_CALLBACKS
This is useless. The C++ language does require callbacks passed to C
functions to also be extern "C". That's what this macro was doing.

But #ifdef'ing for the macro only made the code uglier. Just let the
extern "C" be there for all compilers.

PS: C++ classes can't be extern "C"...

Change-Id: Ic5d393bfd36e48a193fcffff13b9c9b3923443dd
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-01-17 06:31:20 +01:00
Oswald Buddenhagen
3f17d0349b Merge 5.4 into 5.4.1
Change-Id: I78d848c0bb396584a205a8066d253f2bcac8da56
2015-01-16 21:02:26 +01:00
Nico Vertriest
576cf413bb Doc: verb "to layout" changed to "to lay out"
Task-number: QTBUG-43657
Change-Id: I574186253ee423cc380ec3c6f274f1caa2a6aa2a
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-16 10:29:46 +01:00
Friedemann Kleint
241d32bfe3 Fix inlining order of functions in qpathclipper_p.h.
When compiling tst_qpathclipper with MinGW:

In file included from QtGui/private/qpathclipper_p.h:1:0,
                 from tst_qpathclipper.cpp:33:
src/gui/painting/qpathclipper_p.h:469:29: warning: 'static QPathEdge::Traversal QWingedEdge::flip(QPathEdge::Traversal)' redeclared without dllimport attribute after being referenced with dll linkage
inline QPathEdge::Traversal QWingedEdge::flip(QPathEdge::Traversal traversal)
                             ^
qpathclipper_p.h:474:29: warning: 'static QPathEdge::Direction QWingedEdge::flip(QPathEdge::Direction)' redeclared without dllimport attribute after being referenced with dll linkage
inline QPathEdge::Direction QWingedEdge::flip(QPathEdge::Direction direction)

Change-Id: I38feb07d693768285c1d405b3fc92a58c3309547
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-01-16 06:31:46 +01:00
Shawn Rutledge
74443d7bbb Add QWheelEvent::source
This is analogous to 0a92295ca8
which added QMouseEvent::source.

For now, we say that a wheel event is synthetic when it comes from
a trackpad or other device that provides scrolling by some means
other than an actual wheel.

Change-Id: I0452ca2080b551b18b9c2f6e42db925d14ae339e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2015-01-13 13:14:57 +01:00
J-P Nurmi
9d5b1fd151 Make QStyleHints usable in QML
Change-Id: Ia8f143d12c754b4af4a29bb9542cd050b5ae2ab0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2015-01-13 13:05:48 +01:00
Thiago Macieira
79eef021cb Remove Q_STATIC_GLOBALxxx_OPERATOR macros
These macros existed for working around an RVCT compiler bug, but since
we stopped trying to work around it, the macros are no longer necessary.

Change-Id: I76cc88d863b41f74f60cd9975dcc1959778c2740
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-11 03:41:54 +01:00
Laszlo Agocs
8dcfb43d8f Resolve GLES3 functions from the shared lib
Unfortunately the few functions that are part of the OpenGL ES 3.0
standard and are used by QtGui have to have special handling after all.
Just directly calling the functions causes issues when building on a
GLES3 capable system and deploying somewhere where only GLES2 is available.

Using eglGetProcAddress and such is not an option because the ES spec does
not guarantee that standard functions are resolvable via that mechanism.

Task-number: QTBUG-43318
Change-Id: I72f985d75ca669835839016573cbb8e4a3fb41db
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-10 10:55:47 +01:00
Marc Mutz
2c2801860d QPen: mark copy/move/swap as nothrow
Change-Id: Ib13d60256d96253934e0627d4c3015248e002e3f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-10 08:43:09 +01:00
Allan Sandfeld Jensen
8f095d67a0 Fix glyph runs painted badly with perspective transform
A mismatch between requiresPretransformedGlyphPositions and
shouldDrawCachedGlyphs in QRasterPaintEngine will cause the text
position to be transformed twice when using drawGlyphRun on a QPainter
with a perspective transform. Since this case falls back to drawing
text as paths there is no reason to require any special treatment.

Change-Id: Ib1c14aee4cc6774dd8feadc5748f0b0ee59633b9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-01-09 15:51:41 +01:00
Andy Maloney
163af2cf53 Add OptimizedWrite & ProgressiveScanWrite options to QImageIOHandler and use for JPEG writing
Exposes two options from libjpeg: the optimize option and progressive scan option.
These are both lossless operations, so they do not change the image's quality.
Using these switches can result in smaller jpeg files.

Task-number: QTBUG-20075
Change-Id: I8d0bd6a712b8a365265b7bd517e136b0755b90cb
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
2015-01-09 10:36:08 +01:00
Thiago Macieira
dd8b75d8fb Remove workarounds for RVCT compiler bugs
This does not try to remove support for RVCT. There has been no report
of it working or failing to work, so the status continues to be unknown.
In particular, the inline assembly code in atomic_armv[56].h remains in
place.

This commit only removes workarounds for compiler bugs or bogus
warnings, assuming that anyone using this compiler has updated since Qt
last tried to use it for Symbian in 2011. Note also how anonymous unions
are now part of the language in C++11.

Change-Id: Idc4fab092beb31239eb08b7e139bce2602adae81
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-06 19:38:24 +01:00
Thiago Macieira
acf80b9a2b Fix build error with Intel Compiler 15 on Windows
If the constructor is inline, the generated code needs access to the
vtable, which gets emitted with the first virtual function (in QtGui),
but somehow icl.exe can't find it in debug. Looking at the .obj files it
generates and comparing to MSVC, it seems that:

 - both generate and export the inline constructor from Qt5Guid.dll
 - MSVC will call that constructor from qoffscreenintegration.obj
 - icl.exe will inline the constructor and requires a symbol not
   exported from Qt5Guid.dll

I can't explain why (probably a compiler bug).

Change-Id: I0ab9c078ae4fc794826025d68d364124c7247e80
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-06 17:48:29 +01:00
Friedemann Kleint
16c32c6dfb JPEG: Fix reading of EXIF orientation.
The orientation is unsigned short, read it as such. In
JPEG-files created by Ricoh/Pentax cameras, the data is saved in
Motorola format. Reading the wrong data size will produce invalid
values when converting the byte order.

Change-Id: I8f7c5dc5bfc10c02e090d3654aaefa047229a962
Task-number: QTBUG-43563
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-06 14:26:00 +01:00
Marc Mutz
6ac7e2f710 QCursor: add move ctor
QCursor already dealt with d == nullptr, so this is trivial.

Change-Id: Ib2c6a3f0dc8b93035ffe3059cdce925463706e10
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-05 13:03:20 +01:00
Simon Hausmann
4295203dd6 Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/dev 2014-12-30 09:35:39 +01:00
Konstantin Ritt
b0b2b9c8f7 Set the minimum required FreeType version to 2.1.10
...and get rid of workarounds for older versions,
which also makes the code more readable.

Change-Id: I087110c5f60cd664dad241776e1a0df901989c75
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-12-29 17:32:05 +01:00
Konstantin Ritt
7e05a400df Minor improvement to Qt-HB bridging code
Replace C-style cast with static_cast for casts from void*.

Change-Id: I4d6c602037e70afe2746a179a31fea4c5043c3d5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-12-29 17:32:03 +01:00
Konstantin Ritt
020f5c01d2 Report font tables are R/O blobs
There is no point in modifying font tables, so mark them RO for clarity.

Change-Id: I8ddbda9ace9c5a0eeabc0c5e5f64558060b5ee69
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-12-29 17:32:01 +01:00
Konstantin Ritt
6eb57b2f5f [Docs] Don't propose using deprecated QFont:: rawName()/setRawName()
Change-Id: I333417b1340a56d782316c2c3628f63a504153ab
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-12-29 17:31:58 +01:00
Frederik Gladhorn
aaff94c2df Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/tools/qbytearray.cpp
	src/gui/kernel/qplatformsystemtrayicon.cpp
	src/gui/kernel/qplatformsystemtrayicon.h
	src/plugins/platforms/xcb/xcb-plugin.pro

Change-Id: I00355d3908b678af8a61c38f9e814a63df808c79
2014-12-29 16:37:38 +01:00
Konstantin Ritt
462be988b6 [QFont] Don't build datastream helpers with QT_NO_DATASTREAM
Change-Id: Id70491c07f5cf13d5f78ec0fc94ffd2b3134ff20
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-12-24 19:57:12 +01:00
Giuseppe D'Angelo
ceeb032de6 QRawFont: improve the thread-safety checks
384388f2 introduced some checks, and used an assignment in an assert;
that sets off compiler warnings about expressions with side effects
into an assertion. Hence, that code needs to be reworked a bit.

Unfortunately, there's no single define we can use to know if
assertions are enabled or not in Qt, so simply use QT_NO_DEBUG
to enable/disable those checks. The actual "thread" data member
is kept around to avoid break ABI depending on debugging flags.

Change-Id: I8b07e7ff6f81359d6b0653a1d9cc2b720541d1b9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-12-23 16:38:56 +01:00
Konstantin Ritt
560cd95298 Make it obvious we never expect QFontDatabase::Any to be supported
This also unbreaks matching for scripts not covered
by qt_script_for_writing_system().

Change-Id: Iddf015281a57a9dbae2e09f0408359441b020df8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-12-23 14:57:39 +01:00
Konstantin Ritt
a0742ad6ce Re-use cached font engines when request only differs in script
When looking for engine of non-Common script and lookup in
the font cache failed, first check if we have already loaded that engine
for the same request but different script.

In general, this gives an arbitrary font engine a chance to be re-used
multiple times when request only differs in script, which saves a LOT
of memory (~10MB on my win7, after scrolling the QFontComboBox'es list).

Change-Id: I9c752ce65c27142237a0ed74b33742b6a8d90a24
Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-12-23 14:57:37 +01:00
Konstantin Ritt
a45da5d207 [QFontDatabasePrivate] Drop unused fallbackFamilies member
It is probably a refactoring left-over.

Change-Id: Ic6f1e1a87c8603f600cd1736cf12c03ef0188074
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-12-23 14:57:33 +01:00
Shawn Rutledge
32422885fc emit lastWindowClosed even if quitOnLastWindowClosed is false
Behavior will agree with the docs.

[ChangeLog][QtGui][QWindow] lastWindowClosed will be emitted even if
quitOnLastWindowClosed is not set

Task-number: QTBUG-32956
Change-Id: I7bb269d53894859fee27e171eea7ad472ea86af0
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2014-12-23 14:12:25 +01:00
Giulio Camuffo
9b4fbe85d2 Add a function for QPA plugins to explicitly destroy QScreens
Previously QPlatformScreen was automatically deleting its QScreen
in ~QPlatformScreen(). That means that we cannot use QScreen's
methods when the screen is being removed, because doing so would
call virtual methods of QPlatformScreen. By that point the
QPlatformScreen subclass object does not exist anymore, and we
call the default implementation instead of the subclassed one, or
get a crash for the pure virtual methods. This happens for example
when removing a screen which contains a QWindow with some QML item
using QQuickScreenAttached.

This patch adds a QPlatformIntegration::destroyScreen() function,
which deletes the QScreen and later the QPlatformScreen.

~QPlatformScreen will still delete the QScreen if it was not deleted
with destroyScreen(), so code not ported to the new approach
will continue to work as before, with only a warning added.

Task-number: QTBUG-41141
Change-Id: Ie4a03dee08ceb4c3e94a81875411f6f723273fe1
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-12-23 14:04:02 +01:00
Nico Vertriest
a8714548d1 Doc: corrected broken links qtbase
Task-number: QTBUG-43115
Change-Id: Ib441326083294a6d59d75510142b1481f7b0bc35
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-12-23 10:55:45 +01:00
Joni Poikelin
0920e00932 Check screen before changing cursor
Task-number: QTBUG-43508
Change-Id: I6b525cab2a3958f4e3528ed8102d07984f152e60
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-12-23 10:11:23 +01:00
Jason Haslam
033318f7a7 Check for valid receiver before sending gesture events.
Gesture events sent to a disappearing tooltip can crash. This can most
easily be seen by scrolling over a tooltip on OSX with a magic mouse
middle scroll gesture.

Task-number: QTBUG-42826
Change-Id: Id5510895f63297ca157e3d24a3f4e3a6034586e8
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2014-12-23 10:11:08 +01:00
Konstantin Ritt
3cda2ab03a [QFontDatabase] Don't look for best foundry twice
In case the foundry name was empty and foundry lookup has failed, don't
look for *any* foundry since it does exactly the same as previous call.

Change-Id: I2a81949df06c31e1ae6999a6bbbe973408d4b814
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
2014-12-23 05:37:57 +01:00
Konstantin Ritt
e1e3715db5 Simplify QFontDatabase::load() a bit
Change-Id: Iaf7db1eb542db1ea0f2ca6c83282961bf4341243
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-12-21 08:53:43 +01:00
Thiago Macieira
2e4b1a8334 Remove Q_NO_USING_KEYWORD
There's a lot of code now requiring it. Any compiler that doesn't
support the keyword is too old for Qt now. The last time anyone asked
about this macro was for QTBUG-27393 and we don't know which compiler
that was.

As a necessity, this patch contains a reversal of
a0c3a57aed

[ChangeLog][Compiler Specific Changes] Qt 5.5 now unconditionally uses
the "using" keyword. Compilers that do not support this keyword are
deprecated and will not be able to build Qt. Previous versions of Qt may
or may not compile, as no testing was done to ensure it worked.

Change-Id: Ief042f34aba555a095d1f342a0ee7ee9feadf42d
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-20 07:38:17 +01:00
Giuseppe D'Angelo
86d04cfe2b Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/dev 2014-12-20 07:59:07 +01:00
Jørgen Lind
0dd38014b3 QOpenGLWindow: make it possible to use a shared context
Change-Id: I7e9f115a9b75d38c1d6a214958d18d6fd9eac891
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2014-12-20 06:09:15 +01:00
Jørgen Lind
8758f532ae Make GLX and EGL dynamic dependencies for xcb
[ChangeLog][QPA][Xcb] GLX and EGL code paths are now dynamically
resolved, making it possible for one build of a plugin to use both code
paths. Default is to use the GLX code path if available. This can be
overwritten by specifying QT_XCB_GL_INTEGRATION=xcb_egl as an
evnironment variable. Enable qt.xcb.glintegration.debug to get debug log
output of what integration is used

Change-Id: Ia9fa95fcca3d901b91dadb8c98a695fea0ae3b1e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2014-12-20 06:09:01 +01:00
Allan Sandfeld Jensen
c4bee2c47f Revert "Fix printing of semitransparent images to PDF"
The patch was incorrect and caused semi-transparent images
have inversed colors instead of fixing it.

This reverts commit 624740cdcd.

Change-Id: I3f1fa17309fcb53995520843449aae972e0090b8
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2014-12-18 14:42:19 +01:00
Simon Hausmann
e281537f20 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/global/qglobal.h
	src/platformsupport/platformcompositor/qopenglcompositor.cpp
	src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp
	tests/auto/gui/kernel/qwindow/tst_qwindow.cpp

Change-Id: I5422868500be695584a496dbbbc719d146bc572d
2014-12-18 12:12:58 +01:00
Rafael Roquetto
1acb774b2b Remove unused code from QFontEngineFT.
This method is not being called anywhere.

Change-Id: Ia32e8b48d324e4848db666de4d274a260d22b06d
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-12-18 11:23:00 +01:00
Dmitry Shachnev
15cc31c013 QPlatformSystemTrayIcon: the timeout is in msecs, not secs
What gets passed to this function is in milliseconds, not seconds (see
QSystemTrayIconPrivate::showMessage_sys_qpa implementation), and the only
currently existing implementation (in KDE frameworkintegration) expects
milliseconds as well.

Change-Id: I7a2c847530391aa73183704251c996664668a740
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2014-12-18 10:18:23 +01:00
Laszlo Agocs
6c2da36c22 Prevent continuous painting with viewport QOpenGLWidget
Add the source widget to the texture list (may be null for custom
compositor implementations that add textures not belonging to actual
widgets). This allows us to do proper checks with the
dirtyRenderToTextureWidgets list.

As a result paint events are only sent to a QOpenGLWidget if (1) there
was an update() for it or (2) it was actually marked dirty. (2) was
previously behaving differently: the widget got a paint event when
anything in the window has changed. This is fine for naive animating
OpenGL code but less ideal for QGraphicsView.

Bool properties like stacksOnTop are now stored in a flags value to
prevent future explosion of texture list fields and parameters.

Task-number: QTBUG-43178
Change-Id: I48cbcf93df72ac682c9b5d64982a8b648fe21ef3
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2014-12-18 09:46:23 +01:00
Friedemann Kleint
c07559bf5b QOpenGLContext: Use static invocation of QGuiApplication::platformNativeInterface().
Fix MSVC warning (release build):
qopenglcontext.cpp(1116) : warning C4189: 'app' : local variable is initialized but not referenced

Change-Id: I00fa5237bbac4c0e3bb63ea9d3e5096e05dbe1be
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2014-12-18 06:32:39 +01:00
Jørgen Lind
e746f14d4d Add default path to CFLAGS for OpenGL
As of 6cec75a730 we use pkg-config to
pickup OpenGL. Some OpenGL implementations list additional directories
to be used as include directories in CFLAGS. Up until now, if this has
been empty, then the default path has been used. Now that there may be
additional directories, the default include path is not used, which
causes gl.h to be picked up.

Task-number: QTBUG-43377
Change-Id: I86e995cb8d718724a75d9f3f5713e87451fd7129
Reviewed-by: Simo Fält <simo.falt@theqtcompany.com>
2014-12-16 11:48:40 +01:00
Eskil Abrahamsen Blomfeldt
19bb9aa9e5 Fix possibly corrupted log clusters when using custom tab stops
The calculateTabWidth() can trigger shaping of the item, which can
cause the layout data to be reallocated, so we need to update the
local pointers to it, like we do when we explicitly invoke the
shaper.

[ChangeLog][Text] Fixed problems with text layout when using custom
tab stops.

Task-number: QTBUG-43126
Change-Id: Ifaeeeb4bfb1a55e6638b12b444f53d2679d3d1e6
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-12-15 21:02:12 +01:00
Laszlo Agocs
c3f619069a Unbreak shortcut handling on embedded
It went completely broken after the fix for QTBUG-32928. The crash fix I made
afterwards forgot to take into account that the shortcuts must still be handled,
even when the window in the input event is null. So instead of bailing out on a
null tlw, we have to use the window that currently has the focus.

Task-number: QTBUG-43203
Change-Id: I6cd65ee5bd021f80d9440cba8bc9dfda9abe2cfd
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2014-12-15 12:22:34 +01:00
Sean Harmer
c514572f09 Fix corner case in preprocessor of QOpenGLShaderProgram
The preprocessor used in QOpenGLShaderProgram to help with determining
where it should add the #line and other #define directives is broken
when parsing the standard Qt Project copyright header.

In a multiline comment if the preprocessor encounters repeated '*'
characters when in a multiline comment, it toggles the state between
MultiLineComment and CommentEnding. This is wrong as every asterisk is
potentially the one before the closing '/' of a multiline comment.

This change fixes this by only going back to the MultiLineComment when
in the CommentEnding state if the character is not another '*'.

Task-number: QTBUG-43240
Change-Id: I114e933026ba5de1c23f3e0399613def59f44961
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
2014-12-15 08:47:37 +01:00
Tor Arne Vestbø
1cc83b575d Make GL2PaintEngine::drawCachedGlyphs use updateTexture
Ensures that we have a consistent view of what the last used texture
was, which is critical when deciding whether or not we need to re-bind
the texture or update texture properties.

Change-Id: Ib47eb00abde98d148fc6e569ce3e359b340328fb
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2014-12-14 17:09:58 +01:00
Sean Harmer
0d49ebdf30 GLSL #version directive does not have to be at start of line
The #version directive detector of QOpenGLShaderProgram is using an
incorrect regular expression to detect the #version directive in the
preprocessed shader source code.

It is allowed to have whitespace before the #version.

Task-number: QTBUG-43240
Change-Id: If60670f49cb40148e5e7fbe6da6c798e8f636c3d
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2014-12-14 09:59:12 +01:00
Konstantin Ritt
a69b2c0168 [QStaticTextItem] Drop unused members
The QStaticTextItem's `chars` and `numChars` members are never used,
even when set. In fact, there is nothing useful we can do with the input
string in the absence of clusters mapping.

Change-Id: I81fcbce3e575f4d0dcfc2515286d512b858f592b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-12-14 05:29:25 +01:00
Tor Arne Vestbø
dfccd78aa6 Ensure that GL::updateBrushTexture() activates and binds properly
Calling QOpenGL2GradientCache::getBuffer() will generate the texture the
first time, calling glBindTexture in the process. We did this without
first ensuring that the right texture unit was active, resulting in the
generated gradient texture binding onto the glyph cache mask unit.

We now provide a specialization of bindTexture for a QGradient, which
ensures that the right unit is active before calling getBuffer().

Unfortunately we have no way of knowing if the result of getBuffer()
was a texture that was already bound, or if we need to bind the result,
which means we have to do an unconditional bindTexture of the resulting
texture ID. This means double-bind for the initial texture generation,
but this was already an issue in the original code.

Task-number: QTBUG-43039
Task-number: QTBUG-41244
Change-Id: I20c9b795c8c14f8d58be2b60a284c5a060705ec0
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2014-12-13 01:49:24 +01:00
Konstantin Ritt
384388f2cd Make QRawFont usage safer in a multi-threaded environment
QFontEngine must be accessed amd deleted only in a thread in which
it was instantiated, so we remember that thread and check if it
hasn't been changed every time we access the engine.

Change-Id: I28bc0394ced9cbd437dc950d35ffcbd99cfa7152
Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-12-13 01:29:32 +01:00
Tor Arne Vestbø
37490d465b GL: Make updateTexture invalidate texture on change of texture unit
Switching texture units means the value of lastTextureUsed could be
invalid, meaning we need to unconditionally re-bind and update parameters.

A future optimization would be to keep a per-texture-unit cache, so
that we wouldn't have to re-bind and set parameters when switching
units back and forth, but this complicates the current code somewhat,
so it's left for another patch.

Change-Id: Icb2a5d03457a907f3c25bbb437feeb7c5f155716
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2014-12-12 22:37:00 +01:00
MihailNaydenov
dc583a0576 Fix incorrect QImage transformation when its devicePixelRatio != 1
QImage::transformed compensates for unwanted translation. This compensation
is performed in "pixel space". However, a possible code path to perform the
transformation uses QPainter which is devicePixelRatio-aware and expects the
transformation matrix to be in logical coordinates.

For example, image.transformed(QTransform().rotate(45)) will result in
cropped out image if devicePixelRatio == 2.

Change-Id: I830ff3ffa25531d842dc9c77f1d0e8d4bd502c9d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2014-12-12 15:32:55 +01:00
Samuel Gaist
1add31da9e QTextDocument QRegExp search cleanup
Code cleanup and improvement

Change-Id: Id4eac84dd31976797403c9acfa40c8d3337c6988
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-12-12 06:59:53 +01:00
Samuel Gaist
a3640ac260 QTextDocument QRegularExpression search cleanup
Code cleanup and improvement

Change-Id: I04109e6eaa24e90e24ba89957adca32281d077dc
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-12-12 06:59:50 +01:00
Pierre Rossi
517da68893 Add QFont::Weight enum values
And try to make good use of them in order to match the QFont
request more closely.

Task-number: QTBUG-38482
Change-Id: I768dfa8828e370d77a1c17ecf4796d750b3edd9b
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2014-12-12 06:59:46 +01:00
Jørgen Lind
d46d3ef044 Add GL_EXT_discard_framebuffer to QOpenGLExtensions
Change-Id: I57e8dd2ea2e6f018a46eaabed2ca8b6d417358a3
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2014-12-11 10:36:39 +01:00
Tor Arne Vestbø
47326b9c5c GL2PaintEngine: centralize logic for updating/preparing textures
Rewrite of updateTextureFilter to include activating and binding as well,
so that we can maintain a single view of which texture was the last one
to be used from within the engine itself.

The behavior should be the same as before.

Change-Id: I41781d00458b0176c614266f4360db3c68b120a1
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2014-12-11 06:14:28 +01:00
Tor Arne Vestbø
e9222e199d GL2PaintEngine: Prevent fillInPendingGlyphs from breaking gradients
The glyph cache internally uses the image texture unit when blitting,
but doesn't always activate the unit before binding its texture,
resulting in sometimes binding the glyph cache texture to the
wrong unit.

The image texture unit is also the same as the brush texture unit,
so any time we fill in pending glyphs we need to re-bind the brush
texture, otherwise drawing text with eg. gradients will fail after
the new glyphs have been filled.

The new hasPendingGlyphs() member function of the glyph cache
is an optimization so that we don't need to activate and rebind
unless there are glyphs that need to be filled.

Change-Id: Iac74130145d2d6d7bf95206b5e8a2fc760743cb5
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2014-12-10 21:49:55 +01:00
Robin Burchell
b52ec2ec6b Don't attempt to load an empty generic plugin if no environment variable is set.
Also warn if a requested generic plugin is not available.

Change-Id: Iab1f1f87be435b4ad446881cba25d0b19a564f08
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2014-12-10 14:09:00 +01:00
Simon Hausmann
015002fec9 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	doc/global/template/style/online.css
	mkspecs/android-g++/qmake.conf

Change-Id: Ib39ea7bd42f5ae12e82a3bc59a66787a16bdfc61
2014-12-10 07:58:06 +01:00
Dmitry Shachnev
404f4281fd qimage_conversions.cpp: Fix build on big endian systems
Change-Id: I8149eb2deaa101daf85a957ff48c3a7140c43bbc
Reviewed-by: Timo Jyrinki <timo.jyrinki@canonical.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
2014-12-09 17:03:04 +01:00
Jan Arve Saether
c9db6e52bc Fixed a bug where spans did not always work in layouts.
The problem was that the span we stored in the multiCellMap was the
"effective" span (i.e.  the given span subtracted with the number of
ignored rows it would span). Later we used that span to distribute its
size across all its cells.  However, since the span now could be smaller
that the given span, we could sometimes fail to distribute to the last
span(s).

[ChangeLog][QtWidgets][layouts] Fixed a bug where spans sometimes didn't
distribute themselves to the last cells they covered.

Change-Id: I31db3d850484dc8b70d62c5f02f680740578c661
Task-number: QTBUG-43099
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2014-12-09 16:58:58 +01:00
Laszlo Agocs
68d528654f Improve TouchPoint debug output
Printing a QWindowSystemInterface::TouchPoint can be misleading if
it only includes the normalized position. Many backends do not provide
such information so it is often 0, 0. Print also the "area" which is
always set, the center of this rect is the actual touch position in screen
coordinates.

Change-Id: I2f3efabf6ced6fae9937518cc39d898e66b7894e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-12-09 16:58:14 +01:00
Konstantin Ritt
8f6b328410 Fix regression introduced by 8e3fdf1354
Task-number: QTBUG-42963
Change-Id: Iaf2677a967ef424a3b781cdb2d3194d0e0e55333
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
2014-12-09 03:31:12 +01:00
Laszlo Agocs
b7f0583f31 Pluginize the eglfs hooks
Following the principle of device integrations in QtWayland and soon
xcb, a plugin interface is being introduced to gradually replace the
statically compiled-in hooks.

The interface is same as before for the time being, for compatibility
with the existing device-specific hooks.

QEglFSHooks is now just a dummy subclass for QEGLDeviceIntegration to
support the legacy, compiled-in, device-specific hooks. When -device
is not used with configure and so there is no hook active, the new
plugin-based approach kicks in.

The environment variable QT_QPA_EGLFS_INTEGRATION can be set to
indicate the preferred integration name (e.g. eglfs_x11, eglfs_kms).

It can also be set to "none", indicating that no plugins should be
considered and the default, non-specialized integration is to be used.
(this is for devices, like Beagleboard|bone, that do not need any special
code to set up EGL)

Device makespecs can set EGLFS_DEVICE_INTEGRATION. The value is then used
as the default, preferred plugin name when QT_QPA_EGLFS_INTEGRATION is not
set. In the future device makespecs are expected to set a plugin name instead
of relying on the traditional EGLFS_PLATFORM_HOOKS_*.

When neither the QT_QPA_EGLFS_INTEGRATION nor EGLFS_DEVICE_INTEGRATION are
set, all plugins will be tried in an unspecified order. The first one that
succeeds to load is used. If all fails or there are no plugins, the built-in,
non-specialized integration is used.

To debug what integration is being used, enable the logging category
qt.qpa.egldeviceintegration.

There is some built-in logic for desktop/Mesa based systems: Under X,
eglfs_x11 is preferred, otherwise eglfs_kms is prioritized. This, assuming
sufficient permissions to video and input devices, allows simply launching
apps with -platform eglfs. No more editing of eglfs.pri.

[ChangeLog][QtGui] Added support for device-specific backend plugins in eglfs.

Change-Id: Ia2ddcddac014c25817171dc140cd8cf913784ac6
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
2014-12-08 14:16:41 +01:00
Laszlo Agocs
d52ea19862 Take ShareOpenGLContexts into account in QOpenGLWindow
While the attribute was originally intended for widgets (QOpenGLWidget,
QQuickWidget) only, we need a way to get multiple QOpenGLWindow instances
whose contexts share with each other.

Change-Id: Ib983c9c2815b0a3911bc504ffad8d8dddad192aa
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2014-12-08 10:28:13 +01:00
Shawn Rutledge
f277c07467 Harmonize QPA TrayIcon showMessage parameter order
Parameters were misnamed in some places but still managed to pass them
through in the right order.  Rename to avoid confusion, and keep the
parameter order the same as in QSystemTrayIcon::showMessage.

Change-Id: Ib4c8fff15eff15034c4ea64757803b118e487144
Reviewed-by: Marco Martin <mart@kde.org>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2014-12-08 09:55:34 +01:00
Simon Hausmann
8c0014213b Merge "Merge remote-tracking branch 'origin/5.4.0' into 5.4" into refs/staging/5.4 2014-12-05 16:45:27 +01:00
Tor Arne Vestbø
3f1cb33d35 Reformat QOpenGL2PaintEngineExPrivate a bit to make it easier to refactor
Change-Id: I99f7192008ae8ea3a16f5300e5e4ebdde50847af
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2014-12-05 13:22:19 +01:00
Simon Hausmann
7644faa881 Merge remote-tracking branch 'origin/5.4.0' into 5.4
Change-Id: I0cd11cbe95693b78450ea81a0187760f4a6a8b5f
2014-12-05 11:53:33 +01:00
Allan Sandfeld Jensen
30772c7270 Fix loading of web fonts with broken hinting bytecode
The Fira Sans font by the Mozilla Foundation has bytecode that goes
into an infinite loop. Fortunately FreeType catches the case, but we
fail to render any glyphs and spends too long trying the bytecode on
every glyph.

This patch instead switches the font to auto-hinting when this error is
encountered.

Task-number: QTBUG-41034
Change-Id: Icd044b41396a06fb435bc189cdbd71d703107de6
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-12-04 20:30:55 +01:00
Sérgio Martins
1edc7554de FreeType: Fix font rendering with fonts with embedded bitmaps
Only reproduced with Windows font Calibri. This font has both
outline (vector) and bitmap glyphs. QFontEngine_FT has an hack
to get metrics from EBLC table, but this might fail, resulting
in a 0 ascender and descender, meaning QFontMetrics::height()
will be 0, meaning totally broken text.

This patch checks for that failure, and fallbacks to the outline
metrics instead of the bitmap ones.

Task-number: QTBUG-42898
Change-Id: If33fc3404d0c7f84557f8c4a5ae71b30f78d60a7
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-12-04 19:21:15 +01:00
Sérgio Martins
33739ccb95 Windows: Bring FreeType rendering up to par with other platforms
The text was very washed out, almost white on small font sizes.

This ifdef was introduced to cater for GDI differences between Vista
and Pre-Vista, it's GDI specific, nothing to do with FreeType.

Text now looks good, and md5sum of the rendering is the same as on Linux.

Task-number: QTBUG-42564
Change-Id: I2e06b83b80df093331454fe1b780d26462db597d
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-12-04 19:20:58 +01:00
Tor Arne Vestbø
36818ae9ef Collate calls to updateTextureFilter in updateBrushTexture
Change-Id: Id13d5bc122c4f9cc8f44ff82df345a50f2944118
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2014-12-04 18:51:39 +01:00
Tor Arne Vestbø
b1652b8697 Simplify GL2PaintEngine::updateTextureFilter, it doesn't need target
Change-Id: I8b71c33adb37c166bf4fc6dc8c2e7418d60fbf81
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2014-12-03 22:06:15 +01:00
Thiago Macieira
1eb7005850 Use the new warning enabling/disabling macros in qtbase
Change-Id: I91ff06644e8047c2ca483f9768b46c1372eb6171
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-03 18:09:17 +01:00
Olivier Goffart
5180f32c5a Add Q_DECL_OVERRIDE in the src subdirectory
Done automatically with clang-modernize on linux

(But does not add Q_DECL_OVERRIDE to the function that are marked
 as inline because it a compilation error with MSVC2010)

Change-Id: I2196ee26e3e6fe20816834ecea5ea389eeab3171
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-03 09:57:11 +01:00
Sérgio Martins
e7e6d6f95a QFontEngine_FT: Don't check for null after dereferencing.
Must have been a copy paste mistake, the check is used in other places
to make sure we don't unlockFace() without a lockFace(), but here
we're certain lockFace() was called first.

Makes Coverity happy.

Change-Id: I679129727b29a40d780f4fa903f44f7cbc9ec8cf
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-12-02 18:22:06 +01:00
Sérgio Martins
9d2edfe524 Fix build due to source incompatible change with FreeType 2.5.4
http://git.savannah.gnu.org/cgit/freetype/freetype2.git/commit/?id=b3500af717010137046ec4076d1e1c0641e33727

../gui/text/qfontengine_ft.cpp: In member function ‘QFontEngineFT::Glyph* QFontEngineFT::loadGlyph(QFontEngineFT::QGlyphSet*, uint, QFixed, QFontEngine::GlyphFormat, bool) const’:
../gui/text/qfontengine_ft.cpp:1126:39: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
                        for (int x = 0; x < slot->bitmap.width; x++) {

Change-Id: Idb58f9e5895aac8c02163870d7c7d4a49237086b
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-12-02 10:47:15 +01:00
Andrew Knight
2dbcaf5d96 QOpenGLFramebufferObject: pass sized format also with dynamic GL
The GL_RGBA8_OES define is not in scope for dynamic OpenGL builds, so
pass in GL_RGBA8 instead (it is defined as the same value, 0x8058) when
in ES mode. The functionality check already ensures the extension is
available, so the ifdef guards can be removed.

This fixes default multisampled FBO creation under ANGLE when using
-opengl dynamic.

Task-number: QTBUG-40921
Change-Id: Iac4b7e230a463c27b61af75c3307421f9deac856
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2014-12-01 20:04:11 +01:00
Jan Arve Saether
7cea5949ca Don't rely on hasChanged() in ensureGeometries
It can be removed now because we now have a better caching
mechanism than before. It should therefore not be needed anymore.

Since nothing else calls hasChanged, we can finally get rid of it.
This simplifies the code and enables us to further improvements to the
code.

Change-Id: I51afe5a97311e3e361ae8b491ecbcd21bbedacd1
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2014-12-01 14:37:02 +01:00
Konstantin Ritt
62bf16d992 Fix assertion introduced in 8e3fdf1354
It is clear from the commit itself that `m_engines[1]` isn't accessible
after `m_engines.resize(1)`.

Change-Id: I7b3977cca3f3aeaabadb5ff4f3e52a418022123c
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
2014-11-29 15:15:13 +01:00
Konstantin Ritt
155f664ac2 Use special value SMOOTH_SCALABLE where appropriate
It is the same as USHRT_MAX but mentioning a special value makes
the code more readable.

Change-Id: I91063e472a6130ceb47f866344709786e4b05f20
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-11-29 15:15:10 +01:00
Samuel Gaist
ab3efc09b3 QTextDocument: Don't use QRegExp for string search overloads
Currently both find function with QString input uses QRegExp under the
hood. This patch aims to use only QString search facility to allow
the proper disabling of QRegExp

Change-Id: I3525fd0e969eced635f3d98feb54eb6a05950d8f
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-11-27 21:17:59 +01:00
Frederik Gladhorn
ce6990c3e7 Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: Id20053d261b4fbbcc0ac8ba49dd3ef2253fa4b95
2014-11-27 18:28:12 +01:00
Frederik Gladhorn
3de7382044 Merge remote-tracking branch 'origin/5.4.0' into 5.4
Conflicts:
	dist/changes-5.4.0

7231e1fbe2 went into 5.4 instead of the
5.4.0 branch, thus the conflict.

Change-Id: I70b8597ab52506490dcaf700427183950d42cbd1
2014-11-27 18:12:10 +01:00
Friedemann Kleint
cb679241b1 Implement heightForWidth().
Add a virtual function QWindowPrivate::closestAcceptableGeometry()
which is called from the platform plugin.

Task-number: QTBUG-36220
Task-number: QTBUG-36318
Change-Id: I2b3d205e2c75f1d4dd2ba1d333b0d89bc0fcf13a
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
2014-11-27 11:10:31 +01:00
Allan Sandfeld Jensen
8d2d4255c6 Clarify QGuiApplication::primaryScreen
Clarify that shown here refers to where they are shown initially.

Change-Id: I962fd4b98d80fb1d43e086660fb74eea6b8f532a
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2014-11-27 10:18:34 +01:00
Shawn Rutledge
b9d98c10bd Deprecate implementations of functions deprecated in headers
If you build with configure -DQT_NO_DEPRECATED this will avoid some
build errors.

Change-Id: If2b2e57b6919091f3f077ebc2aeca0c3fd2421aa
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-11-27 04:16:22 +01:00
Friedemann Kleint
c91c05b056 Add capabilities to QPlatformInputContext.
Add a capability enumeration to QPlatformInputContext and
use that to turn off input methods for hidden text depending
on platform support. Disable on Windows.

Task-number: QTBUG-40691
Change-Id: I9909005de1f21316ec8f64e2729f1fffcd37c7c3
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
2014-11-26 21:14:40 +01:00
Andrew Knight
9b01589e58 Turn off optimizations of qt_depthForFormat on Windows Runtime ARM
This function is apparently optimized in a way that gives a bad return
value (or leaves the variable where it is used uninitialized), leading to
extreme memory allocations and eventual heap exhaustion.

Task-number: QTBUG-42038
Change-Id: Ia4ee9fc6475a0bf40e25eed356b027a4dc68d119
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2014-11-26 10:47:01 +01:00
Laszlo Agocs
9d771c70c3 Avoid crashing on embedded
tlw can be null. handleKeyEvent() is already fixed.

Change-Id: I92ffca30841147aca4fa536b80736c799aae4ac0
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2014-11-26 09:31:26 +01:00
Shawn Rutledge
7dcbd519c4 don't use QCursor if QT_NO_CURSOR
to support configure -no-feature-CURSOR

Change-Id: I8e7f9a7f80d3d44a1f8e25b909d552351b5f37e4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2014-11-26 08:41:53 +01:00
Friedemann Kleint
6df7be2476 Prevent duplication of display name in window titles.
Do not append QGuiApplicationPrivate::displayName() to window title
if the title already contains it.

Fixes Qt Designer showing up with window title

Qt Designer -  Qt Designer

after qttools:9a58492ce6b62c0fdab373337f39103f4072ad9d

Change-Id: I5ac07a7f4be70372342324a175faf8c825867f50
Reviewed-by: David Faure <david.faure@kdab.com>
2014-11-26 08:15:19 +01:00
Samuel Gaist
1611adc17e Add missing QT_NO_REGEXP guard to search functions
Change-Id: I651243ad5dcdd0dcef20f12f37769bf8c45ae3c5
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-11-26 01:28:48 +01:00
Ulf Hermann
9ccc2560c8 QFontDatabase: Fall back to "Any" writing system if none matches
The scriptForWritingSystem array has significantly fewer entries than
QChar::Script. It can easily happen that we don't find a writing system
for a given script. In that case, just assume any writing system can
be used.

This fixes an out-of-bounds array access resulting from the writing
system index being one-past-end if std::find doesn't find a match.

Change-Id: Ic277be1dad71af42d479e70e0b4bf29a7dc8d0a7
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
2014-11-26 01:28:41 +01:00
Konstantin Ritt
8e3fdf1354 Merge QFontEngineMultiBasicImpl and QFontEngineMulti
Minor refactoring also improves the behavior and the code readability.

Change-Id: Id89dd224f4132a4c0dfbc16f414ef42cc8d8a4da
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-11-26 01:28:38 +01:00
Shawn Rutledge
23517bfc35 QDistanceField: a zero glyph index means the glyph was not found
In qt_fontHasNarrowOutlines, if we proceed to call alphaMapForGlyph
when the glyph does not exist, there will be a failed assertion.
The docs for FT_Get_Char_Index say that zero means the glyph was
not found.

Change-Id: I371e9a2797a34fa3ebeae44531af51e24dadad79
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-11-25 22:18:23 +01:00
Konstantin Ritt
0e0464c50d [QPainter] Fix QTextItem painting with extended paint engine
Multi QFontEngine should be handled just like all other cases
covered several lines below.

Change-Id: If3dd9a2e38a5f6f61b113576cb188da378fc9efb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-11-25 22:18:19 +01:00