Commit Graph

2943 Commits (c2cc74f862df3bbc8bf7c8ecd5909af9de3d95ca)

Author SHA1 Message Date
Simon Hausmann 12eb3b51c4 Fix incorrect repaints with plain text edit
The plain text edit's smart repaint logic in
QPlainTextDocumentLayout::documentChanged assumes that during a change inside
just one block, the block is in the state before the edit and a call to
layoutBlock() is going to bring it up-to-date. Then only a comparison of the
bounding rect - before and after - is going to allow for smart repaints.

The assumption of the layout being in the same state as before the edit got
broken by commit cc57a2e90f, which introduced
code to use a QTextCursor within a slot connected to QTextDocument's
contentsChange signal. The usage of the QTextCursor there ends up updating the
layout of the block ahead of time, breaking the assumption and therefore the
optimization, in the sense that during changes in the preedit that cause a
change of height / line count, the old bounding rect in
QPlainTextDocumentLayout::documentChanged and the new bounding rect will be the
same. This causes a repaint of only the edited block, missing repaints of the
following blocks, even though the line count effectively changed.

So what's causing QTextCursor to mess with the layout is the attempt of
updating the vertical movement x property. This patch inhibits the update,
marking it as dirty for initialization later. This means that slots connected
to this low-level signal cannot rely on the cursor's visual x position, but
that doesn't seem useful anyway and isn't required for commit
cc57a2e90f.

Task-number: QTBUG-38536
Change-Id: I5fae12d646a4b2d2cc22b9f2d021e5dc8cfdda94
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-04-30 18:23:23 +02:00
Friedemann Kleint f3bc9f5c5c Add locations AppDataLocation, AppLocalDataLocation to QStandardPaths.
On Windows, DataLocation currently returns the value obtained by
passing CSIDL_COMMON_APPDATA to SHGetSpecialFolderPath(). This is
the local non-roaming path. For actually storing settings, the roaming
path should be used (CSIDL_APPDATA). Introduce new AppDataLocation to
return that path and AppLocalDataLocation for the local path and deprecate
DataLocation.

[ChangeLog][QtCore][QStandardPaths] QStandardPaths now has new
enumeration values AppDataLocation, AppLocalDataLocation to be able
to differentiate between roaming and local paths on the Windows
operating system. DataLocation is deprecated in favor of AppDataLocation.

Task-number: QTBUG-38483
Change-Id: Ib1de8c7031a863ed5eac10c747de6f7ff1a090c7
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2014-04-29 12:28:16 +02:00
Ivan Komissarov c281755480 Fixed i18n in QImageReader/QImageWriter.
Change-Id: I366831e23e4d29999696872d752b9487d1f22d44
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-04-28 20:11:56 +02:00
Laszlo Agocs 8ddf76989c Remove old symbols from QOpenGLContext
Task-number: QTBUG-38564
Change-Id: I39a0482e4411cdc644ed34813626c39dacb5b6af
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-04-26 09:09:54 +02:00
Friedemann Kleint 5f0fb6f114 Fix definition of HRESULT in qwindowdefs_win.h.
Task-number: QTBUG-38435
Change-Id: I4a08cd0656fa5d6ecb0b94aa71ca000268835b89
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-04-25 15:22:54 +02:00
Laszlo Agocs 4ff4935ed4 Document setUniformValue limitations wrt non square matrices
Task-number: QTBUG-37012
Change-Id: Ife4f16eef22090ae4f6fdc24b69a45142a10d9c9
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-04-25 15:18:29 +02:00
Jani Heikkinen 16501e32eb Merge "Merge remote-tracking branch 'origin/release' into stable" into refs/staging/stable 2014-04-25 10:55:31 +02:00
Laszlo Agocs f9d323279a Rename new QOpenGLContext APIs
isES() becomes isOpenGLES(). The library type enums are changed
DesktopGL -> LibGL and GLES2 -> LibGLES. This removes the now
unnecessary version number, the confusing "desktop" term and provides
better readability.

The old function/values are kept until the related qtdeclarative
changes are integrated.

Task-number: QTBUG-38564
Change-Id: Ibb0a1209985f1ce4bb9451f9b7b093c2b68a6505
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-04-25 10:07:45 +02:00
Louai Al-Khanji 5611b66c90 Direct2D QPA: Optimize Clipping
Use axis aligned clips when possible instead of layer-clipping. This can
be much faster when a lot of clipping operations take place.

Change-Id: I6865d69fc917a7da858033b4c362b307724d9006
Reviewed-by: Risto Avila <risto.avila@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-04-25 08:52:57 +02:00
Lars Knoll eb1325047f Don't crash on broken GIF images
Broken GIF images could set invalid width and height
values inside the image, leading to Qt creating a null
QImage for it. In that case we need to abort decoding
the image and return an error.

Initial patch by Rich Moore.

Task-number: QTBUG-38367
Change-Id: Id82a4036f478bd6e49c402d6598f57e7e5bb5e1e
Security-advisory: CVE-2014-0190
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-04-25 01:43:21 +02:00
Albert Astals Cid 08edb8742c Remove unneeded ;
Warnings returned by pedantic

Change-Id: I501621df6e9f39b18576625b321714a862dc971a
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-04-24 17:42:40 +02:00
Morten Johan Sørvig cafa3848e2 QOpenGLFunctions: Compile on Mac OS 10.6
The 10.6 OpenGL headers have "GLenum" as the type
for the 3rd argument. The OpenGL standard has "Glint",
which is also what Qt expects.

Work around this by casting the pointer type.

Task-id: QTBUG-38406
Change-Id: I6d820f41e0d14cbc2d50d91997b6c40b626b159f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-04-24 10:48:39 +02:00
Oswald Buddenhagen bbcdccd676 deprecate import_qpa_plugin and qpa_minimal_plugin
they have been fully superseded by 4255ba40ab.

Change-Id: If7ac14c8b7d3cf00fb0cb916036b62eb86c9cee0
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-04-24 10:45:55 +02:00
Laszlo Agocs a26e3ecc3d Include GLES 3.0 and 3.1 headers when available
In ES builds configure will now check for OpenGL ES 3.0 and 3.1
availability. This allows qopengl.h to include the correct header
and, by defining QT_OPENGL_ES_3 and QT_OPENGL_ES_3_1, the OpenGL
wrappers can provide support for MapBuffer, VAOs, etc. on GLES 3.0+
too. Right now this is not possible since the only standard way to
use an ES function specific to a given version is to use the function
directly. The extension mechanism (eglGetProcAddress and friends), that
is often used in desktop GL, is not available for such functions.

[ChangeLog][QtGui] QtGui's OpenGL headers are now automatically including
the highest available header (gl31.h, gl3.h or gl2.h) in OpenGL ES builds.

Task-number: QTBUG-38168
Change-Id: Ib857c58fe1696a9546fdd1aa143a9237e80325a5
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-04-24 10:36:07 +02:00
Laszlo Agocs af1e32426c Add public and QPA APIs for adapting existing OpenGL contexts
For now only xcb on GLX is supported. Other platforms will follow later.

Add also some missing documentation for the platform OpenGL context factory
functions.

[ChangeLog] QOpenGLContext is now able to adopt existing native contexts.

Task-number: QTBUG-37552
Change-Id: I5dd959f102df178f646b2df5989203b5dc6de376
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-04-24 09:10:29 +02:00
Samuel Gaist 787692a09e OS X: Add support for ApplicationState capability
Currently a click on e.g. the dock icon is not propagated to the
application so if for example the main widget is hidden, it can't be
brought back. Also neither applicationDidBecomeActive nor
applicationDidResignActive do anything. This patch fixes it

[ChangeLog][QPA][OS X] Add support for ApplicationState capability.
Application can now detect when an application states has changed
as well when the dock icon has been clicked.

Task-number: QTBUG-10899
Change-Id: I53d3e6eed4adc62b343e7aa3e3d8068d3248e7df
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-04-24 02:45:31 +02:00
Jorgen Lind eb88aaa3a2 Introducing QPixelFormat
Its purpose in life will be to describe pixel formats

[ChangeLog][QtGui] Added QPixelFormat class

Change-Id: I74d8f974606520efb3935110ff3d6ddb5ea805a8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-04-23 21:43:50 +02:00
Jani Heikkinen 54c1e5ed22 Merge remote-tracking branch 'origin/release' into stable
Change-Id: Id13b4a3803664692f32f9d57549be8a0c4a08567
2014-04-23 12:42:48 +03:00
Gabriel de Dietrich 454dc332b3 QPA: Adding API to support QWidgetAction on Mac
Includes the Cocoa implementation.

Task-number: QTBUG-19840
Change-Id: Id33bc8053b82116cf76ed591b6df823df3aef9bc
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-04-17 18:56:27 +02:00
Shawn Rutledge d449c0e0e4 When a window loses focus to a popup, event has PopupFocusReason
Followup to debe31e047 : a popup
window can have focus, but a QQuickWindow needs to know why
it loses focus when a menu is opened, so that for example
copy/cut/paste Actions can apply to the text which did have
focus before the menu opened.  The event's focus reason provides
enough information to deal with this situation.

Task-number: QTBUG-36292
Task-number: QTBUG-36332
Change-Id: Ifae999a364a61b125a4764c9db204a167bddf0b7
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-04-17 10:59:47 +02:00
Laszlo Agocs 7aac93b6ce Remove internal public function from QOpenGLFunctions
QOpenGLContext uses glGetTexLevelParameteriv on desktop OpenGL and so it
got recently added to QOpenGLFunctions as part of the dynamic GL loading
support.

This is unnecessary since such desktop-only code can use the versioned
wrappers (QOpenGLFunction_1_0 for example). In related upcoming changes
in 5.4 the function is removed. This change has to be backported to 5.3
to prevent introducing this public API unnecessarily.

Change-Id: I6fc331091e4e6416e430bf985afcc17a392fc2e3
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-04-17 10:59:03 +02:00
Tasuku Suzuki cd21b56c9d remove context unmatched warning in QOpenGLTexture
destroy() or destructor complain when QOpenGLTexture is not created or
it is already destroyed.

Change-Id: I6b3135849e3ba2ce35678fcdbf1c9b6e588a063c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-04-16 13:29:12 +02:00
Konstantin Ritt 0ec07b68ad Improve the Unicode script itemization implementation
Make it closer to the Unicode specs (UAX#24):
* Common now inherits the preceding character's script, if any;
* In a combining character sequence, if the base character is
  of Common script, the entire sequence is treated like if it were
  of the first non-Inherited, non-Common script in the sequence.
See http://www.unicode.org/reports/tr24/tr24-21.html for more details.

[ChangeLog][QtGui] Fixed regression in arabic text rendering.

Task-number: QTBUG-28813
Task-number: QTBUG-29930 (related)
Task-number: QTBUG-35836
Change-Id: Id85761965b08ca94c674d5f3613fe58b82b2ce9c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Ahmed Saidi <justroftest@gmail.com>
2014-04-14 06:43:57 +02:00
Konstantin Ritt ef77c16cb0 Make HarfBuzz-NG the default shaper on Mac
For AAT shaping support, we need either the pre-QPA shaping trick
or the new HarfBuzz on Mac; prefer the latter.
Disable some test cases aimed to test the HB-old behavior; enable ones
that should guarantee shaping-unaware behavior.

[ChangeLog][OS X] Use CoreText text shaping engine for support of
complex scripts. If required, the shaping engine used in previous
versions can be preferred by configuring Qt with -no-harfbuzz.
Alternatively, the QT_HARFBUZZ environment variable could be set to "old".

Task-number: QTBUG-18980 (relates)
Task-number: QTBUG-38246
Change-Id: Iee6fe4f5bc047e77259182b8585385c5febd02b3
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-04-14 06:43:54 +02:00
Frederik Gladhorn 98d3e40fb7 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	mkspecs/qnx-armv7le-qcc/qplatformdefs.h
	src/printsupport/kernel/qcups.cpp
	src/widgets/styles/qstyle.h
	tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp

Change-Id: Ia41e13051169a6d4a8a1267548e7d47b859bb267
2014-04-11 14:36:55 +02:00
Morten Johan Sørvig 1a6011e09f QTextImageHandler: Load @2x images on retina
Look for and load "@2x" image versions. Adjust
getPixmap/ImageSize to take the image devicePxielRatio
into account.

Use doc->documentLayout()->paintDevice() to get the
target window devicePixelRatio (like the existing
DPI-based scaling). In practice this pointer may/
will be null, fall back to qApp->devicePixelRatio
as usual.

Task-number: QTBUG-36383
Change-Id: Ib5e113b67242b5a9b3410272f2183a76a60bc773
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-04-09 20:53:06 +02:00
Morten Johan Sørvig 63e33bfdab OS X: Add more text editing key bindings.
ctrl + K : Cut
ctrl + Y : Paste
ctrl + F : Cursor right
ctrl + B : Cursor left
ctrl + N : Cursor down
ctrl + P : Cursor up
ctrl + V : Cursor next page
ctrl + O : Insert line separator

(ctrl as in the key, not Qt::CTRL)

These are low-priority (0) key sequences. Add them to the
end of each StandardKey range and change the priority
of an existing item to 1 where it makes sense.

Task-number: QTBUG-32837
Change-Id: Id321e6c6ad4277d729b27297a1de66c4628e4201
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-04-09 20:53:06 +02:00
Oswald Buddenhagen 08672adb97 make cmake registration of qt plugins make use of PLUGIN_EXTENDS
instead of assigning plugins to the first module which claims the whole
type, try to assign it to a module which the plugin claims to extend.

as we are getting stricter in that go, somebody needs to claim the
'generic', 'platformthemes', and 'platforminputcontexts' plugin types.
the natural claimant is QtGui. however, as we don't want to auto-link
any of these plugins, make them all claim that they extend a
non-existing module.
QtGui also claims 'iconengines' plugins.
the 'printsupport' plugins are also claimed by the respective module.

Change-Id: I7af7c16089f137b8d4a4ed93d1577bd85815c87b
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-04-09 20:53:06 +02:00
Marc Mutz 323ce42de6 QPageSize: remove QPageSize:: overqualifications
This is not Qt style, not needed, and clutters the code, so remove
QPageSize:: qualifications where they're not needed.

Change-Id: Ia93ac9523ef43a40cf4dab3bcb383a54af666c96
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-04-09 12:40:58 +02:00
Laszlo Agocs adde66f0dd Update qtgui.qdoc regarding OpenGL
Change-Id: Ibda6987d005a1e42ebaef23b41ef18ae0b7ffa66
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-04-09 10:47:09 +02:00
Frederik Gladhorn ccdfe354a6 Accessibility Mac: Cache Accessible Elements and Notify about changes
The big change is that we now keep the id objects representing accessibles
around so that they are persistent for ATs.
This improves performance of Mac accessibility significantly.

This is required for notifications which are now sent so that many things work much better,
for example the VoiceOver focus follows the keyboard focus.

The parent element in QCocoaAccessibleElement was removed, we can
dynamically access it more reliably.

Change-Id: I686d212f40d28b392dcc22f16f3c3430f08bdc98
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-04-09 10:46:02 +02:00
Laszlo Agocs 7537a4605a Correct QOpenGLContext::versionFunctions() docs
The example is incorrect: no context parameter is needed.

There was also no mentioning of the fact the the context must be
current at the time of calling initializeOpenGLFunctions(). This
is corrected too.

Change-Id: If8695140096e4b4f84927579c099b0af80750703
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-04-09 10:45:36 +02:00
Marc Mutz 6b2b0cd41b QPageSize: clean up operator==
Recognize that the d-pointer can never be nullptr and drop the
nullptr checks.

The d-pointer can never be nullptr as there's no move ctor and all other
ctors create a QPageSizePrivate.

Change-Id: I6c4e165949ed55510aefbc2d933f20fc8e624333
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-08 22:07:16 +02:00
Marc Mutz 1baf8e9ad7 QPageLayout: clean up operator==
The old code always compared the Private classes, unless one of them
was nullptr (which it never was, as there is no move ctor and all
other ctors create a QPageLayoutPrivate.

The new code compares the dpointers, and only if they differ, the
Private classes. It also drops the nullptr checks, as they cannot
trigger.

Change-Id: I523c3503e2edb520f98f9b4e2e3bdaf28a9a355d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-04-08 22:07:08 +02:00
Marc Mutz c7dd6006b9 QPageLayout: provide op!=
For consistency.

Change-Id: I20fb70999785e2c1947f033d63367a2f6746990a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: John Layt <jlayt@kde.org>
2014-04-08 22:07:01 +02:00
Marc Mutz 4bed03eb85 QPageLayout: make op== non-member
Better style, since it treats the left-hand and right-hand size symmetrically,
e.g. for implicit conversions.

Change-Id: Ib5d39b1ebffffcb664ee2f72c756702469e32d3b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-08 22:06:55 +02:00
Marc Mutz 0de0f494bd QPageLayout: use QExplicitlySharedDataPointer
Many setters check for an actual change before making changes to
data members, but because of QSharedDataPointer, the detach had
already happened by the time the comparison returned false.

Change-Id: I320806e74de4a64fa3a340831621c1f5120ebb0f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: John Layt <jlayt@kde.org>
2014-04-08 22:06:50 +02:00
Marc Mutz 7b3d9bbdf2 QPageLayout: remove QPageLayout:: overqualifications
This is not Qt style, not needed, and clutters the code, so remove
QPageLayout:: qualifications where they're not needed.

Change-Id: I62f90c29bcb9f3c137d319051ac79e081fe5fb69
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: John Layt <jlayt@kde.org>
2014-04-08 22:06:44 +02:00
Marc Mutz 22afdaa2da QPageSize: provide op!=
For consistency.

Change-Id: I4375a6f8c2514479a7479c735d397bf8a9876db1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: John Layt <jlayt@kde.org>
2014-04-08 22:06:38 +02:00
Marc Mutz 9f924338a8 QPageSize: make op== non-member
Better style, since it treats the left-hand and right-hand size symmetrically,
e.g. for implicit conversions.

Change-Id: If1ffa9dc2a018e402c884f60bfbc82e799daeb92
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-08 22:06:31 +02:00
Marc Mutz 6115ba4f4e QPageSize: mark ctors explicit
A QSize or QSizeF is not an accurate representation of a QPageSize, so
the corresponding constructor should be explicit.

Change-Id: I6b1808e5f93e3caef948c0e5300bd3c20e3c4210
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: John Layt <jlayt@kde.org>
2014-04-08 22:06:25 +02:00
Marc Mutz 5110831721 QPageLayout: use existing qBound()
instead of rolling our own qt_clamp().

Change-Id: I2729ae3ff98e8c29c66f0f5c792b1bc7bf586f06
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-04-07 23:42:09 +02:00
Richard Moe Gustavsen b8d0fac5a9 QGuiApplication: fix crash caused by posting fake mouse event
Since Qt expects a mouse press/release event to not change
mouse position in the same event, QGuiApplicationPrivate::processMouseEvent
will detect if a QWindowSystemInterfacePrivate::MouseEvent
tries to do this and convert it to two events; one move
and one press/release.

The problem is that the extra mouse event gets posted. So if
delivering the first event causes a flush in the event queue
(which can easily happen if e.g calling processEvents), the
second event will be processed before the first returns.

On iOS we see a crash with DnD as result of this, since drag
data gets deleted on mouse release, and returning back to a mouse
move after that will cause dangling pointers.

This patch will instead of posting the event, call the
event handler recursively with the faked event as argument.
That way a flush will not cause the "pending" event to be
delivered.

Change-Id: Id9d88053b4859083fedd666584815016d67ac51b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-04-07 11:07:31 +02:00
Shawn Rutledge b5eb850e0d OSX: add several menuitem roles to support menu shortcuts in dialogs
Now menu items and key shortcuts for Cut, Copy, Paste and Select All
work in the standard ways in dialogs such as the file dialog, provided
that the corresponding QActions have been created and added to the menu.
This depends on new roles to identify each menu item which is so
broadly applicable that it should work even when a native widget has
focus; but the role will be auto-detected, just as we were already
doing for application menu items such as Quit, About and Preferences.
When the QFileDialog is opened, it will call
redirectKnownMenuItemsToFirstResponder() which will make only those
"special" menu items have the standard actions and nil targets.  When
the dialog is dismissed, those NSMenuItems must be reverted by calling
resetKnownMenuItemsToQt(), because to invoke a QAction, the NSMenuItem's
action should be itemFired and the target should be the
QCocoaMenuDelegate.

Task-number: QTBUG-17291
Change-Id: I501375ca6fa13fac75d4b4fdcede993ec2329cc7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-04-07 08:30:24 +02:00
John Layt bc46b591b2 QPagedPaintDevice - Move QPageLayout methods
The new QPageLayout methods weren't originally added to QPagePaintDevice
as no new virtuals can be added, instead static polymorphism was used to
add the methods directly in the derived classes QPdfWriter and QPrinter.

This however means that classes like QTextDocument with print() methods
that take a QPagedPaintDevice are unable to access the QPageLayout
methods. To fix this, instead make the QPagedPaintDevicePrivate a
virtual class and have QPdfWriter and QPrinter implement derived
private classes that are called by the non-virtual QPagedPaintDevice
base methods.

Change-Id: Ieb6e513b1fa05f5ae76ea1f9156b0b1a053089eb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-05 21:47:46 +02:00
Thiago Macieira 3e930baa98 Use Q_STATIC_ASSERT to check that the array has the right size
No need to sprinkle the code with Q_ASSERT. We don't want this to fail
to the user anyway. By using a Q_STATIC_ASSERT, a failure will be
immediately reported to the developer.

This also solves a warning found by Clang 3.4:
error: unused variable 'pageSizesCount' [-Werror,-Wunused-const-variable]

Change-Id: I79cf72c64242ad395276ce4360c59ad81112d9eb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-05 05:23:03 +02:00
Fabian Bumberger 8d83562c1f QNX: Surpress manual window activation during showFullScreen
When a window is shown, libscreen will give it keyboard focus.
Requesting the activation right after the window is created (and
before libscreen activated the window) causes problems on some devices
e.g. Q10.

Change-Id: I29f7a38990ea4259a8b0c6624f70e31d7291af00
Reviewed-by: Sergio Ahumada <sahumada@blackberry.com>
2014-04-05 02:27:31 +02:00
Samuli Piippo 1a6d7b6e93 Fix neon image scaling function declarations
Change on the image scaling functions did not update the neon function
declarations.

Task-number: QTBUG-35927
Change-Id: Ia1e7428953aa140cad36e1cf26a18bfefc2267e7
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-04 22:05:57 +02:00
Sergio Ahumada 2343b74193 Doc: Fix documentation warning in qstylehints.cpp
warning: Command '\snippet (//! [6])' failed at end of file 'code/src_gui_kernel_qguiapplication.cpp'

This change amends 56cd9cc2b0

Change-Id: I63a2f086fc582d3a9c8b60f1ef94ccb537b0d3a5
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-04-04 22:05:57 +02:00
Oswald Buddenhagen a4ec90175c purge vestiges of opengl es 1 support
amends 0d5170256c.

Change-Id: Ifa178d38f602bb7c66ef13334673ff47e332af5b
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-04-04 19:32:21 +02:00
Konstantin Ritt 330f6e3598 QTextLayout: Fix cursor movement from invalid position
Actually guarantee cursor doesn't move in this case for both logical
and visual modes (just what the documentation says we already do ;)

Change-Id: Iabdca7aa1d205672386a0095e3487e585611cdb5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-04 19:32:21 +02:00
Konstantin Ritt 47056e78d3 Optimize QTextEngine::insertionPointsForLine() a bit
Reserve the insertionPoints vector capacity prior to multiple append()-s.

Change-Id: I97ab5b2a1add9f2e87c04ad0707bf516c13ff4d7
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-04 19:32:21 +02:00
Konstantin Ritt 0b5911f376 QTextLayout: Fix visual cursor movement in some cases
To guarantee proper positioning at the end of the last line in a
bidirectional text we have to insert the eol position into the
insertion points vector, accordingly to the visual ordering.
Detection of the last *logical* item in a *visual* line is unrelaed
to the text direction, it is simply `iterator.item == iterator.lastItem`.

[ChangeLog][QtGui][QTextLayout] Fixed visual cursor movement
in bidirectional text.

Task-number: QTBUG-18060 (partially related)
Change-Id: I53b6ab889ef580ab0560b620b808b1e09efc0fbd
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Ahmed Saidi <justroftest@gmail.com>
2014-04-04 19:32:21 +02:00
Konstantin Ritt d828672945 QTextEngine: Fix visual position movement for tab and object cases
QTextLineItemIterator::next() was never updating itemStart and itemEnd
for QScriptAnalysis::TabOrObject, thus producing incorrect
insertion points for the line that contains tabs and/or objects.

Change-Id: Ia964c663cc0636ba6be4500702656f989b252fba
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-04 19:32:21 +02:00
Konstantin Ritt 6d39e87f34 [HB] Ensure we always working with non-multi font engine
Change-Id: If88385d4cecdc527b7952d34e48f7ba889173c6c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-04 19:32:21 +02:00
Jorgen Lind 7d005c502b Add isCreated to QOpenGLTextureBlitter
Change-Id: Icb1a0354ac1caee38e3cb0cba6d7daec99d66c54
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-04-04 10:50:48 +02:00
Jorgen Lind 82d2d9b3cc Fixup QGuiApplication::sync to flush the QWSI queue
Change-Id: If4cedeb886e912f622a66b2b3374d6260cffc32a
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-04-04 10:35:23 +02:00
Tomasz Olszak 790bc92bc0 Added handling of QT_LINUX_ACCESSIBILITY_ALWAYS_ON variable.
By setting this variable to non empty value we can, bypass
checking ScreenReaderEnabled proprty of org.a11y.Status
dbus interface. Not all accessibility readers set this.
The variable is also useful for debugging.

Change-Id: I6c5a1a51065948248e068dfff4755d6818ed9fb1
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-04-04 08:33:16 +02:00
Jędrzej Nowacki ef2a2a9c03 Optimize QColor::setNamedColor
This patch removes two memory allocations from the algorithm.

Change-Id: I9366f9c5ce02fb1cae8adfbd8dff36c7f23af2a7
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-04-03 22:35:48 +02:00
Topi Reinio dfb70fbfc4 Doc: Fix Qt Gui filter name in Assistant
Use bookcase for the filter name like the rest of the modules.

Change-Id: I9690d0b6a6f3abb11837120da75832475b975b5d
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-04-03 11:07:07 +02:00
Jocelyn Turcotte 4bbf313e9d Fix UI squishing when using QWidget::setRenderToTexture
When resizing a window, a window might not be resized synchronously with
its backing store. We need to use the actual texture size as the transform
to avoid stretching the rendered texture.

Change-Id: I945f6d190577ccdcb54483a267a1e42df1ca3156
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-04-03 11:07:07 +02:00
Robin Burchell 5ef4e0ed0c QPainter: Fix a hard to trigger null dereference in QPainterPrivate::drawTextItem.
Done-with: Mohammed Hassan <mohammed.hassan@jollamobile.com>
Change-Id: I24c724d24346fb5be8c4a66d68a11d51be5ad5f2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-04-03 01:15:16 +02:00
Mitch Curtis 78f6d144d6 Serialize QPicture using the latest QDataStream version.
The QDataStream version with which QPicture was previously serialized
with was hard-coded to 11 (Qt 4.5). This prevents features of
serializable types used by QPicture from being serialized if they
were added after Qt 4.5; namely features of QFont like
HintingPreference.

[ChangeLog][QtGui][QPicture] QPicture now serializes its data properly
by also accounting for QDataStream versions greater than Qt 4.5.

Task-number: QTBUG-20578

Change-Id: Idd27682b187f4d4a3695c52bbf68e84853c024a8
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-04-02 15:18:11 +02:00
Jocelyn Turcotte b94493e6c8 Avoid an "OpenGL Error: 1282" output when resizing a QOpenGLWidget
When we delete the previous FBO in QOpenGLWidget::resizeEvent while
it is the currently bound FBO, the QOpenGLContextPrivate::current_fbo
will not be updated and will try to be bound during the initialization
of the new FBO.

Fix the issue by explicitly releasing the FBO on destruction if it
is current.

Change-Id: Id049889c4857526750bbecf3dd27343e44449c12
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-04-02 10:06:07 +02:00
Jocelyn Turcotte f7971d37cb Add a way to share context between QtQuick and QtWidgets
This will replace QSGContext::setSharedOpenGLContext.

To be able to allow sharing the Chromium GL context with both
QWebEngineView and QQuickWebEngineView, we need some way of setting
the sharing within QtWidgets and QtQuick. Since they don't depend
on one another this patch allows the sharing context to be set
through QtGui.

Change-Id: I91b365dd06ec925b4c5a99ac82c222778781fe8e
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-04-02 10:06:00 +02:00
Marc Mutz 463d58325c QColor::colorNames(): reserve the result QStringList
Avoids reallocations.

Change-Id: I56afcdb400d1e07394e62a610f838a33feda9fe8
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-04-02 09:34:22 +02:00
Laszlo Agocs b4128d0f7d Use an offscreen surface in VAO cleanup
Avoid failing the makeCurrent() on iOS that does not currently support
using a window with different contexts.

Change-Id: I2e10ad7e382161625a78518d02ad94edaff591ca
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-04-01 15:51:33 +02:00
Iikka Eklund 0ab63b035a Merge remote-tracking branch 'origin/stable' into dev
Change-Id: I2a6eb9dd7724931bc89f28bcc156e77c4e26d069
2014-04-01 11:44:27 +03:00
Mitch Curtis 4f50be8d18 Properly serialize QFont.
Some data was never serialized (styleName, hintingPreference) and
some was incorrectly serialized (styleStrategy). This change also adds
auto tests for every applicable QDataStream version.

[ChangeLog][QtGui][QFont] QFont now serializes its data properly,
without any data loss.

Task-number: QTBUG-22814
Task-number: QTBUG-22946

Change-Id: I34e61b10662b7ad6c57054dacc7e1f522f5b5c5d
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-03-31 17:45:47 +02:00
Mitch Curtis bd822bedfe Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2014-03-31 17:45:37 +02:00
Konstantin Ritt 5f19e2c8f3 Fix QFontCache::Key comparison for custom font fallbacks case
Just a C&P typo, of course we have to compare lists, not their sizes.

Change-Id: I40542035b87f5bb8d75207cb02c0826cc3a2a413
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-31 17:27:47 +02:00
Konstantin Ritt 5dfe7b5fed Drop dead code
The QFontEngineMulti's `base` font engine always non-null.

Change-Id: I5092b66bc839a6a3216ffa0b0afe55a8b62be620
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-31 17:27:24 +02:00
Shawn Rutledge 51d4eb8f5b If no screens, attempting to create a window results in clean exit
Asserting is only relevant for debug builds, and there were a couple
of other places that a segfault would typically occur before the assert
had a chance.

Change-Id: I1abc82eb3ecfa91050117fab1525f4cbd82ff486
Task-number: QTBUG-37876
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-29 21:22:38 +01:00
Allan Sandfeld Jensen f2e6570e4f Fix drawing paths with constant opacity onto PDF
The native PDF strokes can not be used with constant opacity as any
overlapping parts of the path will end up being drawn multiple times
getting the wrong final opacity. A constant opacity should therefore
be treated the same as opacity on the pen color, and trigger the
fallback drawing.

Task-number: QTBUG-37101
Change-Id: I44f70a8b494567ee89804a5fa6333304a5abe91e
Reviewed-by: Michael Bruning <michael.bruning@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-03-29 10:39:11 +01:00
Lars Knoll c4d8734c50 Avoid out of bounds memory reads when scaling images
The calculation of the width/height required for the
scaling algorithm was prone to floating point rounding
issues, where the lower value got rounded down, the higher
one rounded up. This could lead to a situation where we
iterated over one more line/pixel in the line than we have
in the source image.

Correct this by passing the dimension of the source image into
the function and bounds checking the values before iterating.

Task-number: QTBUG-35927
Change-Id: If44b2235a479224660d508a0504fec40d724763a
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-28 22:52:19 +01:00
Sergio Ahumada d688b7c07c Deprecate QFont::setRawName() and QFont::rawName()
We don't support xlfd fonts anymore and indeed QFont::setRawName()
is an empty method.

[Changelog][QtGui] QFont::setRawName() and QFont::rawName() are
deprecated.

Change-Id: Ic52d42a9bc200ba8b246dd4e28c77f84e086dad5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-27 22:02:39 +01:00
Mitch Curtis 992ed38e4e Fix typos in QFont documentation.
Change-Id: I0e8de5b47ec7b64719f875eecc46cc8ef009642b
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-03-27 17:51:21 +01:00
Tor Arne Vestbø 98e90f700a Keep track of destroyed QOpenGLContexts in QOpenGLVertexArrayObject
QOpenGLVertexArrayObject saved the QOpenGLContext it was created in at
the point of QOpenGLVertexArrayObjectPrivate::create(), but didn't set
the saved context back to 0 in QOpenGLVertexArrayObjectPrivate::destroy().

The result was that the zero-pointer checks in the VAO destructor never
hit, and we ended up trying to make a destroyed QOpenGLContext current.

This bug was triggered by the QFontEngine having a limit of 4 concurrent
glyph caches, so when we created the fifth glyph cache we would remove
an earlier one, which destroyed its VOA, that referenced a QOpenGLContext
for a window that had been destroyed already.

We now reset the context back to 0, and disconnect aboutToBeDestroyed()
at the point of QOpenGLVertexArrayObjectPrivate::destroy().

Change-Id: Ib16f3877b310144886cf863b16697c137e7c7941
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-03-27 17:51:21 +01:00
Liang Jian 666c25c089 Fix race condition in QOpenGLMultiGroupSharedResource
In QOpenGLMultiGroupSharedResource::value(), the m_resources memeber of
opengl context group will be checked and may be inserted a new value. This
function may be called from different threads with the same opengl context
group object: Think about that OpenGL context A and B are shared, they
live in different thread, and in each thread we call
QOpenGLContext::functions() to the context, that may cause the race I
mentioned above. So I put a QMutexLocker to prevent race condition.

Change-Id: I101a28f46b2af72b3094a9945880efeb3563482a
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-27 17:51:21 +01:00
Jonathan Liu 3c68252bf5 Doc: Fix typos
Change-Id: I720813b126f02d4813c88811316a0fa99961c6d8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-03-27 15:36:58 +01:00
Laszlo Agocs 75f9c75f0a Enhance QOffscreenSurface docs wrt the format
Prevent nasty surprises on some EGL implementations.

Change-Id: I0c6c8a6c631d4dcb979afd81a150491a42aa63f8
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-03-27 14:29:43 +01:00
Marc Mutz 4a35b05b85 QImageReader/Writer: replace dubious use of QSet<QByteArray> with QList
The code populated QSets with some strings and went
on to copy the values to QLists. Since QSet is unordered_set, those
lists were not sorted, so the code did that manually.

Since QSet is a node-based container and not even an ordered one,
the code pays a hefty price just for ensuring uniqueness of values
prior to sorting.

The new code just crams everything into lists, duplicates and all,
then sorts the lists and only then removes duplicates using
std::unique.

Saves 3376B in text size on Linux AMD64 GCC 4.9-trunk release
stripped QtGui.

Change-Id: Ifee931102c01b7505c712cebf4effc37e94165b0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-03-26 00:20:53 +01:00
Laszlo Agocs a480cd8147 Do not pull in egl for QtGui and QtOpenGL
This must be some leftover: there are no winsys interface dependencies
outside the platform plugins.

Change-Id: Idde64699a5335155bdda745e78d6edbc68a8711b
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-03-25 17:11:54 +01:00
Eskil Abrahamsen Blomfeldt 0b87f4f6c9 Android: Fix font merging
Our fallback fonts would contain a minimal list of hardcoded fallback
fonts, which is neither sufficient for displaying all text, nor
portable to different vendors which can supply different font sets.

[ChangeLog][Android] Fixed font merging problem which caused e.g.
missing glyphs for Arabic numerals.

Task-number: QTBUG-37738
Change-Id: Ic971343a1cd5610c79a81f6f6152c637937b5626
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-03-25 14:19:27 +01:00
Mitch Curtis 895fa0de79 Fix grammar in QFontInfo::styleName() doc.
Change-Id: I673ecc8931f4824dc4fb923056354cfd2e119e40
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-03-25 12:49:17 +01:00
Konstantin Ritt d1778a26a3 [HarfBuzz-NG] Optimize Unicode de-/composition callbacks
Use QStringIterator instead of QString::toUcs4() and escape earlier.

Change-Id: If80b886bece1a43af7078e8cdc9c31babf602731
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-25 03:46:21 +01:00
Friedemann Kleint 3ed2ec1487 Fix some documentation errors.
Correct links and fix typos, remove obsolete documentation,
fix some snippets, mark some classes as internal.

Change-Id: I9a3266605f060783413d32740057a57a820c8929
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-24 16:42:02 +01:00
Frederik Gladhorn 3b5c0bc078 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/gui/image/qjpeghandler.cpp

Change-Id: I9db3acea7d5c82f5da679c8eaeb29431136665f0
2014-03-24 16:10:15 +01:00
Shawn Rutledge efcfa0b252 QGuiApplication: send TouchCancel when touch is interrupted by popup
QQuickWindow depends on maintaining state of known touch points
between events, so it needs to be notified when it will not be
receiving the corresponding release event for one or more.
This temporary fix needs to be reverted when we have a proper
event forwarding solution.

Task-number: QTBUG-37371

Change-Id: I5dc40af6feac425be8103c1586f8ebe3a6aad20d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-03-21 21:08:27 +01:00
Gabriel de Dietrich e7816e987e QPA: Fix QPlatformTheme::Palette enum value spelling
We keep the old value for source compatibility, but it should
probably be removed at some point as the QPA API is semi-public
only.

Change-Id: I06e4c9ca1d8bb878411ad79ef409d60ce2d29f4a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-03-21 18:02:20 +01:00
Laszlo Agocs aecc14fff8 Remove non-existent function from header
This is a leftover from the QGL->QOpenGL migration, the function
never existed in the QOpenGL variant of the class.

Change-Id: I47bdfb7f65ffc6cdd39b353e3a69900ccf10e4fc
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-03-21 15:43:17 +01:00
Tor Arne Vestbø 2bc7a40048 Teach font database to populate families lazily
Instead of requiring that QPlatformFontDatabase::populateFontDatabase()
populates every single font in the system by calling registerFont(), we
now allow the platform database to call registerFontFamily() instead, and
then keep track of which families we've yet to fully populate in the font
database.

Once a property of a family is requested (such as its writing system,
style, etc), the family is lazily populated by calling back to the
platform database through QPlatformFontDatabase::populateFamily(),
which in turn does the final call to registerFont() as before.

This cuts application startup on OS X and iOS (of which the font population
used to be a major limiting factor) from roughly one second to about 350ms.

Task-number: QTBUG-37165
Change-Id: Ic2fc3447beb818ffe23635a5b7816ed7e70c93a7
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-03-20 19:01:53 +01:00
Laszlo Agocs 3e3d06d705 Docs: Correct OpenGL ES naming
Not sure where "OpenGL/ES" is coming from but there is no such thing.
The correct name is OpenGL ES.

Change-Id: If071ee5bd928fea1a2f1aebc11155344df1efe2d
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-03-20 14:11:38 +01:00
Laszlo Agocs 8adca56674 Resurrect advanced bindTexture() features in QtOpenGL
During the Qt 4 -> 5 migration the setting of the extension flags
in QOpenGLFunctions/Extensions suffered a regression: flags like
GenerateMipmap were never set. This led to the unfortunate sitation
that features that were tied to these flags, like compressed texture
support or mipmap generation, got disabled.

This is now corrected by checking for the extensions like Qt 4 did.

Task-number: QTBUG-37588
Change-Id: I4a7beb1b435af11e05f5304aa04df2ec63b34c18
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-03-20 14:11:33 +01:00
Morten Johan Sørvig 8c91c9912f Avoid QImage copy in toTexture()
Desktop OpenGL has GL_UNPACK_ROW_LENGTH which we
can use use to specify the image row stride.

This removes the need to call QImage::copy(). On
a retina MacbBok pro this reduces toTexture's share
of the total run time by 1-4%. (on tests/manual/
qopenglwidget/openglwidget)

Change-Id: Ia7f49d5c4ffcc347a495701bbaca6aecc2dc3433
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-20 10:36:34 +01:00
Laszlo Agocs f5b552b590 Return false on context creation failure
Make QOpenGLContext::create() return false when the native context
could not be initialized. This way the return value and isValid()
become equivalent.

Relying on on having a non-NULL platform context is not enough, many
platforms will return a new instance even if the underlying platform
code failed to create a native context. To ensure that a platform
context is really usable, isValid() has to be checked too.

Change-Id: I6b4e9fdb24347ad52fbd6edbb8d144d51e16c301
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-03-20 10:36:34 +01:00
Mitch Curtis 9508ea4c50 Correct QPainter::setPen() documentation.
The default pen width is 1 as of Qt 5.

Task-number: QTBUG-37277

Change-Id: I5b7b9c2019bd0e812384e67812b7bcfde37d0b53
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-03-20 10:36:34 +01:00
Morten Johan Sørvig 5e03c4d97f QOpenGLWidget retina support.
Use device pixels where appropriate. 

Change-Id: Ia953e6da4034eecbfccf798701ec1b850eea9d5b
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-03-20 08:35:24 +01:00
Kurt Pattyn 3ff15f1e98 QOpenGLContext: Use color depth information from QSurfaceFormat
When a new QOpenGLContext is requested, the color depth
information is now also taken into account on OS X and WGL.

Task-number: QTBUG-37411
Change-Id: I69d04989a20de3ace041b009fbbdc03fa02cfdf8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-03-19 20:12:08 +01:00
Frederik Gladhorn 433ebd1628 AVX image code was removed
Remove a last left-over after 5e519b31dc

Change-Id: I85e73a5d81d45b4ccfc80cdaf34ab7b6c3c85bdc
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-03-17 23:00:50 +01:00
Friedemann Kleint 513a49d62c Fix translation of QtPrintSupport and QPageSize.
Add translator comments, fix spelling, reduce repetitive
messages.

Change-Id: Id4cbbc3de8fa261cf8f125c5faf735dc608e2b15
Reviewed-by: Robert Loehning <robert.loehning@digia.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: John Layt <jlayt@kde.org>
2014-03-17 20:53:10 +01:00
Konstantin Ritt 4f2872c64f Make QTextEngine::setAdditionalFormats() invalidate cached results
...which ensures we're not getting the formatting/rendering
artefacts in case of QStackTextEngine.

Change-Id: Ia0696a3e67eb866cf9776c6649c43775944edd1d
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-17 16:27:55 +01:00
Laszlo Agocs 0a803dc90a Add note to docs about normalization in setAttributeBuffer
Task-number: QTBUG-37103
Change-Id: I0b1716b76e10c65871c6a96dab5d8d81c95095d7
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-03-17 16:27:55 +01:00
Jani Heikkinen 23b47a8d4e Merge "Merge remote-tracking branch 'origin/release' into stable" into refs/staging/stable 2014-03-17 13:48:12 +01:00
John Layt d13195584e QPrintEngine - Switch Cups to QPlaformPrintDevice
Use QPlatformPrintDevice in the Cups print engine for all device
specific code.

Change-Id: Ic1f5f8b4010a9958c320f3c0c727cf1bd1a70c65
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-17 13:45:55 +01:00
John Layt 9e29fab38d QPdfWriter - Use QPageSize and QPageLayout
Add support to QPdfWriter for QPageSize, QPageLayout, and resolution.

[ChangeLog][QtGui][QPdfWriter] The QPdfWriter now supports setting
the PDF orientation, layout and resolution by using QPageSize and
QPageLayout.

Change-Id: I9c269f997ec540dac1989f355c6a2e7488947966
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-17 13:45:52 +01:00
John Layt 0c04b31d27 QPdfPaintEngine - Use QPageLayout and QPageSize
Switch internals of QPdfPageEngine and derived classes to use
QPageLayout and QPageSize to make handling of page layout and size
more consistent by removing multiple implementations.  In particular
remove all use of the QPdf namespace version of page size.

Change-Id: Ie820340015e8812c8162bd1a257dd0f51f4f0b85
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-17 13:45:49 +01:00
John Layt 4ab55a01e9 QPagedPaintDevice - Use QPageSize and QPageLayout
Use new QPageLayout and QPageSize class to store and convert page sizes
and layouts consistently.  Extend the PageSize enum to match
QPage::PageSize.

Note that public setters/getters cannot be added as virtuals would break
BIC, but without virtuals the derived classes would break.  Instead an
internal api is provided and the derived classes will need to
implement identical api to manipulate it.

[ChangeLog][QtGui][QPagedPaintDevice] Paged paint devices such as
QPrinter and QPdfWriter now support all Postscript standard page sizes.

Task-number: QTBUG-27685
Task-number: QTBUG-25744

Change-Id: I62e96ab94194ab4ac8bed8fa804e0ce1c3233313
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-17 13:45:47 +01:00
John Layt f50d46e5eb QPlatformPrintDevice - New QPA base class
Add a new QPA class to abstract Print Devices.  Each platform instance
will encapsulate all required details about a print device instead of
the code being distributed throughout the print engine and print
plugin.

Change-Id: I7f6a537ad55a6e7f599d83f461b1e2ee62b15094
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-17 13:45:31 +01:00
John Layt 5eeed00f4d QPageLayout - Add new QPageLayout class
New QPageLayout to encapsulate page layout details including page size,
orientation and margins.  Scale may be added later.

Subsequent changes will use this class in the paged paint devices,
paint engines, print engines, and print plugins to replace multiple
inconsistent local implementations.

[ChangeLog][QtGui] Added class QPageLayout to support handling page
layouts including the page size, orientation and margins.

Change-Id: Ife1ddd6c2a8d1516542be2eb37425111f41cd5c7
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2014-03-17 13:45:27 +01:00
John Layt 87d802465b QPageSize - Add new QPageSize class
New QPageSize class to encapsulate paper sizes and names to ensure all
sizes and conversions are consistent and match the Postscript standard
sizes.

Subsequent changes will use this class in the paged paint devices,
paint engines, print engines, and print plugins to replace multiple
inconsistent local implementations.

[ChangeLog][QtGui][QPageSize] Added new QPageSize class to implement
Adobe Postscript PPD standard page sizes. This class supports the
standard page sizes, names and keys from the PPD standard, and provides
convenient size and rect conversion methods.

Change-Id: Ie2c8be0c3df0d29ac5da4cd9877ad41d0982633c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-17 13:45:19 +01:00
Allan Sandfeld Jensen cf56e066ad Revert "Make OpenGL texture glyph cache use the right freetype glyphs"
This reverts commit f78661b03c.

The reverted patch was working around that QFontEngineFT was using
the poor QFontEngine fall back. That issue was fixed in commit
0b7beaaaf2, and the work around
is no longer needed.

This also fixes a rare problem with the workaround when the fontengine
and the glyph-cache do not share the same default glyph format which
can happen with QRawFonts.

Change-Id: I150f70a003b137c1d145f6f70cda568c85633e5c
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-03-17 13:39:09 +01:00
Frederik Gladhorn a2850e54d5 Merge remote-tracking branch 'origin/release' into stable
Conflicts:
	src/gui/painting/qdrawhelper.cpp
	src/gui/painting/qdrawhelper_avx.cpp
	src/gui/painting/qdrawhelper_x86_p.h

Change-Id: I09352d05119f6fd000319074a2705b38361b2c90
2014-03-17 12:29:11 +01:00
Allan Sandfeld Jensen 0b7beaaaf2 Fix rendering of grayscale antialiased FT fonts on QGLWidget
QFontEngineFT::alphaMapForGlyph and QFontEngineFT::alphaRGBMapForGlyph
has been broken since change#65694. They always fall back to using
the path rendering of QFontEngine because we zero the scoped pointer
just before testing it.

To fix it we need to release the scope pointer after we are done using
it.

Change-Id: I8811c1f5261f286f2f3dd3c0f93c988ba0909669
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-03-15 10:46:25 +01:00
Morten Johan Sørvig 77bf302ce2 Prevent DrawTextItemDevice::metric warning on Mac
Implement PdmDevicePixelRatio.

Task-number: QTBUG-36419
Change-Id: I4d2822d01e08c80e9b829d5f524e8e761e694fba
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-03-15 10:45:04 +01:00
Allan Sandfeld Jensen 19532eec2a Fix casting and overallocation in qregion.cpp
The POINTBLOCK struct in qregion.cpp is badly defined. By using ints
as the base storage of the internal array it forces not only bad casting
from int to QPoint, but also allocates an array four times too big.

This patch changes to char, since a char pointer may alias anything and
this gives the right size of the array.

Change-Id: I608eaf39ac7306c71314a139bed6e2352249c0ab
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-03-15 10:44:56 +01:00
Laszlo Agocs 7fba691110 Docs: Clarify QOpenGLFunctions::functions()
Change-Id: Ifb6fdc3de7f93a1632b396eaaa14078546cac4dd
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-03-15 10:44:20 +01:00
Laszlo Papp c42ac8173e Fix a probably copy/paste issue from drawImage in the drawPixmap snippet
Change-Id: Ia2b34e3ee6954342501a805f9e047cb90078e9d5
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-03-14 22:40:40 +01:00
Laszlo Agocs f1f603bd0b Fix dynamic opengl build
Some ifdefs were slightly incorrect.

Change-Id: I5ffb162becb040c91ed56f36c6126c59f67c367a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-03-14 22:40:11 +01:00
Jorgen Lind fde6450b59 Add workaround for bug in the Mesa glsl optimizer
Change-Id: I23251f5288b41f5b7f86406984fdd854127797a9
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-14 22:39:15 +01:00
Konstantin Ritt a7e58bf253 Build bundled HarfBuzz-NG outside QtGui
Being a part of QtGui, HarfBuzz-NG breaks build with -Werror.
Instead of disabling a particular warnings-as-errors,
build a prefixed static library and make it a link-time dependency.

Change-Id: Id0be1f0e0034092d50f83cd364d5c65940fee869
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-14 18:18:26 +01:00
Michal Klocek 72fe9f1d0d Fix a crash of accessing deleted paintengine
When painting to QPixmap with QBlitterPaintEngine and dfb
PaintEngine have PaintDevice (pdev) as QImage. Painter code
uses PaintDevice::paintEngine() to refer to paintEngine.
This will became dangling pointer since QDirectFbBlitter::doLock()
will delete QImage. Instead return QPixmap as PaintDevice.

Change-Id: Idfac919b6438a82b412020e441e0a102e4a2a052
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-03-14 18:13:34 +01:00
David Fries e6cb06a835 correct send vs sent grammar
Correct the tense of send vs sent in comments and documentation.

Change-Id: I1c5ce9a7b1e49b8b0e8dcfde7d732e4c69acf73a
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-14 15:27:03 +01:00
Sergio Ahumada 27016b89ae Merge remote-tracking branch 'origin/stable' into dev
Change-Id: Idec54e19963e8d88c711cb179cffc81596323899
2014-03-13 15:57:11 +01:00
Tor Arne Vestbø 8bc026ddcc Ensure that QGuiApplication is inited before using QFontDatabase
Change-Id: I494c4fdfa49139316efac0f68f8d463c02056372
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-03-13 13:27:55 +01:00
Konstantin Ritt 800232e1d3 Fix custom font substitution list support
During the QPA refactoring, the custom font substitution list support
was lost by ignoring the font request's fallbackFamilies member
when the multi font engine gets created/initialized.
If fallbackFamilies is not empty, it should be prepended to the
font database default fallback families list. Also respect the
custom fallback families list in the cache key to avoid picking
a multi font engine with wrong fallbacks list.

Task-number: QTBUG-36628

Change-Id: Ie2b84b3a397bee4816f421cddf76a5375829f13a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-11 03:39:34 +01:00
Konstantin Ritt c3b2425791 Guarantee QPFDB::fontEngine() always return non-multi font engine
After QPA refactoring, QWindowsFontDatabase::fontEngine() was returning
a multi font engine w/o any particular reason.
This makes the code more obvious and opens the road to further improvements.

Change-Id: I4858026ddf774d3159c89357b1c905f5112b1c51
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-11 03:39:26 +01:00
Konstantin Ritt b7f013bf19 Fix CJK languages support with HarfBuzz-NG
By some reason, mapping to Han script doesn't work for some (most?)
fonts. Until the issue is really fixed, pretend the HB-old behavior
and simply map to Common script.

Change-Id: I4c146f5ff2a42f64b971b2f5ebd7f65e2513fdf0
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-10 20:28:52 +01:00
Alex Blasche 4c9885a0f5 Revert some previously added constexpr in QVector?d classes
This commit partly reverts cd91d8ad02.

The revert is required as the used ifdef relied on undefined
compiler behavior. Especially Windows has had trouble. The revert reduces
the risk of breaks by future compilers.

The proper inline and constexpr has to wait until Qt 6.

Task-number: QTBUG-37122
Change-Id: I881fffb95fa46d9c170c9420a578f15640e18aea
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-10 16:04:28 +01:00
Nico Vertriest 267eab3f39 Doc: correction link, example and parameter issues qtbase
Moved codecs folder to qtbase/examples
Corrected quote in dropsite.qdoc
Replaced snippet statement by include statement
Added doc for undocumented parameters

Task-number: QTBUG-34749

Change-Id: If4de95b8d39e5680fd0f63f8d2b6685a4b0a8052
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-03-10 16:02:19 +01:00
Laszlo Agocs 1e8de50674 Avoid using direct OpenGL calls in gui and widgets
Change-Id: I5d88a2e204ca23e178a4e3044b9cb13392c3e763
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-03-10 15:10:37 +01:00
Konstantin Ritt 11eb9d37dc Use QStringIterator instead of homebrew
Task-number: QTBUG-15664

Change-Id: I1ed3eb04ddd822e57a4d993af656dfe283f3af1a
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-10 15:05:01 +01:00
Eskil Abrahamsen Blomfeldt ca280bfe3b Android: Support double click event
It's impossible to get the distance between two touch events
down to 5 pixels on e.g. my Nexus 5.

This patch makes it possible to tweak the distance through
the platform theme, and sets the distance to 15% of an inch
on Android. Also provides a way to override the default minimum
of 5 pixels by using an environment variable.

[ChangeLog][Android] Fixed double click events

Task-number: QTBUG-36974
Change-Id: I23d94020c531747d6638b645133611614a2a0703
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-03-10 09:56:13 +01:00
Konstantin Ritt cfb4581fee QFontEngineQPA: Get rid of unused externalCMap
It seems to be a leftover after dropping the QPF1 font engine.

Change-Id: If8d3e1447fab9d042a85195d7bdb4d9811c37c6e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-08 14:01:17 +01:00
Konstantin Ritt 94d0f7c3d3 Make QFontEngineQPA report the TT 'cmap' table support
The QPF2 CMap is identical to the TrueType CMap table format.

Change-Id: I8c34d7c6a5942375538f3b8cb71d5a808b4fb400
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-08 14:01:14 +01:00
Fabian Bumberger 79469565cf Fix description of how themes are created (code comments)
Change-Id: I3b8ed0af5208687a9ab75e916b477f5e24b4d1e2
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-03-08 11:45:39 +01:00
Alex Blasche d42b8a22ff Make QVector* compile on Win/static
Task-number: QTBUG-37122
Change-Id: Ib2283e8c27da7af2bdc08eee3b7cc542fbe55d71
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-08 11:44:46 +01:00
Konstantin Ritt 7ef5a8528e Improve code readability
Since we were requesting a multi font engine, the returned font engine
must be a multi one or nothing at all.

Change-Id: I1ee4e1b7c68f54c83a8c7292082d015ebfa0a8cb
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
2014-03-08 00:21:53 +01:00
Laszlo Agocs ed5e75cf5b Clarify QOpenGLContext::format() docs
Avoid unrealistic expectations where applications would assume that
requestedFormat() == format().

Change-Id: I12dcfda3d86ce26f1cae9771b1fe2203291864db
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-03-07 17:13:28 +01:00
Laszlo Agocs 9152a3bf20 Clarify QWindow::format() docs
Change-Id: I35c5f9e7a235afc75c0051b3958875371f182b29
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-03-07 17:13:24 +01:00
Adrian Perez de Castro 8f17d622b0 MIPS: Fast path for rgb888 to rgb32 conversion
Add a hand-coded MIPS assembler function to convert a stream of rgb888
bytes to an array of 32-bit ARGB values. This is used in QImage for
image conversion, and also in QJpegHandler for decoding JPEG image
scanlines.

Change-Id: Ia74a5ff799b29fad3d4acbfcafe790cd60586d72
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-03-06 17:41:04 +01:00
Paul Olav Tvete 82288308ec Doc fix
QOpenGLContext::destroy() is private. The recommended way to free
resources temporarily is simply to delete the context.

Change-Id: I0d59b55afb209d56405f3584e4645bd4718790af
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-03-06 17:22:55 +01:00
Allan Sandfeld Jensen cd652500af Add optimize_full qmake config option
This patch adds a new config option to qmake to enable full optimization
where it makes sense. This currently is supported on all gcc like
compilers by exchanging -O2 for -O3.

In qtbase it is used to enable full optimizations on qtcore and qtgui
and in a later patch can be used to replace similar existing logic in
QtWebKit's WTF and JavaScriptCore modules.

This fixes a performance regression from gcc 4.7 to 4.8 in the software
renderer.

An aliasing error in qregion.cpp which was exposed by more aggresive
optimization has been solved as well.

Change-Id: Ic2c6c41b79cb3846212b40e7bcc11ff492beb27f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-03-06 12:21:14 +01:00
Laszlo Agocs 1f802afc49 Clean up proxy leftovers in gui/opengl
Change-Id: I24d10dab121c23b0683fa99bd309cf557c3ddffb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-03-06 12:21:14 +01:00
Oswald Buddenhagen 19501b0731 Fix win32 mkspecs
Instead of checking for dynamicgl in QT_CONFIG, which is apparently
not possible, revert them and do it in opengl.prf instead.

Dynamic GL is Windows-only for the time being so this should be sufficient.

Change-Id: If293ea4c9b024df52257086c8b6250602a44724d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-06 12:21:14 +01:00
Laszlo Agocs efbea58665 Make QOpenGLFunctions able to resolve everything
At least if the platform plugin's QPlatformOpenGLContext implementation
supports it.

This completes the QOpenGLFunction changes necessary for dynamic loading
of the OpenGL implementation. Everything else is up to the platform plugin.

Change-Id: I710e6fbee3005360ecf02bc6ef976e1beb513819
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-03-06 12:21:14 +01:00
Laszlo Agocs e9ebb43419 Dynamic GL: Query gl handle and type via the native interface
Change-Id: I7ca5beaeb57ee2e4e9c175f53ac32371d1f6b5ed
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-03-06 12:21:14 +01:00
Tor Arne Vestbø 3fec94fd07 Prevent repeated and unnecessary font population QCoreTextFontDatabase
The platform font database is populated from QFontDatabase, through the
static initializeDb() function, whenever the font database determines
that the platform database has not been initialized (by checking if the
font database is empty).

There are other clients of QPlatformFontDatabase though, such as QFont,
which uses the platform font database to check for the default family.
The CoreText implementation of determining the default family relies
on data that is computed during font population, and hence does an
internal (self-triggered) populate.

To prevent repeated populates as a result of calling QFont::defaultFamily()
we guard the populate by a similar isEmpty() check as QFontDatabase does,
but to ensure that this check works in the case of an invalidated font
database, we need to propagate the font database invalidation down to
the platform font database.

Change-Id: I8d06c6f6fc5da6353c087335859eaca008c2f6a6
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-05 13:55:35 +01:00
Konstantin Ritt 9f1089531d Make QFontEngine::type() non-virtual
Change-Id: I24ece90d6d8f96dad0c41a474a491b4ea96d97c3
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-05 13:46:15 +01:00
Konstantin Ritt e69284db08 Get rid of QFontEngine::name()
It was only used in QFontCache debug output,
and some engines weren't even report a name.

Change-Id: I6cec4b75f105f5a4e1405f50188bebb3a3f04e33
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-05 13:46:09 +01:00
Konstantin Ritt 34e560fc92 Optimize QFontEngineMulti::stringToCMap() in case of missing glyphs
Use recently introduced glyphIndex() method and only recalc advances
if the glyph is present in the font. This allows to avoid restoring
the old advance when the glyph was not found in the fallback fonts.

Change-Id: I3e0aa549961767e5448816327328101cf6a78873
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-05 13:45:54 +01:00
Konstantin Ritt f697f3ceb6 Optimize glyph lookups with QFontEngine::glyphIndex(uint)
Change-Id: I56c7e727f3d9b08195f38939106620c744c6eaf0
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-03-05 13:45:44 +01:00
Tor Arne Vestbø f99fd06d7d Merge qfontdatabase_qpa.cpp with qfontdatabase.cpp
There's no point in separating them anymore, and it just makes editing
and reasoning about the QFontDatabase code harder.

Change-Id: I6bc8cb5e5daac26293e75553639e4a4d34eba3bd
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-04 15:59:05 +01:00
Laszlo Agocs 1e18df9c73 Extend QOpenGLFunctions with GL1 functions
This introduces the ability to indirectly invoke all common GL1-GLES2
functions via QOpenGLFunctions. The GL1 functions are not yet resolved,
since this would not work anyway when linking to an OpenGL implementation
directly. However this may change later but that will be a completely
internal change without affecting any public APIs.

Also migrate some of the opengl examples to use QOpenGLFunctions for
everything. Once dynamic GL loading becomes available on some platforms,
these examples should continue to function without any changes since they
do not anymore invoke any OpenGL functions directly.

Task-number: QTBUG-36483
Change-Id: Ie630029651e5a4863a480aac5306edd67ee36813
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-03-04 15:59:05 +01:00
Tor Arne Vestbø 565f39aad1 Don't assume a QBasicDrag will start and end over a QWindow
A QBasicDrag is started from QBasicDrag::drag() through the drag manager,
which may happen from e.g a widget. The event filter needs to look at
events to more than just QWindows, otherwise the filter will miss eg.
mouse release events that are sent to QWidget and not to the QWindow
handle, and the drag goes on forever, causing invalid internal state
when a new drag is then started.

Change-Id: I5cee250e2c7552817bda0895d4c5794e12d26592
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-03-04 15:59:05 +01:00
Laszlo Agocs 4b2f35d04c Dynamic GL: remove exporting symbols
Remove the opengl proxy for now. Later it will either be moved into
a separate library or replaced by a QOpenGLFunctions-based approach.

This means that the -opengl dynamic configuration is not usable
for the time being. The rest of the enablers remain in place.

The convenience function QOpenGLFunctions::isES() is now moved to
QOpenGLContext and is changed to check the renderable type. This is
extremely useful since besides supporting dynamic GL it solves also
the problem of GL_ARB_ES2_compatibility (i.e. it triggers the real ES
path when creating an ES-compatible context with a desktop OpenGL
implementation).

Task-number: QTBUG-36483
Task-number: QTBUG-37172
Change-Id: I045be3fc16e9043e1528cf48e6bf0903da4fa7ca
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-03-04 15:59:05 +01:00
Tor Arne Vestbø 02b18343e1 Fix crash in QSimpleDrag if drag wasn't started over a QWindow
The code in QSimpleDrag::startDrag() checks for the validity of the
current window before passing it on to QWindowSystemInterface::handleDrag(),
and so should QSimpleDrag::cancel().

Change-Id: I2228d86ede2a0b8379a55000a5c1d830cab44d45
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-03-04 15:59:05 +01:00
David Fries d32a80dbee QTouchDevice Documentation grammar correction.
Change-Id: I3b378f1c3df7210029cf82208c23b67b75c47021
Signed-off-by: David Fries <David@Fries.net>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-04 15:59:05 +01:00
Konstantin Ritt 003a52cc4d Disable 'gsub' table check for AAT fonts on Mac
In AAT fonts, 'gsub' table is effectively replaced by 'mort'/'morx' table.

Change-Id: Ifa044c8e28c3f2aab0f57ba5e3e6b99ada84d37c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-04 15:59:05 +01:00
Sergio Ahumada 7e872de76e Fix some typos
Change-Id: I7dbe938bff5ac3ab50a0197f94bdb2f6c22fbd16
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-03-03 18:24:29 +01:00
Konstantin Ritt 2b15c9c256 Introduce a generic QFontEngine::canRender() implementation
...which uses the recently introduced glyphIndex() method;
get rid of re-implementations that did almost the same.

Change-Id: I6d32d2cee6a31f57de6aee05ed8d120d4a1f4e9c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-03 11:11:27 +01:00
Konstantin Ritt af74201edb Introduce QFontEngine::glyphIndex(uint)
...an optimized drop-in replacement for the code like this:
`stringToCMap(&uc, 1, &g, &numGlyphs, QFontEngine::GlyphIndicesOnly)`
(aka "get the glyph index for exactly one Unicode character").

Change-Id: I22babf49f7cf28892d27533a5ac51ad449779f75
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-03 11:11:24 +01:00
Konstantin Ritt 78d115f8f2 Unify QFontEngine*::stringToCMap() behavior
Ensure the params are valid and make QCoreTextFontEngine::stringToCMap()
handle the unsufficient buffer case exactly like the other engines does.

Change-Id: I078af37da917cf2bac709b12aa827ed4128e5f30
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-03 11:11:20 +01:00
Konstantin Ritt 5a7bf123ea Fix QFontEngineQPA::recalcAdvances() in case of missing glyph
Modifying the glyph indexes array in recalcAdvances() could lead
to undefined behavior.

Change-Id: Ibbb6642f381a5fe01b285dc8d2001c167dc66f46
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-03 11:11:09 +01:00
Konstantin Ritt fd498ad1c0 Make QGlyphLayout consume one byte less per glyph
Change-Id: Iddcc2e1f284dcf13ae98b57ea2d5854e57c83530
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-03 11:10:56 +01:00
Konstantin Ritt 25e34dadab Hide the justification algorithm implementation details
The justification "classes" stored in the glyph attributes
are actually a justification priorities suitable for a particular
language (script). The external API only uses the justification
metrics array calculated on top of these priorities.

Change-Id: I5b0a39e35954084c63a798b632fd6108f9ae7608
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-03 11:10:50 +01:00
Konstantin Ritt ead6cc40df Fix retreiving the 'head' table in QPAGenerator
The 'head' table is usually of 54 bytes length. Passing the buffer of
4 bytes capacity for the 'head' table is expected to return false,
thus skipping the FontRevision tag in QPAGenerator::writeHeader().

Change-Id: I02c0b13f3cbf13579a845fe78fcbc8a437ae22bf
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-02 23:26:51 +01:00
Konstantin Ritt 4c7082162d Unify QFontEngine::getSfntTableData() behavior on all platforms
Being a most significant method in the font API,
getSfntTableData() must behave in exactly the same way on all platforms.
Briefly, it must return true if the table exists in the font,
despite the other params, and always stores the table data length
in 'length' param, thus reporting the amount of bytes actually
needed to store the table data in a buffer.

Change-Id: I7a15465020c1ea818ea46a05ea3b9b7e1cd60d14
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-02 23:26:49 +01:00
Jan Arve Saether b72880d213 Also cache totalBoxes if we have HFW/WFH
Change-Id: Iea71c11b88df84b9c0949b1020a6bcc5395d62de
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-03-02 21:41:55 +01:00
Friedemann Kleint fdd8a1b42c Add source to debug output of QMouseEvent.
Change-Id: Ibf55a2697ca0ac85624097299be92c1055dcb8aa
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-02-28 22:57:26 +01:00
Marc Mutz db8167c224 QPen: add move constructor
After this change, the relation between copy/move constructor calls in QtGui is
something like 40/16.

A moved-from QPen can only be copied, assigned-to or else destroyed. This required
adding a nullptr check to the copy ctor and the dtor and rewriting copy assignment
(which used non-nullptr-safe qAtomicAssign) in terms of copy construction and
swapping.

Extensive tests included. They are implemented such that they work in C++98 as well
as C++11 mode, but they naturally test move semantics only in a C++11 build.

Change-Id: If68f37c10b8eeefb2478cbae386cd2e38b4f6e19
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-02-28 21:27:41 +01:00
Laszlo Agocs 5119bbc642 Add core profile versions of the glyph cache shaders
The last step to make QOpenGLTextureGlyphCache working with
OpenGL core profiles.

[ChangeLog] Native (that is, not distance field based) text
rendering is now functional on OpenGL 3.2+ core profiles too.

Task-number: QTBUG-36993
Change-Id: Ic6c0db4806cea623ca7a19ab77b0329155824877
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-02-28 18:00:44 +01:00
Marc Mutz 4051914641 QPalette: optimize move assignment operator
Instead of assigning the various bit-fields manually, use the quint32
union field, which is already present to avoid slow bit-field operations
in the member-swap function.

Verifed that the generated assembly for move-assignment is
significantly better than before on GCC.

Change-Id: If4e0ef678bf3a496c6eb369ad3f639f5a9bc79fc
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-02-28 17:59:51 +01:00
Simon Hausmann 846cc4c75c Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/network/access/qhttpthreaddelegate.cpp

Change-Id: Ia15372687c93cd585967b006c0baaac3a5f29e91
2014-02-28 13:14:15 +01:00
Simon Hausmann d2cb81f8d9 Add missing notify signal for the QWindow::title property
Similary to QWidget's windowTitleChanged, QWindow should also have a
windowTitleChanges signal that's emitted when the title changed and declared
as notify signal for the title property, so that QML bindings can be written
against it.

Change-Id: I6f107c6f0b43d6a959bc2ef96492e1f3e4c28bfe
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-02-27 18:27:42 +01:00
Frederik Gladhorn 01a1f87368 Merge "Merge remote-tracking branch 'origin/release' into stable" into refs/staging/stable 2014-02-27 18:27:18 +01:00
Marc Mutz d432d17f83 QPainterPath: replace a use of QList<QRectF> with a QVector
QList<QRectF> is horribly inefficent, and this is just implementation,
so we're free to change it.

Change-Id: I7b28a2093efb5826b55c172f48a81cb9c2472e5a
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-02-26 22:01:54 +01:00
Giuseppe D'Angelo c453571d75 CSS parser: fix the pseudo-classes array length
The pseudoclass array is declared with length "NumPseudos - 1",
but the declaration has actually 44 elements, not 45.

This caused a zero-initialized last element to be silently appended
to the array. The zero-initialized element broke the sorting
of the array, which in turn broke std::lower_bound usage
(although of course the problem was there from before switching
to the standard library algorithms).

Task-number: QTBUG-36933
Change-Id: I8a02891fc36761b6ae72d15a0a8d6c6a96813947
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-02-26 14:18:48 +01:00
Allan Sandfeld Jensen b1a882f178 Fix drawCachedGlyphs on RGBA8888
drawCachedGlyphs draws with the wrong color on RGBA8888. The issue
is that the draw routines bitmapblit_quint32 and alphamapblit_quint32
while safe to use on rgba formats, needs to have the input color
converted.

This patch adds small wrapper functions for bitmapblit and alphamapblit
that converts the formats. Two tests are extended to ensure we have
test coverage.

Change-Id: I5f99f3795eba46a69d4df5b167e6099024e9a060
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-02-26 14:18:21 +01:00
Laszlo Agocs f645dad757 Use a VAO in the texture glyph cache
Task-number: QTBUG-36993
Change-Id: Icc77035b582c804ed809ea3cd99c0048b34d41d2
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-02-26 12:58:00 +01:00
Laszlo Agocs f7f70c4a7a Fix glyph texture format on core profile
Native text rendering is now functional on core profile too,
as long as the driver allows compiling GL2-style shaders.

Task-number: QTBUG-36993
Change-Id: I83f3cafae714427dda807921ee79e5a64e55cc64
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-02-26 12:58:00 +01:00
Laszlo Agocs 357363dd51 Texture glyph cache: Use a vbo
It is not going to work with core profile otherwise.

This fixes one of the several problems that make native
text rendering in Quick impossible with OpenGL core profile.

The GL2 paint engine path is not changed, that continues to use
client side pointers.

Task-number: QTBUG-36993
Change-Id: Icfbd6efc894a79a3a84568fb792c1cb6692469cb
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-02-26 12:58:00 +01:00
Giuseppe D'Angelo 97ed8f3c0f Fix a getProcAddress in QOpenGLDebugLogger under Win32 + Desktop GL + ATI
We can't resolve a "basic entry point" such as glGetPointerv on Windows'
Desktop GL. Apparently NVIDIA drivers let us do that, but ATI ones don't.

Change-Id: I8e8a54b5dcd3fe87f2bd677d1d0cf08b3e8c11c4
Reviewed-by: Thomas Steen
Reviewed-by: James Turner <james.turner@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-02-25 21:51:07 +01:00
Konstantin Ritt 6a7747f30c HarfBuzz-NG: Hide characters that should normally be invisible
These are non-ambigue NLF characters that should only imply the
sctructure of the document.
For details, see http://www.unicode.org/reports/tr13/ .

The issue could be reproduced with use of multi-line QML Text element.

Change-Id: Ibb4d5cd26bc0ac6b79a4cb549e6a3cd7633bd071
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-25 16:10:33 +01:00
Laszlo Agocs 05ee0fcdc7 Properly migrate vao helper to dynamic GL
Remove the forced bail out when isES() returns true. This is not
necessary.

Change-Id: I5ee21fe1e66163e2391bd11b647827b3c0a020c1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-02-25 15:50:35 +01:00
Frederik Gladhorn bddf6d4359 Merge remote-tracking branch 'origin/release' into stable
Change-Id: I3199d47f7d450853032ea5aa38cd4c7c30b9a3d0
2014-02-24 19:53:25 +01:00
Sze Howe Koh 0c9c43c148 Doc: Address some "No documentation for..." QDoc warnings
Task-number: QTBUG-36985

Change-Id: I8619fb77e7879399064281f7bbefe5f12d3849a2
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-02-24 11:56:54 +01:00
Gunnar Sletta 12a7d23d52 Introducing QOpenGLShaderProgram::create()
Needed for QOpenGLShaderProgram to be usable with
GL_OES_get_program_binary and potentially other extensions.

[Changelog][QtGui] The function QOpenGLShaderProgram::create()
has been added. It is can be used to force immediate allocation
of the program's id.

Change-Id: I36b3f45b00e7a439df12c54af7dc06c0ba913587
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-22 14:35:33 +01:00
Thiago Macieira 3a3a7f8842 Normalize signal & slot signatures in connection
Profiling showed that Qt Creator spent 2% of its load time normalizing
signals and slots. By pre-normalizing everything, we ensure that there
is no runtime cost. Profiling after this commit and the others in this
series shows that the cost dropped down to zero.

Change-Id: Ifc5a2c2552e245fb9a5f31514e9dd683c5c55327
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-02-22 04:38:37 +01:00
Marc Mutz f41d5ec626 QPainterPathStroker: make QPen constructor explicit
A QPainterPathStroker is not an equivalent representation of a QPen, so
the constructor that takes a QPen should be explicit.

Arguably, the named constructor idiom would be even better here:

    static QPainterPathStroker QPainterPathStroker::fromPen(const QPen &pen);

But QPainterPathStroker is non-copyable.

Change-Id: I3148dc0ee336026781d8bc1baf21c113c7b41ce8
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-02-21 20:33:10 +01:00
Jorgen Lind ae4e44644a Fix rounding error when creating QT_FT_Vector
This fixes a problem that QScanConverter::mergeLine didn't recognize
lins as being the same (when they where), causing aliasing effects

Task-number: QTBUG-36354
Change-Id: I29d92ddb4e867025541bdc6b294cfaca55c0d3e1
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-02-21 20:33:10 +01:00
Laszlo Agocs 54d43c6480 Expose NPOTTextureRepeat in QOpenGLFunctions
Desktop GL 2.0 and higher supports GL_REPEAT on non-power-of-two
textures. GL_ARB_texture_non_power_of_two mentions this explicitly
in issue #8.

Change-Id: Ia7f3b412b39cca4bec8a6caec3b1281b4c29ab75
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-02-21 15:53:48 +01:00
Laszlo Agocs 727f50d11e Remove QT_OPENGLPROXY_DEBUG
Change-Id: Iac4c5217eca88ac14acca55d19e421d8e33cdb1d
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-02-21 15:53:03 +01:00
Marc Mutz ef2527df68 QTextObject: replace a use of an inefficient QList with QVector
The QTextLayout::FormatRange is larger than void* and thus should not be held in
QList. Use a QVector instead.

This is public, but as of yet unreleased API.

Change-Id: Ie04a561b43c91c3b2befb3cac2981821f84d5f77
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-02-20 21:34:44 +01:00
Bernd Weimer d641792ff2 Fix QFontMetrics width
Commit f4dd534 introduced a regression, so that QFontMetrics reported
a wrong size (to be more specific width) for FreeType fonts.
The calculation of glyph advances has to to reflect (rounded)
integral number of pixels. This was only done when the glyph was cached.
So in some cases the first call to QFontMetrics::size gave a different
result than the second.
This patch reverts f4dd5344fb.

The tst_QFontMetrics::same auto test only happened to work on some
platforms, on BlackBerry for instance it did not. Extended the test
case to make sure it works for different font sizes.

Change-Id: Ia5bb9abd3ff98193c9bba048b85207672ed8d9c3
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-02-20 20:13:27 +01:00
Andy Shaw 72fbcc8bbf Ensure we switch back to the real paint engine when not emulating
When the emulation paint engine was no longer needed then it would still
end up using it because the flags would prevent it from being switched
back. This ensures that it has the right engine when something triggers
it to be switched.

Change-Id: I7571923d16cbebd9fdd34560631b561c07a724f7
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-02-20 08:13:57 +01:00
Tor Arne Vestbø 4de3c5db23 Unify glyph format between QFontEngine and QFontEngineGlyphCache
Instead of the glyph cache having its own cache type that always mapped
one to one to a font engine glyph format, causing confusion and needless
conversions, the glyph caches now use QFontEngine's glyph format enum.

This also removes the iffy use of an int for the glyphFormat in the font
engines.

Change-Id: I529bad5c179e004f63e152f7dcc311d298c3db98
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-02-19 19:36:25 +01:00
Eskil Abrahamsen Blomfeldt 3a84d92f57 Make unicode ranges in font take precedence over codepage
Change 4b2c73b476 triggered a
regression on Android, because the DroidSansFallback.ttf font
has codepage ranges that list Arabic as a supported codepage
despite the fact that the font has no glyphs for Arabic.

If a font has valid unicode ranges which does not specify
support for e.g. Arabic, then the code page ranges for the
same script should be ignored.

[ChangeLog][Android][Fonts] Fixed support for Arabic text.

Task-number: QTBUG-36789
Change-Id: I7c5a0e303fd9ed2733275814fe752ae0fb54a207
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-02-19 06:42:17 +01:00
Frederik Gladhorn 6aa09bbce5 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/plugins/platforms/android/qandroidplatformtheme.h

Change-Id: I541bd3069df3ab54c7942d5f4a9e155e3b6566a0
2014-02-18 14:19:36 +01:00
Sarunas Valaskevicius 13040043b2 Emit updateBlock signal in QTextDocumentLayout
updateBlock is part of the interface of QAbstractTextDocumentLayout
however QTextDocumentLayout implementation is not invoking it.

This commit adds similar behavior to QTextDocumentLayout as the
QPlainTextDocumentLayout (QtWidgets) has by implementing the missing
functionality.

[ChangeLog][QtGui][QTextDocumentLayout]
Emit updateBlock signal in QTextDocumentLayout.

Task-number: QTBUG-36743
Change-Id: I7f812d4d5d7c2148393ee672fb0db6c0b2e73783
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-02-18 00:28:16 +01:00