Commit Graph

12337 Commits

Author SHA1 Message Date
Giuseppe D'Angelo
704c4d0e10 QUtfCodec: don't encode invalid UCS-4 codepoints
The code didn't check for malformed surrogate pairs. That means that

- high surrogates followed by *anything* were decoded as they formed
  a valid surrogate pair;
- stray low surrogates were returned as-is.

We can't return surrogate values in UCS-4, so properly detect these
cases and return U+FFFD instead.

[ChangeLog][QtCore][QTextCodec] Encoding a QString in UTF-32 will now
replace malformed UTF-16 subsequences in the string with the Unicode
replacement character (U+FFFD).

Change-Id: I5cd771d6aa21ffeff4dd9d9e5a7961cf692dc457
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-02-07 15:00:39 +01:00
Giuseppe D'Angelo
bcd1b7fe8e Fix QString::toUcs4 returning invalid data when encountering stray surrogates
Code units 0xD800 .. 0xDFFF are not UCS-4, so we can't happily return them.
Instead, if we encounter a stray surrogate, replace it with 0xFFFD, which
is what Unicode recommends anyhow.

References:

§3.9 Unicode Encoding Forms

    D76: Unicode scalar value: Any Unicode code point except high-surrogate
    and low surrogate code points.

    As a result of this definition, the set of Unicode scalar values consists
    of the ranges 0 to D7FF_16 and E000_16 to 10FFFF_16, inclusive.

    [...]

    UTF-32 encoding form: The Unicode encoding form that assigns each Unicode
    scalar value to a single unsigned 32-bit code unit with the same numeric
    value as the Unicode scalar value.

§ C.2 Encoding Forms in ISO/IEC 10646

    UCS-4. UCS-4 stands for “Universal Character Set coded in 4 octets.” It is
    now treated simply as a synonym for UTF-32, and is considered the canonical
    form for representation of characters in 10646.

§ 3.9 Unicode Encoding Forms (Best Practices for Using U+FFFD)
and
§ 5.22 Best Practice for U+FFFD Substitution

    Whenever an unconvertible offset is reached during conversion of a code
    unit sequence:

    1. The maximal subpart at that offset should be replaced by a single
    U+FFFD.

    2. The conversion should proceed at the offset immediately after the
    maximal subpart.

    [...]

    Whenever an unconvertible offset is reached during conversion of a code
    unit sequence to Unicode:

    1. Find the longest code unit sequence that is the initial subsequence of
    some sequence that could be converted. If there is such a sequence, replace
    it with a single U+FFFD; otherwise replace a single code unit with a single
    U+FFFD.

    2. The conversion should proceed at the offset immediately after the
    subsequence which has been replaced.

[ChangeLog][QtCore][QString] QString::toUcs4 now does not return invalid
UCS-4 code units belonging to the surrogate range (U+D800 to U+DFFF)
when the QString contains malformed UTF-16 data. Instead, U+FFFD
is returned in place of the malformed subsequence.

Change-Id: I19d7af03e749fea680fd5d9635439bc9d56558a9
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-02-07 15:00:36 +01:00
Niels Weber
6adf515e33 Small doc fix.
Change-Id: If700cce1b39342ca2b1027e2c10711ea45c3dd9c
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-02-07 13:24:26 +01:00
Frederik Gladhorn
a1fe728fa5 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/gui/kernel/qguiapplication.cpp
	src/plugins/platforms/android/androidjnimain.cpp
	src/plugins/platforms/android/qandroidplatformintegration.cpp
	src/plugins/platforms/android/qandroidplatformintegration.h
	src/plugins/platforms/android/qandroidplatformopenglcontext.cpp
	src/plugins/platforms/cocoa/qcocoawindow.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/sql/doc/src/sql-driver.qdoc
	src/widgets/widgets/qtoolbararealayout.cpp

Change-Id: Ifd7e58760c3cb6bd8a7d1dd32ef83b7ec190d41e
2014-02-07 13:07:25 +01:00
Lorn Potter
cc14f85730 Refactor and remove dead code, add property caching.
This helps with a flood of dbus messages due to properties.

Change-Id: I7aa9d36a077d84a88dab561d007d597b0780e096
Reviewed-by: Aaron McCarthy <mccarthy.aaron@gmail.com>
2014-02-07 05:34:30 +01:00
Giuseppe D'Angelo
8cbe52d581 Long live QStringIterator!
UCS-4 iterator over a QString.
Kept private for now so we can still work on the API.

Done-with: Thiago
Change-Id: I377f8bb1921e591ee3292c08c3e097fb6bc7f0c4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-02-07 04:47:04 +01:00
Friedemann Kleint
b9fe8e30cb QPA: Introduce QPlatformWindow::normalGeometry().
QWidgetWindow stores the normal geometry obtained from the widget when
transiting to other states. This does not work reliably on Windows,
where this geometry is already that of the new state. Instead,
introduce  QPlatformWindow::normalGeometry(), add implementation
for Windows and use that in QWidgetWindow.

Task-number: QTBUG-21371

Change-Id: I3819ebaf55b4e7d2f7eef1affe6c20712ba45d7c
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-02-07 04:47:04 +01:00
Thiago Macieira
b2d5e7805a Add QString::fromUtf16 with char16_t and fromUcs4 with char32_t
Because they make sense. I'm even thinking that the char16_t version
should get a QString implicit constructor. Maybe both encodings.

Change-Id: Ifffc61dd890795fbbbd5f7cb5efb3e6287d1270e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-07 04:47:04 +01:00
BogDan Vatra
f640d3f132 Force surface repaint after is (re)created.
Every time when a surface is (re)created we must paint something in it
otherwise it will appear black.

Task-number: QTBUG-36594
Change-Id: Ib4baaef189f59a83a251cf89db30b0a3aec16d92
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-02-07 04:47:04 +01:00
Gabriel de Dietrich
42aa8aa8c2 Cocoa: Handle gracefully closing a window without event dispatcher
Task-number: QTBUG-36696

Change-Id: I799eb351ee8ac1529cfbf009df3e7d57ec3a24ea
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-02-06 20:50:05 +01:00
Andy Shaw
c8172953ed Fix printing with a custom paper specified.
If DMPAPER_USER is set from the print dialog then it is expected that
the specific member variables to get the custom width and length are
used. The size returned by querying the DC_PAPERSIZE is some random
default and is not the one actually requested by the user.

Also ensure that when it is a custom paper size from the driver
itself that we store the right paper size.

Change-Id: I760b8429ca1b01f5e303f2111b8d7ca1795c8ab8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-02-06 17:27:37 +01:00
Nico Vertriest
845716d629 Doc: corrected description of QTableWidget::clear()
Task-number: QTBUG-36329
Change-Id: I3a78311bcb076b414ecf1ecf866e4ed60c391126
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-02-06 17:15:38 +01:00
Andy Shaw
c36aa88683 Fix the docs on when setDocument() deletes the previous document
Change-Id: I08d162a1c1e1765213205e63183ed75b2491374d
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-02-06 17:11:17 +01:00
Richard Moe Gustavsen
577909b59a iOS: return correct uiview for IM rectangles
UITextView has a property for specifying which UIView the CGRects
you return should be aligned with. This makes a difference for
widgets when not using alien, since then the view that draws the
text will usually not be the same as the view that backs
the top level QWindow.

Change-Id: I240d63c98544c39308cd91465ee84351e7d7d1f4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-02-06 14:20:11 +01:00
Richard Moe Gustavsen
865ef95107 iOS: be more specific about IM callbacks to iOS
No need to call textWillChange all the time if the text is
really not changing. And report that selectionWillChange
when Qt reports that it has changed.

Change-Id: I7bd9f540cd9302c37888926a6152b803cc871ccb
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-02-06 14:20:06 +01:00
Richard Moe Gustavsen
f9a994e707 iOS: return styling hints for text correction pop-ups
By returning the font used at the cursor position, the
correction pop-up will be resized to match the
point size, and the text marking will get correct
height.

Change-Id: I362579b793794835323bb9ceb5ddb4655526f392
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-02-06 14:20:01 +01:00
Richard Moe Gustavsen
6b212351e2 iOS: send backspace events directly
For legacy reasons, we send IM events to the focus
object directly instead of through QPA. To be consistent,
and to ensure that IM and key events end up at the same
object in the same order, we need to send key events
directly to the focus object as well.
We should consider fixing up QPA to support IM events
better, but this will do for now.

Change-Id: I8a18a1f7b7295e5c64a109fb98eee928fae06a0f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-02-06 14:19:57 +01:00
Richard Moe Gustavsen
35dc77f8db iOS: send IM events instead of fake key events
Sending faked key events is not such a good idea, since:
1. We don't get key events on iOS, but text events
2. We cannot determine correct key code or modifiers, nor
    do we want to fake modifer press/release etc.
3. Android uses IM for all text input

So it seems that the correct solution is to avoid sending
key events in the first place. This will also bring the iOS
port on par with the Android port.

Change-Id: Ibac1d335184e62eb4185cfd4218a0ec73dffb2c4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-02-06 14:19:53 +01:00
Richard Moe Gustavsen
60fe9fb018 iOS: add spell checking support
We don't have a separate enum just for spell checking in Qt, but
Qt::ImhNoPredicitiveText should cover it. So use it
to enable/disable both spell checking and auto completion.

Change-Id: I7ad661cb7d720988f13bc1ed940573006c0ce229
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-02-06 14:19:49 +01:00
Richard Moe Gustavsen
7eb8b67c8b iOS: implement support for input methods
This change will add support for input methods, word
completion, spell checking and related functionality.

Change-Id: I41d4de1cab521c679d414cfc7c1a2d0f9c1fcaaf
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-02-06 14:19:44 +01:00
Richard Moe Gustavsen
e60357fa9e iOS: move key/text input into separate category
Change-Id: I62c588226b307d51f7f88b1cc0c1e00c0d0f14c6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-02-06 14:19:37 +01:00
Richard Moe Gustavsen
3c9cd5876f iOS: move QUIView interface decl into separate header file
Change-Id: Idc90d85859229d49b1deecc2472b330f0adb1ef8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-02-06 14:19:32 +01:00
Richard Moe Gustavsen
d44b6da7c2 iOS: change logic for when to scroll screen
The current implementation will stop scrolling the screen to reveal
the cursor if the input item changes transformation. This to not
interfere with flicking etc. This strategy turns out to be too
strict, as some qml apps/games can easily have small animations
applied (e.g qtquick cork board example) that moves or scales
the text areas (or their parents) upon focus.

So instead of relying on input item transformation, we now
scroll whenever the cursor changes position inside the input
item (in addition to orientation changes etc). We also
refactor scrollRootView into two functions, since we in
many cases know if the keyboard should scroll up or down
already when the call is made.

Change-Id: If5bf349139eed69823cfc8986bb4b32c93bdf91b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-02-06 14:19:19 +01:00
Konstantin Ritt
f864bdaf59 Get rid of SpecialData::addFormatIndices
and rename SpecialData:: resolvedFormatIndices to resolvedFormats.
Instead, resolvedFormats now stores QTextCharFormat shared copies.

Change-Id: I4a22cb3f5679b980ef52d47e4e1935663dd257ea
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-06 11:40:22 +01:00
Konstantin Ritt
903b9d41f7 Decrease code duplication
Check engine's supported scripts in a single place
and remove unused script parameter from fontEngine().

Change-Id: Ic153803bef519320c370b058e77eac1a4d92afd0
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-06 11:38:49 +01:00
Konstantin Ritt
b13b63e99c Clean-up some leftovers
Change-Id: Ia7fb57831af55cf8e0403dbdef2e73f9957fccf7
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-06 11:38:32 +01:00
Konstantin Ritt
11fe2bcd7b Fix japanese text rendering with Harfbuzz-NG
In rendering, treat (Hiragana|Katakana|Han)+ sequence like Han.

Task-number: QTBUG-36066
Change-Id: I3b5d2833e73431b07fa0df859b5d716357374cf4
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-06 11:38:26 +01:00
Allan Sandfeld Jensen
57fe9bd2c6 Emit ScreenChanged events on X11
We do not currently emit screenchanged events when a window is moved
to another screen on X11.

This patch emits the event when a window no longer intersects with
its current screen, and switches to the first intersecting screen.

Change-Id: Ie40d6eb67b85bd961eeb348bc43e4f308ee22dba
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
2014-02-06 09:45:00 +01:00
Lars Knoll
fe3637a70f Remove TableFormat as FormatType from QTextFormat
The enum value is unused, a QTextTableFormat is actually documented
to have a FormatType of FrameFormat, and isTableFormat() etc. do
the right thing.

Task-number: QTBUG-35114
Change-Id: I2f3305630b92f117c1f89b85460457265e5af126
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-02-06 08:03:55 +01:00
Morten Johan Sørvig
9e6f0f16ab Cocoa: Add improved cursor updating code path.
It's possible to use the cursorRect API in the cases
where QCocoaWindow has a NSWindow. This is true for
all top-level QCococaWindows today.

Task-number: QTBUG-35659
Change-Id: Iefb2c1c022448e19a9c005a808e0c81abe9281ea
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2014-02-06 07:52:26 +01:00
Thiago Macieira
d084590d2b Remove unused private member (fixes compilation with Clang 3.4)
qkmsscreen.h:114:18: error: private field 'm_refreshTime' is not used

Change-Id: Id9c802c5c3ae2ffdf61238f083bfe875e7b613a8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-02-06 01:44:09 +01:00
Giuseppe D'Angelo
2a86d0a551 QOpenGLTextureHelper: de-inline the DSA / DSA emulator wrappers
There's no advantage at keeping them inline because we never call them
directly: we take pointers to them. This can actually cause
multiple copies of the function to be emitted, then the linker may or
may not decide to discard N-1 copies. Just avoid this route
and deinline them.

Change-Id: I5adc704b50ec7f26498846fcbb86cb5b5d016b4b
Reviewed-by: James Turner <james.turner@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-02-06 01:44:09 +01:00
Gabriel de Dietrich
b1714aec51 Cocoa: Allow frameless NSWindow child QWindows
Showing, moving and resizing

Contrarily to what an NSWindow does to its NSViews, child NSWindows need
to be explicitly shown and hidden, and clipped if the parent NSWindow
changes geometry. Also, hiding an NSWindow will not hide its child
windows. This needed to be managed manually, adding 2 additional states
to QCocoaWindow to reflect whether a child window has been clipped out by
any ancestor geometry change, or hidden by any ancestor being hid. Also,
ordering out an NSWindow will remove it fromm its parent's child windows
array, making necessary to maintain a parallel list of child windows in
QCocoaWindow.

Stack order

Although child NSWindows can be ordered relatively to each other, they
need to be added again to be moved lower in the window stack. This also
means the windows above it need to be added on top.

Key (focus) status

One of the remaining issues, is to make sure the top level window keeps
the "key status" while still forwarding key events to the child window.

Keeping same event propagation

This use case is best illustrated with undocking QDockWidgets (if these
are child NSWindows). The main issue is to make sure the QDockArea will
get the mouse events right after undocking a dock widget. We used a similar
workaround as the "key status" problem, and manually forward the mouse
events to the dock area's QWindow.

Manual test, by Morten Johan Sørvig, included.

Task-number: QTBUG-33082
Task-number: QTBUG-22815
Change-Id: I50e34936fb82bff013e99f4bcb3bd0db0704c6ae
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-02-05 23:12:50 +01:00
J-P Nurmi
65bd80ebfc QTabWidget: fix moving of the current tab
Task-number: QTBUG-36455
Change-Id: I38687283d60fe38a4b586b064d5ddd4ed3be06b6
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Reviewed-by: Ivan Komissarov <ABBAPOH@me.com>
2014-02-05 23:04:04 +01:00
Laszlo Agocs
2c1e77506c Do not check for !IsRenderBuffer
Unlike the newer QOpenGLFramebufferObject, QGLFramebufferObject still
contains some unfortunate tests for !IsRenderBuffer when creating
renderbuffers. Removing these tests avoids asserting in debug builds
on drivers that are not conformant to the GL spec in this respect.

This means that the qgl autotest is now passing on such drivers too.
The tests do not make much sense in the first place since Qt is not
a conformance test suite.

Change-Id: I21d6272cd5cef9dd71eab57e46771d3ce7dacbfb
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-02-05 21:51:57 +01:00
John Layt
23401a1462 QPrinter - Enable changing of Orientation on Mac
Since OSX 10.4 it has been possible to change the page orientation
during a print job.

Task-number: QTBUG-27630

Change-Id: Ic3c69e83afebbb9267ef6f435f968aeef2b72963
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-05 19:34:19 +01:00
John Layt
10f3c2bca6 QPrinter - Fix PaperSources
An earlier commit add new PaperSources for First and Last, but after
looking at wingdi.h it turns out these are just the first and last
DMBIN values, and Upper is equal to OnlyOne.  Remove First and Last, but
keep the Upper and CustomSource for use later by PPD based printer
systems.

Change-Id: I298472a1f54efcc584e73dec944b96fc91426c1b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-05 19:34:14 +01:00
John Layt
5af95d077b QPrinter - Fix Printer Selection option on Windows
Make the printer selection option api public on Windows to be
consistent with Mac, and with the print program api which is already
public.

Change-Id: I3da9684288348eaa43276ca8534a1d5809f7027b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-05 19:34:03 +01:00
John Layt
27c33a8f7a QPrintEngne - Fix PPK_Creator
Add support to the Mac and Windows print engines to preserve the
creator name when switching between native and pdf format.

Change-Id: Ie036af3140f24d8e34aa886f091384f93aa0157b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-05 19:33:59 +01:00
John Layt
0ee72b09fd QPrintEngine - Fix PPK_CollateCopies
Mac supports Collate Copies using native api, so add support.  Note
this is mostly only useful for setting the print dialog default, as
Mac supports server-side multiple copies so the app will never need to
collate the copies itself.

Change PDF and Windows to default to collate true to match Mac as this
is the behavior users expect.

Task-number: QTBUG-27724
Task-number: QTBUG-35251
Task-number: QTBUG-22144

Change-Id: Ia43dbc260b3a71aa5b267cca54c168ffbea794fc
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-05 19:33:54 +01:00
John Layt
27473f19bb QPrintEngine - Fix PPK_DocumentName
Add support to the Mac print engine for set/get the Document Name using
the Job Name setting. Our documentation states this is one use that the
document name will be put to so is appropriate to be used.

Change the Windows print engine to default to a blank Docuemnt Name
consistent with the other print engines. If still blank when printing
then use a default value.

Task-number: QTBUG-27724
Task-number: QTBUG-22144

Change-Id: If590811b5720e6f759eabc290b578b94e221f9f4
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-05 19:33:50 +01:00
John Layt
053bee8b80 QPrinter - Clean up Print Engine Key defaults and tests
The PrintEngine keys are not consistently treated across the platforms
and are not properly tested.  Start the process of making the print
engines behave consistently by documenting and testing the current
behavior. Ensure all unsupported features return a consistent
default value.

The auto test for valuePreservation() has been flaky depending on the
platform and installed printers so remove it and replace it with more
complete testing.  If no native printers available then don't test
the native engines.

Fixes for the individual inconsistent keys will follow.

Task-number: QTBUG-26430

Change-Id: Iab914d7e0a5ae4a2cdc24c8645751f0910cf440c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-05 19:33:42 +01:00
David Faure
f0d135a6be Doc: fix documentation for QWidget::windowHandle.
It's not "preliminary" anymore, and it doesn't return a QPlatformWindow,
but a QWindow.

Change-Id: Iaa1938728e689d97011dce8cf0d88ff8cb4a83b9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-02-05 18:41:26 +01:00
Friedemann Kleint
aae1eb3b03 Move documentation of AA_MSWindowsUseDirect3DByDefault into obsolete section.
Change-Id: Id45ddb760d1ec56741314f1125ad03d172c8e1a9
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-02-05 15:16:00 +01:00
Frederik Gladhorn
113cfa9aa6 Accessibility Linux: Fix all widgets reporting being editable
[ChangeLog][QtGui] Accessibility on Linux reported all objects as being
editable instead of just editable text items.

Change-Id: I8bca2799a2e5b175b3ca515fee5dd02eae23829e
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-02-05 14:16:56 +01:00
Cedric Chedaleux
c6d3fe8873 Checking input mask before scanning evdev devices
Adding device mask verification for static device discovery.
DRM devices are no longer scanned if mask is set to input devices only

Change-Id: Ibd2e77280c2d93c707ba7bdb84c4ae3cb0932178
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-02-05 13:46:46 +01:00
Laszlo Agocs
2d67bf07fe Do not query max samples on gles
Querying GL_MAX_SAMPLES is not supported in GLES2.

Avoiding the call also makes us play nice with Mesa in debug
mode since it gets rid of the warnings about the failing
glGetIntegerv call.

Change-Id: I05e501cc11af41a54fefc34ab919c5191e4f3f0a
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-02-05 13:46:41 +01:00
Frederik Gladhorn
760ad40700 Make QWindowContainer accessible
Change-Id: I93451b8842648db0815c96d64d319daecb45f0de
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-02-05 13:33:47 +01:00
Rafael Roquetto
bb9dd25843 QNX: fix wrong coding style
Change-Id: I84b166ee528b7d586f1901e6bfda999ef698c3fd
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-02-05 13:07:00 +01:00
Thierry Bastian
4c173e96c1 Adds the ability to not have an activity on Android
That code allows for not having an activity on Android.
In my case I've made some java code to handle an Android service.
The code is mainly about not dereferencing null pointers.

Change-Id: Ia7fda03cbbc55e6afeacd928445a4b72b51c679e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-02-05 09:19:38 +01:00
Eskil Abrahamsen Blomfeldt
35579f6fe7 Support empty inline elements in block tags in QTextDocument
This fixes the following case:

<blockquote>
<span />Foobar
</blockquote>

Qt would see the end of <span>, and consider the current block
tag as closed, thus resetting the block format, thus losing the
margin set for the current block (due to blockquote).

If you do

<blockquote>
<span>Foo</span>Foobar
</blockquote>

instead, then the same would not happen, since hasBlock is set
to false when we append text to the current inline node.

[ChangeLog][QTextDocument] Add support for empty inline elements
in block tags.

Task-number: QTBUG-33336
Change-Id: Ic566edfec96cb8d44d1c02932bb195bc921d1580
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-02-05 09:10:25 +01:00
Eskil Abrahamsen Blomfeldt
11189af016 Remove some left-over +1 in font height calculation
In change cb8445f032, I tried to
remove all the historical +1s when calculating the font height
from the ascent and descent, but I missed a couple. These are
used when drawing the background for the text, the height of which
would no longer match the height returned from QFontMetrics.

[ChangeLog][Text] Fixed off-by-one in the height of text background.

Task-number: QTBUG-36444
Change-Id: If6d87f903e246f9faed2298bb1693b2556906eed
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-02-05 09:10:16 +01:00
Friedemann Kleint
09e53c8b6e Plugin minimalegl: Remove superfluous keys() function.
This is no longer needed in Qt 5.

Change-Id: I10a2b893fdc822a526abc19c3d1f0f2538de0d83
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-02-05 08:50:19 +01:00
Friedemann Kleint
41fea09d63 Obsolete AA_ImmediateWidgetCreation.
This attribute is not guaranteed to fully work with QPA.

Task-number: QTBUG-36489
Change-Id: I638a8e00851288012be553b5316aa6088dd67cff
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-02-05 06:29:20 +01:00
Liang Qi
839997adfa Cocoa: fix single punctuation input via CJK input method
2d05d3bd28 was not correct.

On OS X, when user uses CJK input method, only types single punctuation,
it was converted to CJK ones, and not showed in composing text.

Task-number: QTBUG-35700
Change-Id: I2d1063d2f837d075929dc5ebb5722fdefc6ee0f6
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-02-05 02:35:11 +01:00
Morten Johan Sørvig
d01f0213b8 Cocoa: Establish pattern for accessing globals
Use a static QCocoaIntegration pointer instead of
QGuiApplication. This removes the need to call out
of the platform plugin as well as the casting from
"platform" to "cocoa" types.

Change-Id: If432b3567811223b73a67548e475e07d63635b73
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-02-04 22:59:04 +01:00
Cedric Chedaleux
96b7ac569c NPOT texture support in QOpenGLTextureCache
Enable non power of two texture support for non compatible NPOT GPU.
If the context does not handle NPOTTexture feature, the image to bind is scaled to POT size. It works with OpenGL ES and Desktop version.
It is actually almost the same code as the one in QGLContextPrivate::bindTexture.

Change-Id: I6f0f511165c9e171a14f4ba6ba0b7a902e590cf6
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-02-04 21:34:58 +01:00
Jake Petroules
fdef360bad QFileSelector: correct the macros for Apple platforms.
This fixes a serious regression from
7d72516b52.

[ChangeLog] QFileSelector: the identifier for OS X has been changed back
to 'osx' from 'mac', and 'mac' and 'darwin' have now been added as
selectors for Darwin OS (which is the base of both OS X and iOS).

Task-number: QTBUG-35073
Change-Id: I83183e34c5a697338cc1ddcac33a41bd379ded12
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
2014-02-04 19:36:58 +01:00
Frantisek Vacek
cc88e6e92c QDeclarativeTypeLoader doesn't close processed QNetworkReplies
This bug causes that Cascades QML application cannot open more than
system ulimit defined number of different asset:///*.qml files.

The realFile is ordinary closed in the ~QNetworkReplyFileImpl(),
the QDeclarativeTypeLoader::::networkReplyFinished() calls
reply->deleteLater(). There are tricky situations when event-loop is
not entered and too many read already files are waiting for close.

This patch close() file when all the data is read. It can be done
this way since the QNetworkReplyFileImplnetworkreply is a sequential
device.

For more info, please, read comments on QTBUG-36032

Task-number: QTBUG-36032
Change-Id: I4002f21b4b0c7350af48b0dc6530d9606fd2794b
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
2014-02-04 16:17:01 +01:00
Kimmo Leppälä
cd820569dc Fix KDE calculated colors being all black
KDE calculated colors weren't set correctly rendering all calculated colors
"Light", "Midlight", "Mid" and "Dark" as black.

Issues fixed:
* QFrame with frameStyle Box|Raised didn't look raised but
instead just black border.
* QMdiArea had black background
* QToolBox separators were just black

Change-Id: I5e06bafe280f73af12f23960ae68a8b35e8549ac
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Kimmo Leppälä <kimmo.leppala@digia.com>
2014-02-04 16:01:26 +01:00
Maurice Kalinowski
eba56a35e3 Add suspend and resume event handling for WinRT
Task-number: QTBUG-35952

Change-Id: Icb4edb0f55c1d02dfbb5501df311b0fff87d2dc1
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-02-04 13:56:18 +01:00
Konstantin Ritt
19463c5c3f Fix character mirroring issue with HarfBuzz-NG
HarfBuzz-NG does character mirroring where appropriate.
A simple solution is to unset RightToLeft shaper flag when
text gets shaped with HB-NG. Instead, move the mirroring code
right to HB-old proxy function and decrease code duplication.

Change-Id: Icdcd50b73b3e6a43da4b85addc7d8f51edf86512
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-02-04 13:37:14 +01:00
Kai Koehne
2edf3ba5a7 Logging: Don't use for loop in qCDebug macros
The local 'enabled' variable might cause dubious MSVC warnings
if a local variable name 'enabled' exists.

Just replace the whole loop with the if (...); else idiom, as Thiago
once suggested on the mailing list.

Task-number: QTBUG-36605
Change-Id: I0b8959a29d4432296961493fe2b7827c5b860d00
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-02-04 11:34:42 +01:00
Frederik Gladhorn
49f30168c0 Merge "Merge remote-tracking branch 'origin/release' into stable" into refs/staging/stable 2014-02-04 10:37:11 +01:00
Sze Howe Koh
8bb5dba0cb Doc: Fix broken links
Change-Id: Ic275dfbf0b332fc34ea0fac1c31c4935ad961527
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-02-04 01:30:24 +01:00
Nils Jeisecke
6894bc0f3f Fix sorted QSortFilterProxyModel filter update
When changing a filter so that a previously empty proxy model becomes
populated sorting was not applied correctly.

This was caused by using mapToSource for getting source_sort_column
from proxy_sort_column. For an empty proxy model this won't work because
no valid proxy index can be created in this case.

We now directly use the root index column mapping instead by doing
essentially the same as QSortFilterProxyModelPrivate::proxy_to_source
but without the sanity checks needed for external use.

The sorting feature of QSortFilterProxyModel has always assumed that
the number of columns is specified by columnCount(QModelIndex()) so
the behavior doesn't change.

[ChangeLog][QtCore][QSortFilterProxyModel] Fixed sorting when a
previously empty proxy model becomes populated because of a change in
the filter.

Task-number: QTBUG-30662
Change-Id: I21322122e127889dfadc02f838f0119ed322dcab
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2014-02-03 22:12:20 +01:00
Samuel Gaist
6d48df83ab Clean up QXCBSessionManager
Removed useless overrides and inline simple functions.

Change-Id: I69df0ec8446fe2c8bb904c7d4d9cc2e1d269533b
Reviewed-by: Teo Mrnjavac <teo@kde.org>
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-02-03 21:55:50 +01:00
Samuel Gaist
35a29f3287 Clean up QPlatformSessionManager
Remove virtual from appCommitData and appSaveData and make them public

Change-Id: Ifd605742c6552b7a407de9bf482f8f0f0aa125ca
Reviewed-by: David Faure <david.faure@kdab.com>
2014-02-03 21:55:21 +01:00
Alex Montgomery
72259baa76 Fixed duplicate QMoveEvent generated for each QWidget::move call
Removed QMoveEvent generating code from QWidgetPrivate::setGeometry_sys
for widgets with native window handles. A move event is already
generated for them by QGuiApplicationPrivate::processGeometryChangeEvent.

Task-number: QTBUG-32590
Change-Id: I73313a012851516047ac017f1e15a21774d8ffe2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-02-03 20:31:13 +01:00
Frederik Gladhorn
899604af55 Merge remote-tracking branch 'origin/release' into stable
Change-Id: I625c46b86491fee66d39494d1466b2d616ea7380
2014-02-03 17:26:01 +01:00
Friedemann Kleint
0e16bf01a5 Windows: Silence QWindowsOleDataObject::GetData().
Change-Id: Iad97a35af334f951f56a7bf02ec1bf2873901aa1
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-02-03 17:21:47 +01:00
Thiago Macieira
71eb4d4939 Fix compilation: testBit is only used if mtdev isn't
qevdevtouch.cpp:160:20: error: unused function 'testBit'

Change-Id: Idd9eee9b916c694bdfb963c00eeb0eaaf5618d40
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-02-03 17:12:48 +01:00
Andy Shaw
cfa8fcdda0 Ensure the text is not cut off when shown under a toolbutton icon
Change-Id: I82cfa549b9db9439ab03123ddf73e5f2d001738e
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
2014-02-03 13:52:59 +01:00
Giuseppe D'Angelo
9d29afe6b0 QOpenGLTexture: remove typos in the docs
Change-Id: Ia842c7f91eadefc6b5328d7d951c4e265c2c7432
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-02-03 13:21:45 +01:00
Giuseppe D'Angelo
95435a8c90 QOpenGLTextureHelper: fix the DSA emulation
The DSA emulator functions query which texture is currently bound
to a given target, then bind the new one, perform an operation,
and bind the old one back.

The problem is that in order to query what's currently bound to the
GL_TEXTURE_<X> target one needs to call glGetIntegerv passing
GL_BINDING_TEXTURE_<X>. Since both GL_TEXTURE_X and GL_BINDING_TEXTURE_X
values are completely arbitrary (not contiguous nor related in any way)
we need to pass *both* them to the functions.

The right GL_BINDING_TEXTURE_X was getting already chosen (and stored)
at texture creation time by QOpenGLTexture, so it's just a matter
of passing it around.

For the "real" DSA functions, the binding target is ignored.

Change-Id: Ida823abbfb142d4a22bf9f9a762b160b7e281c6d
Reviewed-by: James Turner <james.turner@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-02-03 13:21:39 +01:00
Allan Sandfeld Jensen
f34e080063 Fix access after delete with Harfbuzz NG code path.
Remove reference to released font-engine so we don't risk returning it
later.

Change-Id: I741a741567a079818c7f414ac1f9c0b5a9677322
Task-number: QTBUG-36522
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-02-03 12:13:22 +01:00
Friedemann Kleint
bc8cf62797 QGuiApplication: Check if window exists before sending double click event.
Task-number: QTBUG-36364

Change-Id: I0be40e8f920f0210ba4e99e83d138f82ce3a69f2
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-02-03 09:48:11 +01:00
Shawn Rutledge
64d95e3df2 OSX: FileDialogHelper uses options to remember the selected filter
Task-number: QTBUG-35958
Change-Id: I998cf93232e79f70837cfa8f63592b69ea0dc563
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-02-03 07:49:51 +01:00
El Mehdi Fekari
61e1bcb4dd QLogging: Avoid infinite loop in error case
If the user code installs a message handler that uses
any API that prints logs (handled by qt_message_print)
then this will lead to an infinite loop.

This patch adds a thread local storage to check
if the message handler is done before the thread
is calling it again.

Note: This check is performed only if the compiler
supports thread_local (__declspec(thread) for MSVC).

Change-Id: I43b0460b8f39b26a18de48a5652a5e55f0b336f8
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-02-02 19:01:26 +01:00
Fabian Bumberger
c1c5aca6f1 [QNX] Handle the case when an egl surface can not be created
If an egl surface can not be created (e.g. when out of memory) the
application should not crash. In this case we will not be able to make
the egl surface current and have to return false in the makeCurrent call
in QQnxGlContext.

Change-Id: If9b5a82a0f64dc0a42bee687d351bea43fb05d51
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-02-02 14:40:44 +01:00
Fabian Bumberger
74d84f32da [QNX} Remove adjustBufferSize from the egl window
setGeometry will adjust the buffer for an egl window when a egl surface is created.
Adjusting the buffer somewhere else can be potentially harmful. Another reason is that
every egl window has a buffer on its own (unlike raster windows) so we do not have to
check if we have to create a buffer after reparanting.

Change-Id: I01406867a0dab598dac7d86e1f1e28ca9736a299
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-02-02 14:40:41 +01:00
Fabian Bumberger
29cd7db616 [QNX] Fix crash when creating eglSurface
Change-Id: I9cf9d56003a5f237dcf00b621fddf74e8d0ca190
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-02-02 14:40:35 +01:00
Richard J. Moore
30d199a76c Fix the QSslSocket::setCiphers(const QString &) overload.
The overload used an evil hack to work around a flaw in the QSslCipher
API rather than fixing the API. The hack was broken by the addition of
support for newer versions of TLS. This change solves the issue properly
by fixing the QSslCipher API then using the fixed version.

Task-Number: QTBUG-34688
Change-Id: Ibf677c374f837f705395741e730d40d8f912d7c6
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
2014-02-02 12:18:23 +01:00
Giuseppe D'Angelo
e5fd241770 Fix QByteArray documentation w.r.t. QString-related methods
There's no loss of data when converting a Unicode string to UTF-8,
so don't state that in the docs.

Change-Id: If26914ec674a994d9c59136448e8e4292d0412e8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-02-01 21:34:00 +01:00
Marc Mutz
861574ebb6 QGraphicsSceneIndex: replace polymorphism with a function pointer
QGraphicsSceneIndexIntersector was used as a kind of polymorpic predicate in
items_helper(). But it had only one function and the instances of it, which
were kept around in QGraphicsSceneIndexPrivate, were re-initialised on every
call to items_helper(), which means that one can just as well pass that
miniscule amount of data to the function itself.

Replaced the polymorphism with a function pointer and the comparison state
(which is conceptually const if it wasn't for the requirement to assign
to it all the time) with a const void * argument.

Effects on Linux AMD64 GCC 4.9-trunk release stripped:
  text:   -1584B
  data:    -376B
  relocs:   -26

I've wrapped the functions in a namespace. The only reason for this is
to keep the functions, previously defined in class bodies, at the same
indentation level so as not to destroy the git-blame history for them.

Change-Id: I8e1f48030047a3c54e881de7c77a3325b3e1f509
Reviewed-by: Alexis Menard <alexis@webkit.org>
Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
2014-02-01 15:51:17 +01:00
Bastiaan Veelo
5e99b07a07 Fix setWindowFlags() for QMdiSubWindow.
It was impossible to hide/show the close button after a QMdiSubWindow
was created.

Task-number: QTBUG-9933
Task-number: QTBUG-27274

[ChangeLog][QtWidgets][QMdiSubWindow] Fixed setWindowFlags() for QMdiSubWindow.

Change-Id: I7db9a1bef5ba8a8ace729acb85682c8b3de9c33c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-02-01 15:50:26 +01:00
Peter Kümmel
404a84e411 CMake: don't require GL when build with -no-opengl
Task-number: QTBUG-36509
Change-Id: I03451527ab91754d87ff2a43985952c7c7641826
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2014-02-01 15:44:02 +01:00
Thiago Macieira
dd987a9ef0 Add other integer overloads to QFlag's constructor
This avoids "change of sign" warnings as found by ICC when the high
bit is set. This often happens when you do
    X & ~Y

as ~Y probably has bit 31 on. If the enum is unsigned, then there's a sign conversion.

Change-Id: Ia5f221d928ac0155f4504a70c4046e60c25fbf3b
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-02-01 06:58:36 +01:00
Thiago Macieira
9c9f609313 Fix configure & qmake compilation with a future MSVC version
When MSVC supports ref-qualified members, we need to ensure that
qstring_compat.cpp can see the non-qualified definitions in qstring.h,
which means no precompiled header.

Alternatively, for a bootstrapped build we could not compile
qstring_compat.cpp or #ifndef the functions.

Change-Id: I8ece34503060f0b4b0f8f2df2fb9b0fb1311e269
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-02-01 06:56:45 +01:00
Thiago Macieira
7e5b3e57e3 Add the default argument for the new connection syntax
Task-number: QTBUG-36549
Change-Id: I3addacf4b0698df91960f7b8e9c2ed93e935f848
Reviewed-by: Branislav Katreniak <katreniak@gmail.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-02-01 06:37:49 +01:00
Thiago Macieira
8930839acb Update the macro that MSVC 2013 defines for AVX code generation
http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.120).aspx says:
  __AVX__       Defined when /arch:AVX is specified.

Now we know what flag it is, we don't need to use our _M_AVX flag
anymore. We're also now assuming that Microsoft will follow the same
pattern for AVX2 (i.e., __AVX2__), so this commit also removes the
check for _M_AVX2.

The other defines that were defined alongside AVX2 are removed because
they have no use currently in Qt.

Change-Id: I64a026b2206dbd0d2dffa7c803bee969c9b94a94
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-02-01 00:58:58 +01:00
Thiago Macieira
2c985e8048 Use qregister(u)int in qsimd.cpp x86 code
This way, the same codebase works for x86, x86-64 LP64 and x86-64 ILP32
(a.k.a. x32).

Task-number: QTBUG-35463
Change-Id: Iffcecc6a4c03267fb64e287c2d6226d078d7d115
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-02-01 00:58:19 +01:00
Christian Loose
f40c28f915 Q(Plain)TextEdit: Add find() overload with QRegExp
Add overloads to the find() methods in QPlainTextEdit and QTextEdit
that find the next occurrence matching the passed regular expression.

These are convenience methods that eliminate the need to use the
document() method and the need to handle the QTextCursor return value.

[ChangeLog][QtWidgets][QPlainTextEdit] Added find method overload using QRegExp

[ChangeLog][QtWidgets][QTextEdit] Added find method overload using QRegExp

Change-Id: Ia6139b771e3ae4ca02e4b8ea7fde19e5dc71b9d8
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-01-31 21:51:35 +01:00
Thiago Macieira
17678bee89 Move the code that converts from UTF-16 to Latin1 to the top
Just so it's closer to the code that does the inverse.

Change-Id: Iecaab20adad2cb7f4a55818c687aecc76f0523e7
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-01-31 21:51:34 +01:00
Thiago Macieira
1f6ae7444b Merge all conversions from Latin-1 in qstring.cpp into a single function
Amazing how many places had the conversion duplicated. When compiling
with GCC under -O3 (which enables -ftree-vectorize), GCC would use SIMD
by using the PMOVZXBW instruction, but only if the -msse4.1 was passed
(or equivalent -march= switch), which almost no one did.

Also, the two lastIndexOf and the qt_find_latin1_string updates are also
fixing bugs because the old code forgot to cast the input to uchar
first. That meant the compiler was generating sign-extension from 8 to
16 bits, as opposed to zero-extension.

Change-Id: I4e2430a51dfc337994834524d3540382157509ef
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-31 21:51:31 +01:00
Thiago Macieira
388bfb2731 Unroll the tail loops of the SSE2-improved code
Change-Id: I1a51ceab3bdabd39bdb9dc2714debb3ad2c2380c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-31 21:51:29 +01:00
Thiago Macieira
4c9db39896 Improve the QString/QLatin1String ucstrncmp with SSE2
Change-Id: I6a7ce281096bb99352132f775ae32fcaf55bd32c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-31 21:51:25 +01:00
Thiago Macieira
3bae7b0a28 Centralize the UTF16-Latin1 comparisons in one place
We have quite a few versions of this code in qstring.cpp, which means
that it's hard to optimize them all. Instead, create two functions to
do the comparisons, one case-sensitive (ucstrncmp & ucstrcmp) and one
case-insensitive (ucstricmp).

Change-Id: I55c6588ade160bc8d16e19727b8f3dca523b38bf
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-31 21:51:23 +01:00
Thiago Macieira
8b77fe9f64 Improve qstring.cpp:findChar with SSE2
This updates only the case-sensitive searching. The case-insensitive
part requires quite a few Unicode transformations.

The benchmarks tried are the plain word-by-word comparison used in Qt
5.2 and in builds without SSE2; the SSE2 benchmark; a benchmark using
the SSE4.2 "strchr" instruction. I've run the benchmark both for CPU
cyles used as well as bytes/sec scanning strings.

Improvement over the Qt 5.2 code:

            GCC 4.7         GCC 4.9        Clang 3.4        ICC 14
          cycles  MB/s    cycles  MB/s    cycles  MB/s    cycles  MB/s
SSE2       2.1x   2.9x     2.2x   2.9x     2.1x   3.1x     2.2x   3.1x
SSE4.2     1.5x   1.7x     1.5x   1.7x     1.5x   1.7x     1.6x   1.8x

Once again, the SSE4.2 instruction wasn't as effective as I'd hoped
(not to mention that Clang seems to have some bugs emitting it).

Change-Id: I57c6e65e91791bb5265965cbd1af7fbd8fe7f588
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-31 21:51:19 +01:00
Thiago Macieira
2cfdb35269 Merge qMemEquals and ucstrncmp
qMemEquals is the same as ucstrncmp and checking that the comparison
was 0, so implement it like that. Meanwhile, it already had code for
doing 32-bit comparisons in the absence of higher SIMD optimizations,
which we can now make use of.

Change-Id: If26b446856e3b756efabc98b471fcdc344a8e732
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-31 21:51:14 +01:00
Thiago Macieira
f32a5b158f Improve ucstrncmp with SSE2
The benchmarks showed that the basic SSE2-based building block
improves performance by about 50% with data extracted from a Qt
Creator run. None of the other alternatives provide clear better
results -- the best was 3.8% and with only one compiler.

Change-Id: I77314785afecfacaf21c41fd79c97cadf357f895
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-31 21:51:11 +01:00
Thiago Macieira
34821e226a Add support for UTF-8 encoding/decoding with SIMD
Decoding from UTF-8 is easy: if the high bit is set, we fall back to
the byte-by-byte decoding. Encoding to UTF-8 requires a little bit
more work: to detect anything between 0x0080 and 0xffff, we have
several options but none as easy as above. Multiple alternatives are
in the benchmark code.

In both loops, we do two things once we run into a non-ASCII
character: first, we continue the loop for the remainder of ASCII
characters in the buffer (which we can tell by checking the bits set
in the mask), then we find the last non-ASCII character in that
16-character group, so we don't reenter the SSE code too soon.

For the UTF-8 encoding, I have chosen the alternative that results in
the best performance. It's closely tied to the alternative running the
PMIN instruction, but that requires SSE 4.1. It's not worth the
complexity. And quite counter-intuitively, the dedicated string
instruction from SSE 4.2 performs most poorly of all solutions. This
begs re-visiting the performance of the toLatin1 encoder.

The best of 10 benchmark runs of this code were measured on my
SandyBridge CPU @ 2.66 GHz (turbo @ 3.3 GHz), both as CPU cycles and
as CPU ticks:

  Compared to:        ICU             Qt 4.7      non-SSE Qt 5.3
  Data set     fromUtf8  toUtf8  fromUtf8 toUtf8  fromUtf8 toUtf8
 ASCII only      7.50x    6.22x    6.94x   7.60x    4.45x   4.90x
2-char UTF-8     1.17x    1.33x    1.64x   1.56x    1.01x   1.02x
3-char UTF-8     1.08x    1.18x    1.48x   1.33x    0.97x   0.92x
4-char UTF-8     1.05x    1.19x    1.20x   1.21x    0.97x   0.97x
Creator data     3.62x    2.16x    2.60x   1.25x    1.78x   1.23x

As shown by the numbers, the SSE-based code is slightly worse than the
non-SSE code for dense non-ASCII strings. However, as evident in the
Qt Creator data, most strings manipulated by applications are either
pure ASCII or mostly so, so there's a net gain.

Done-with: H. Peter Anvin <hpa@linux.intel.com>
Change-Id: Ia74fbdfdcd7b088f6cba5048c03a153c01f5dbc1
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-31 21:51:08 +01:00
Giuseppe D'Angelo
bc91dc4895 QOpenGLTexture: avoid a QImage detach when uploading texture data from it
If the image is already in the right format, converting it to RGBA8888
will be just a refcount increment; but calling bits() will then cause
an unnecessary detach.

Change-Id: I3b06139cd86b74a9082bd0b401a9a14bd4992a10
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-01-31 18:57:50 +01:00
Giuseppe D'Angelo
c5ee652278 QOpenGLTexture: Introduce const void * image upload methods
An API oversight caused the image upload methods to take a "void *",
which is not necessary at all. The underlying texture uploading calls
(i.e. the gl(Compressed)Tex(Sub)Image<N>D family) all take a "const void *".
The methods taking a "void *" get deprecated.

Change-Id: Idfda58d4d7d0af1f335e5cbad7d700f4ccad652c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-01-31 18:57:43 +01:00
Friedemann Kleint
b18779b61f QWizard: Fix QWizardPrivate::QWizardPrivate()
Initialize wizStyle and other variables, silencing a purify warning
about uninitialized memory read; use std::fill to initialize the
button array.

Change-Id: I29ad90a29d406be62179fd33688f05bb5f6b7368
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-01-31 18:28:40 +01:00
Friedemann Kleint
65b26acb7c Prevent crash and emit warning when receiving bogus drop events.
Task-number: QTBUG-33635

Change-Id: I6d436bc4d47d1d6b063fc2cf27d67fe4684e7491
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-01-31 18:28:11 +01:00
Friedemann Kleint
4dcb607aa9 QColorDialog: Emit done after setting the selected color.
Task-number: QTBUG-35859
Change-Id: I8b23d0283e9678c6698c174d0362cf8d85b2f813
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-01-31 18:27:43 +01:00
Nico Vertriest
0b26ad05bb Doc: corrected link/example errors
Update pro files after move gestures folder
Update snippet statements
Corrected path in imagegestures.pro

Task-number: QTBUG-34749

Change-Id: Icc19908914e36507e412ab63bf0cc2809aa48e17
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-01-31 16:18:07 +01:00
Louai Al-Khanji
8d38c0f6d6 Move Direct2D paint engine on top of QPaintEngineEx
Make QWindowsDirect2DPaintEngine a subclass of QPaintEngineEx instead of
QPaintEngine like the other paint engines inside Qt. This should both be
faster and better supported, as the code paths handling QPaintEngineEx in
QPainter are tested more.

Additionally the visual output is closer to the raster engine, as all
primitives are drawn using the same mechanism, resulting in fewer
off-by-one-pixel errors.

This change also makes designer work mostly correctly, apart from some
remaining clipping bugs.

Change-Id: I53d36c08e73883ff35e389d57f9d30b482fc6721
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-01-31 14:51:48 +01:00
Gabriel de Dietrich
79fb39a87c Cocoa: Merge QNSWindow and QNSPanel, inherit NSPanel
Since we will later have frameless NSWindow child QWindows, it makes
sense to be able to keep and reuse the instantiated NSWindows in cases
like QDockWidgets. If we keep these 2 different classes, it becomes
impossible to morph one into the other.

Task-number: QTBUG-33082
Change-Id: I351c628b887101b1cfd67689afbf689f119554de
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-01-31 14:43:54 +01:00
Samuel Gaist
85ff4e8fe4 Upgrade Window Level for stay on top widget on OS X
Currently setting the WindowStaysOnTopHint makes the window appear over
its children e.g. a QMessageBox.

This patch aims to provide a more sensible level for stay on top widget

[ChangeLog][QtWidget][OS X] Fixes an issue where stay on top widgets
would cover their own children

Task-number: QTBUG-36178
Change-Id: Ie86b0e0244d2fdee3638d4ab576445ef190d4bc6
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-01-31 12:24:10 +01:00
Konstantin Ritt
2d576f79f7 Make HarBuzz-NG the default shaper on Mac
Since we dropped all platform-related shapers during the
QPA refactoring, thus making HarfBuzz the only shaper on all
platforms, we can not deal with AAT-capable fonts anymore.
HarBuzz-NG now supports it's own shaper backend infrastructure,
so the decision was to enable HB's CoreText shaper backend on Mac
and simply make HB-NG the default shaper there.

Task-number: QTBUG-36056

Change-Id: If22e24fd5cc00c25952934332a2f4123f38135a4
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
Christian Strømme
8c9a587ed3 Android: Export QtAndroidPrivate::androidSdkVersion()
Prerequisite for making the SDK version (API level) available through
QtAndroidExtras and to other modules.

Change-Id: Iffd7540c1a85f60d6b6a3e658faa69e095d87afa
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
Friedemann Kleint
de27b71c19 Windows: Fixed alert sound of QMessageBox.
Task-number: QTBUG-33303

Change-Id: I184f169a2ae0e1fa5e21b906c1f7659316030b34
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-01-31 12:07:59 +01:00
Laszlo Agocs
6953f3a501 eglfs: Mouse hotplugging support
On Embedded Linux with libudev support hotplugging was already working,
except that the mouse cursor was not shown and hidden. This is now
corrected so that the cursor disappears when all mice become disconnected
and reappears if a mouse gets plugged in later on.

[ChangeLog][QtGui] Mouse hotplugging is now fully supported in eglfs
when running on Embedded Linux systems with libudev support enabled.

Task-number: QTBUG-36374
Change-Id: Iec7c1557ba6085e3958dd357460cc032896fb174
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2014-01-31 12:07:59 +01:00
BogDan Vatra
231cac6119 Disable the rendering profiling
Change-Id: Ia2d6216104c66a4b2e7bfb36418c13eaa51f55e9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
BogDan Vatra
25d5b2e07b Fix the repaint position.
The geometry is used to set the dirty region of the screen, so it must be
translated in screen coordinates.

Change-Id: Ic559a0a0d0e840cb2aa27ae1b02dcc140b29556f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
BogDan Vatra
630d74a40c Don't add/remove/lower/raise children windows to the TLW stack.
Change-Id: I4fe6b05fe2a7d6de7c8ecaf9934fd8e285b2c64e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
BogDan Vatra
37355965c2 Fix repaint of transparent images.
Remove the native bitmap and paint directly on the surface instead.

Change-Id: Ie7010d97aa934a170c079de549903fc3391df4d9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
BogDan Vatra
5096355f0a Fix surface leak, cleanup opengl window.
ANativeWindow_fromSurface already acquires the surface, no need to
call ANativeWindow_acquire.

Remove unused variables.

Change-Id: I563573072687927256aef76fab20f645f35778a2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
BogDan Vatra
b86f7c1c8e Sort include headers
Change-Id: Ib987ee7c6e2cfcabd725fde4399c968a11dc0868
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
BogDan Vatra
398f029f62 Shut up setParent warning.
Change-Id: I43af8bf83d3071f7c1d2eff082df5b1414f553b8
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
BogDan Vatra
6fe4deca3f Only Android API < 11 needs o set the surface type.
Change-Id: I290d7273624ce4853a137c00263fa9a169ea0cf9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
BogDan Vatra
fc43748893 Remove unused variable.
Change-Id: I30c6bea769df436f41275df60552b9616e8d5547
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
Andy Shaw
8cf666e10c Build on Windows Embedded when -qtlibinfix is used
The resource file that needs to be included is hardcoded whereas qmake
generates one that is based on the target name (which includes the
libinfix). So to ensure the right one is available, a copy of the
generated rc file is done to the name it expects.

[ChangeLog][Platform Specific Changes][Windows Embedded] Fixed building
issue when configuring Qt with -qtlibinfix

Change-Id: I46ddbc5d22424bf63c54423618385e4268790eeb
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
2014-01-31 09:02:30 +01:00
Maurice Kalinowski
10a6e4d22b remove doubled specification
DLLDESTDIR is set in config.pri already, hence no need to set it twice

Change-Id: I84a5ecd0a3db41ff3920a295644e3d169deed264
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-01-31 07:58:39 +01:00
Maurice Kalinowski
e196b9a5a0 Add install rules
Otherwise d3dcompiler will not be installed using -prefix in configure

Change-Id: I3054969cc5d8b7c2378b12bbaef3dc4ca0194711
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-01-31 07:58:31 +01:00
Bastiaan Veelo
fed63d4394 Documentation: a singular subject takes a singular verb.
Change-Id: I75762cd0f2c25eeeeb1283800c21393637bdff56
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-01-31 02:03:56 +01:00
Allan Sandfeld Jensen
5f59207bd3 Optimize drawing to and from generic formats
When drawing to and from the less common formats most of the cpu time
is spend in conversion. The conversion method is rather slow due to
using variable shifts and masks that the compiler does not have a chance
to optimize.

This patch changes the conversion methods to being templates fed by
constexpr methods. This allows the compiler to fully optimize the methods
yielding 2x->5x speedups.

The reliance on constexpr however means the optimized methods are only
used under C++11.

Change-Id: I2ec77c4c1c03f12ee463a694a2b59db0f0b52db1
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-01-31 00:24:48 +01:00
Konstantin Ritt
16af55dda1 QTextEngine: Make FontEngineCache inaccessible from outside
This is really an implementation detail
and shouldn't be accessible in any way.

Change-Id: Icd9f2ea6f9a1d5ebd613ce65eebe2823301f87ea
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-31 00:24:48 +01:00
Konstantin Ritt
f26928cccf Allow QTextCharFormat::setFont() to skip unresolved font props
This makes the font merging possible and solves an issue
with the default font properties inheritance when used
in conjunction with QTextFormatCollection.

Change-Id: If8b543c011122dde9f086f5d696df3b042f7b90c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-31 00:24:48 +01:00
Thiago Macieira
15f8bc1f6e Also register complex D-Bus types when running under qdbus
When running inside qdbus, we generate the meta objects a little
differently. Previously, for unknown types we'd simply have a -1 as the
type ID in the meta object, but this doesn't work in Qt 5 (has
apparently never worked). So simply register a type with the metatype
system and let QMetaObject do its thing.

[ChangeLog][qdbus]Fixed a bug that caused the qdbus tool to crash
when trying to display remote interfaces that had complex types
without a matching base Qt type.

Task-number: QTBUG-36524
Change-Id: Ifef65b340dc89d3295ed6ef00f2dcc60849ecb02
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-01-31 00:15:51 +01:00
Andrew Knight
f3df57e7b8 WinRT winmain: handle -qdevel parameter for additional debugging tooling
This adds an additional command line argument, -qdevel, for tooling
support. Since Windows Phone deployment APIs don't return the PID, this
writes the PID to a lock file that can be read by deployment tools.
Since arguments may be passed from one of several entry points, the
special argument checks are now done in Run() instead of onActivated().

Change-Id: Ib3af157ccf687769d43d60adef9a0ab480e835b7
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-01-30 22:09:55 +01:00
Andrew Knight
8e1cc7043f Fix WinRT timer dispatch
This fixes the event dispatcher lookup on timer callbacks, which was
incorrectly using only the gui event dispatcher to look up timers.

Change-Id: Ia01a07f6505afd0adfc0641e9c60199f258138a1
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-01-30 22:09:38 +01:00
David Faure
cc8e0d85e2 Doc: argument(s) was renamed to value(s), adjust QCommandLineOption docs
Task-number: QTBUG-36264
Change-Id: I132270f35b93b2b1c5230459f48bf9d047f42ab9
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-01-30 21:47:34 +01:00
Thiago Macieira
8e26730fb7 Use full-barrier in the "non-atomic" API in QAtomic{Int,Integer,Pointer}
This is more in line with what std::atomic does.

Change-Id: I6fe96102995a3fda8f82475758995593358735bc
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-30 18:06:31 +01:00
Thiago Macieira
aba30f0234 Replace the type-based QAtomicIntegerTraits with a size-based one
This simplifies the code a lot and avoids silly mistakes where a
specific integer type is missing (such as char16_t).

Change-Id: Id91dfd1919e783e0a9af7bfa093ca560a01b22d1
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-30 18:06:27 +01:00
Thiago Macieira
fd0d576709 Centralize support for QBasicAtomic for ints and longs
No need to redefine everywhere, since they're required to be supported.

Change-Id: I2bdbbd0b0c44871e3bd0edcf0289fc58dd50ff31
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-30 18:06:23 +01:00
Thiago Macieira
8d2a9bcf1d Ensure that the pointer-sized QAtomicInteger specialization exists
This is already implemented in qatomic_x86.h, qatomic_ia64.h,
qatomic_mips.h, qatomic_armv6.h, and qatomic_cxx11.h. For
qatomic_msvc.h, we've just fixed it.

For qatomic_gcc.h, we know that the compiler supports it, so just add
it. According to the GCC manual, it might print a warning on some
platforms, so we only enable that on 64-bit builds.

For qatomic_unix.h, the support was missing (along with support for
unsigned 32-bit), so this commits adds it.

For qatomic_armv5.h, the platform does not always support 64-bit
atomics, but ARMv5 cannot compile in 64-bit mode anyway.

Change-Id: Ia8b3b5c641f11e5df05937fe7442be0a223174ef
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-30 18:06:17 +01:00
Thiago Macieira
e4533e3aeb Introduce QAtomicInteger<T> and derive QAtomicInt from it
QAtomicInteger<T> is to QBasicAtomicInteger<T> what QAtomicInt was to
QBasicAtomicInt: just a little more syntactic sugar. The Basic classes
do not always have a constructor, since they depend on compiler
support. The constructor is always present in the non-Basic class, at
the expense of making it non-POD for C++98 code.

This commit also repurposes most of QAtomicInt's documentation for
QAtomicInteger. It adds only the Q_ATOMIC_INTnn_IS_SUPPORTED macro
that explains whether the given type is supported on this platform.

Change-Id: I58886d6fa49fea4de24015c40dae29c9fa534e00
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
2014-01-30 18:05:38 +01:00
Thiago Macieira
1b3a424bcf Add support for 16- and 64-bit atomics with MSVC
MSVC provides the necessary functions / intrinsics for 16- and 64-bit
operations. It has some support for 8-bit too, but the most important
functions seem to be missing...

Change-Id: I177b4eb2a2cf14d716b78c94f9d6a9b11aea1b84
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-30 18:05:30 +01:00
Thiago Macieira
07e831d7ff Declare qregister[u]int, an integer the size of the machine's word
In almost all platforms, sizeof(qregisterint) == sizeof(void*) ==
sizeof(qptrdiff). It's different for architectures that have a pointer
with a size different from the machine word. This allows us to declare
variables of the most optimal size, even if the pointers are too wide or
too narrow.

The only currently-known architectures to match that case are the ILP32
builds on x86-64 (a.k.a "x32") and IA-64 (option -milp32, only available
on HP-UXi), which have 64-bit registers but 32-bit pointers.

Change-Id: I0f126b70ea9ea326bd3143797287e4b98210d36d
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-30 18:05:16 +01:00
Bastiaan Veelo
6e13f4b3e0 Load all available pixmaps in an icon file.
Fixes the problem that only the first icon would be read from an .ico
file with muliple icons of various sizes in it.

Task-number: QTBUG-28267

Change-Id: I50daa89769054234e9ffc5246f59b46975948871
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
2014-01-30 17:48:50 +01:00
Richard Moe Gustavsen
97fd5399bc QPlainTextEdit: set Qt::ImhMultiLine
Like QTextEdit, QPlainTextEdit should also set the
input method hint Qt::ImhMultiLine.
An important reason for this, is that the iOS plugin
will inspect the input method hints of the focus
object to decide which type of keyboard (and return
key) to use. Failing to set this hint will result
in the iOS plugin setting the return key to 'done'
instead of 'return' for this widget.

Change-Id: Idd5aaf21505add608f2621f94655984f42e92a18
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-01-30 15:55:04 +01:00
Eskil Abrahamsen Blomfeldt
55db6736ac Android: Don't skip first file in assets entry list
We're using AAssetDir_getNextFileName() to verify that the
directory exists and has content, and this moves the
current file pointer to the second file in the dir, so
we need to reset the pointer before iterating to populate
the entry list.

[ChangeLog][Android] Fixed QDir::entryList() for assets
scheme to no longer skip the first file in the directory.

Task-number: QTBUG-36528
Change-Id: I9938c669658330b0e11d6fbe3df8c6566fd79f5f
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-01-30 13:33:06 +01:00
Tor Arne Vestbø
f2b6307af2 Warn the user when compiling Objective-C files (.m) that includes Qt
Xcode project templates will by default create source files that
ends with .m (obj-c). If you try to include Qt from such files, you
will get a bunch of compile errors, since the compiler will not
understand C++ concepts, such as namespaces.

To ease mixing native iOS and OS X apps with Qt, we print a warning
to the console, so that the error messages are easier to understand
and fix, by renaming the offending file to .mm.

Change-Id: I192f460f9ca53145b7193dec1cfe7c095ae149a1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-30 13:29:32 +01:00
Tor Arne Vestbø
18b7015e86 Add QWindowPrivate::topLevelWindow() helper function
Might be useful to expose to QWindow in 5.3, but for now it's private
so it can be used by platform plugins.

Change-Id: Iad96d7e249a7b85695668f8d7e8918164ec67442
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-01-30 13:29:28 +01:00
Oliver Wolff
848c5d01e2 Fixed assert in blend_transformed_tiled_argb
px16 and py16 might be <0 in the first iteration of the loop. In order
to avoid accessing an invalid index the values have to be corrected
before px and py are accessed.

Change-Id: I790faeacc2b77ae8af52bf5e69a2d801c9fe973d
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-01-30 13:13:53 +01:00
Konstantin Ritt
e4588b70dd QWindowsFontDatabaseFT: Code deduplication
Re-use a private helper API from QWindowsFontDatabase.
This also helped in consolidating the behavior between these two.

Change-Id: I93ba0a486a2c11fdefd328af090497dde5b0fbdb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-30 12:44:23 +01:00
Konstantin Ritt
d437457bec Add CoreText HB-NG shaper backend on Mac
Change-Id: Ida705b9fc59d41a04cb754faae58774bfc2e656c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-30 12:43:33 +01:00
Konstantin Ritt
2e1609f3e3 Introduce QTextBlock::textFormats()
A convenient way to obtain the block format ranges that should be
applied to the block text.

Change-Id: I220429b7c9c592c4880357c0d7b1b21f6c1c11f3
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-30 12:43:33 +01:00
Konstantin Ritt
d8225fab8f [QFontEngineBox] Fix incorrect advances for SMP code points
In UTF-16, SMP code point is encoded with a pair of surrogates,
thus making SMP code point twice wider than BMP code point.

Change-Id: Ifb0e78cff50cca7231d07097a730188bd98c54cb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-30 12:43:33 +01:00
Konstantin Ritt
e707607ab0 Update HB to 7691a154e50f8c8c77bbd94787686262955bf5d4
Change-Id: I7dae9d74f338d3beeb1677a1676a07b66c05bb93
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-30 12:43:33 +01:00
Konstantin Ritt
a5614264d5 Get rid of QGlyphLayout::advances_y
...and thus consume 4 bytes less per glyph and increase the performance a bit.
It seems, the only CTFontGetAdvancesForGlyphs() returns both x and y
advances, though y advances are always equal to 0 for horizontal
orientation and x advances are always equal to 0 for vertical orientation.

Also, rename `advances_x` to `advances` for consistency
and declare QGlyphLayout's data size in a single place.

Change-Id: I56b20f893f8a6feb7aa870e3edbca99dd93ba2e2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-01-30 12:43:33 +01:00
Laszlo Agocs
dca65cd2bc linuxfb: Report WindowManagement capability as false
Just like eglfs does. This will result in dialogs, like file dialogs,
showing up properly centered on the screen.

Change-Id: I2682c7792e4bc66773e31f602a4bee4cf525a6a1
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2014-01-30 12:43:33 +01:00
Morten Johan Sørvig
1090ee664b Remove duplicate move assignment operator doc
Keep the "since 5.2".

Change-Id: I8cfaf81e0b10f67c084e923f846ce0c722eac7fe
Reviewed-by: Geir Vattekar <geir.vattekar@digia.com>
2014-01-30 10:22:26 +01:00
Liang Qi
595e24fe2d QFileSelector: correct the macro for android platform
Task-number: QTBUG-35073
Change-Id: I50d254ae61dac3cedc11291bd5ed35f9f9447622
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
2014-01-30 08:36:41 +01:00
Mandeep Sandhu
fd5dd27126 Add more specific HTTP error codes to QNetworkReply::NetworkError
A few more HTTP status codes from the 4xx and 5xx series have been
added to QNetworkReply::NetworkError.

For content errors, the following codes have been added:
1. 409 - Resource Conflict
2. 410 - Resource Gone

For server related errors, the following codes have been added:
1. 500 - Internal Server Error
2. 501 - Operation Not Implemented
3. 503 - Service Unavailable

Few of the above codes are quite possible when communicating with REST
based services.

NOTE:
=====
* HTTP error status 400 is interpreted as
QNetworkReply::ProtocolInvalidOperationError.
* QNetworkReply::UnknownServerError is returned for all server related
errors (5xx) not listed above.

[ChangeLog][QtNetwork][QNetworkReply] Added more (specific) HTTP status
codes to NetworkError enum.

Task-number: QTBUG-30880
Change-Id: I9d2a133f6b3869f26710c6eb930dd8b08df31108
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
2014-01-30 07:56:47 +01:00
Konstantin Ritt
b584b6c478 Regenerate the Unicode tables
Change-Id: Ic64cfb1197cae100e3816d0425f11fdd728d0df9
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-29 23:19:55 +01:00
Konstantin Ritt
b80fcbdba6 Introduce QChar::JoiningType enum and QChar::joiningType() method
This aimed to disctinct joining types "L", "T", and "U" from just "U".
Unicode 6.3.0 has introduced a character with joining type "L" and
Unicode 7.0 will add a few more characters of joining type "L", so
we'll have to deal with it anyways.

[ChangeLog][QtCore][QChar] Added JoiningType enum and joiningType()
 method that deprecates the old QChar::Joining enum and joining() method.

Change-Id: I4be3a3f745d944e689feb9b62d4ca86d1cf371b0
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-29 23:19:47 +01:00
Eskil Abrahamsen Blomfeldt
b04d87b226 REG: Fix font matching in FontConfig
Change a4ff400e25 exposed a bug in
the font matching in the FontConfig engine. FcFontMatch is
documented to not work unless you call FcConfigSubstitute()
and FcDefaultSubstitute() on the pattern first. We were neglecting
to do this, but hiding the bug before since we were doing our own
font matching and never reading back the file name from FC's match.
When we started doing this, suddenly DejaVu Sans (for instance)
would match its bold variant instead.

Change-Id: Ie6b7026de24cfb0353dc892fa862d6ee79604f38
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-01-29 21:37:15 +01:00
Allan Sandfeld Jensen
ff70c39ebc Ensure QImage::pixel() on RGB32 images returns valid QRgb values
Currently QImage::pixel() returns the raw underlying pixel values for
RGB32. For all other pixel formats the returned value is either valid
ARGB32 or ARGB32PM.

This patch masks the undefined alpha field in RGB32 so that the return
value is well defined QRgb. It also fixes one test that relied on the
previous behavior.

Change-Id: If37463528268b7419733499d1f7bfd0d1097d21e
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-01-29 19:41:57 +01:00
Frederik Gladhorn
4eea0f1199 Remove unused variable
This fixes clang a clang warning:
src/plugins/platforms/kms/qkmsscreen.h:114:18: error: private field
'm_refreshTime' is not used [-Werror,-Wunused-private-field]
    unsigned int m_refreshTime;
                     ^
                     1 error generated.

Change-Id: I850f676abbde595963373afaf630307042dbf5a7
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2014-01-29 17:11:29 +01:00
Topi Reinio
62feb088a3 qdoc: Never use a collision page as a main QCH landing page
When writing the main/landing page for a documentation set to
a .qhp file, check that it's not a collision page. If it is,
default to 'index.html' instead.

Task-number: QTCREATORBUG-11035
Change-Id: I0269834f6e50fcf5ae779c026263e69e4c3cd7b6
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-01-29 14:15:00 +01:00
Allan Sandfeld Jensen
0226795cf3 Round evenly in INV_PREMUL
Currently INV_PREMUL rounds strictly down. While PREMUL rounds evenly.

This patch adds 0x8000 to the intermediate results in INV_PREMUL before
right shifting, thereby achieving even rounding.

The rounding also makes PREMUL(INV_PREMUL()) into an identify operation,
which means we can safely convert ARGB32PM to ARGB32 and back without
ever losing color details. A test is added to verify this.

Change-Id: I1267e109caddcff0c01d726cb5c1c1e9fa5f7996
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-01-29 08:54:55 +01:00
Friedemann Kleint
fa83803119 QColorDialog: Streamline painting code of QColorLuminancePicker.
Task-number: QTBUG-36078
Change-Id: Iea7dcb1fdae955615345aa835dc0b1a67840f39d
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-01-29 08:22:36 +01:00
Jungo Kim
69bf59ecfd QNetworkDiskCache - fix leak of file descriptor
When the caches is deleted, the open files are deleted without closing action.
The file descriptor is remaining until the process is terminated.

Change-Id: If85519d173d05548ddf3273c85800441887199e2
Reviewed-by: jungo kim <jungo.kim@lge.com>
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
2014-01-29 02:04:09 +01:00
Olivier Goffart
e13b0cc4a0 Fix usage of QObjectPrivate::connect when q_func() is private.
q_func() which is declared in Q_DECLARE_PUBLIC is usually private.
We should use q_ptr directly in QObjectPrivate::connect, otherwise
it does not compile when trying to access the private q_func

Change-Id: I235165a0994327102dbb31c390c2cafdffe806dc
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-01-29 00:18:15 +01:00
Friedemann Kleint
dbda292d2f Windows: Simplify cursor code.
Streamline code, remove unused arrays
(Qt::PointingHandCursor is handled in other switch-clause).

Task-number: QTBUG-36266

Change-Id: I533965ca4910230deefa8150d50b3ac677baaf1a
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-01-29 00:18:15 +01:00
Allan Sandfeld Jensen
85fa39cf79 Document Qt::NoFormatConversion
The Qt::ImageConversionFlag Qt::NoFormatConversion is necessary to
generate QPixmaps not in ARGB32PM which can be useful when not used
as a paint device.

Task-number: QTBUG-36031
Change-Id: Ic2d3ccd59285dd18890f07f3205a2a219ce3aa40
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-01-29 00:18:15 +01:00
Fabian Bumberger
fc24452fbf [QNX] Implement the requestActivate function
This allows manually transferring focus from one window to another, if the
application has focus.

Change-Id: If73ddca6ffbb735eaf4ee9fd322d978f9366fb4c
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-01-29 00:18:15 +01:00
Allan Sandfeld Jensen
433ea5eb0c Fix performance regression in mirroring QBitmap
The recent split of qimage.cpp meant mirror_horizonal_bitmap had
to access the bitflip array using a function call. The function call
was placed in the inner loop, but should have been moved out of the loop
as it can not be inlined.

Change-Id: Id771b2fb7e6c2bfa59670ee96a857a529da13c0b
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-01-29 00:18:15 +01:00
Bernd Weimer
b709d07c34 QNX: Cleanup some issues in QPA
* Avoided crash, if root window is reparented
* Corrected video window name
* Made parent window member private again

Change-Id: Icef9fad5495413e0de87c4366f25dad6c4fd5775
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
2014-01-29 00:18:15 +01:00
Friedemann Kleint
8545ba9366 Fixed Drag and Drop driven by touch-synthesized mouse events.
When dragging by touch driven by synthesized mouse events, the cursor
is suppressed. Use a popup window to show the drag cursor instead.

[ChangeLog][QDrag][Windows] Fixed Drag and Drop driven by touch-synthesized mouse events.

Change-Id: Id8c1aab79a091c89986ee7ee62ded44a3267fd3f
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-01-28 19:33:16 +01:00
Fabian Bumberger
a46198a7b3 QNX: Create the egl context according to the version in QSurfaceFormat
Change-Id: Iee556d51ad1d7db2593e3996da4d90d938d13e17
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-01-28 19:33:06 +01:00
Fabian Bumberger
b8103a4e81 [QNX] Introduce proper screen error handling
This patch adds a new function which does the error handling for libscreen calls.
The patch introduces following changes:
- Libscreen errors will not crash (qFatal)the application any more but rather post a
warning message.
-With the "flush-screen-context" option the screen_context is always
flushed when a screen function is called. This enables better correlation between the
time an error happens and the time it is logged.

Change-Id: Ie2456e5b746dcf917d786f3b832847d2ebbe5f1e
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Roger Maclean <rmaclean@qnx.com>
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-01-28 19:32:53 +01:00
Fabian Bumberger
a4ff400e25 Fix application font removal when using FontConfig
This patch fixes an issue when a font that was added with QFontDatabase::addApplicationFont
can not be removed any more.
The reason for that is that QFontconfigDatabase::addApplicationFont adds the font to the FontConfig
application set from where it cannot be removed any more and is picked up every time the font database is
repopulated (e.g. after a call to QFontDatabase::removeApplicationFont).

This also fixes the QFontDatabase autotest which unfortunately does not fail on linux, because it tries
to add "FreeMono" (which in most cases is already there as a system font). So this patch removes FreeMono and adds
LED_REAL as test font.

Change-Id: I2fa5f4df0ad2099ac28673760ea25234c725dfc6
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-01-28 19:32:40 +01:00
Morten Johan Sørvig
c58c98a248 Cocoa: Silence tablet event warning on 10.6
10.6 sends tablet events for trackpad interaction,
but not proximity events. The reason for this is not
known. The events are discard.

Silence the warning to avoid flooding the console.

Change-Id: I6c215e8c15fc5b4b80e68b00f172121fc4d251b7
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-01-28 14:39:37 +01:00
Friedemann Kleint
68fa04590a Add translator's comments to accessible names of dock widget buttons.
Change-Id: If18126d5b349e072d7057d4e6968d6f91c910c87
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-01-28 13:41:03 +01:00
Friedemann Kleint
97bc287782 QWindowsCursor: Add API for determining the cursor state.
Detect the 'suppressed' state new in Windows 8.

Change-Id: I0faa994aa7b91869cedba36b777b1784818efcce
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-01-28 13:40:55 +01:00
Friedemann Kleint
245e630cfd Windows: Refactor QWindowsOleDropSource.
Introduce a struct CursorEntry for the cursor map which also contains
pixmap and hotspot required for follow-up changes. Streamline code
in createCursors(). Fix cacheKey checks in GiveFeedback() to trigger
for non-zero keys only.

Change-Id: Iafcbfd9ec9e8c6ae8bbaced21667887b10b47f23
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-01-28 13:40:50 +01:00
Friedemann Kleint
df96862ae3 qprintengine_win.cpp: Fix assert when printing with custom page sizes.
Task-number: QTBUG-36348

Change-Id: I57c8905e007ccd9cf558af03f19f2969009b32c2
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: John Layt <jlayt@kde.org>
2014-01-28 13:40:34 +01:00
Rick Stockton
9063edef79 If DblClick, do not deliver 'duplicated' MouseButtonPress
QWidgetWIndow: In Qt4, when Qt created a MouseButtonDblClick
event, Qt would consume the causing MouseButtonPress.
It would send only the derived dblclick event to widget
windows and their children.

This change makes Qt5.3 and higher emulate Qt4 delivery
of double click-related events to widget windows and
their children. QML objects (e.g. mousearea) continue to
receive the second MouseButtonPress.

[ChangeLog][QtGui][QWidget] MouseButtonDblClick: Do not send
the 2nd MouseButtonPress event to Widgets. Restore Qt4
behavior in sequence of mouse events delivered to
widget windows and their children.

Task-number: QTBUG-25831

Change-Id: Iff0f9c592bceacb2ca844d30f8180081e136a889
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-01-27 23:55:12 +01:00
Frederik Gladhorn
c30fc6949a Merge remote-tracking branch 'origin/release' into stable
Change-Id: I4680723bef393a15d5aa63b9dd7d5fbb599bd9fa
2014-01-27 18:58:04 +01:00
Tor Arne Vestbø
ce761f45fe Fix nested template declarations for non-C++11 builds
Change-Id: Ie38aae09033a47106a4a1cf2e9997f90961a4e33
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-01-27 13:16:53 +01:00
Friedemann Kleint
dd921b59ab moc: Make error message 'too many input files' more verbose.
Make it easier to diagnose quoting errors in scripts.

Change-Id: I17894a426faa5cdf50f5ace4ed422ab2bd202558
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-01-27 13:01:48 +01:00
Thiago Macieira
a8f1bd6b65 Fix typo in the function argument of QRect::moveTo: t -> y
Task-number: QTBUG-36259

Change-Id: If6f8da7f36d9a2bc171f2f50d36b37af8f13d8d0
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-01-27 09:51:29 +01:00
Louai Al-Khanji
bd9e1f3915 Improve direct2d backing store implementation
Add a per-window swap chain to a QPlatformWindow subclass instead of tying
it to the backing store. This is needed to support native widgets (as
opposed to alien widgets).

Change the backing store to draw to an intermediate pixmap and flush to
the requested window by using the per-window swap chain. This also opens
the door for faster window presentation later on by using the swap chain
more intelligently.

Also add a changelog entry for the direct2d plugin, which was omitted
earlier.

[ChangeLog][QtGui][Windows]
Introduce experimental direct2d platform plugin for Windows. This plugin
shares most code with the current windows plugin, but substitutes a
direct2d-based paint engine for window backing stores and pixmaps.

Change-Id: I5f54e7e4c1fb15b1639bd26b712fb40ac141e4ac
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-01-27 09:09:13 +01:00
Shawn Rutledge
aac064b1c7 X11: build again on Linux distros that don't have XInput 2.2
fixed1616ToReal is needed by the XI2 tablet event debugging added in
ecf11d62fc, so it needs to be available
if tablet events are supported and XI 2.2 events are not (older Linux
distros).

Change-Id: Id763d585790a9f037abc408dfba4ab5eec6dd421
Task-number: QTBUG-36437
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Wolfgang Bremer <wbremer@blackberry.com>
2014-01-27 08:15:39 +01:00
Kai Koehne
c071b165a3 Doc: Remove section on how build the MySQL driver for MinGW users
The section is clearly outdated. It references MinGW from mingw.org, which
we don't support anymore. With a more modern MinGW you can just use the
recipe to link against the prebuilt binaries the same way we do describe
for MSVC.

Task-number: QTBUG-17268
Change-Id: I15b96fd328605b60d1494a703b9005e2c16aea39
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-01-25 21:34:01 +01:00
Venu
81e69ffdba Doc: Added more information about the WriteOnly mode
Task-number: QTBUG-34336

Change-Id: I4a9995dde400145cb1e33e625715eea8aaed3191
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-01-25 21:33:48 +01:00
Tor Arne Vestbø
690761a74d Enable adding/removing application fonts on iOS
As CTFontManagerCreateFontDescriptorsFromURL is not available on iOS < 7.0
we unfortunately need to fall back to the old behavior of only adding a
single font on older iOS versions.

Task-number: QTBUG-34490

Change-Id: I9c37a5cada067a4ebfaa9f04e7a30d41b8945990
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-01-25 03:04:56 +01:00
Tor Arne Vestbø
c76a6fe2c4 Teach CoreText font db to handle application font files with multiple fonts
The ATS code path already did this, by enumerating all the fonts in the
resolved collection. The CoreText code path assumed that registering a
font URL would only add a single font.

We now use CTFontManagerRegisterFontsForURL to enumerate all fonts
that were added. This functionality is not available for fonts based
on a data provider.

As part of implementing the patch the code was simplified to re-use
logic between the different ways of resolving font descriptors from
a file or byte array.

Change-Id: I6eb15df939d03dc588a87e46f39bd54e56b50643
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-01-25 03:04:49 +01:00
Tor Arne Vestbø
5173589b79 Use shared list of application fonts in CoreText font database
Instead of three separate lists depending on the font type. This
makes enables sharing more code between the different implementations.

Change-Id: If090d1b4a32f035b6344cbadd4c5ba66e0cb99f7
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-01-25 03:04:42 +01:00
Tor Arne Vestbø
af8e2308c9 Fix OS X/iOS SDK macros to be usable in combined expressions
The macros need parentheses around them so that you can use them
as #if A && B without wrapping (A) and (B).

Change-Id: I8a004eb64e8cd3f4fc0370d772565c8d84eb9f7b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-01-25 03:04:29 +01:00
Robin Burchell
a4e703764e evdevtouch: Don't try to keep reading on EAGAIN
This stops touching the screen (and not moving) consuming 80-90% CPU.
The mtdev and non-mtdev codepaths have been separated for additional clarity.

Change-Id: I0559a6bd80dab961fdb4a83ad50860a9aec6445c
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-01-24 20:54:52 +01:00
Laszlo Agocs
a9f59f981d Disable terminal keyboard on eglfs and linuxfb
Unify the behavior for eglfs, linuxfb and kms. The relevant code is
now moved from kms into fbconvenience.

From now on, on all three platforms, terminal keyboard input is turned
off by default. This feature can be disabled by setting
QT_QPA_ENABLE_TERMINAL_KEYBOARD to 1. This is similar to what the
evdev-based keyboard handler did in QWS in Qt4.

[ChangeLog][QtGui] The main Embedded Linux platform plugins (eglfs,
linuxfb, kms) are changed to behave identically with regards to
terminal keyboard input: it is turned off by default on all of these
platforms. If this feature is not desired, it can be disabled by
setting the environment variable QT_QPA_ENABLE_TERMINAL_KEYBOARD.

Task-number: QTBUG-36394

Change-Id: I69e47ed7580464dc5e703e9a0e23891c7c8b7790
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2014-01-24 15:31:51 +01:00
Laszlo Agocs
e02bda2105 eglfs: Fix physical screen size regression for some hooks
On boards that provide their own custom ways of querying the screen size
the resolution of widget apps became somewhat incorrect after the recent
eglfs/eglconvenience refactor. This is because the physical size query
helper was not able to access the screenSize() provided by the hooks,
it was instead falling back to the default fb query which in turn returned
the default screen size (e.g. 800x600).

Change-Id: I46d487b61341d69dd9cb76d93198b1f44b64f195
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2014-01-24 15:20:18 +01:00
Laszlo Agocs
0c01111a80 eglfs: Upload only damaged areas into the textures
Uploading the pixel data for the entire window on every update
is not nice. Not sure why the line in question was added, it is
most likely a leftover from some debugging session.

Change-Id: I161af536c42ac24b299fc674039f2318f0fb8c4f
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2014-01-24 15:20:14 +01:00
Jędrzej Nowacki
ac29884772 Remove invalid comment from qabstractanimation_p.
Change-Id: I4087c80061ad2fd9458730e4e3515eb4695c8b14
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-01-24 15:09:17 +01:00