Commit Graph

27674 Commits

Author SHA1 Message Date
Maurice Kalinowski
a75cfa60d7 winrt: Fix crashes for visible window management
First, offscreen windows/surfaces should not be tracked in the visible
window list.
Secondly when destroying a window, it is not guaranteed that it had been
removed first, hence enforce it to guarantee that the visibleWindows
list stays correct and does not hold invalid weak pointers to non
existing windows.

Change-Id: I7027ecd010b8bcb3d05e3f5d460662e883e42e50
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-08-18 14:04:36 +00:00
Maurice Kalinowski
0f6ace8118 winrt: Fix crash when managing multiple top-level windows
When a window gets removed, the active focus window needs to be set to 0
instead of the the current window. Otherwise
QGuiApplicationPrivate::focus_window is set to an invalid pointer and
crashes when dereferenced.

Change-Id: I258b95e447de4cbfb7f19955079c2545a738e03f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-08-18 14:04:29 +00:00
Morten Johan Sørvig
960a1e3bf3 QTestLib: Disable window state restore on macOS
For test runs we want to start with a clean slate
and ignore previously saved window state.

This also prevents the “previous restore failed” dialog
from from showing and blocking the test run.

Change-Id: I8e5b87a903cf1d937d628c2b062f917c4c37f176
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-08-18 08:46:25 +00:00
Allan Sandfeld Jensen
748aa6b064 Do not disable subpixel rendering on compile time
This is a runtime setting, as the user's freetype version can differ from
the developer's, and freetype already safely handles it internally when
not available.

Task-number: QTBUG-55345
Change-Id: I26e73728196d60ae26e5f1919ecd0dadac393890
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-08-18 06:11:02 +00:00
Gabriel de Dietrich
b13ff07f1d QCocoaInputContext: Fix wrong memory release
As per Core Foundation ownership conventions, we
should release 'source', which is a copy, and not
'langRef', which is a reference. This has shown
to lead to crashes in some occasions.

Change-Id: I2e59b8d62aac13bc60dc013c1ea621850132c719
Task-number: QTBUG-48772
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-08-18 02:23:05 +00:00
Dyami Caliri
ecb73a7bb3 QJsonValue: use Q_NULLPTR instead of 0 in ctor
Use Q_NULLPTR in all public headers

Task-number: QTBUG-45291
Change-Id: Ib294deb3c210a9a186448cbf9656af7a09fea2c1
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-08-17 19:54:40 +00:00
Gabriel de Dietrich
9b491616f8 Cocoa QPA Menus: Propagate enabled state downwards
NSMenu has autoenableItems set to true by default, and
we keep it this way in Qt. This means that NSMenuItem's
enabled property is basically ignored and therefore
QCocoaMenuItem::syncModalState() is wrong.

What is also wrong, is syncModalState()'s name in both
QCocoaMenuItem and QCocoaMenu. Indeed, this function's
role should be to ensure that the enabled state is
properly propagated down the menu hierarchy, whether
the reason is being in the context of a modal dialog
or the parent menu having been disabled by the app.
Notice that the latter case is specially needed when
a menubar menu is explicitly disabled.

Therefore, we introduce a separate flag for the parent
enabled state in order to avoid polluting the app-set
enabled state flag. This is done in both QCocoaMenu
and QCocoaMenuItem.

In the case of QCocoaMenuItem, these two flags define
whether an NSMenuItem is enabled state conjointly, and
set from -[QCocoaMenuDelegate validateMenuItem:]. The
rest of the logic remains as before. Similar logic is
used in QCocoaMenu::isEnabled().

In addition, the presence of the second flag allows us
to show disabled submenus in the same fashion native
Cocoa applications do. This means, the submenu item
itself remains enabled, allowing to show the submenu
popup where all its menu items will appear disabled.

Bonus change: merged all the bool flags into a bitfield
and made the compiler happy about the ivar reordering
in QCocoaMenu and QCocoaMenuItem's constructor.

Task-number: QTBUG-54698
Task-number: QTBUG-55121
Change-Id: Ie156cb3aa57a519103908ad4605f7b43c57e5aef
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-08-17 18:21:53 +00:00
André Klitzing
810363945f Update PCRE to 8.39
Change-Id: I619ef88ea05a6bcfb6908dc18d9de7daa9113392
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-17 17:33:21 +00:00
Eskil Abrahamsen Blomfeldt
ec7fee968f Support stretch when using DirectWrite font engine
The DirectWrite font we get when converting the GDI font
does not respect the stretch we have set, as this is an attribute
of the text layout in DirectWrite and not the font description.

To compensate for this, we scale advances and glyphs in the
engine if the stretch is different from 100%.

[ChangeLog][QtGui][Windows] Fixed stretch when combined with either
no or vertical hinting preference or a device pixel ratio different
from 1.

Task-number: QTBUG-54494
Change-Id: Icc06d1457191782d1a281c99da2da3081a82c542
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-08-17 13:15:26 +00:00
Allan Sandfeld Jensen
0d99452339 Protect QImage::convertToFormat against null QImage
QImage may have a null d-pointer, and convertToFormat_helper was the
only method not protected against it.

Change-Id: Ibfe5b139e3922f2a0c8284c6ae1932c2150efc66
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-08-17 12:54:05 +00:00
Andy Nichols
2b0e52757c Disable switchable widget compositing when using XCB in Parallels VM
The Parallels 3D hardware acceleration does not seem to play nice with
Qt Creator when switching between tabs that have OpenGL Qt Quick Content
and those that have just raster widget content.  QWidgetBackingstore has
the ability to switch how content is flushed depending on if the
SwitchableWidgetComposition capability is available.  Previously for XCB
it was always enabled, but should be disabled when using the GLX
integration for the Parallels VM.

Change-Id: I42e41456e0873f6780f5d0333dbfaaf8fcce4a5e
Task-number: QTCREATORBUG-16742
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-08-17 12:22:57 +00:00
J-P Nurmi
ed4cd363b1 Fix missing qmlplugindump_wrapper.sh (debug_and_release)
qtPrepareTool() must be called outside a build pass, as it protects
against concurrent wrapper creation by omitting it during build passes.

Change-Id: I7cf080cf78d1099e4893a204ea40d8c6bc63af58
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-16 18:18:01 +00:00
Friedemann Kleint
cb08543c18 ~QGraphicsProxyWidget: Remove event filter on widget before deleting it
Prevent events being received on the widget during its destruction
phase.

Task-number: QTBUG-55112
Change-Id: I0d990fc69eee06b7e5af3845aa3f7627e3e3d5b9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-08-16 13:51:24 +00:00
Friedemann Kleint
ff68be114e Fix documentation of the Windows parts of QSettings::setPath()
Explain in terms of CSIDL_ values and update the sample locations.

Task-number: QTBUG-55065
Change-Id: I15ddf32555d43cffae66d98c6ac12d62a98d5e6d
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-08-16 13:51:16 +00:00
Marc Mutz
6d95497931 QLinkedList: compile with -Wzero-as-null-pointer-constant
The existing header check unfortunately doesn't detect uses of
'0' as nullptr in template code.

Task-number: QTBUG-45291
Change-Id: Ibe701402d95deca98c5286e2cee5f7118fd7f606
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-08-16 13:36:15 +00:00
BogDan Vatra
27a0ec9b9a Revert "Android: use gold linker"
It seems there is a configure test which should enable it.

This reverts commit 7e4f0ad961.

Change-Id: I39c594e5e779732d2f5954b42e266a1eaa1be3f0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-16 13:31:38 +00:00
Friedemann Kleint
cc517d7cd9 QWindowsServices::openUrl(): Don't convert URLs with fragments/queries to local files
Pass the URL instead.

Task-number: QTBUG-55300
Change-Id: I4ce9171db5c1a9e07b17911729b165c115329664
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-08-16 04:49:20 +00:00
Alexander Volkov
17d68c4fc3 Restore documented behavior for the WA_X11NetWmWindowType* attributes
Use QXcbWindowFunctions::setWmWindowType() to add the corresponding
types to the window's _NET_WM_WINDOW_TYPE X11 window property.

Change-Id: Ia2413ad7a69ab8d49b448de11dd07c77101a564c
Task-number: QTBUG-39887
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-08-15 15:08:51 +00:00
Laszlo Agocs
5178773f11 xcb: Add qt.qpa.input.events and guard mouse event logs too
Make mouse behave like touch and scrolling does: only do
high frequency qCDebugs when the category is enabled.

Switch over mouse, touch and scroll event logging to a new
sub-category: qt.qpa.input.events. This way qt.qpa.input
in itself behaves sanely on xcb, similarly to f.ex. eglfs,
giving only the basic, but important info.

Change-Id: I8dd588e72ae9d1c66096489fa3c5291f6d318ca0
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2016-08-15 14:04:04 +00:00
BogDan Vatra
7e4f0ad961 Android: use gold linker
Change-Id: Ie09430cd02d431abc33af2ea79606f43882b7ccd
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-08-15 13:31:08 +00:00
BogDan Vatra
f78044c0a4 Android: Use -gcc-toolchain for clang linker command
Change-Id: I0434d806dd9dafa12186c989e3b11964e41487fe
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-08-15 13:30:58 +00:00
Eirik Aavitsland
bc60216945 Remove unneeded dependency on Qt widgets
Widgets module is no longer required. Removing it allows this test to
be run with a qtbase configured with -no-widgets, which saves
compilation time.

Change-Id: Id99d3f25cd7b227aa81e1cf1ac7b6fd5227ac4c4
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-08-15 08:40:54 +00:00
Eirik Aavitsland
b674d0d5cc Fix rendering error in some animated gifs
The code for handling of the rarely used "restore to previous" frame
disposal option would mistakenly clear the entire existing frame. It
looks like this was a copy/paste mistake in the code; the intention
obviously was to clear the newly created backingstore instead.

This fixes the rendering of
http://media1.giphy.com/media/9Jevgp0CgvAnm/giphy.gif

Task-number: QTBUG-55141
Change-Id: I4d344b7733edd62346656154e215c21727f9b6bb
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-15 08:40:36 +00:00
Alessandro Portale
d9e66f63a9 Updated Qt logo for the "About Qt" dialog
The Qt logo has changed (see http://brand.qt.io/ ) but it had not been
updated in the QMessageBox::aboutQt dialog, yet.

Task-number: QTBUG-55137
Change-Id: I81431e44efe65f576e62b92214aa835b82675d00
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-08-12 13:51:27 +00:00
Liang Qi
6888537892 Fix typo in QKeySequence doc
Task-number: QTBUG-55181
Change-Id: I70615a2b4b026a83f506df928a79c9e60543e655
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2016-08-12 13:29:35 +00:00
Mitch Curtis
a24c630990 Fix grammar in QToolBar docs
Change-Id: Ibc65fd7c95246c7b7e38fd7f0d16d83d7c3301d9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-08-12 12:15:23 +00:00
Frederik Schwarzer
b6fb349ad5 Fix typo (word repetition) in documentation
Change-Id: I1c8785e39f28f94846126fc45b875e6425a4ce12
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-08-12 10:41:53 +00:00
Richard Moe Gustavsen
87b256c435 iOS, mkspec: remove faulty SDK check
We used to check if the SDK used by a project is less than 8.0 and error
out if so. The intention of the test was to avoid a situation where a
project is built with an SDK that is older than the one used to build Qt,
but this was obviously bogus, as Qt could have been built with a newer SDK
than the oldest supported one. Also, 8.0 has been outdated for quite a
while.

On top of that, the check failed now that the major iOS version has two
digits.

So let's remove the check for now, until we can handle this in a better
way.

See QTBUG-37592.

Change-Id: I6106b9521b5d47d9906d4db30c2ffa21794bc307
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-12 09:18:14 +00:00
Richard Moe Gustavsen
c98ad6041a ios_destinations.sh: ignore devices that are marked as placeholders
When xcodebuild in Xcode 8 beta dumps out the available
destinations, it prints an extra section called 'Ineligible
destinations for the "tst_someTest" scheme'.

Those destinations doesn't contain valid ID-s for the script to
use, which will result in "make check" failing.

This patch will filter out devices that are marked as placeholders.

Change-Id: I88a25b7307e21b76c6f7764a82f67627aae8f02f
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-08-12 09:18:05 +00:00
Simon Hausmann
98c7997274 Add missing \l to create link to QString in the docs
Change-Id: I980da5cd47ebc62d0b2f028b79b331b87d07e070
Task-number: QTBUG-55258
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2016-08-12 09:16:50 +00:00
Topi Reinio
a825e1ed0d Doc: Fix incorrect arguments in QTableWidget::setCellWidget() snippet
Task-number: QTWEBSITE-722
Change-Id: I15fc2b3e035c48272bbd00edbf227ef5a942597f
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2016-08-12 08:30:48 +00:00
Topi Reinio
a2ae631c04 Doc: Change instances of '(Mac) OS X' to 'macOS'
As of version 10.12 (Sierra), the name of Apple's desktop operating
system will be macOS. Change the occurrences where the Mac platform
is discussed to use a macro \macos, which expands to 'macOS'. This
helps with adapting to future renaming.

Update the instructions on mac-specific Q_OS_* macro usage.

Add a \target for the old 'Qt for OS X' topic to keep links working
for other documentation modules that try to link with the old name.

Change-Id: Id33fb0cd985df702a4ae4efb4c5fd428e77d9b85
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2016-08-12 08:30:29 +00:00
Marc Mutz
c38ac3dab8 tst_QStringListModel: don't leak memory when tests fail
Simply allocate objects on the stack instead of the heap.

Change-Id: Ic047d78e49668878821cce1c8ab599a8551b6476
Reviewed-by: David Faure <david.faure@kdab.com>
2016-08-12 08:28:07 +00:00
Marc Mutz
b57f743c46 QStringListModel: fix dataChanged's roles parameter
In QStringListModel, the display and the edit roles are synonyms,
so when one is changed, the other changes with it. However, in
setData() we only emitted a vector with just the role that was
passed in by the user.

Fix by always passing both roles, regardless of which one was used
to set the data.

Change-Id: I498e7cb33796fae266901817b01ad85d861d4bb4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-08-12 08:27:53 +00:00
David Faure
4e24ff2e68 QCommandLineParser: call qCoreApp post routines before ::exit()
This gives a chance for some cleanups at least.

Change-Id: I3a628e32c6fc8c7fa00943769210c517005f2a0a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-08-12 08:26:59 +00:00
Gabriel de Dietrich
4c002a8343 Cocoa: Update deprecated dragging session APIs
Change-Id: I06e2dd3861c4bc5d85421ac71daf188732279e77
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-08-11 17:24:16 +00:00
Gabriel de Dietrich
23ea54d861 Drag and Drop: Don't let Cocoa override proposed actions
When pressing the Command key, or any other modifier key,
Cocoa will filter whatever the application has set in the
QDrag object. However, Qt is already taking all this into
account, so we should not let yet another voice chime in.

Task-number: QTBUG-55177
Change-Id: I7c56e72d846d10cdfc132776bdfdd6b79799bcff
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-08-11 17:24:04 +00:00
Fredrik Orderud
b6f5b38f8c Define _WINDLL when building a DLL
Visual Studio automatically defines _WINDLL when building a DLL,
regardless of project settings
(https://msdn.microsoft.com/en-us/library/8x480de8.aspx). This define
is therefore widely used to detect DLL vs. static library or executable
build target on Windows.

For makefiles, _WINDLL need to be manually defined, which QMake failed
to do so far.

Task-number: QTBUG-55183
Change-Id: Ic62201666c44e730e6881706d568ce9eaf22b7a4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-11 09:57:00 +00:00
Sérgio Martins
0681e60380 Cache the current QOpenGLFramebufferObject
This doesn't cover FBOs bound directly with glBindFramebuffer(),
but it's perfect to create a fast path for code we know uses QOGLFBO,
thus avoiding expensive glGetIntegerv() driver calls.

The use case is to use this in QSG24BitTextMaskShader::activate(), where
we need to check if the current FBO is sRGB capable.

Change-Id: I434eeeb7e6a3d16be9327315536ad7280245085d
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2016-08-11 08:28:36 +00:00
Topi Reinio
fbc9edb5e7 Doc: Fix typo in the Semaphores Example
Change-Id: I140915014836a3bbc449c953aa54452483b0b886
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2016-08-11 08:27:36 +00:00
Edward Welbourne
6c473b7e08 QDateTimeParser::getAmPmText() use QLocale instead of tr()
I am not convinced toUpper/toLower is a generally sound solution here;
however, QLocale doesn't make the upper/lower case distinction this
parser does and a bug report shows tr() isn't doing an adequate job.

Task-number: QTBUG-47815
Change-Id: Iaf654d1d76d4c38d74fc647e168d50debb924a8f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-08-11 08:12:04 +00:00
Marc Mutz
3b0ea78603 tst_QSslSocket::setLocalCertificateChain(): fix resource leak when test fail
The deleteLater() call wasn't reliably reached when tests fail,
so use a QScopedPointer with QScopedPointerDeleteLater deleter.

Change-Id: Ica73bc73c2a0ac1e9b77e4804f2aedcad9b662a0
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2016-08-11 04:34:19 +00:00
Marc Mutz
08a3a52958 Remove ~tst_QImageWriter
The test no longer writes to SRCDIR, so don't try to remove
generated files from there, either.

Amends bb5570082e.

Change-Id: I1d5df88b1865f3dbd914ec71147de61e173f2f4e
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-08-11 04:34:14 +00:00
Marc Mutz
e7183f26f1 AtSpiAdaptor: fix 'defined' field in GetAttributeValue
Value was inverted.

Found by own code review.

Change-Id: I2027d97e1f9d52f6d79fb72ecad9ee2034f9af25
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-08-11 04:34:09 +00:00
BogDan Vatra
23ac125bcb Android: don't wait if the event loop is stopped
QAndroidEventDispatcherStopper is stopped when the application is in background
and the user uses the task manager to kill the task. If the application has
services the task manager doesn't kills it,  but instead it tries to gently
terminate the activity. The problem is that the activity is still backgrounded
(meaning that the Qt event loop is freezed), therefore terminateQt will hang.

Task-number: QTBUG-54012
Change-Id: I6e333cbcaf41e9e298eeb8b2b0bc3adcf446783f
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
2016-08-10 14:20:01 +00:00
Jędrzej Nowacki
25b72a63ff Fix memory leak in tst_qgraphicsproxywidget
QStyle was created but never removed

Change-Id: I55011377afd475af28e4ce2cf657e435dd37c96a
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-08-10 11:06:31 +00:00
Friedemann Kleint
885720aa1b Update logo icons in icons example
Task-number: QTBUG-55137
Change-Id: I51a16a40112f5f5bbea00540178999382752a6f2
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-08-10 10:43:05 +00:00
Maurice Kalinowski
91be1f1b04 win: Disable warning about deprecated ATL modules
This warning has been introduced by VS2015 Update 3 and is not in our
control as the warning happens inside the system headers. To keep the
compile output clean, disable this warning.

Change-Id: I96253538c6d6774bb91cd5a4ea80dda2910e74b5
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-08-10 10:35:28 +00:00
Laszlo Agocs
c6cfa2270b evdevtouch: Avoid crashing on exit
26238aca8c causes double deletion of the
QTouchDevice in case the post routine already cleaned up the list by the
time the touch handler gets to do it.

Just check the list of devices to see if the one we hold is still there.
If not, the pointer is likely to be a dangling one so do nothing.

This will avoid dying with bus error or similar on application exit.

Task-number: QTBUG-51562
Change-Id: I50c1edee7405aad308274538219698388c2cc9f9
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-08-10 10:23:02 +00:00
Gabriel de Dietrich
89d7c904e5 QTabBar: Cache title text sizes
The first part adds QTabBarPrivate::initBasicStyleOption()
which is basically QTabBar::initStyleOption() but
without the expensive QFontMetrics::elidedText() call.
That is because QTabBar::tabSizeHint() would call
initStyleOption() and then immediately discard the result
of that computation.

Then, QTabBar::tabSizeHint() is modified to cache the calls
to QFontMetrics::size(), which is also expensive. The cache
is invalidated when the style or the font changes, or when
the elide mode is set.

Change-Id: I591b2e401af3576a2ebabc5b94f19ae157e28cf2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Wayne Arnold <wayne.arnold@autodesk.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-08-10 01:04:53 +00:00