Commit Graph

3459 Commits

Author SHA1 Message Date
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
Konstantin Ritt
1992e206f6 Don't assemble QRawFont from QFont manually
Always prefer QRawFont::fromFont(..)

Change-Id: Ic33f7d3a468f926418b39887f572829af93f8c1d
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
2014-11-25 22:18:06 +01:00
Konstantin Ritt
d911f1dd42 [QStaticText] Fix potential font engine leaking
Never assume the engine is still cached but rather delete it
if we are the last consumer.

Change-Id: I4e3c796d45c53f42722a437482d71e2dae14cad2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-11-25 22:18:02 +01:00
Albert Astals Cid
5a8555f576 Add name for the Touchpad[Toggle|On|Off] keys
Change-Id: I22de911fa56165b36ca9a4c9d22673e11603a746
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-11-25 09:21:20 +01:00
Eskil Abrahamsen Blomfeldt
c238d34137 Get rid of some duplicate code in QFontEngineFT
This removes some code duplication in the QFontEngineFT and
it also removes the condition that loadTransformedGlyphSet()
will return 0 if the font is too large to be cached, since
this is handled by setting outline_drawing on the glyph set which
will fall back to painter paths.

Change-Id: I2fe6a963e854cdd7c6015154547dc06325cbe3b0
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-11-25 08:28:58 +01:00
Marc Mutz
ef96489ede Fix instances of !var & const that should be !(var & const)
GCC recently started warning about these.

Change-Id: I7b30c79f7f2b66b99e54354224700d54ace6ebec
Reviewed-by: Jens Bache-Wiig <jensbw@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-11-25 07:28:10 +01:00
Frederik Gladhorn
34aba4724f Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/io/qiodevice.cpp
	src/plugins/bearer/linux_common/qofonoservice_linux.cpp
	src/plugins/bearer/linux_common/qofonoservice_linux_p.h
	src/plugins/platforms/android/qandroidplatformtheme.cpp
	src/tools/bootstrap/bootstrap.pro
	src/widgets/styles/qmacstyle_mac.mm

Change-Id: Ia02aab6c4598ce74e9c30bb4666d5e2ef000f99b
2014-11-24 13:39:13 +01:00
Thiago Macieira
4fec31dcc0 Fix failure to build QtQuick with LTO
The presence of the inline QTestFontEngine's constructor causes a linker
failure because QFontEngineBox isn't exported. I'd say this is a
compiler bug (GCC 4.9), but it's an easy workaround and a difficult
testcase.

typeinfo for QTestFontEngine: error: undefined reference to 'typeinfo for QFontEngineBox'
vtable for QTestFontEngine: error: undefined reference to 'QFontEngineBox::glyphIndex(unsigned int) const'

Change-Id: I84829d111616977d6f3fcbbb48509d1c7d4f5fa6
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-11-23 22:14:08 +01:00
Frederik Gladhorn
245acbf6e8 Merge remote-tracking branch 'origin/5.4.0' into 5.4
Change-Id: I95f235a66ce2e9b1fa435c0f911c6f7e811755f0
2014-11-21 13:44:26 +01:00
Friedemann Kleint
94e40c7c78 Observe QLocale::RejectGroupSeparator in QInt/DoubleValidator.
Pass it as additional boolean parameter to QLocaleData::validateChars().

Task-number: QTBUG-42522
Change-Id: I4b2367f4e2fdcbd17e343d215edad57e6687697a
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-11-20 16:38:23 +01:00
Paul Olav Tvete
71ed74e72e Allow empty string as intermediate match
QRegularExpressionValidator and QRegularExpression disagree on what a
partial match means.

[ChangeLog][QtGui][QRegularExpressionValidator] Allow empty string as
intermediate match

Change-Id: Ia6c55beb54870b1be5c88b6ef3eceebc8ca3f86b
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-11-20 14:58:39 +01:00
Eskil Abrahamsen Blomfeldt
41db4b8cdc Enable transformations for Qt Quick in FT engine
In Qt Quick (or in Qt Widgets when setting QT_NO_FT_CACHE to 1 or
when using OpenGL engine), the alphaRGBMapForGlyph() will be used
to get glyphs, because we need to keep our own cache. Transforms
was not supported in this code path, instead it was turned off
in supportsTransformations().

This patch enables transformations in the alphaRGBMapForGlyph()
and alphaMapForGlyph() code paths as well, since this is needed
for proper rendering with QT_DEVICE_PIXEL_RATIO.

Change-Id: I7d6b79918f7c0bcc051a8343b16b315bfbba59cf
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-11-20 14:58:36 +01:00
Laszlo Agocs
2810d7ee10 Use the static TexStorage2|3D funcs in es builds
When building with -opengl es2 and having ES 3.0 or newer, TexStorage must resolve
directly to the functions.

Other paths (desktop, ES when using dynamic on Windows) are already covered below.

Change-Id: If214578bf23547d6f66a17bc999e9fabf97ba770
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-11-19 19:00:52 +01:00
Eskil Abrahamsen Blomfeldt
2ca323ccd4 Android: Compile for MIPS
The qt_memfill32_asm_mips_dsp function is only declared if
QT_COMPILER_SUPPORTS_MIPS_DSP is defined, so we can't reference it
unless the same macro is defined.

Change-Id: Ib959b4b969b699ca78804394206266469b4ebf64
Task-number: QTBUG-36017
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-19 16:20:50 +01:00
Nico Vertriest
52ea96db06 Doc: Added brief statement to group definition
Groups: richtext and sharing.
Task-number: QTBUG-42682
Change-Id: I46bd7e5bba0f665519ee4f3c033b971f0836e314
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-11-19 13:00:44 +01:00
Lars Knoll
6dac557fd3 Correct the signature and access rights for the protected constructor
Change-Id: Ic43398a82777f3b1a95a36f60ebc4338d60c29ec
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-11-19 12:59:56 +01:00
Friedemann Kleint
c2c48b3ea9 Add a note about group separators to numeric validators.
Task-number: QTBUG-42522
Change-Id: I202cb98c51ba2332000772edfdc47d47c56e49c9
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-11-19 10:11:58 +01:00
Allan Sandfeld Jensen
87636ec582 Save a detach if QBrush::setColor does not change the brush color
We can save detaching a QBrush when setColor is called trying to set
the current color.

Change-Id: I8f4042325d0f9c2bda69d469d6861e3cc310f329
Reviewed-by: Samuel Rødal <srodal@gmail.com>
2014-11-18 11:16:56 +01:00
Friedemann Kleint
34cab65e8d Add debug output for QPlatformSurfaceEvent.
[ChangeLog][QtGui][QPlatformSurfaceEvent] Added event class
QPlatformSurfaceEvent, which is sent to QWindow and QOffscreenSurface
when native surface is created or about to be destroyed.

Task-number: QTBUG-42476
Task-number: QTBUG-42483
Change-Id: If62e2c2a1f2a94fd310bbf7cf22b94c70125ba7a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-17 21:47:20 +01:00
Sean Harmer
c5ecabb70c Send events when platform surfaces are created/about to be destroyed
These synchronously delivered events allow applications to correctly
and conveniently handle native platform surfaces being destroyed. This
is particularly useful when doing rendering on a non-gui thread as it
allows to shutdown rendering before the native surface gets destroyed
from under us.

Task-number: QTBUG-42476
Task-number: QTBUG-42483
Change-Id: I63f41bbdb32f281d0f3b8ec2537eb2b0361f3bb3
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-11-17 10:38:22 +01:00
Laszlo Agocs
954552ceac Update fbo toImage() docs regarding premultiplied alpha
Task-number: QTBUG-42510
Task-number: QTBUG-37261
Change-Id: Ic11bec0a25e66df9d022f640621686be867e84d2
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-11-17 10:16:35 +01:00
Konstantin Ritt
0600f7d629 Fix hb_face leaking in QFontEngineFT
Since HarfBuzz-old's HB_Face doesn't support ref-counting,
it is impossible to keep the same behavior as for NG's ref-counted hb_face
when we're going to reparent the data of unknown type in QFontEngineFT.

We should either not release the object returned by harfbuzzFace(),
or introduce ref-counting for HB-old's HB_Face. Stop referencing HB-NG's
objects on access for now and thus avoid a need to release them manually.

Task-number: QTBUG-42674
Change-Id: Ia21e7ba9c17185796b0dd98c2c27d02566f2a701
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-11-15 14:45:43 +01:00
Eskil Abrahamsen Blomfeldt
1ffe39dfd1 Make it possible to disable font embedding
When font embedding is explicitly disabled, fall back to painter paths
as we would if the font prohibits embedding. Note that this flag was
never respected on any platform in any version of Qt, as far as I've
been able to tell, because the handling of it in the X11 print
engine was removed shortly after it was introduced in 2005.

[ChangeLog][Printing] Disabling font embedding is now possible using
the QPrinter::setFontEmbedding() function.

Task-number: QTBUG-41943
Change-Id: Ice5e893f9893c5243310ae7892bec7497dd55c4a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-11-15 08:49:15 +01:00
Giuseppe D'Angelo
766775f6a0 QOpenGLTexture: don't allocate immutable multisample storage if not supported
Multisample textures may be supported without multisample texture
storage (e.g. from GL 3.2 to 4.2). And, immutable storage may be present,
but not supporting multisample textures (GL 4.3 - 4.4).

Thus, we must properly check if we can allocate immutable multisample storage,
falling back to mutable multisample storage if we're lacking the feature.

Task-number: QTBUG-42643
Change-Id: I1f3d5a9b4296626e40b69a06710331e49c2d1a33
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-14 20:32:05 +01:00
Giuseppe D'Angelo
f29e4ef1a6 QOpenGLTexture: be more strict with the pixel format/types
OpenGL ES may be way more pedantic than OpenGL desktop, in that it
supports precise combinations of internal format, pixel format and
pixel type. Fix the switches inside the code to reflect this.

Task-number: QTBUG-41822
Change-Id: Ic0ed025f48a5903f334d56ce8a224dff44821c5c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-14 20:32:00 +01:00
Giuseppe D'Angelo
1d7577d486 QOpenGLTexture: move the Feature enum on top of the header
Change-Id: I08f5f3b2856edbdd8c88e65d5af75d760a39facb
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-14 20:31:55 +01:00
Giuseppe D'Angelo
ef693dcb41 QOpenGLTexture: Fix a comment
The right function to call is allocateStorage(), not allocate().

Change-Id: Ia26817dbec710d49e511cab2ae3ca5c1fda20722
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-14 20:31:48 +01:00
Giuseppe D'Angelo
c0b4e9076b QOpenGLTexture: introduce support for Ericsson compressed formats
OpenGL 4.3 and OpenGL ES 3.0 have support for these formats
out of the box.

See http://en.wikipedia.org/wiki/Ericsson_Texture_Compression

Change-Id: I661f05b9872f3aa128e39cec64df094a79736555
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-14 20:31:44 +01:00
Paul Lemire
8aceadba1f QSurface: added Q_DECLARE_METATYPE
In Qt3D we need to be able to send a QSurface * through a QVariant which would
allow us to be as generic as possible.

Change-Id: I2ca2760f9b985c8dc1db822048fa41e13774d52c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-11-14 14:25:43 +01:00
Eskil Abrahamsen Blomfeldt
9afb02412e Revert "Fix fallbacks for adapted common script"
This reverts 1dd9a0af4f. It was
a band-aid for a change in the unicode itemizing algorithm
which caused the script of a script item to become unreliable.
This change has since been reverted, so the band-aid is no longer
needed, and it also causes problems for WebKit on Windows when
it ends up preferring Arial Unicode MS as the font for Uchen
script, even though the font does not support this script.

The autotest from the reverted commit is kept in place and still
passes.

[ChangeLog][Text] Fixed regression when rendering Uchen text in
WebKit on Windows.

Change-Id: I488c84703bb55a050d90092c6bf9e5c70a9e31c2
Task-number: QTBUG-41372
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
2014-11-13 20:01:07 +01:00
Giuseppe D'Angelo
279317b067 QOpenGLTexture: fix storage allocation
Storage allocation was quite wrong in the general case.

1) We can't pass unsized texture formats to immutable storage
allocations, so we need to check for that.

2) Second, when allocating mutable storage on GLES, apparently
the driver is allowed to peek at the external pixel type. The
texture can then only get data in the pixel type passed
at storage allocation time.

(I guess that, for the sake of simplicity, the drivers are allowed
not to perform any pixel conversions.)

I'm still not convinced about the wording in the GLES2/3
specifications, but apparently ANGLE behaves this way, so we need
to fix this kind of allocation. Unfortunately the only way
is to ask, at storage allocation time, what's the external
pixel format/type, so we need to introduce an allocateStorage
overload taking those as arguments and using them for the
glTexImage* calls.

Task-number: QTBUG-41822
Task-number: QTBUG-42623
Change-Id: Idf745d549f01c5db3e56e86cf9b1f53a77cfccc6
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-13 12:45:03 +01:00
Giuseppe D'Angelo
10d1b6c7b8 QOpenGLTexture: move all the enums at the beginning of the class
It makes more sense to put them all together, and actually
the next patches will require the enums to be moved anyhow.

Change-Id: Ieb897e9ea2bfef66426c72f935504a92323e2a00
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-13 12:44:59 +01:00
Giuseppe D'Angelo
ef828b89ab QOpenGLTexture: revamp the feature list
OpenGL ES 3 adds lots of useful stuff in there, so we should
start using it. Since we're there, properly reorganize the other
feature checks.

Note that by starting using immutable storage on GLES2, we may
work around the issue reported in QTBUG-41822 (we're still
not 100% sure if it's an ANGLE bug or a Qt bug).

Task-number: QTBUG-41822
Change-Id: Id8cdbaaf93bc263e663db06b6fd2fee012cb29ad
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-13 12:44:55 +01:00
Eskil Abrahamsen Blomfeldt
0c2f7388a8 Windows: Remove font size hack
This hack was reintroduced in a4478b2896,
and hides scaling artifacts in fonts where there is heavy hinting,
such as Arial, but introduces new bugs in other fonts, such as
Vijaya. The bottom line is that we shouldn't arbitrarily override
the pixel size of the font with the character height that we get
from GDI. Due to hinting, there will be some artifacts when printing
with screen resolution on Windows. The only way to make this look
correct is to use high resolution printing, like the documentation
says, or perhaps to force design metrics on the text layout.

Task-number: QTBUG-40770
Change-Id: Id151eb0ede5f73efb2a401924ce379d4414ca2b1
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-11-11 20:42:46 +01:00
Samuel Rødal
a4428d480b Fix for current_fbo getting out of sync in QtOpenGL
When using QGLWidget in combination with QOpenGLFramebufferObject from
QtGui, instead of QGLFramebufferObject from QtOpenGL, the current_fbo
variable doesn't get updated when framebuffer object bindings change.

To ensure that the QGLWidget correctly releases the currently bound
framebuffer object when using a QPainter, we keep track of whether
QOpenGLFramebufferObject has modified the current FBO binding, and if
that's the case we need to read the OpenGL state directly instead of
relying on a cached value.

Change-Id: If7e0bd936e202cad07365b5ce641ee01d2251930
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-11-11 19:24:29 +01:00
Jørgen Lind
a7111c5dde Make the -nograb and -dograb arguments actually work on xcb
Change-Id: Idc725443e4abe27db3e530f08173897bfcbe1278
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2014-11-11 08:51:57 +01:00
Jørgen Lind
190bfbae64 Ensure that a leave event is sent to a popup that is being closed
If a context menu contains a menu item which will open a dialog, the
context menu will never get the leave event, which might leave the menu
in an invalid state.

Synthetic leave events are sent to windows, but not to popups that are
blocked by modal dialogs. Hovever, a popup is removed from the popup
stack in QApplication before it receives the leave event. Therefore
always give popups events, even when they are not visible.

Task-number: QTBUG-38021
Change-Id: I63f6febed44f1e7c8f29e7a09af07f32b4ddbc82
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-11-07 13:24:07 +01:00
MihailNaydenov
8a81319be1 Fix loading 2x images in Rich Text Documents
There are some issues preventing 2x images from loading, mainly incorrect
testing for exist() by passing an url, which always reports ‘false’.

Task-number: QTBUG-36383
Change-Id: I1e8e5a91b01f1a4ddd3559c2e860db5bc41908ce
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-11-07 08:51:13 +01:00
Tor Arne Vestbø
8d82066ff5 Skip unused function isCoreProfile() on non-ES2 platforms
Change-Id: Ia84e74512e7001986c620253cdf0bc431ebc00dc
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-11-05 20:34:58 +01:00
Jan Arve Saether
f31cee9366 Do not crash during global key presses.
This crashed because on Android we called

QWindowSystemInterface::handleKeyEvent() with QWindow argument set to 0

This is a regression and started to crash after commit d7ca800a8
(it added the call to tryHandleShortcutEvent() without checking the
window pointer).

Change-Id: Iefd5fe782a0f7f1e1569580ed4fcb2ef60eed2d2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-11-05 17:09:37 +01:00
Shawn Rutledge
ec63f5fbf3 docs: WindowType is important for dialogs to center themselves
Task-number: QTBUG-41844
Task-number: QTBUG-36185
Change-Id: I61605006048e81d2666eea34f4d041124a24199f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-11-05 10:53:56 +01:00
Tor Arne Vestbø
c998200282 Don't build or use qt_convert_rgb888_to_rgb32_neon on ARM64/AArch64
The assembly code doesn't build on that architecture yet:

    qimage_neon.cpp:78:17: error: vector register expected
                "vld3.8     { d0, d1, d2 }, [%[SRC]] !\n\t"
                ^
    <inline asm>:1:15: note: instantiated into assembly here
        vld3.8     { d0, d1, d2 }, [x1] !
                     ^
    qimage_neon.cpp:78:57: error: unrecognized instruction mnemonic
                "vld3.8     { d0, d1, d2 }, [%[SRC]] !\n\t"
                                                        ^
    <inline asm>:2:2: note: instantiated into assembly here
        vswp d0, d2
        ^
    qimage_neon.cpp:79:31: error: vector register expected
                "vswp d0, d2\n\t"
                              ^
    <inline asm>:3:15: note: instantiated into assembly here
        vst4.8     { d0, d1, d2, d3 }, [x8,:64] !
                     ^

Change-Id: I8fe93b3940d971c0aed5973fe6e1a5e2f362df3c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-03 18:17:35 +01:00
Florian Behrens
92ce89c1ef Insert #line statements in shader program.
This makes the GLSL compiler issue correct line numbers on errors
even in the presence of the other preprocessor lines inserted by
QOpenGLShaderProgram/QGLShaderProgram.

Change-Id: Ief4fc1dd1e94bb2b3a1ad13fbaf62186910a4994
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-03 10:10:16 +01:00
Gunnar Sletta
939197fd7c Fix leftover doc bug from Qt 3 days.
Change-Id: Ic5499ba2e3b27dcc5b36d273c01f92d57b26ce3a
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2014-11-01 10:39:44 +01:00
Thiago Macieira
ebef2ad136 Make the empty Q_ASSERT still check its argument for validity
With the side-effect that variables and functions in the argument are
now "used". This means we don't need to #ifndef functions only used in
assertions: the compiler will eliminate them by dead code elimination.
Due to the mandatory short-circuiting of the condition, no functions
will ever be called and this expands to no more code than before.

On the negative side, because we won't get warnings for unused variables
initialized outside the Q_ASSERT, non-inlineable calls will not be
elminated by dead code elimination, so they will remain in release code
without warnings.

Because of the expanded code now in Q_ASSERT, the Intel compiler's
optimizer gets thrown: it complains that the non-void function is
failing to return anything, so I had to add two return statements.

Change-Id: I1bb79c9637a2771ef1ec093f901b8d2443788bd6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-11-01 00:30:37 +01:00
Morten Johan Sørvig
791c975c55 Add QKeySequence::Backspace
Handle it in QWidgetTextControl. Add Meta(ctrl) + H
key sequence binding on Mac.

Task-number: QTBUG-32837
Change-Id: Ib1cbb2ce2e20350b4d8c72bd320dff27c1467f2b
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
2014-10-31 14:23:17 +01:00
Giuseppe D'Angelo
41ba4b3956 QShapedPixmapWindow: do not leak the backing store
Change-Id: Id7cc8cbbcd62c546055d525473f90d2bad0c144a
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-10-31 06:15:32 +01:00
Lars Knoll
1487a93e46 Fix a possible use after free
Found by coverity. The cachedIcon can be deleted
when being inserted into the icon cache (in QCache::insert).
So copy it to icon before trying to insert it into the cache.

Change-Id: I5ed13c0c7ecb8f8f13285ca5d06237493dbea479
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-10-30 13:46:42 +01:00
Frederik Gladhorn
d7ca800a87 Clean up ShortcutOverride handling
Instead of sending the event from random places, send it from
QWindowSystemInterface. This allows to send override events on OS X to
menus before doing other key processing and reduces the number of
ShortcutOverride events on all platforms to exactly one per key press
event.

Additional test by Friedemann Kleint.

Task-number: QTBUG-38986
Change-Id: I6981bb776aba586ebc7c3daa5fd7a0d84c25bc3e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-10-30 11:40:18 +01:00
John Brooks
136ccaa276 Ignore alert on an active window
When QWindow::alert() is called with a duration of 0, it calls
QPlatformWindow::setAlertState(true), and expects the alert state to be
reset when the window is next activated. Other calls to alert are
ignored while alertState is still true.

If alert was called for an active window, it would remain in the alert
state until deactivated and activated again, and on some platforms calls
to alert would be broken while deactivated.

Alerting doesn't make sense for active windows, so we can simply ignore
it, which was the behavior with Qt 4 on some platforms.

Change-Id: Ia3324da4c89db711b63eb31cddf0bf742bb4e3b8
Found-By: Jan Noertemann <jan.noertemann@uni-dortmund.de>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Martin Gräßlin <mgraesslin@kde.org>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-10-29 21:11:58 +01:00
Jørgen Lind
14e51127cf Add qobject_cast template specialisation for QWindow
greatly improving the performance of qobject_cast<QWindow *>

Change-Id: If5a1afa6e41f4676f4838ea3ff80f1d89e396dfc
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-10-29 09:39:23 +01:00
Allan Sandfeld Jensen
23553cccda Fix justification in multi fontengine glyphruns
QTextLine::glyphRuns was not handling justification when splitting
glyphRuns due to multiple font-engines. This patch adds the missing
justification.

Task-number: QTBUG-41901
Change-Id: I02d24218630506da21531a6499784dff2eecdf6f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-10-28 21:03:39 +01:00
Frederik Gladhorn
0867f0ae33 Add accessible actions for scrolling and page changes
Change-Id: I5f6fd352e1022abbe3a94088598f460b17692fca
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
2014-10-28 18:27:26 +01:00
Frederik Gladhorn
af3bd5037a Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/dev 2014-10-28 10:32:06 +01:00
Frederik Gladhorn
2eb26c1709 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/gui/text/qfontdatabase.cpp

Change-Id: I6ac1f55faa22b8e7b591386fb67f0333d0ea443d
2014-10-27 13:00:36 +01:00
Allan Sandfeld Jensen
5adbb9cc57 Support Alpha8 and Grayscale8 natively in the OpenGL paint engine
Adds special shaders for the Alpha8 and Grayscale8 formats so that
they do not need to rely on the support of GL_ALPHA and GL_LUMINANCE
that has been removed from core in recent OpenGL versions.

Change-Id: Ie370379b458abf2a50e252bc5099aefc1b11fb1d
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-10-27 11:54:39 +01:00
Rainer Keller
9157087334 Rotate images according to Exif orientation
Task-number: QTBUG-37946
Change-Id: I181f88acdff0ef76aa02e968dc6afca1ed495f38
Reviewed-by: aavit <eirik.aavitsland@digia.com>
2014-10-27 10:30:02 +01:00
Joerg Bornemann
c803af5167 fix crash when dropping a file into an empty QTextEdit
Since commit be0bfe09ee we return -1 in
QTextEngine::findItem if the item cannot be found.
Calling code must be prepared for this case.
Otherwise we run into an out-of-bounds vector access later on.

Task-number: QTBUG-42103
Change-Id: Ie338cd1fc3cf0ce1e8edfa59dead635669020a33
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-10-27 10:01:28 +01:00
Frederik Gladhorn
18a538ed40 Add searchEdit as accessible state
The search state is used by VoiceOver on iOS to announce a search field.

Change-Id: I464125827dbbf275daf38104e26e9591bb23365a
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
2014-10-25 18:30:08 +02:00
Pierre Rossi
0c482869fb Add support for more font weights internally
We should have more font weights in QFont::Weight to allow for
finer grained control.
For the time being, we can simply use intermediate weights to better
support the different font weights falling in between the ones
defined in QFont::Weight.
Also amend the documentation to clarify the fact that QFont supports
and can return weights falling outside the predefined values, which
is already the case (e.g. when using fontconfig).

Done-with: Gabriel de Dietrich
Change-Id: I693cdd48b8b77e7ed550cdf991227bcb819d8e7b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-10-24 23:19:11 +02:00
Allan Sandfeld Jensen
624740cdcd Fix printing of semitransparent images to PDF
The patch marks the image data to be inverted when a soft mask is used.
Without this any embedded image with semitransparent pixels would be
decoded with inverted colors.

Task-number: QTBUG-31540
Change-Id: Ia607f7c1acf542ecf3bc88d713dfd87785b43f40
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-10-24 08:19:08 +02:00
Jocelyn Turcotte
ab79e832e6 Do not parent the shader program to the QOpenGLContext
When the last QOpenGLContext in a share group is destroyed, all the
remaining alive QOpenGL* objects have their resource invalidated.

This happens under QOpenGLContext::destroy, but before any QObject
children of the QOpenGLContext is destroyed by the QObject destructor.
This is currently an issue with ANGLE that could be fixed in its own
code, but that is still better for us to be covered against.

This means that the OpenGL resource is assumed to be destroyed with
the context by the driver, but this isn't always the same.

Fix an instance of this in QOpenGLTextureGlyphCache by explicitly
owning the blit QOpenGLShaderProgram instead of parenting it under
the current GL context. The very same resource invalidation system
will prevent anything bad to happen if the QOpenGLContext is
destroyed before the QOpenGLTextureGlyphCache.

Task-number: QTBUG-41588
Change-Id: Ic3bc69b07bcbdcf7d699ea9139b2e34b04e642e5
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-10-23 18:13:12 +02:00
Jan Arve Saether
bf200fc948 Adjust the layout if a QGraphicsWidget is explicitly hidden
Since layout items can now be hidden, this also makes sure we respect
the QSizePolicy::retainSizeWhenHidden

Task-number: QTBUG-20132
Change-Id: Iab59fc9b61d4ca1bb2208c479a027da6eb0283a9
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-10-23 07:17:50 +02:00
Axel Rasmussen
e5c1572e7e Fix uninitialized value warning in QFontEngineFT.
When running an application which called e.g. QPainter::drawText under
Valgrind, it would produce "Conditional jump or move depends on
uninitialized value(s)" warnings, since we were allocating a buffer for
a FreeType bitmap without initializing its contents. FreeType,
apparently, does not set the value of all bytes in a bitmap buffer when
it is used as a FT_Bitmap, so we were left with some uninitialized
memory which was still being used.

This commit fixes these warnings, and prevents any potential undefined
behavior.

[ChangeLog][QtGui][General] fixed use of uninitialized memory in the
FreeType font engine

Change-Id: Ia7b3595c78310ce41f76cb4546fc36016c0000a8
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-10-23 07:09:33 +02:00
aavit
ff98c44060 Doc: Improved explanation of quality setting in QImageReader/Writer
Explanation was somewhat inprecise and incomplete.

Task-number: QTBUG-41358
Change-Id: Iae52c30868ca48a49eac76d6979a9b02c24a7d49
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-10-22 08:39:23 +02:00
Weitian Leung
9518b7e0f1 Avoid adding empty parent icon theme
"Icon Theme/Inherits" may assign an empty value, e.g. Flattr icon
theme

Change-Id: I90713b3eb67e39d6a49a49d1f5b3d7a75a8f30f4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-10-22 08:03:49 +02:00
Laszlo Agocs
1c6b9955a5 Document QOpenGLPixelTransferOptions
Task-number: QTBUG-35576
Change-Id: I178f5db5f1075b6a395cf8ff73b75fe1765540aa
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-10-22 07:43:34 +02:00
Morten Johan Sørvig
dafd1ffa2c QPA: Flush window system events with flags.
Add a QEventLoop::ProcessEventsFlags argument to
flushWindowSystemEvents(). This gives the platform
plugins more control over which events to flush.

Task-number: QTBUG-39842
Change-Id: Id9c01948b22e297b22503d38ec4e726f9f880fd5
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Jonathan Liu <net147@gmail.com>
2014-10-22 05:53:15 +02:00
Lars Knoll
42bdbed7ce Correctly apply miter limits when stroking lines
The PDF generator was in many cases not correctly
applying miter limits to the generated strokes leading
to drawing artifacts for very sharp edges.

Task-number: QTBUG-37903
Change-Id: Ie93b0f4a56775729105a375ba3bcdb5b58993433
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-10-21 08:42:23 +02:00
Frederik Gladhorn
3361fcbc28 Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: If7e51514ed6832750e3ad967e4d322ccf920d2bb
2014-10-20 19:12:25 +02:00
Josh Faust
929d6d6b9b Fix ShortcutOverride for QtQuick on OSX
tryShortcutOverride on OSX gets called via
QWindowSystemInterface::tryHandleShortcutEvent. This change
fixes that to use the QWindow's focus object.

Task-number: QTBUG-32928
Change-Id: I51beb774e1fb91e0d8e2c12d087176d917357311
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2014-10-20 14:23:25 +02:00
Leena Miettinen
2679c5f7e0 Doc: add info about letter spacing type to function desc
Task-number: QTBUG-41222
Change-Id: I18168dfa503feac07ee1b7bc349b9f14b7351518
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-10-20 11:59:31 +02:00
Mitch Curtis
096d0ef02b Correct QPainter::clipPath() documentation.
Change-Id: Ie8ea01eee23e28378eadca0e87dc89fd62aec14f
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-10-20 10:13:43 +02:00
Jocelyn Turcotte
c762c8accc Remove QOpenGLContextPrivate::globalShareContext
This has previously been replaced with qt_gl_global_share_context
and all using code has been ported to the new name at this point.

Change-Id: I13832f583456891dd057a7b414f45ec3e83f5698
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-10-20 10:11:31 +02:00
Jørgen Lind
c231694949 Fix QOpenGLWindow tests when devicePixelRatio != 1
Change-Id: I83d71de8b9d735cd649a6c514e41a9ff23625005
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-10-20 10:11:25 +02:00
Ulf Hermann
880986be23 Check for integer overflows in places where qAllocMore is used
Task-number: QTBUG-41230
Change-Id: I5e932c2540c0bd67f13fab3ae20975d459f82c08
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-10-17 10:09:18 +02:00
Laszlo Agocs
6d1c4c8862 Avoid breaking BC with new virtuals in QOpenGLPaintDevice
Task-number: QTBUG-41046
Change-Id: Iab628d2d6811d528e2cc513b6f8a74baa628541d
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-10-16 21:47:29 +02:00
Laszlo Agocs
ebc835c2aa Fix QOpenGLWidget on Cocoa when used as viewport
Having a QOpenGLWidget as a graphics view viewport was not functioning
on OS X: it was showing incomplete content due to accessing the texture
attached to the framebuffer object before the rendering is complete.

On the normal path, when rendering is done via paintGL(), the flush was
there. When used as a viewport however, this path is not used. The missing
flush is now added for the other case too. For performance reasons, we will
not flush on every paint engine end(). Instead, the flush is deferred until
composition starts.

QGLWidget also featured a weird on-by-default autoFillBackground concept. To
maintain compatibility with apps that used QGLWidget as the viewport for
QGraphicsView, we will now do the same for QOpenGLWidget, but only when it
is used as a viewport. For regular QOpenGLWidgets autoFillBackground defaults
to false, like for any other widget. The docs are extended with a small section
about differences between QGLWidget and QOpenGLWidget.

Task-number: QTBUG-41046
Change-Id: I42c2033fdd2ef5815783fd640fe11373761061e0
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-10-14 18:14:52 +02:00
Richard Moe Gustavsen
5d9dcac0f2 qplatformmenu: remove unused and deprecated function
Now that all platforms use the popup function that
takes a target rect, lets remove the deprecated one.

This is sort of important, since QtQuick controls now
uses the new version. So if a (new) platform ends up only
implementing the old version, that can end up not
working correctly.

Change-Id: I34814b3de5ea4954cf21b161e8a834e39e5534c8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-10-13 22:13:18 +02:00
Allan Sandfeld Jensen
29e679bed9 Fix access of non-existing color table
Since alphaMapForGlyph now returns images in alpha8 format, they no
longer have a colortable, so we need to fix the fallback implementation
of alphaRGBMapForGlyph from trying to access it.

Task-number: QTBUG-41855
Change-Id: I232089163cfc817d7cf16df566f05629a968bf12
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-10-13 18:03:40 +02:00
Laszlo Agocs
d92a9ca2d3 Update QOffscreenSurface docs regarding threads
Change-Id: Ic2e3230835aa7fc1b1c3ac0530a65cd478e1ec5f
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-10-13 14:00:21 +02:00
Topi Reinio
8304c8087d Doc: Update description of QKeyEvent class
Update the description on how to use the QKeyEvent pointer
passed to key event handlers, and remove an outdated note about
multimedia key events.

Change-Id: I67a3f0054e28b84d5a0e367c02a329f4670221c7
Task-number: QTBUG-35155
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-10-13 09:33:22 +02:00
Eskil Abrahamsen Blomfeldt
74a20b77a6 Fix memory leak in QClipboard::setMimeData()
The setMimeData() function is documented to take ownership of
the object passed in, but in the case where the platform
plugin did not support the requested mode, we would simply
return without deleting the object nor telling the application,
so it would cause a potential memory leak. We need to honor the
contract, even when we fail to set the mime data.

Test was updated to avoid verifying the leak in cases where
the platform does not support all modes.

[ChangeLog][QtGui][Clipboard] Fixed a memory leak in setMimeData()
when the platform plugin did not support the requested mode.

Task-number: QTBUG-41852
Change-Id: I2112da1613199fe1b56724e7ccf097b9e912c117
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-10-10 13:37:59 +02:00
Laszlo Agocs
7069ebd1f6 Use requestUpdate in QOpenGL and RasterWindow
Change-Id: Ibed4b8d2e2185f1bcf3430932701f81577b59408
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-10-10 08:37:04 +02:00
Laszlo Agocs
1f040d401d eglfs: Add support for systems without pbuffer support
Use a small native window and window surface in case the hooks indicate
that pbuffer support is not available.

Change-Id: I6515309041f0e1e2f5321d59941f35d6ee16dca7
Reviewed-by: Louai Al-Khanji <louai.al-khanji@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-10-10 08:36:47 +02:00
Frederik Gladhorn
881ceeff42 Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: I05fcd8dc66d9ad0dc76bb7f5bae05c9876bfba14
2014-10-09 17:56:52 +02:00
Gunnar Sletta
b3d2c867ed Introducing QWindow::requestUpdate().
Change-Id: I0e2a09b53459a56d90dcd9043e694b19e2d77a9e
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-10-09 10:59:40 +02:00
Marc Mutz
e5f528fb0e Don't stream QStringLiterals into QDebug
Normal (C) string literals do just as well and use more than twice
less space in the DATA section.

Change-Id: Iafb0682a362c41dfd5b4d8b9137d88014d7992a2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-09 09:42:27 +02:00
Marc Mutz
1cc06b2e94 Don't use QStringLiteral in startsWith/endsWidth
For QLatin1String, startsWith/endsWith is overloaded, so comparing to
a latin-1 (C) string literal is efficient, since strlen() is
comparatively fast.

OTOH, QStringLiteral, when not using RVO, litters the code with
QString dtor calls, which are not inline. Worse, absent lambdas,
it even allocates memory.

So, just use QLatin1String instead.

Change-Id: I7eaf464c67b55116f970fe7f58a85f19ce4d254e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-09 09:42:11 +02:00
Marc Mutz
1a5c0b26d0 Don't use QStringLiteral in comparisons
For QLatin1String, operator== is overloaded, so comparing to a latin-1
(C) string literal is efficient, since strlen() is comparatively fast.

OTOH, QStringLiteral, when not using RVO, litters the code with
QString dtor calls, which are not inline. Worse, absent lambdas,
it even allocates memory.

So, just compare using QLatin1String instead.

Change-Id: I7af3bf3a67c55dae33ffaf9922d004fa168a3f9c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-09 09:42:00 +02:00
Marc Mutz
9b80ed9d56 QCss: mark many classes as movable
Most of these are held in QVectors, so let QVector use the
optimized reallocation strategy.

Change-Id: I6c2182465c283705bd5ec761e3d2d3d072bc6207
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-10-08 13:58:40 +02:00
Marc Mutz
9a5e4ada9c QCss: Move declaration of ValueExtractor
Move it to the end of the header, since it was sitting right
in the middle of AST struct definitions without being one
itself.

Change-Id: I017d6187324e91f2745629dbed4271064d4e59a8
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-10-08 13:58:33 +02:00
Marc Mutz
3be9d6d116 QCss: unexport some classes
and export only the non-inline functions inside them.

Inline functions don't need exporting, and some compilers
are known to have problems inlining inline functions of
exported classes.

Change-Id: I843adc0ab493817e71f48ab87bfefb03d4ca918d
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-10-08 13:58:27 +02:00
Eskil Abrahamsen Blomfeldt
183d04de90 Add text ranges to QGlyphRunPrivate
This is an enabler for using the QGlyphRun in the selection
code of the scene graph node. In this case, we need to
know exactly which of the characters in the text are represented
by the glyph run, as a single range of text may result in
several glyph runs.

Change-Id: Ie8ec942693dceea45ab548f6cefc4f78e4c6d524
Task-number: QTBUG-41808
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-10-08 13:07:58 +02:00
Shawn Rutledge
bf28e2fc13 Do not re-create windows during application shutdown
Change 9c3a58a913 causes any window to
be re-created when the screen it is shown on is destroyed.  This
is for the use case of detaching one monitor while another remains.
In QWindow::setScreen(), if the screen is null, it will be set to
the primary screen.  However during application shutdown, it may be
that the primary screen has been destroyed before all the windows
are destroyed; so trying to set it anyway will cause a crash.
qtdeclarative/tests/auto/quick/qquickwindow was segfaulting,
especially when running testWindowVisibilityOrder by itself.

Change-Id: Ice6b30320ac563f0c70264aa5c57de21d2e4d56e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-10-06 16:01:11 +02:00
Alex Blasche
014ed987ac Fix QTextInlineObject class documentation
Change-Id: I10ac533c1ba7a8003b59b1617af98afbdd4ed17f
Task-number: QTBUG-39784
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-10-05 11:22:25 +02:00
Marc Mutz
1adc586abd QBrush: be more robust in detach()
If detach() was called with a newStyle corresponding to a gradient,
but with d->style not a gradient, it would execute an invalid cast
and read invalid memory.

The reason this has not been seen in practice is that a non-gradient
brush instance can currently never become a gradient one. But that
may change when someone adds an operator=(QGradient), so in the
interest of robust code, add a check to verify the old style was a
gradient before accessing the corresponding member.

Change-Id: I216a144d31a9ed7145bcd829f3ae5f44a41672db
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-10-03 20:45:09 +02:00
Giuseppe D'Angelo
4adf5e1a9e QTriangulator: fix a potential out of bounds access
primeForCount tries to calculate a rough base 2 logarithm of the argument,
in order to access the array of deltas between primes.

However, the usage of an arithmetic shift instead of a logical shift
could cause "high" to stay at 32 -- if the argument is INT_MAX, for instance,
the condition of the if clause in the loop is always true. The loop
would go this way:

* precond:                    low = 0 , high = 32
* i = 0  : mid = 16, if TRUE, low = 16, high = 32
* i = 1  : mid = 24, if TRUE, low = 24, high = 32
* i = 2  : mid = 28, if TRUE, low = 28, high = 32
* i = 3  : mid = 30, if TRUE, low = 30, high = 32
* i = 4  : mid = 31, if TRUE, low = 31, high = 32

and hence the subsequent access of the 33rd position of the array
(by passing index 32) is out of bounds.

Now the if at i = 4 is true because "1 << 31" is an arithmetic shift,
not a logical one, and gives - (2^31) as result. Making it a logical shift
fixes this (INT_MAX is 2^31-1, the shift gives 2^31, so the if is false).

Spotted by Coverity.

Change-Id: Ied89f4c87d603a209284e22c30f18a3e464d84fd
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-10-03 13:31:14 +02:00
Giuseppe D'Angelo
ae0a624e2f QTriangulator: fix the array of deltas between primes
121e712935 fixed it into QHash,
so copy the same ranges here.

Change-Id: Ia7738f878965b5593d6ca641d6b8911abfdd2dd3
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-10-03 13:31:12 +02:00
Laszlo Agocs
1a801e0eef Pass a sized format when creating multisampled renderbuffers on ES
Task-number: QTBUG-40921
Change-Id: I96b05442dd5928992dab06553b3d41feca89084d
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-10-03 12:07:11 +02:00
Louai Al-Khanji
b1cbc1289f EGLFS: Fix plugin destruction (again)
The previous patch was flawed since by the time the QEglPlatformIntegration
destructor was called the virtual function table did not point to the methods in
QEglFsPlatformIntegration any more.

Change-Id: I310e5e3e734a22b44645ba912b579f193bcfae86
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-10-03 07:44:39 +02:00
Marc Mutz
0f9148ac9b QRegion: fix a valgrind warning
When:
 - i == 0 (at end of current POINTBLOCK),
 - numFullPtBlocks == 1 (only one more POINTBLOCK left) and
 - iCurPtBlock == 0 (last block contains no points),
Valgrind rightfully complained about an invalid read:

 Conditional jump or move depends on uninitialised value(s)
    at 0x517B08B: PolygonRegion(QPoint const*, int, int) (qregion.cpp:3480)

Fixed by setting 'next' to nullptr when !numFullPtBlocks OR !iCurPtBlock.

Change-Id: If5225fdfa66f2910a8aafb675cd02b40c0a81ad9
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-10-02 20:57:19 +02:00
Marc Mutz
141ab966c5 QPlatformTheme: use qEnvironmentVariableIntValue()
It doesn't allocate memory, so cannot throw and is a lot faster
than qgetenv().

Change-Id: I78ced6a0207e3a9c6deb71c6ce097eb79fe5e8cf
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-10-02 16:00:02 +02:00
Allan Sandfeld Jensen
9af1d11fcf Remove wrong unneeded definition in qopenglextensions_p.h
The types are already defined by qopengl.h, and the GLchar could be
incorrectly defined in the Qt namespace for GLES2 namespaced builds.

Change-Id: Ia2052599538af51fdadc434935d51bbfe8437453
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-10-02 14:05:46 +02:00
Venu
e453de98f6 Doc: Removed a few references to the outdated features
OpenVG support and the -graphicssystem command-line option
is not available since Qt 5.0.

Change-Id: I19c89cd3bb2c4a2215cdfae9fd783dece637b30f
Task-number: QTBUG-41265
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-10-02 13:56:56 +02:00
Gabriel de Dietrich
8ee9774e67 Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-10-01 16:21:12 +02:00
Allan Sandfeld Jensen
0175ad4d3f Fix regression in metric calculation of text with mnemonics
Even when we do not intend to display the text, we still need to go
through the processing of mnemonics to remove them from the text.

Instead of capping the max underlines to 0, the TextDontPrint option now
just saves adding the underline formats.

Task-number: QTBUG-41593
Change-Id: I67790650dbed0092de2c63e5d5a9349dc02d5846
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Robert Loehning <robert.loehning@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-10-01 15:30:43 +02:00
Allan Sandfeld Jensen
56f3eb299c Extend QOpenGLVertexArrayObjectHelper to support glIsVertexArrays
This is needed for dynamicgl support in QtWebKit.

Change-Id: I4d1769394ccdeaf449cac4f002c03ca8013f62f6
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-30 19:59:23 +02:00
Nico Vertriest
54853c5f66 Doc: Use title case in section1 titles
Using Python script title-cased.py

Task-number: QTBUG-41250
Change-Id: I00d3d7a0b30db7304a7904efd6d63abd9a7b493b
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-09-30 13:52:51 +02:00
hjk
eda8af2a69 Make QAccessible compile with -Werror
GCC was bailing out when attempting to merge this into the dev
branch due to the use of "potentially uninitialized values".

Change-Id: Id2fc4a123a4b180b9ab439429a0d20245c7ee41b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-09-30 10:33:07 +02:00
Marc Mutz
d93e4eff50 Make QRegion::shared_empty const
Continuing the trend of QString, QVector, etc.

Change-Id: I8f53d4abfa0dd941bfdfd3c1a9049a42dbf92691
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-09-29 20:13:18 +02:00
Sérgio Martins
e297d72fa6 Fix build when using -Werror
"accessible/qaccessible.cpp:2154:43: error: 'type' may be used uninitialized in this function [-Werror=maybe-uninitialized]"
Compiler doesn't seem very smart, all enumerators are handled in the switch already.

Observed on android's gcc and gcc-4.7 on GNU/Linux

Change-Id: I30b4660c18992158457cada01b5916aa4feae4ff
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-09-29 18:24:01 +02:00
Oswald Buddenhagen
189dc655bb Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/tools/qbytearray.cpp
	src/gui/image/qimage.cpp
	src/gui/image/qppmhandler.cpp
	src/gui/kernel/qguiapplication.cpp
	src/gui/painting/qpaintengine_raster.cpp

Change-Id: I7c1a8e7ebdfd7f7ae767fdb932823498a7660765
2014-09-29 14:08:49 +02:00
Gabriel de Dietrich
8ab25620d3 Merge remote-tracking branch 'origin/5.3' into 5.4
Conflicts:
	src/network/socket/qnativesocketengine_unix.cpp
	src/widgets/kernel/qwidget_qpa.cpp

Change-Id: I6f1aa320d5ca66cd92d601a95885aeaab0abb191
2014-09-29 13:38:11 +02:00
Allan Sandfeld Jensen
8165a9c74b Clean up QImage::Format switches
Changes some switches on QImage::Format that needed to be updated
whenever a new image format was added. Two were changed to matching
formats supported by BMP and PPM instead of what they don't support,
and two were changed to now use QPixelFormat values.

Change-Id: I5a14f1d7b7cc0451c68e4d6ab2361a5bd8dc8915
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-25 18:34:30 +02:00
Alex Blasche
342533864b Fix smooth scaling of large QImages
Task-number: QTBUG-13448
Change-Id: Ie76f5b5deefabeae93ab17eb866aea303692f5ac
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-09-25 17:20:12 +02:00
Matti Paaso
974c210835 Update license headers and add new license files
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3
- Removed LICENSE.GPL

Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2014-09-24 12:26:19 +02:00
Tor Arne Vestbø
6742b250b5 Make QScreenPrivate constructor a bit clearer
Easier to read/understand that the screen properties are initialized
from the platformScreen.

Change-Id: I3084c3ac30a08cb4e154536f949475459212d2de
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-09-24 11:52:18 +02:00
Frederik Gladhorn
c96426f19f Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-09-24 12:04:52 +02:00
Allan Sandfeld Jensen
91b7d53154 Fix QPixelFormat values
The two mono formats are actually indexed and may have both color and
alpha values in the color-table, and Format_ARGB4444_Premultiplied and
Format_ARGB6666_Premultiplied both have the alpha value in the end.

Change-Id: I7f1efb2213710f5eb628d71356f9c8ed75b50f4d
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-24 09:33:51 +02:00
Joerg Bornemann
541b387c10 emulate mouse move in default implementation of QPlatformCursor::setPos
When QCursor::setPos() is called and the platform plugin doesn't
implement QPlatformCursor::setPos, a warning is printed.
Additionally, we now emulate a mouse move to have a default
implementation that's actually useful.

QPlatformCursor::pos() now returns the position that was set by
QPlatformCursor::setPos(), or other facilities that generate mouse events,
for example the Tslib plugin.

Change-Id: Ifc539202765f311baad085f72347aeb732f7b2ba
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-09-23 18:53:42 +02:00
Thiago Macieira
79ad2b3799 Fix warning about sign change (ICC)
ICC doesn't like that you assign -1 to an unsigned variable. I could
have used ~0 to mean the same thing, but actually initialization isn't
necessary at all.

error #68: integer conversion resulted in a change of sign

Change-Id: I3e9116d7309f7a7ccd99b1adfa9bffaed1ff1c73
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-09-23 17:44:59 +02:00
Maks Naumov
86922b4655 QRegion: Reorganise members to reduce padding in EdgeTableEntry
On 64-bit platforms: 64 -> 56 bytes.
On 32-bit platforms it's still the same size (44 bytes).

Change-Id: I681b9385ee3bc7601c1e8036efd6544471d1e058
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-09-23 17:32:58 +02:00
Allan Sandfeld Jensen
dfb4af1fd3 Fix spin box with fine grained wheel events
Only step the value in the spin box when we have accumulated one wheel
tick worth of wheel delta.

Also fixes the obsolete contructors of QWheelEvent so they set the non
obsolete properties.

Change-Id: Ic6ea4b37afa8eec85a6ca7bdc0d919bf8fb02608
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-09-23 11:35:30 +02:00
Allan Sandfeld Jensen
e8ef241d0f Use NonPremultipliedImageSrc shader when painting non-premuled images
Recognize non-premultiplied images and draw them using the existing
NonPremultipliedImageSrc shader so we save premultiplying them on the
CPU.

Change-Id: I3dfc8f9385ff91502d64ccabf4bf54049cc28040
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-23 11:29:43 +02:00
Frederik Gladhorn
c5a3e5edd9 Merge remote-tracking branch 'origin/5.3' into 5.4
The isAlwaysAskOption was removed in 3862171315
so manually removed code in
src/plugins/bearer/connman/qconnmanengine.cpp

Conflicts:
	src/corelib/global/qglobal.h
	src/corelib/tools/qcollator_macx.cpp
	src/corelib/tools/qstring.cpp
	src/gui/kernel/qwindow.cpp
	src/gui/kernel/qwindow_p.h
	src/gui/text/qtextengine.cpp
	src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h
	src/plugins/platforms/android/qandroidinputcontext.cpp
	src/plugins/platforms/xcb/qglxintegration.cpp
	src/plugins/platforms/xcb/qglxintegration.h
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/testlib/qtestcase.cpp
	src/testlib/qtestlog.cpp
	src/widgets/dialogs/qfiledialog.cpp
	src/widgets/kernel/qwindowcontainer.cpp
	tests/auto/corelib/tools/qcollator/tst_qcollator.cpp
	tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
	tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
	tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp

Change-Id: Ic5d4187f682257a17509f6cd28d2836c6cfe2fc8
2014-09-23 11:23:36 +02:00
Giuseppe D'Angelo
8f622fef41 Prevent a Coverity warning about a dangerous code path
Coverity warns that we may access the gray array without initializing
it. The array is initialized if d (the source image depth) is 8.

However, when doing ordered dithering, we don't check that depth
any more and just use the array. There are instead checks in place
for the other dither modes; the one for ordered has been commented
out before public history.

So, for the love of kittens, put the check back.

Change-Id: I1cc5ced8edbb626777e54e9f4e58f152c6b28ddc
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-09-22 18:57:12 +02:00
Giuseppe D'Angelo
fb8c795302 QTransform: initialize the d member
Although never used, the d member triggers all sorts of warnings
when copying a QTransform around because it's technically
undefined behavior (reading from an uninitialized variable).

Change-Id: If06b6bea6f0ec0623c38ba330d46958b373cdc65
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-22 18:57:08 +02:00
Giuseppe D'Angelo
d9e1a0f05b QRegion: fix a memory leak
An early return in case of errors leaked memory tracked in a variable
in scope.

Change-Id: I68cd77890608caff54df7476d38850e5541ce76e
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-22 18:56:45 +02:00
David Schulz
5d688c5780 Add backslash to the list of word separator.
Task-number: QTBUG-40384
Change-Id: I16ae1432f3bdd7e577593fc43336bf29c735a66b
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-09-22 13:42:59 +02:00
Andy Shaw
b53f6fdd31 Respect the PM_SmallIconSize setting for icons in a menu on OS X
When a platform menu is used then it would hard code the icon size to
16x16. Instead of using the hard coded value then PM_SmallIconSize should
be used instead.

Change-Id: I27540ebc4397501e8f57686a118c28cd7167c0a1
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-09-20 18:23:35 +02:00
Eskil Abrahamsen Blomfeldt
6e4dc7073a Fix default implementations of raster ops
In the list of default implementations, the raster ops added in
ae0ddb8c72 were all offset by one
composition mode because of a duplicate entry in the array. The
effect would be, e.g. that using the NotDestination operator would
resolve to the Set operator instead.

Most users will probably not have experienced this since any of
the asm-based functions will be preferred.

[ChangeLog][Painting] Fixed some very rare cases of mismatched
raster modes in QPainter.

Change-Id: Ia242b54c78acbe1c89d9b4ecd10936564ec134b2
Task-number: QTBUG-41413
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2014-09-20 10:54:02 +02:00
Tor Arne Vestbø
bbacf3d79d a11y: Don't try to update accessibility if there's no interface
Change-Id: I970729e65ba0eb857e6974f9947f27ae8e6410c3
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-09-20 00:21:30 +02:00
Alexander Volkov
34de989a94 Keep a source of propagated mouse events
Synthesized mouse events should not cause mouse events which
look like they were obtained from the system.
So set the source of generated events from the original event.

Change-Id: I862829446ac6ef664e1b8e4a5b54ed11926a1d4b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-19 23:31:30 +02:00
Alexander Volkov
ba46c0eef5 Set a missing source for mouse events synthesized by Qt
Mouse events synthesized from touch events by Qt
should be marked as Qt::MouseEventSynthesizedByQt.

Change-Id: I73612621a0248440b3b773f1280395c05c55e4aa
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-19 23:31:22 +02:00
Allan Sandfeld Jensen
ca36198251 QPaintBuffer paints drawGlyphRun with wrong font
If QRawFont and and drawGlyphRun is used on a QPaintBuffer it will lose
the QRawFont and end up painting with primary font at the time.

With this patch, QStaticTextItem can now indicate that they must be
drawn using the supplied font-engine and that the font information is
not enough.

Change-Id: Id6bd376d797d2bfb457e7de55c48bdcf9f20ae38
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-09-19 02:55:29 +02:00
Allan Sandfeld Jensen
4453bfcb20 Restore -qt-block-indent on <li> elements
Task-number: QTBUG-20877
Change-Id: If049065ed99eaf8ffc85c8ff54d3da892a095795
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-09-18 17:55:03 +02:00
Allan Sandfeld Jensen
9b556afc5a Fix menu mnemonic inside ligatures
The code to draw underlines on specific characters in widget menu could
not handle ligatures. Instead of using special code to handle this case
this patch changes the mnemonic underlines to use normal format-ranges
making the text engine deal with splitting ligatures as necessary.

Task-number: QTBUG-20960
Change-Id: I6159110eae7aa8c819af16ba4a393d758871e2e0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-09-18 00:13:28 +02:00
Maks Naumov
1394962ceb Remove pointless check in QImageData::create()
"height <= 0" already verified above.

Change-Id: Ia2ab90a4cd5533f7b5101686876c2c2cc3e275ac
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-09-17 20:38:15 +02:00
Allan Sandfeld Jensen
d84a6eab51 Add Grayscale8 and Alpha8 formats to QImage and drawing
Extend the QImage format with two 8-bit grayscale and alpha formats.
These formats have the advantage over Indexed8 that they have simpler
conversion and can be rendered to by the raster engine.

[ChangeLog][QtGui][QImage] Added support grayscale and alpha 8-bit
formats which can also be rendered to.

Change-Id: I4343c80a92a3dda196aa38d0c3ea251b094fc274
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-17 14:48:48 +02:00
Alexander Volkov
a9d029974e Change the state of only the left mouse button when sending fake mouse events
Mouse events synthesized from touch events affect only the left mouse button.
So preserve the state of other buttons.

Change-Id: I628d41089db39f0c983aa95f311a842111b8c39c
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-16 14:02:32 +02:00
Mitch Curtis
05605b774e Rephrase sentence in QIntValidator documentation.
Change-Id: I53b4e4615ad23a603bc724b896de5fd1644cdab0
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-09-16 13:28:52 +02:00
Maks Naumov
ee324e4ed5 QRegion: Reorganise members to reduce padding in QRegionPrivate
On 64-bit platforms: 56 -> 48 bytes.
On 32-bit platforms it's still the same size (44 bytes).

Change-Id: Ia4831753258ef12aa983757523bb76979e6fc4b0
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-09-16 05:48:46 +02:00
Laszlo Agocs
75ae4dacbc Fix high dpi support in QOpenGLWindow
Change-Id: I0be29fb25d854e09ae961cade0c8490586788394
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-15 18:57:54 +02:00
Robin Burchell
46b2c74eaf QFontDatabase: Micro-optimize getFontWeight.
Translation is an expensive thing, and probably quite uncommon - so don't
penalise any common cases by checking for it until we're quite sure they have
failed.

In addition, we avoid repeated string construction when translating (caching the
result) and avoid repeated case-insensitive comparison by toLowering the string
data.

This change either speeds up most runtime cases that were unfairly penalised
(such as "light") by 50-70% or doesn't impact the runtime speed at all (or,
results were within the margin-of-error).

Of course, calling with translated content will be a bit slower now, but the
slowness of the translations should more than dwarf the real change there.

Change-Id: If24685dfd553e4aed07fbf07678b2585e22b0a3a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-09-15 17:21:11 +02:00
Samuel Gaist
897346604e QTextDocument: code cleanup
Improve code readability using by-pointer rather than
by reference out argument.

Change-Id: Icf2d609f1b63feac7b1674b357fe64473bfa8f3f
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-09-15 09:36:16 +02:00
Samuel Gaist
eb5dc9ed1c QTextDocument: Correct parameter documentation
Change-Id: Ie91aa2731732e4a6a1abdc2fc7ae00876c5d76e2
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-09-15 09:36:05 +02:00
Samuel Gaist
d3a5321e57 QTextDocument: doc and function parameter name cleanup
Change-Id: Idecdf66da0d00cbede6ca5b742d10cf536f366d2
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-09-15 09:35:51 +02:00
Samuel Gaist
4066a6a893 Add QRegularExpression support to QTextDocument
Currently QTextDocuement only provides find using QRegExp. This patch
aims to add support for QRegularExpression.

[ChangeLog][QtGui][QTextDocument] Support for searching with a
QRegularExpression in a document has been added.

Change-Id: I6dba10545b83995d093407038a821fe54db3d261
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-09-15 09:35:47 +02:00
Laszlo Agocs
0f92875891 Use default surface format in QOffscreenSurface
Change-Id: I3b2f790089e6d1bcfe92f2f732489c08afa766cd
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-14 12:17:27 +02:00
Allan Sandfeld Jensen
fac71528cc Read and use WheelScrollLines configuration on KDE
Qt supports changing the default lines a scroll wheel click scroll, but
wasn't trying to read the system settings. The patch adds support for
platform themes to set the default.

Change-Id: I53fdcec7984941d1d1285d927d70460356613f81
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2014-09-12 11:46:59 +02:00
Tim Blechmann
c8d2514347 QGuiApplication: clear font database on cleanup
Change-Id: If196c5e93b7ed68c6a0f6be7414f9efc8195f168
Task-number: QTBUG-40865
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-09-12 11:14:57 +02:00
Lars Knoll
2de8fb5a6c Force a full layout on the frame if it's vertical geometry changes
When the frame's vertical geometry changes because top/bottom
margins, border or padding changes we need to do a full relayout
of the frame to position it correctly.

Task-number: QTBUG-2975
Change-Id: Ia0f063cc2057b6d7a469977d258ec1608feff9bf
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-09-12 10:53:07 +02:00
Marc Mutz
50b34f2a5a QPainter: use qEnvironmentVariableIsEmpty()
It doesn't allocate memory, so cannot throw and is a lot faster
than qgetenv().

Change-Id: I1ac14bb3d262201071025a885633886934f2d74c
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-12 10:00:16 +02:00
Marc Mutz
0a5a41d9a4 QImageReader: use qEnvironmentVariableIsEmpty()
It doesn't allocate memory, so cannot throw and is a lot faster
than qgetenv().

Change-Id: I92805767b55adce478a4bf8eb1cbafaa544f96aa
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-12 10:00:10 +02:00
Marc Mutz
d2ba9d0962 QIcon: use qEnvironmentVariableIsEmpty()
It doesn't allocate memory, so cannot throw and is a lot faster
than qgetenv().

Change-Id: I427aa5bf5b8d76aabdd5ce5950e9e6762f79b8d8
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-12 10:00:05 +02:00
Marc Mutz
aac6cda804 QWheelEvent: make magic number 120 a symbolic constant
The documentation states that 120 is the value users of
the event should use to determine one full step of the
wheel. Provide that number as a symbolic constant.

Change-Id: I0da0cdd8328a476538080b7276d02863906ea53f
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-09-12 09:59:18 +02:00
Marc Mutz
9f0d5b3b6c QPainter: use qEnvironmentVariableIntValue()
It doesn't allocate memory, so cannot throw and is a lot faster
than qgetenv().

Change-Id: Ie41b95c09f2c6106a6683ba4637513c974555840
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-12 09:58:06 +02:00
Marc Mutz
d04c2fbc1d QPainter: drop a pointless check
There's no need to check for nullptr before invoking delete.

Change-Id: Ied751f76f15f390bf86bbba53c14a3e450aa81e8
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-12 09:57:52 +02:00
Marc Mutz
44f65a0650 QPainter: use qDeleteAll()
Change-Id: I167e4d7a57e92eb5ea7c39b04246ac2f44c91de0
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-12 09:57:43 +02:00
Marc Mutz
b678cc2989 QRegion: remove some toplevel const from return types
It has no effect and inhibits move semantics.

After this change, two and five more copies are moves in QtGui
and QtWidgets, resp.

Keep the old form for compilers that mangle the return type.

Change-Id: I6257683144110230079fe9095303907ecc858c94
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-09-10 20:33:18 +02:00
Tor Arne Vestbø
2368e62f32 qpa: Make screen geometry updates (full and available geometry) atomic
Updating the geometry and available geometry in two steps means that
QScreen will be in an inconsistent state when emitting the geometry
change signal, as the available geometry has not been updated yet.

Piggy-backing changes to the availableGeometry based on the virtual
geometry changing does not make sense, so we now tie geometry and
availableGeometry (and their size variants) to their own separate
geometryChanged and availableGeometryChanged signals.

Change-Id: Iee0ced642cbb91c470cb54bc507d2c0512482c13
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-09-10 14:31:35 +02:00
Jørgen Lind
a56cfad51a Destroy the QOpenGLTextureBlitter in the destructor
if it has not already been destroyed

Change-Id: If9a29da25eb23d5d65204eecabe095df215737ee
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-10 14:22:39 +02:00
Laszlo Agocs
2f96fb1bee Add an option to share between TLWs
Task-number: QTBUG-41191
Change-Id: I510d1631926ed0d9e371703d22229aed92432aa6
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-09-10 13:36:27 +02:00
Oswald Buddenhagen
d572ab1bb4 Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: Id4997327cc01bd4bb397a463bdffbd15e80398ef
2014-09-10 11:42:50 +02:00
Maks Naumov
e5dbef74b4 QRegion: remove check for null ptr after "new" operator
Change-Id: Iebba0b1f024e22cd36a04c53377b3958638b389e
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-09 01:13:51 +02:00
Laszlo Agocs
267eb25151 Enhance the VAO docs
Make it clear that the class is usable regardless of the OpenGL version
the app is targeting. It may just do nothing.

Change-Id: I50e68a46e36ef1f4694016311af93c6f8719ce4f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-09-08 20:35:19 +02:00
Gunnar Sletta
0e2c329313 Remove GLdouble and GL_DOUBLE typedefs for OpenGL ES 2.
We have no business defining types which come from another library.
These originally stem from the S60 port without further explanation
and Qt and its examples today compile without them, so remove them.

Change-Id: I683ea897c00ab3a1f7c809c45352fe590ae9a41f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-05 18:14:15 +02:00
Samuel Gaist
8206a263ab Add missing private headers warning
Change-Id: I7a4dd22ea3bcebf4c3ec3ad731628fd8f3c247e0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-09-04 22:58:57 +02:00
Friedemann Kleint
211cef46f6 Introduce flags to QWindowSystemInterface::WindowSystemEvent.
Replace boolean member variables by flags.

Task-number: QTBUG-38768
Change-Id: If1302d9cc555d20df44147c9fa0f193a471fc95c
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-09-04 22:23:19 +02:00
Frederik Gladhorn
52f859604d Accessibility: Improve line boundary helper functions
These functions are supposed to make it easy for third parties (and
QLineEdit) to implement the textAt/Before/AfterOffset functions.
Before the functions were ignoring newlines completely and thus only somewhat
useful.
Change-Id: I7136b9502a7fa6f8ad9ad7236761a34c1a7fd4da
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-09-04 14:50:32 +02:00
Albert Astals Cid
4dae1a685c Use QPlatformTheme::SystemIconFallbackThemeName in static QString fallbackTheme()
Instead of QPlatformTheme::SystemIconThemeName

Change-Id: Id318944730cd1b8014380a972eb28fd8aab1f382
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-09-03 13:24:25 +02:00
Marc Mutz
5b9e566b4d QImage: add a qMove()
The color table is passed by value (good for C++11), so when
the argument is assigned to the member variable, that's a good
spot for a move assignment.

However, the argument is also declared const.

The standard says that top-level const is ignored, but some
compilers (I know about SunCC) think differently, so we cannot
remove it.

Instead, we do a const_cast. It is well-defined: Even though
apparently the argument was declared as const, the standard
says the const is not there, and no sane compiler would put
the argument copy into read-only memory.

Add a reminder to remove the top-level const from the
signature come Qt 6.

Change-Id: Iac18846ba669de0a30da620685ad1438c267e193
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-09-02 20:43:07 +02:00
Marc Mutz
b04c144297 QOpenGL2GradientCache::getBuffer: calculate hash value outside critical section
The code doesn't touch any member variables, so it doesn't need mutex
protection. Reducing the time spent under the mutex allows a higher
speedup (Amdahl's Law), so do it.

Also made the mutex locker const to indicate it is never unlock()ed
again.

Change-Id: Ic50b827c0e34d39cbddc7ec83675b568a9c33f6d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-09-02 20:42:51 +02:00
Marc Mutz
e12f6a47a5 QColor: remind to remove copy ctor for Qt 6
Change-Id: Ib3fc880ec5c856cc9a7573349f63052f0a00734b
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-02 19:08:48 +02:00
Marc Mutz
d8712ad044 qPremultiply(QRgb): let the compiler see all versions
Use a template helper function and template specialization
to select which of the two versions (64bit / 32bit) to
use. This makes the compiler see both versions on all
platforms, enabling better syntax checking should either
of the two change. It also will fail to compile on platforms
where the word size is neither 4 nor eight bytes now...

And, of course, it's always satisfying to remove a use of
the preprocessor.

Change-Id: I4870411f99eb3b1a2c0c170fa53fa3c9b026da15
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-02 19:07:44 +02:00
Marc Mutz
1629deec83 QTextFormat: use qHash(double/float) instead of own implementation
The implementation of hash(float) does not treat +0 and -0 the same,
thus violating the property required of hash functions that they
produce equal hash values for equal input.

Simply use the qHash() FP functions which recently became available
and which do not have that problem.

This was found by unrelated code review. I'm not aware of any user-
visible issue this fixes.

Change-Id: I458c384aaf112e29cea677022969b62a34263cfb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-09-02 19:07:08 +02:00
Marc Mutz
23c1b132b1 QPdf: Extract Method is_monochrome()
The old code repeatedly evaluated QImage::colorTable(), which returns
a vector by value.

Instead, factor the checks performed on the color table into
a helper function and pass the color table to it, reducing
the number of evaluations from three to one.

Also makes the code more readable, because the condition now
fits on a single line.

Change-Id: I82773c235047e76b87c8a9d630f7df9440430351
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-09-02 19:06:49 +02:00
Kevin Funk
eb44767945 Fix crash in QTextLayout::cursorToX
When 'cursorPos' is out of bounds ([0, lineEnd]), this method crashed.

Change-Id: Ia0540ab3afbffb5c598f7b8515263cce3b3928e4
Task-number: QTBUG-40753
Reviewed-by: Dominik Haumann <dhaumann@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-09-02 14:18:08 +02:00
Maks Naumov
09754d218a QTextEngine: remove unnecessary assignment in LayoutData::reallocate()
Change-Id: I82e34d5525354fc20ca9aba6df3767e3fee51bf8
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-09-02 08:05:10 +02:00
Marc Mutz
de068472f1 QIconLoader: enable an easy case of transactional processing
It's easy to do the work on the side and then commit. This is strongly
exception safe, but in Qt, we don't care. But transactional code, when
this easy to achieve, is also clearer.

Change-Id: I30f1badec7745d62a09af4eede234cb312b373aa
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-09-02 00:43:50 +02:00
Marc Mutz
3b3783bda8 QtGui: add missing qrgb.h to painting.pri
Change-Id: I7124bf4e4675307c633bf705092aad1ee3360761
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-09-02 00:04:50 +02:00
Laszlo Agocs
6ae01c72e1 Fix no-opengl build
Change-Id: I577bd5d10e52571c95c9e646327264cf95ac6eb1
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-09-01 14:29:36 +02:00
Allan Sandfeld Jensen
367680679a Fix advance of zero-width spaces in fonts that omits the glyph
Some fonts appear to include zero-width space in the CMAP table, but
not include an actual definitions of the glyph they point to. The
missing glyph causes a warning, but isn't handled making the character
end up being giving the same metrics as whatever character it came after.

This patch adds explicit handling of missing glyphs, and also caches
their missing state when caching is enabled.

Task-number: QTBUG-40912
Change-Id: I06fba9c01df59548e750e36babfdd5a6bafd6bd0
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
2014-09-01 12:25:56 +02:00
Frederik Gladhorn
2dfc786c26 Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: I2811ff0b9d4097f0be60ff16e9664a5060cff23e
2014-09-01 11:35:53 +02:00
Maks Naumov
8d9957c671 Avoid trying convert to RGB32(ARGB32) when image already RGB32 while writing XPM image
"sourceImage.format() != QImage::Format_RGB32 ||
sourceImage.format() != QImage::Format_ARGB32 ||
sourceImage.format() != QImage::Format_ARGB32_Premultiplied)"
This condition always "true".

Change-Id: I67b3dfac135985a75bcd697b4c1a84ec3c0b66f5
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-08-31 14:16:40 +02:00
Dyami Caliri
9c3a58a913 Recreate child windows when changing screens
When setting a new screen, the code calls QWindow::destroy(), which
recursively destroys all child windows. It then calls create() on the
top-level window, leaving child windows destroyed. This causes crashes
if you have embedded native widgets.

Task-number: QTBUG-40817
Change-Id: Iaace2589f48bbfd5faaf5ff95357ff43b310504a
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-28 23:48:56 +02:00
Marc Mutz
2506c7c7cc QGradient: note to unwrap 'void *dummy' in Qt 6
It was already forgotten for 5.0, let's not continue
to use Qt 4 BC hacks in Qt 6, too.

Change-Id: Ifa798115562ebd15dd9beade73a49dfbc23a208f
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-28 22:53:05 +02:00
Eskil Abrahamsen Blomfeldt
75cf14e413 Revert "Make unicode ranges in font take precedence over codepage"
This reverts commit 3a84d92f57
because it caused a regression with certain fonts on Windows that
have divided information about writing system support in unicode
ranges and codepage ranges.

The original commit fixed a problem on Android where one
of the fonts had an entry for Arabic in its codepage range but
no glyphs for this script. This issue has been fixed in a different
way now, by 0b87f4f6c9 which makes
fallback fonts work properly, so the commit is no longer needed
to fix said bug.

[ChangeLog][Fonts] Fixed regression in font families returned by
QFontDatabase::families() for certain writing systems.

Task-number: QTBUG-39846
Change-Id: I3077b1e618b21680549abc1734cb6df6e264387e
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-08-28 13:34:03 +02:00
Allan Sandfeld Jensen
f2e26d7dbb Code cleaning in qt_gl_resolve_extensions
Moves feature checks so OpenGL vs OpenGLES is only tested one way
and extensions so they are not tested if already required by their
version.

Change-Id: Ia77f6ea924559fa7a428beb6316ae392063dfc4f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-28 11:32:57 +02:00
Li Qiu
400f8a49b8 Fix font family name mismatch between localized and non-localized version
Localized font family names and their aliases are stored in font database.
However, fallbacksForFamily gets non-localized family names which results
in family name mismatch.

Change-Id: Iddf9101e15a0e49c5ba4c049969fc90cb7853443
Task-number: QTBUG-40978
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-28 05:04:26 +02:00
Laszlo Agocs
63f48d00aa Initialize textureId in platform backing store
Setting it initially to 0 is very important, otherwise we will
do a glDeleteTextures with the undefined value.

The result sometimes goes unnoticed and sometimes causes bizarre
issues: For example in the 'textures' example one face of one cube
out of the six did go blank from time to time since the corresponding
texture was deleted by the backingstore.

Change-Id: Iebf68e20b2af426c979980d8bc4449db2b98f2f0
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-27 10:40:07 +02:00
Jørgen Lind
23a2ad6f61 Fail early when creating QOpenGLVertexArrayObject
There is a significant performance regression with using
QOpenGLVertexArrayObject::Binder on platforms not supporting VAOs. This
is because of the function resolving/initialization in create which is
called once pr bind if d->vao == 0.

Change-Id: I74e77f50921116c306247dc371c68b287a2e22d7
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-08-26 20:55:17 +02:00
Marc Mutz
53eeddf855 Use ctor-init-list in QRegionPrivate(QRect) ctor
Change-Id: I531b862db7bdec0a504c6022c1a15635aaf3fc8d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-26 20:47:47 +02:00
Marc Mutz
2b153ad6cb QRegionPrivate: remove copy ctor and assignment operator
They're identical to the compiler-generated ones, and probably inhibit
move operators here and there.

Change-Id: I918f2946f6b6aa49aa883420dc87df44013938a5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-26 20:47:41 +02:00
Friedemann Kleint
f85f3acd78 Document loading of high resolution versions of images.
Task-number: QTBUG-38858
Change-Id: I87ee18b66e137f5f5c01d77910f1a7f256b85e18
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
2014-08-26 16:59:36 +02:00
Friedemann Kleint
4017605d56 Mention supportedMimeTypes() in QImageReader documentation.
Change-Id: Iaa07a463e07982352fe2c7dd77d691a390a65f35
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-08-26 16:59:28 +02:00
Dyami Caliri
d8168f10a1 QEvent check for QT_NO_GESTURES in new debug code.
Latest changes to QEvent break compiling with -no-feature-gestures.

Change-Id: Ibbddd73a4f567051c3793a7aaf438240add6583a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-25 20:49:47 +02:00
Laszlo Agocs
f9de7efe60 QOpenGLTextureBlitter: Do not call vao functions if it failed to create
Follow the good practice of checking for isCreated() before calling
VAO functions like bind(). Use also the vao binder where applicable.

Change-Id: Ib827f3bce838396bf2e08f9480fa63801d4d3a50
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-25 17:40:28 +02:00
Laszlo Agocs
a4f50269f8 Support QOpenGLWidget and QQuickWidget on Android
It gets somewhat complicated due to the fact that a RasterGLSurface window
(i.e. any widget window since 5.3) may behave either like an OpenGLSurface
or a RasterSurface, and the expected behavior may change on each backingstore
sync.

This does not fit designs where the platform window implementation is separated
and there is different behavior for raster and GL windows.

Therefore QAndroidPlatformOpenGLWindow is now made capable of behaving like the
raster one, based on a flag communicated from the widget stack via QWindowPrivate
(since the plugin knows nothing about widgets).

This means that widget windows that do not have renderToTexture children (QOpenGLWidget,
QQuickWidget) will go through the raster path, while the ones that have will behave
like an OpenGL window with the actual rendering happening in
QPlatformBackingStore::composeAndFlush().
The surface type is RasterGLSurface in both cases nonetheless.

Task-number: QTBUG-37907
Change-Id: I6f9261fc0fd993afcda7f30d379c5410069033d3
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-25 17:40:23 +02:00
Laszlo Agocs
4ca7b23dc0 Initialize textureId in platform backing store
Setting it initially to 0 is very important, otherwise we will
do a glDeleteTextures with the undefined value.

The result sometimes goes unnoticed and sometimes causes bizarre
issues: For example in the 'textures' example one face of one cube
out of the six did go blank from time to time since the corresponding
texture was deleted by the backingstore.

Change-Id: Id19eb2164471b542b08a277a65edfcb5d0f8248d
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-25 16:57:58 +02:00
Laszlo Agocs
f16de5c1fd Fix composition for translucent AlwaysStackOnTop widgets
Writing out the alpha is re-enabled too early. When blitting the
AlwaysStackOnTop widgets as the last step of the composition, they
need the exact same settings as the backingstore content, meaning
blending but without writing out alpha.

Move the glColorMask call to fix this. This will avoid issues with
semi-transparent AlwaysStackOnTop widgets when the top-level has
alpha enabled too.

Task-number: QTBUG-40910
Change-Id: Id6d0d684cfa78bf79b65a097efd92de575e73b2c
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-24 23:01:58 +02:00
Laszlo Agocs
2d0072b0b3 Do not resolve core functions on GLES in texture helper
As the spec for eglGetProcAddress says, some implementations may not return
function pointers for core functions. Similarly to how we cannot get
OpenGL 1.0/1.1 functions with WGL for example.

To make sure QOpenGLTexture does not just crash with such implementations,
we simply use the statically exported functions in -opengl es2 builds.

Change-Id: I213bfcc21e58888b17e0ebcd0a26f26f77517e40
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-08-23 19:13:46 +02:00
Pekka Vuorela
4a6772a587 Fix handling QT_IM_MODULE=none
Was added with 19a39a4 to allow no input context to be created.
Broken by commit 24c10b0. Especially if compose input context didn't
get compiled, the first input context found was loaded.

Also made Xcb integration use compose plugin by default.

Change-Id: I992eaa8b383320e4ab725bb7b79f561f4f841458
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2014-08-23 15:27:16 +02:00
Marc Mutz
7c6a4276f0 QIconLoader: don't inherit QObject
QIconLoader did not use the services from QObject and the
Q_OBJECT macro was missing, too, so external code couldn't
have used it in a qobject_cast or inherits(), either.

Change-Id: I1f33dd540fa2ded48d871d848a77eee743a4e3c0
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:20:07 +02:00
Marc Mutz
87ccab8bd6 QIconLoader: replace an inefficient QList with a QVector
QIconDirInfo is larger than a pointer, so holding it in a
QList is horribly inefficient.

Fix by holding it in a QVector instead.

Change-Id: I6551d2d2941447e600a33c3d68edf46db002d96c
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:19:58 +02:00
Marc Mutz
0611f8d995 QIconLoader: mark virtual overrides
Change-Id: I72f20b5935d56d7c090fdd685e2bedc0778db505
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:19:49 +02:00
Marc Mutz
91f1b0b4e4 QIconLoader: mark a helper type as movable
QIconDirInfo is held in Qt containers, so reap the performance
benefit of a movable type.

Change-Id: I317c69ec46d324623b21a33043856e22f60e21b1
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:18:53 +02:00
Marc Mutz
28f7404256 QIconLoader: replace while(!empty()) delete takeLast() with qDeleteAll()
There's no calling back into QIconLoaderEngine from the QIconLoaderEngineEntry
dtors, so don't bother slicing off one element by one from the container as
they are deleted, the more so as m_entires is either move-assigned or deleted
right after these loops.

Change-Id: Ic9ffa442ef0b0c59e19eb91d164183ea5c3bab67
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:18:33 +02:00
Marc Mutz
6244665faa QIconLoader: don't re-evaluate container.size() all the time (II)
Experience shows that the compiler does not recognize the
size() call as a constant expression, so help it along.

Change-Id: I688244f37c555365566cd1a59dc601974316a2e6
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:18:23 +02:00
Marc Mutz
5335a71535 QIconLoader: don't re-evaluate container.size() all the time
Experience shows that the compiler does not recognize the
size() call as a constant expression, so help it along.

Change-Id: I60cd1754f8be123c62e3b47f6f721f42a69fe3c5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:18:15 +02:00
Marc Mutz
8f0f7acb67 QIconLoader: remove another unused variable
Change-Id: I2b11944d1964878ff5f6f666f33a97ea842ffea7
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:18:07 +02:00
Marc Mutz
c07a9d6c63 QIconLoader: remove an unused variable
Change-Id: I4f1fee2da9358f63c4d3c9e46b8d69b4a1b280c7
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:17:45 +02:00
Pelle Johnsen
4a2e297b4f Replacement for QWS_DBLCLICK_DISTANCE
Add QT_DBL_CLICK_DIST to replace QWS_DBLCLICK_DISTANCE for controlling
the distance for detecting double clicks, which can be very useful on
embedded devices

[ChangeLog][QtGui] environment variable QT_DBL_CLICK_DIST 
customizes the amount of movement allowed when detecting a double click.

Task-number: QTBUG-40841
Change-Id: I0a7534ad6cd6387d127eb49021a92d414d45670e
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-21 17:53:52 +02:00
Shawn Rutledge
dd6080ceac Debug logging support for QNativeGestureEvent
The most useful information is what kind of gesture the event
represents, but it was missing until now.

Also added a line of documentation about the NativeGesture event type.

Change-Id: I1ba3c951dcc5751e937d762d9b647ab0bf8d93b8
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-08-21 17:49:44 +02:00
Allan Sandfeld Jensen
b78e81f7c2 Outline drawing should not override the default freetype loadflags
We set FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH as the default load flags
for freetype fonts, but due to using = instead of =| the default flags
gets overridden when outline drawing sets FT_LOAD_NO_BITMAP.

Change-Id: I26b45aa2bbf613689d278eb07ae028ef9757023c
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-08-21 17:31:33 +02:00
Frederik Gladhorn
4cceceff15 Compile with -no-feature-accessibility
Task-number: QTBUG-38045
Change-Id: Id436b70aa6161bdf2428ca0a605212b278c71849
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-21 15:17:56 +02:00
Paul Olav Tvete
8688dfcd7c Android: use correct size when leaving fullscreen
On Android, fullscreen means enabling "immersive mode", which
results in the screen available geometry changing. When restoring
normal mode, oldAvailableGeometry == oldGeometry, which means that
the fullscreen branch would be chosen even though the state is not
fullscreen. By doing the maximized test first, we will default to
non-fullscreen geometry for non-fullscreen windows.

Task-number: QTBUG-39977
Change-Id: Ifc7e8b4de7e96d8c00603ce0cd136b95f58012bb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-20 18:38:18 +02:00
Allan Sandfeld Jensen
9b11f0bac8 Fix invalid memcpy(dst, src) calls where dst == src
The convert_generic_inline method was not correctly handling the case
where both the conversion methods were passthrough and the last store
is therefore not needed and may trigger an invalid memcpy call.

Change-Id: Ic88780f50e1ff9dedc04b8ff1ab3527dd0c8150c
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-20 15:54:41 +02:00
Eskil Abrahamsen Blomfeldt
198009db79 Fix several regressions in font selection
In Qt 5.3.0 a change was added which automatically adapts Common
script to surrounding scripts in accordance with the Unicode tr#24.

This broke *a lot* of cases of font selection because the font
selection algorithm is not prepared for handling characters with
adapted scripts. We need to disable this change for now and redo it
later with patches to font selection to avoid the regressions.

[ChangeLog][Text] Fixed several regressions in font selection when
combining different writing systems in the same text.

Task-number: QTBUG-39930
Task-number: QTBUG-39860
Change-Id: Id02b5ae2403c06542ed5d81e7c4deb2e0c7d816e
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-08-20 13:10:55 +02:00
Allan Sandfeld Jensen
1bae226076 Make QWindowContainer handle drag'n'drop
Drag'n'drop events were not propagated by a the QWindowContainer to the
embedded QWindow. This patch makes the widget accept the events and
pass them on

Task-number: QTBUG-40603
Change-Id: I97320fbcad27f7c6aa48c95c90bb42dda634764e
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-20 10:11:37 +02:00
Robin Burchell
97cd20b2a0 Remove QPlatformScreenPageFlipper.
Use of this was removed from QtWayland quite a long time ago, which was the only
public user of this API.

Furthermore, it isn't easily possible to implement any use of this API without
full control of the graphics stack (a very rare occurrence) and there is no
public demonstration of this.

There is ongoing research to provide a better replacement for this in the form
of QPlatformHardwareCompositor.

Change-Id: I80d666a5b465aa80f73fed6c44838ce7210bbd30
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-19 10:10:03 +02:00
Giuseppe D'Angelo
1b149c2bf5 If a tess/compute shader compilation fails, print its type correctly
Change-Id: I7536b596b890ed304846572b3068b3e932c0f594
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-08-18 22:03:40 +02:00
Giuseppe D'Angelo
75b62f3a17 Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-08-19 00:42:00 +02:00
Allan Sandfeld Jensen
b35176f43a Support autohint and lcdfilter fontconfig configuration
This patch adds support for reading autohint and lcdfilter settings
from fontconfig and pass them on to freetype.

Task-number: QTBUG-32254
Change-Id: Iaa69b70f7005ee7f21126a8d984c07b3a46a3e7f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-16 19:09:29 +02:00
BogDan Vatra
ef4a999a9f Forward menu button events to Qt if there is no visible menubar.
Task-number: QTBUG-32334
Change-Id: If1b4517f233b04d4c6c165cbfe62c8cf7b624c60
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-16 13:41:01 +02:00
Frederik Gladhorn
a9fa9b80f5 Fix compilation of QPixelFormat with old clang
The enum would break on old clang trying to cast it to strings when
building webkit.

 In file included from /work/build/qt/qtbase/lib/QtGui.framework/Versions/5/Headers/qimage.h:48:
/work/build/qt/qtbase/lib/QtGui.framework/Headers/qpixelformat.h:78:33: error: use of overloaded operator '+' is ambiguous (with operand types 'int' and 'QPixelFormat::FieldWidth')

Change-Id: I614cf89d0832dea505001d55188b4c748e948ef9
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-15 18:34:49 +02:00
Simon Hausmann
258d35ceb3 Add support for accelerated glyph rendering in the directfb plugin
Change-Id: I44ae087c900e5cffdada45845cb7f34aab89b8ab
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-08-15 18:28:37 +02:00
Allan Sandfeld Jensen
a128347c9b Fix rendering of fonts matched based on stretch
If the fontdatabase matches a font based on the stretch aka width
then the stretch factor on the font-engine needs to be 100
to avoid the fontengine doing manual stretching.

Without this a font requested with 75 stretch and matched with a font
of 75 stretch would be further condensed 25% by the fontengine.

Change-Id: Ib85ff027420c0ce891b0808dab13d25417d22df1
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-14 17:54:34 +02:00
Allan Sandfeld Jensen
a0b021d136 Fix selection of fonts based on styleName
By carrying the styleName through from QFontDef to
bestFoundry and giving it to bestStyle that can use it
we can accurately match fonts based on styleName. This
makes it possible to match styles such as DejaVu Sans
Condensed and Ubuntu Medium.

The example fontsampler is updated so it can actually
sample all the different styles it lists.

Change-Id: I381effc74130311f98794cd07d30be10dee4fe45
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-14 14:39:20 +02:00
aavit
319cbb7597 Fix QPainter::drawPolyline() painting errors with cosmetic pen
Task-number: QTBUG-31579
Change-Id: I8fd2c03ff9a22e4963bfcbcfe196ae4c61b9e10f
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-14 11:13:51 +02:00
aavit
509d6770d9 Let QImage::mirrored() retain dots-per-meter settings
Task-number: QTBUG-40582
Change-Id: Iffeba44fa6d1f34331bb69ff9aabce88efe279a7
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-14 11:11:22 +02:00
Allan Sandfeld Jensen
12ce167a96 Fix documentation and memrotate of new RGB30 QImage formats
This patch contains two changes that were lost when RGB30 support was
merged. Documentation of the formats being added, and corrected
memrotate methods.

Change-Id: Ia3c87d7c984134576badbba92c421f832896cf97
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-14 10:57:43 +02:00
Allan Sandfeld Jensen
9e1d6eec8e Move SubpixelAntialiasingType from QFontEngineFT to QFontEngine
To be able to use the SubpixelAntialiasingType enum without depending
on QFontEngineFT we need to move it to QFontEngine.

The patch also cleans up the left-overs of other enums moved the same
way.

Change-Id: I025bc8a5b429d376cfab0a643121ed6f99204988
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-08-14 10:49:33 +02:00
Laszlo Agocs
d147535322 Update qopenglext.h and qopengles2ext.h
The current one is from 2012 and is based on the obsolete spec files.
Replace it with the new one generated from the XML specs.

At the same time fix the callback function signature for QOpenGLDebugLogger
since it would not build otherwise. The user parameter is const GLvoid *
according to the specification.

Task-number: QTBUG-39773
Change-Id: If2153198373eeebc587c41b2dbf6bed5bcb26761
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-08-14 10:23:41 +02:00
Laszlo Agocs
5621a7c501 Fix composition for windows with alpha
While we will cover the entire surface with our textured quads, the clear
is still necessary in order to make top-levels with TranslucentBackground
render correctly: We don't want to blend transparent areas with undefined
content that is in the surface's framebuffer.

Blending is problematic for alpha values. We now prevent the blended alpha
from being written out. This ensures that in examples like qquickviewcomparison,
where the backingstore image contains an alpha of 0.5 while the QQuickWidget
texture 1.0, the result is still an alpha value of 1.0 in the final image.
Writing out an alpha of 0.5 would break on systems where windows get an alpha
buffer by default.

hellogl2 can now take a --transparent parameter which makes the QOpenGLWidget
being cleared to transparent in order to verify it works in combination
with Qt::WA_TranslucentBackground.

The swapped red and blue problem is also corrected. RGBA8888 does not need
swizzling. The only format that needs this is RGB32.

Task-number: QTBUG-40716
Change-Id: I54a9fd3a91a1b59575b38cdb908835315514e40f
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-13 16:14:19 +02:00
Paul Olav Tvete
c0556d92f3 Android: don't kill the app without warning
If the back key was pressed when no window was
visible, such as during startup, the app would be
killed without notice. This change makes sure that
we always give the app a chance to intercept the
back key before killing the application.

[ChangeLog][Android] Back key no longer kills the application
when no window is visible.

Task-number: QTBUG-39688
Change-Id: If9373e8d26ff323d8c8a274fb30820ecc4ca66ab
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-13 09:16:53 +02:00
Frederik Gladhorn
d2c1a6cbb4 Add accessible roles
Change-Id: Ic5465687f51c441235ec23cb88045e14644f1d2a
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-13 09:07:15 +02:00
Frederik Gladhorn
fc36b834a6 Remove invalid assert
The table interface may be implemented without having a QObject.

Change-Id: I59b9bef29494296149bc1023db933b7c5d762cac
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-13 09:07:10 +02:00
Frederik Gladhorn
fc931e5595 Accessibility: Fix boundaries for text functions in QLineEdit
Make the functions work consistently. For example asking for the line at
the cursor position when the cursor was at the end returned an empty
line before.

Task-number: QTBUG-38500
Change-Id: I60fc78c7be129a59c83efcfce6d8fdd16f2c3f65
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-13 09:07:04 +02:00
Sérgio Martins
bf9a4ef8b4 Fix QT_NO_ANIMATION build
Change-Id: Ia589e703206d6ca675a392e634e2a445dcf4cca3
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-13 08:47:54 +02:00
Frederik Gladhorn
ca524e5b70 Merge remote-tracking branch 'origin/5.3' into 5.4
Manually included changes from
3a347a4e70
in src/opengl/qgl.cpp.

Conflicts:
	src/opengl/qgl_qpa.cpp
	src/plugins/platforms/android/androidjnimain.cpp

Change-Id: Ic26b58ee587d4884c9d0fba45c5a94b5a45ee929
2014-08-12 13:05:02 +02:00
Laszlo Agocs
b08cc0ec6f Make the expose region local on all platforms
QExposeEvent::region() reports a region in a random coordinate system.
The behavior is undocumented and the platform plugins do different things.

xcb, offscreen and ios are correct. These set the region in local coordinates,
which is the most logical interpretation of the expose region.

windows is almost correct, except for one occurrence.

cocoa and others need changes: passing in geometry() as the exposed region is
always wrong.

The patch documents the expected behavior both for QExposeEvent and
internally in QWindowSystemInterface. The problematic plugins are fixed to
use local coordinates.

Task-number: QTBUG-40470
Change-Id: I6ded3154d14254fa71d4292d8e1b5e6cf696c81a
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-12 07:47:32 +02:00
Simon Sasburg
f126f7cc27 Fix rendering alpha-blended text which needs to be clipped at the top.
Task-number: QTBUG-34148
Change-Id: I9c0694e67cc9883db318c1a1558bdf6e08088db4
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-11 14:01:47 +02:00
Frederik Gladhorn
9ba3145f79 Add QAccessible::ActivationObserver
Makes it possible to follow changes in activation an deactivation of a11y.
Needed for WebEngine to know when to activate a11y.

Change-Id: Ia264a76974224d1baad3e88c34a4b8a9f1a3695d
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-11 13:16:51 +02:00