summaryrefslogtreecommitdiffstats
path: root/src/gui
Commit message (Collapse)AuthorAgeFilesLines
* bmp image handler: check for out of range image sizeEirik Aavitsland2018-09-261-0/+2
| | | | | | | | | | | Make the decoder fail early to avoid spending time and memory on attempting to decode a corrupt image file. Change-Id: I874e04f3b43122d73f8e58c7a5bcc4a741b68264 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 621ab8ab59901cc3f9bd98be709929c9eac997a8) Reviewed-by: Liang Qi <liang.qi@qt.io> (cherry picked from commit 5104a529ce5aea5e94101770ece188b98f20baaa)
* Check for QImage allocation failure in qgifhandlerEirik Aavitsland2018-08-091-1/+6
| | | | | | | | | | Since image files easily can be (or corrupt files claim to be) huge, it is worth checking for out of memory situations. Change-Id: I635a3ec6852288079fdec4e14cf7e776fe59e9e0 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 2841e2b61e32f26900bde987d469c8b97ea31999) (cherry picked from commit f9324103a0f824de2c5243f07a86e7906b8a8ea6)
* Fix crash in qppmhandler for certain malformed image filesEirik Aavitsland2018-08-091-1/+1
| | | | | | | | | | | | The ppm format specifies that the maximum color value field must be less than 65536. The handler did not enforce this, leading to potentional overflow when the value was used in 16 bits context. Task-number: QTBUG-69449 Change-Id: Iea7a7e0f8953ec1ea8571e215687d12a9d77e11c Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 8c4207dddf9b2af0767de2ef0a10652612d462a5) (cherry picked from commit 805dce07b9797f5f2770a9d2c58d6d381784ca25)
* Fix huge painting artefact of certain dashed linesEirik Aavitsland2017-08-221-1/+1
| | | | | | | | | | | | | | | | The artefacts appeared for square-capped dashed pens when the end of the line fell a tiny fraction into the start of a new dash. At that point in the dashing algorithm, accumulated precision errors in the 'length' variable could make it slightly differ from the actual length between the start and end points of the line fragment. Although both values would be "almost zero", the rasterizeLine() function's square capping would make the error very visible; see the bug report. Fix by calculating the precise length of the last line fragment. Task-number: QTBUG-56969 Change-Id: I7b69c0d465649be61fb87ac7b8348f0c299486ee Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 73573fce295caef35da706a8c8c796ec18e6baf1)
* Restore binary compatibility with pre-5.6 qt_handleMouseEventJan Kundrát2017-06-191-0/+6
| | | | | | | | | | | | | | | | | | | An internal, private symbol was changed in beef975f92e42143c464d68afa6b8cd4f7ef7389. However, this symbol was being used by some inline functions in QtTest, and this therefore introduced a BIC. This change simple adds back a symbol with the original signature. I recall seeing this in my own work, and the KDE CI system hits this as well: libKF5KDELibs4Support.so.5.25.0: undefined reference to `qt_handleMouseEvent(QWindow*, QPointF const&, QPointF const&, QFlags<Qt::MouseButton>, QFlags<Qt::KeyboardModifier>)' Task-number: QTBUG-52205 Change-Id: I4e85996850cc436b6a31addca3a8f9829c0c5edd (cherry picked from commit 7f12f94e481d4908ee7b68e2cab8263b7476b054) Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Translate the adjusted deviceWindowRect with an adjusted offsetAllan Sandfeld Jensen2017-06-081-1/+7
| | | | | | | | | | Otherwise the mismatched device pixel ratio will lead to incorrectly offset blitting. Task-number: QTBUG-59017 Change-Id: Iccbe9cd9704bccbceda4c8dafe87435b68b5cf3e (cherry picked from commit dd8313d5be4fe4dd0defdf3eb78e2b47f0e2f20e) Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* HiDPI: Scale mouse position on enter eventBłażej Szczygieł2017-05-221-1/+2
| | | | | | | Task-number: QTBUG-60892 Change-Id: If800ecaadc5b19c10a954658ece484f30b7f313f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit 53335315ff11752dc0f731adb1c2d5a0f6281b25)
* QMatrix4x4: fix aliasing problem in operator*=Marc Mutz2017-04-141-1/+2
| | | | | | | | | | | | When multiplying a QMatrix4x4 by itself, we were clobbering the very matrix we read from. Employ read-caching to avoid this aliasing problem. [ChangeLog][QtGui][QMatrix4x4] operator*=() now calculates the correct result even if the RHS and LHS are the same object. Change-Id: I8534d56cfdd62c336577125127f05173fcec2873 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> (cherry picked from commit 5662234afaf23d88e1f3fa4bee2a59b61bd0c267)
* Fix crash in QWindowPrivate::applyCursor when screen is nullOlivier Goffart2017-03-272-8/+11
| | | | | | | | | | | | | | QWindow::setVisible calls QWindowPrivate::applyCursor without checking if screen() returns null. This patch adds a check in QWindowPrivate::applyCursor that the screen is not null. Now that it is tested there, no need to test it from the other caller (setCursor) This patch should not change behavior of setCursor at all, it should only fix the crash when coming from setVisible Task-number: QTBUG-59528 Change-Id: I06bbdb4e04c02ac840ba637242d1f2cfde5bdd62 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit 5cda0172e0eb912ef4814f3c5618686cbb1a5da1)
* QGuiVariant: fix unintended fall-throughMarc Mutz2017-03-221-0/+1
| | | | | | | | Found by GCC 7. Change-Id: I8a9cca5236f077335031afc90b2683a2846d3b79 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> (cherry picked from commit 8f7776df5e649a99377776d4f2b91c220632f36f)
* Close popups when blocked by modal dialogPaul Olav Tvete2017-03-142-1/+2
| | | | | | | | | Don't block the event that Qt depends on to close popups. Task-number: QTBUG-57292 Change-Id: Ida1f928b81868f68a7b1e19cd0b83485d2a7232e Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 5b65698248325576faa03a2bb78d17349a33a194)
* xpm image format: Reject corrupt images with invalid header infoEirik Aavitsland2017-03-141-0/+3
| | | | | | | | | | The xpm handler did not properly check that the information read from the file header was sane. Task-number: QTBUG-59211 Change-Id: I84099777a16b2b0c473d139f5fdec1d0cb5d515e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> (cherry picked from commit 0d287500be09c800fbcc8f04862d316075ced546)
* Fix documentation typosChristian Gagneraud2017-03-031-1/+1
| | | | | | | | | | | This patch fixes 2 simple typos in QGraphicsItem and QPainter documentation and a copy/paste error between QAbstractItemModel's beginRemoveColumns and beginRemoveRows documentation. Change-Id: I32bdc4dc69154a40fe30a5b8c08d0c3a001853f8 Reviewed-by: Harri Porten <porten@froglogic.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> (cherry picked from commit e3bcab935c9fe37b344394c3ee8afd6773a8cd7e)
* Fix crash for glyphs with height > 128Eskil Abrahamsen Blomfeldt2017-03-031-2/+2
| | | | | | | | | | | | | | | | In fe97ecf408da60931fc49b502a223d59b5f93f99 we added support for arbitrarily sized glyphs, since there is no guarantee that a glyph will fit inside the em square. There was, however, a hardcoded max size in the distance field generator, so for very tall glyphs we could potentially get a crash. [ChangeLog][QtGui][Text] Fixed crash for very tall glyphs Task-number: QTBUG-57241 Change-Id: I0a9afcc6cc3769543390f0f292519a6fe840689c Reviewed-by: Yoann Lopes <yoann.lopes@qt.io> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> (cherry picked from commit 6965b8a59217e5f1db9e5986d6ccc8f5ff5f4e9c)
* PNG image handler: Avoid "invalid distance too far back" errorEirik Aavitsland2017-02-201-0/+6
| | | | | | | | | | | | | | | | For certain slightly miscoded png images, newer versions of libpng will trigger the mentioned zlib error and fail to read the image. This miscoding has until now been safely ignored by all png implementations, so such images exist in the wild, and users expect them to work. Since the cost of the workaround is only a missed opportunity of a tiny saving in memory usage during decoding, enable it. Task-number: QTBUG-58171 Change-Id: I820a9faef6d5b7af79c04404ebdceb48a096f29a Reviewed-by: André Klitzing <aklitzing@gmail.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 33ebe6009872229ceca4171e7e6934f919affc1f)
* Fix clipping error on some RTL textEskil Abrahamsen Blomfeldt2017-02-062-7/+0
| | | | | | | | | | | | | | | | | | | | There was a false assumption that the bidi level of text is only used for visualizing the text, not for calculating its bounding box. But the bidi level is required for shaping (indeed many OpenType rules check for reading direction) and the glyphs used to represent a given text may be different based on its directionality. The effect would be that the bounding rect we calculated for text would sometimes be too small for RTL text, and we would end up clipping pixels. [ChangeLog][QtGui][Text] Fixed clipping errors and too small bounding rects for some right-to-left text. Task-number: QTBUG-48005 Change-Id: I6479384602c69a83686886db9423dacd97942460 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 098d87c63fb638db619808af8b86c043354f62c5) Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Accept all formatting characters as valid inputEskil Abrahamsen Blomfeldt2017-02-061-3/+3
| | | | | | | | | | | | | Amends 7896ae052ad2c0c6ae2ebfc64cc2f525185198a8. The previous change focused only on ZWJ and ZWNJ, but there are many other formatting characters that we need to support and that may be rejected by the German keyboard-hack. This opens up for all characters in the Other_Format category. Task-number: QTBUG-58364 Change-Id: Ifa600c9610e38e71a71c2f668f2f9fcee5230ef3 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 8d752b5151c9890b76d50c4a479ab32dd0eca10c)
* QGradientCache: fix a new/delete mismatchMarc Mutz2017-01-202-10/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit f839f536 fixed a data race in the gradient cache by reference-counting the CacheInfo objects stored in the cache. To this end, QSpanData gained a ref-counted pointer to the CacheInfo whose members it references to keep the object alive for as long as the QSpanData object needs it. However, since CacheInfo is only later defined in qpaintengine_raster.cpp, the counted pointer's payload was chosen as CacheInfo's base class, QSharedData. As it turns out, e.g. in the QPainter test, the data race was real and so QSpanData ends up being the entity that destroys (at least some) CacheInfos, either in its destructor, or in the setup() method. Since QSharedData's destructor is not virtual, and QExplicitlySharedDataPointer<QSharedData> knows nothing of the CacheInfo-ness of its payload, we end up calling the destructor of the base class, and not the CacheInfo one. Fix by using QSharedPointer instead, which stores the correct deleter internally. Ideally, QSpanData would contain a QSharedPointer<const void>, but QSharedPointer's implementation is deficient in that respect and does not compile when instantiated with void, and we can't use std::shared_ptr, yet, so introduce an arbitrary base class, Pinnable, to be used instead. Change-Id: I5573c599d5464278d3a8e4248d887ef9ffcd7b70 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> (cherry picked from commit 7d898ae38e42f44dabcc972ad81cb7f05ecd8ad3)
* Accept ZWNJ, ZWJ and PUA characters in input widgetsEskil Abrahamsen Blomfeldt2017-01-043-2/+162
| | | | | | | | | | | | | | | | | | | | | Private Use Area characters are quite valid input characters when used in combination with a custom font. Joiners also serve an important language purpose in semitic writing systems. Note that there is a hack where we disregard any character produced using CTRL or CTRL+SHIFT specifically because of German keyboards. I have chosen to keep the hack in this patch to limit the change (though I have made an exception for ZWJ and ZWNJ since both are produced using Ctrl+Shift on Windows), but it will probably have to be reverted. [ChangeLog][QtWidgets][Input] Accept characters in Private Use Area, as well as zero-width joiners and zero-width non-joiners in input in QLineEdit and QTextEdit. Task-number: QTBUG-42074 Task-number: QTBUG-57003 Change-Id: Ib2c6329e604f3516b8118f027779284adadfc42b (cherry picked from commit 7896ae052ad2c0c6ae2ebfc64cc2f525185198a8) Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix qdrawhelper function toRGB64Allan Sandfeld Jensen2017-01-031-2/+2
| | | | | | | | | | The function was incorrectly handling green and blue color channels causing them to be dropped. This affects drawing non 32-bit images onto 10-bit per color channels formats such as RGB30. Change-Id: I9211e253b1a9da0dada5c418d592a8f531265989 (cherry picked from commit f882d2f443a8950a2f784fa91b3ff10a645577f7) Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Fix the JPEG EXIF reader to deal with some broken/corrupt filesThiago Macieira2016-11-301-10/+21
| | | | | | | | | | | | | | | We parse the EXIF header in order to get the proper orientation, so let's be a bit more careful in what we accept. This patch adds better handling for reading past the end of the stream, plus it limits the number of IFDs read (to avoid processing too much data) and deals with a pathological case of the EXIF file format: EXIF (due to its TIFF origins) permits the offset to the next IFD to be backwards in the file, which means it could result in a loop or pointing to plain corrupt data. We disallow any backwards pointers, since it seems that's what other decoders do (libexif, for example). Change-Id: Iaeecaffe26af4535b416fffd1489332db92e3888 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* add docs for QPlatformTheme::WheelScrollLines, MouseDoubleClickDistanceShawn Rutledge2016-11-251-0/+7
| | | | | | | These theme hints were added in fac71528 and 4a2e297b respectively. Change-Id: Iffc98db7623e461dcb4f131f14c3ead1a94f4c88 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Add more information for QKeySequence::toString on macOSJesus Fernandez2016-11-221-1/+3
| | | | | | | | | | | | The previous documentation said: "On OS X, the string returned resembles the sequence that is shown in the menu bar." That was not completely true because the string returned depends on the format passed to the function. Task-number: QTWEBSITE-744 Change-Id: I1b7d9367547326670d1b3a8cfe48f066910f5a10 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QXbmHandler: don't construct a QByteArray just to find '0x' in textMarc Mutz2016-11-161-6/+6
| | | | | | | | | | | | | | | | | Even QByteArray::fromRawData() allocates memory. Instead of QByteArray::contains() and indexOf(), use good ol' strstr(), like already done elsewhere in the same function. Apart from the memory allocations saved, this fixes a Coverity error complaining that indexOf() can return -1. It's a false positive on the first occurrence, because we didn't call that function unless we know there is a "0x" in the string, but the second _was_ wrong, because we applied it on a new buffer, with unknown content. Coverity-Id: 11262 Change-Id: I18f352c5576e24f89a5c3ef7f2f1b2176f2a235d Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QCss: Fix parsing of charsetMartin T. H. Sandsmark2016-11-151-0/+1
| | | | | | | | | | | | | | | When including a CSS file in a HTML file sent to QTextDocument, and the CSS file starts with «@charset "UTF-8";», which is the correct way of declaring that, the parsing fails. If you omit the space, like «@charset"UTF-8";» the parsing succeeds, which is wrong. Fix this by expecting and swallowing whitespace after the @charset tokens. Task-number: QTBUG-54829 Change-Id: I32044e8d24bda70c1eb06bf74af50d4cabe2211d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* QXbmHandler: fix missing NUL-terminationMarc Mutz2016-11-151-0/+1
| | | | | | | | | | | | | The buffer is fed into strstr() on the next loop iteration, but strstr() expects a NUL-terminated string. In the equivalent code some lines up, the buffer is explicitly terminated, and we never write the last character of the buffer again, so we'll not fall off the end of the buffer, but if we read less bytes than in the last line, we'll parse garbage from the previous line. Change-Id: I354e1ce1dea71188942305190500b4778a69b4ff Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QFontEngine: Cache whether or not a font can be smoothly scaledRobin Burchell2016-11-153-1/+4
| | | | | | | | | | | This will be used by QtQuick to correct a performance regression introduced by 592614ea3ecd90ede2ae1b8e6579d1b898f474ec -- QFontDatabase::isSmoothlyScalable is quite computationally expensive; and now it is unconditionally expensive regardless of the platform. Change-Id: I82bfa65a963c6c3c276d574f2b379da4a9ba5b69 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Remove unused variable in QIconLoader::findIconHelper()Alexander Volkov2016-11-121-2/+0
| | | | | Change-Id: Idac0b24631187063445ea5acfd078b2479359d52 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Enable GL prototypes with recent Khronos headersLaszlo Agocs2016-11-101-1/+21
| | | | | | | | | | | | | | | | | | | | | | | | Recent Khronos headers decided to break the world by guarding all function prototypes with GL_GLEXT_PROTOTYPES which has traditionally been used for extension headers only. Until this gets corrected - see https://lists.freedesktop.org/archives/mesa-dev/2016-September/128654.html - add the define to the config tests and qopengl.h. While 5.7 already has some of the qopengl.h fixes due to an upgraded ANGLE shipping with newer headers, this is a cross-platform issue that will surface everywhere eventually. Therefore we target the full set of fixes to 5.6. This time we also make sure the forced define of GL_GLEXT_PROTOTYPES is removed before including the ext header, thus apps get the ext protos only if they actually requested them. Task-number: QTBUG-56764 Change-Id: Ib2c6d2e7b71b8fb8683424f43e6289e64e4ee46c Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Don't count no-break spaces as trailing spacesEskil Abrahamsen Blomfeldt2016-11-091-2/+6
| | | | | | | | | | | | | | | | | | | | | No-break-spaces should not be counted in the space data, but rather be treated as any other non-breakable character. We were already taking care of this in the loop we reach if the item starts with a character which isn't whitespace, but there is a second loop for items that begin with whitespace characters. The result of this was that in certain circumstances where you gave the nbsp its own format and made the line wrap, the previous line would count an extra trailing space and it would swallow the first character in its following line. [ChangeLog][QtGui][Text] Fixed a bug where a no-break space would sometimes cause the first character of the containing line to not be displayed. Task-number: QTBUG-56714 Change-Id: Idd760a389052e6de70f6cc397122b217987fa5f2 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Documentation: Specify units for QTextDocument::pageSizeSteve Schilz2016-11-091-0/+4
| | | | | | | | | | | Parameter in setPageSize is QSizeF. Without a specified unit it is hard to know what to use as input. Units depend upon the underlying paint device Change-Id: If001b3e9587d6085cc18017680fa20396e936adb Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Nico Vertriest <nico.vertriest@theqtcompany.com> Reviewed-by: Steve Schilz <sschilz@pasco.com>
* Cocoa: Make child window cursors work correctlyMorten Johan Sørvig2016-11-081-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The existing cursor logic had a couple of issues: - It made the faulty assumption that we could not use the NSWindow invalidateCursorRectsForView API for child NSViews. - It used NSWindow invalidateCursorRectsForView and NSView resetCursorRects. This API has been replaced by the more general NSTrackingArea API. - It did not implement falling back to the parent window cursor if the current window has no cursor set. Document that QWindow cursors work the same way as QWidget cursors in that a QWindow with no set cursor will fall back to the parent window cursor. Change the cocoa platform code to use NSTrackingArea exclusively and implement NSView cursorUpdate which sets the cursor. Handle immediate change on QWindow:: setCursor() manually. Add QWindow::effectiveWindowCursor() and applyEffectiveWindowCursor() which finds the correct window cursor. Add a manual test for the child window, child widget, and QWidget::createWindowChild cases. Task-number: QTBUG-33479 Task-number: QTBUG-52023 Change-Id: I0370e11bbadb2da95e8632e61be6228ec2cd5e9d Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Prevent stale QOpenGLContext fbo pointerMorten Johan Sørvig2016-11-082-1/+7
| | | | | | | | | | | | | | | | There is logic for clearing the qgl_curent_fbo pointer in release(), but it is not always called, causing the pointer to become stale on QOpenGLFramebufferObject deletion. As a last resort, clear the qgl_curent_fbo pointer on the current context if it’s pointing to the object that is being deleted. Change-Id: I36cca511da295412332193524219e32607ef8261 Task-number: QTBUG-56639 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Only turn off font hinting when scale is != 1Paul Olav Tvete2016-11-081-2/+4
| | | | | | | | | | KDE will set the screen scale factors to 1 by default. Make sure we don't turn off font hinting in that case. Task-number: QTBUG-56797 Change-Id: Ieab18a7cfe4c1cb7087caab4d881932a4a991bc8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Fix GCC warning about ODR violationThiago Macieira2016-11-031-3/+3
| | | | | | | | | | There are two enums called "Operator" qdrawhelper_p.h:201:8: warning: type ‘struct Operator’ violates the C++ One Definition Rule [-Wodr] qopengl.cpp:138:6: note: a different type is defined in another translation unit Change-Id: I09100678ff4443e6be06fffd1482da1f636614b7 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Fix tiling on a width over 2048Allan Sandfeld Jensen2016-11-031-3/+9
| | | | | | | | | | The blend_tiled_argb and blend_tiled_rgb565 was not correctly handling widths larger than the buffer size. This patch adds the same pattern used in blend_tiled_generic, which worked correctly. Change-Id: Ie22c2a21d96cb0477cd0990bf01451ab907a4768 Task-number: QTBUG-56364 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Add QPixmapIconEngine::pixmap pointer checkJesus Fernandez2016-11-021-1/+1
| | | | | | | | | | | | Dereference after null check (FORWARD_NULL)5. var_deref_op: Dereferencing null pointer pe. pe pointer it's being checked at the beginning of the function so it implies pe might be null. Coverity-Id: 11106 Change-Id: Ie88b27877a46cdd20a317fb5e21c3fdec1b99dda Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Compilation fixVyacheslav Koscheev2016-10-271-1/+1
| | | | | | | If qreal is float, then android-clang compilation was breaking here Change-Id: Ieccc357ecbbea5cbb22a5808dd0791795240a985 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Document qGuiApp and tweap qAppAlbert Astals Cid2016-10-261-0/+10
| | | | | Change-Id: I2cd865da0e081251a2702c11cb83dde35444693a Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Android: Fix synthesized oblique for non-latin scriptsEskil Abrahamsen Blomfeldt2016-10-261-9/+10
| | | | | | | | | | | | | | | | | | | | In 5e3e34731b7880ac775e8f1fa156ce016e6820f1, a default implementation of QPlatformFontDatabase::fallbacksForFamily() was added, but this implementation included only the fonts with a matching style in the returned list. The result of this was that if a font face for a specific language did not have e.g. an italic font, then we would show missing glyph boxes instead. On Android, it would be impossible to show any italic text in Chinese, Japanese, Hebrew, or Arabic. [ChangeLog][QtGui][Text] Fixed synthesized oblique for non-latin text on platforms using the basic font database, such as Android. Task-number: QTBUG-51223 Change-Id: I494d8ad87292b65d4380a2e600c1c0dc7fc8f937 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* iOS: refactor usage of photos into optional pluginRichard Moe Gustavsen2016-10-261-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Starting from iOS 10, apps that tries to access photos on the device need to specify the reason for this up front by adding the key 'NSPhotoLibraryUsageDescription' into Info.plist. If the key is missing, the app will be rejected from AppStore. This causes problems for the iOS plugin as it stands since parts of it already tries to access photos, e.g to show an image picker dialog if a file dialog is set to open QStandardPaths::PicturesLocation. This means that currently, all apps written with Qt will be rejected from AppStore unless the developer adds this key, whether he tries to access photos or not. To solve this, we choose to split the plugin into two parts, one that contains the core functionality, and one that contains optional support. The latter will need to be enabled explicit by the developer in the pro file, or in this case, indirectly by adding the right key to the Info.plist. This patch refactors the code in the plugin that gives access to photos into a separate optional plugin called 'nsphotolibrarysupport'. Change-Id: Ic4351eb0bbfffdf840fd88cd00bb29a25907798f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Don't claim all fonts are smoothly scalable on WindowsEskil Abrahamsen Blomfeldt2016-10-241-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | Since 40ebda3efbcf00c3393cb70c9eee203c68a57311, bitmap fonts are detected as smoothly scalable on Windows. While the fontsAlwaysScalable() does say whether or not the font engine can rasterize the fonts at any size, it does not determine whether or not the result is "attractive" as the documentation for isSmoothlyScalable() says. Only outline fonts are smoothly scalable, and this fact is used in Qt Quick to determine whether we can use the distance field renderer for the font or if we have to fall back to the native renderer. The consequence was that the fonts were no longer usable in Qt Quick. We also need to revert the optimization for isBitmapScalable() since there a font that is smoothly scalable should not be identified as bitmap scalable (basically this means: Font is not smoothly scalable, but it can be scaled with bitmap scaling artifacts). [ChangeLog][QtGui][Text] Fixed a regression where raster fonts on Windows were detected as smoothly scalable and thus rendering with said fonts in Qt Quick would break. Task-number: QTBUG-56659 Change-Id: Ia7db6fee8249aca347233a488388be5c3a00c2df Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix when calling QSurfaceFormat::setDefaultFormat before Q*ApplicationKai Koehne2016-10-211-4/+8
| | | | | | | | | | Fixes a regression introduced in commit 51767affb. QOpenGLContext::globalShareContext requires a QGuiApplication to exist. This wasn't required so far. Task-number: QTBUG-56614 Change-Id: I07bcf434fca536c4dc50feee7ea17eb541fd589a Reviewed-by: Liang Qi <liang.qi@qt.io>
* QImage: cache colortable sizeMarc Mutz2016-10-211-2/+2
| | | | | | | | | | | | | | | | | | | | Coverity threw an error that in the else branch, the expression colorTableRGB16[tableSize - 1] accesses uninit'ed data. The working theory is that it fails to perform the implication isEmpty() → size() == 0 This patch, therefore, checks for size() == 0 instead of isEmpty(), which is hardly less readable and might help Coverity understand the code better. Then again, Coverity might not understand that the tableSize can never be negative. If that's the case, another patch will be needed, but let's try the simpler solution first. Coverity-Id: 11420 Change-Id: Ibfe2a798c55af95c8001fa909aa94a6c5bc7c647 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* PDF: Handle monochrome images correctlyAndy Shaw2016-10-192-5/+10
| | | | | | | | | | | When an image is considered to be monochrome then it should not be making the white part of the image transparent, the colors should be kept as is. Task-number: QTBUG-56489 Change-Id: I3621ca7be2a0ebe6852363f860c0b3de28d28a31 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Don't crash while parsing malformed CSSSérgio Martins2016-10-191-2/+7
| | | | | | Task-Id: QTBUG-53919 Change-Id: I31a0e218e4e41ee217f8f87164f115450d69d42c Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Document QClipboard::mimeData can be nullAlbert Astals Cid2016-10-191-2/+3
| | | | | | | The current wording (reference) seems like it's always a pointer to valid stuff Change-Id: I2a9f8bde7d2ba672e4e664ff731a3272a6deaaaa Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Fix QtGui compilation without OpenGLhjk2016-10-161-0/+2
| | | | | Change-Id: I2a9f8bde7d2ba672e4e664ff731a3272a6def516 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Unset qgl_current_fbo when the default FBO is boundAlexandru Croitor2016-10-131-0/+1
| | | | | | | | | | | | | | | | | | | Previously when a new QOpenGLFramebufferObject was bound, the QOpenGLContextPrivate::qgl_current_fbo member was also updated to point to this new object. But if a user called QOpenGLFramebufferObject::bindDefault(), qgl_current_fbo was not unset, meaning that if the FBO object would be deleted at some point, qgl_current_fbo would be a dangling pointer. This patch makes sure to clear the value of qgl_current_fbo when bindDefault() is called. It is cleared, and not set to point to another object because the default platform OpenGL FBO is not backed by a QOpenGLFramebufferObject. Task-number: QTBUG-56296 Change-Id: I68b53d8b446660accdf5841df3d168ee2f133a90 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Show warning when setting new default QSurfaceFormatAlexandru Croitor2016-10-131-0/+6
| | | | | | | | | | | | If a global shared context is created, and afterwards a new default QSurfaceFormat with a different version or profile is set, it can lead to issues with context sharing. The documentation for QSurfaceFormat::setDefaultFormat mentions this. It would be helpful to actually show a warning in case it happens. Change-Id: I71f7ce95496e1ecbfc6a0c7d7bed146ef8dc351e Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>