summaryrefslogtreecommitdiffstats
path: root/src/gui
Commit message (Collapse)AuthorAgeFilesLines
* Fix crash in optimized solid fills on RGBA64PMAllan Sandfeld Jensen2019-08-141-1/+1
| | | | | | | Was expecting destStore64 to be non-null. Change-Id: I4fc827256630a35e0669d405c04f9b5b7e71580e Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.12' into 5.13"Liang Qi2019-08-127-40/+91
|\
| * Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-08-127-40/+91
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config.tests/arch/write_info.pri Repair architecture config test for the WASM_OBJECT_FILES=1 build mode configure.pri tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp Done-With: Jörg Bornemann <joerg.bornemann@qt.io> Change-Id: I9e12088356eb5bc65b53211cd7a8e330cccd1bb4
| | * Add nullptr guard to QHighDScaling::scaleAndOrigin(QPlatformScreen *)Morten Johan Sørvig2019-08-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Commit b6ded193 added an unconditional dereference of the platformScreen pointer, for calls where nativePostion is non-nullptr. Change-Id: I4a6fbbd0337f91d4fcb76c17b4dc60e1b9ad10ed Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| | * Refactor lockedAlphaMapForGlyphLars Knoll2019-08-083-38/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simply return a Glyph pointer and not a QImage to avoid allocating and deleting lots of d pointers for QImage when drawing text. Saves one new/delete pair per glyph drawn and speeds up text drawing by 10% for relatively large glyphs (probably more for smaller ones). The qtext::paintLayoutToPixmap() benchmark shows a 16% improvement in performance with this change. Renamed the method to glyphData(). Change-Id: I7a353de521e4f4321c770fb1ac6043d33f6f332c Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
| | * Add attribution for AGLFNEskil Abrahamsen Blomfeldt2019-08-082-0/+43
| | | | | | | | | | | | | | | | | | | | | | | | We were missing attribution for the AGLFN tables. Task-number: QTBUG-70968 Change-Id: Ib84cbd25c9f7c49611761c9eba16624de5b77dd2 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * Fix crash in QTextDocument::clearUndoRedoStacks()Eskil Abrahamsen Blomfeldt2019-08-081-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When calling QTextDocument::clearUndoRedoStacks() with UndoStack, there were two bugs: The first was that we were retrieving the item at "undoState" and deleting this. This is actually the upper limit of the for loop. If the stack does not contain any redos, then it would be == undoStack.size() and we would assert. If there were redos, then we would delete the item at undoState multiple times (actually undoState times). In addition, when the loop exited, we first removed the dangling pointers using remove() and then there was a weird resize() to the new size minus the old undoState. This would either assert because we tried to resize to a negative number, or it would arbitrarily remove items from the stack. [ChangeLog][QtGui][Text] Fixed a crash bug in QTextDocument::clearUndoRedoStacks(QTextDocument::UndoStack). Task-number: QTBUG-69546 Change-Id: I8a93e828ec27970763a2756071fa0b01678d2dcd Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | | doc: Fix QImage Format_RGBX64 documentationSamuel Gaist2019-08-111-1/+1
|/ / | | | | | | | | | | | | | | | | The current explanation refers to itself rather than Format_RGBA64. This patch fixes that. Change-Id: Idc4c44ca71813ea2bdddba0c936f772cb7091ca8 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-08-084-4/+11
|\| | | | | | | Change-Id: I4c0fd501db974fb8339944b8df845336776d80a9
| * eglfs: Fix raster windowsLaszlo Agocs2019-08-074-4/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also sanitize the initial WebAssembly hack. Both eglfs and wasm lack the concept of true raster windows. A QWindow with RasterSurface is rendered with OpenGL no matter what. The two platforms took two different approaches to work around the rest of the machinery: - wasm disabled the QOpenGLContext warning for non-OpenGL QWindows, - eglfs forced the QWindow surfaceType to OpenGLSurface whenever it was originally set to RasterSurface. Now, the latter breaks since c4e9eabc309a275efc222f4127f31ba4677259b7, leaving all raster window applications failing on eglfs, because flush in the backingstore is now checking the surface type and disallows OpenGLSurface windows. (just like how QOpenGLContext disallows RasterSurface windows) To solve all this correctly, introduce a new platform capability, OpenGLOnRasterSurface, and remove the special handling in the platform plugins. Change-Id: I7785dfb1c955577bbdccdc14ebaaac5babdec57c Fixes: QTBUG-77100 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Fix GCC 4.8 buildVille Voutilainen2019-08-052-3/+3
| | | | | | | | | | | | Change-Id: I4994146b359e8e37f6c0fa1b27f03fb9e800fdd5 Fixes: QTBUG-77218 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-08-053-21/+35
|\| | | | | | | | | | | | | | | Conflicts: qmake/generators/unix/unixmake2.cpp src/plugins/platforms/cocoa/qcocoawindow.mm Change-Id: Iba7aa7324f35543e0297a3680956420058cd3630
| * macOS: Don't require setting all three color buffer sizes in QSurfaceFormatTor Arne Vestbø2019-08-021-12/+0
| | | | | | | | | | | | Change-Id: Iaa6eb4d64f549a31aa5c53145e8b37facec4ea78 Reviewed-by: Andy Nichols <andy.nichols@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * Fix QPainter's ColorDodge and ColorBurn composition modesPavel Artsishevsky2019-08-021-6/+18
| | | | | | | | | | | | | | | | | | | | | | Added checking corner cases (more specific formulas) in color_dodge_op()/color_dodge_op_rgb64() and color_burn_op()/color_burn_op_rgb64() to produce correct results for any input. Task-number: QTBUG-77231 Change-Id: I274f80b356bd4236a9176a84a95604c2eb01787a Reviewed-by: Konstantin Tokarev <annulen@yandex.ru> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * QHighDPI: Fix broken scaling of QPoint(F)Friedemann Kleint2019-08-011-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | For some reason, the overload resolution of the High DPI scale() functions introduced by b6ded193ee64ffe67df6d22e7a23aa1ea9e02ec7 chose the wrong overloads for QPointF and/or QPoint; it fell back to the generic template intended for qreal, QSize, etc, ignoring the origin. Remove the template and spell out all overloads. Fixes: QTBUG-77255 Change-Id: I5661f16f7326f65156f646f430f5a0c71d5302d2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Fix assert in QPainterPath after clear()Eirik Aavitsland2019-07-312-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The newly introduced clear() method left the path in an undefined state: d_ptr allocated, but no elements. The elements vector is otherwise never empty, since ensureData() inserts a dummy initial moveTo element. Fix by making sure that clear() leaves the path in the same state as ensureData() (i.e. "empty" but not "null"), except possibly more capacity allocated in the elements vector. Fixes: QTBUG-76534 Change-Id: I7ad8b312913f5eb6e22023f5d2fd873e54b1e23c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-07-264-4/+43
|\| | | | | | | | | | | | | Conflicts: src/network/access/qhttpthreaddelegate.cpp Change-Id: Id47b977587e2d713c16ac17e63c5ec80c2f05ee9
| * Enable shader cache for ES2 when GL_OES_get_program_binary is presentMichael Brasser2019-07-253-3/+42
| | | | | | | | | | Change-Id: I4fb71471a7dd22441def1eb837857d245c3e3c5a Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| * Make the warning in QBackingStore::endPaint() a little more helpfulShawn Rutledge2019-07-221-1/+1
| | | | | | | | | | | | | | Amends 2aa9908e24611fa6d321e694b8415ba7e8d364b0 Change-Id: I2883ca27b06b2b414b4991b2dab3f84100b4c853 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-07-201-5/+22
|\| | | | | | | Change-Id: Ic34021fbb87d689ee23a5d1b3f50617ada9ec9b9
| * Protect against integer overflow in painting transformed imagesAllan Sandfeld Jensen2019-07-191-5/+22
| | | | | | | | | | | | | | | | | | Makes it safe to sample pixel coordinates above 32767. Fixes: QTBUG-76829 Change-Id: I5965afef1bd65106fcfc130dd37572309eacbe42 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-07-181-1/+1
|\| | | | | | | Change-Id: I685000c4f33fb3707b2102fae0b58092107dc8f0
| * Tie QPlatformOpenGLContext to its QOpenGLContext before initializingTor Arne Vestbø2019-07-171-1/+1
| | | | | | | | | | | | | | So that the context can be referenced during initialization. Change-Id: I9ec69b2431ba1ac6256cb2e969a76f515497e247 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-07-1210-17/+61
|\| | | | | | | | | | | | | | | | | | | Conflicts: configure.pri Also required s/solid\.color/solidColor/ in a couple of places in: src/gui/painting/qpaintengine_raster.cpp Change-Id: I29937f63e9779deb6dac7ae77e2948d06ebc0319
| * QPixmapCache: guard against usage from non-main threadsEirik Aavitsland2019-07-101-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Depending on the active QPA plugin, QPixmaps may now be created and used also in non-main threads. But QPixmapCache is not designed to be used from such threads, so add guards to ignore such access attempts, both from application code and from Qt library code. Such unsafe access would often cause a cryptical "~QObject: Timers cannot be stopped from another thread" warning; that also disappears with this fix. [ChangeLog][QtGui][QPixmapCache] Ignore unsafe access from non-main threads Task-number: QTBUG-76694 Task-number: QTBUG-72523 Change-Id: Ia2db37e528aec08bfb48808630bdf5e543689039 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
| * Doc: Fix incorrect enum value referenced in QImageReader::transformation()Topi Reinio2019-07-081-1/+1
| | | | | | | | | | | | | | | | And remove the \c command to enable auto-linking. Fixes: QTBUG-76878 Change-Id: Ia2352942c7e7040088347becbda07062a9544c98 Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
| * Support pen color in QOpenGLTextureGlyphCacheEskil Abrahamsen Blomfeldt2019-07-052-3/+3
| | | | | | | | | | | | | | | | | | This is an enabler for supporting pen color for color fonts in Qt Quick. Task-number: QTBUG-74761 Change-Id: I3e605f939e6677cbbd4a650ae7998dea8fd2d7a9 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * Support pen color with color fontsEskil Abrahamsen Blomfeldt2019-07-056-13/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Color fonts may also contain regular alphabet characters that should be rendered with the current pen. In Qt, however, these characters were drawn into the cache with a default pen color of black. Since all characters in a font is currently backed by the same cache, and it would require a lot of plumbing to get around this, a step in the right direction is to include the current pen color in the cache as long as it is an RGB cache. This means that drawing text with the color font with different pen colors will create different caches. There is no API to select font color on Freetype currently, but this problem has also not been observed there, as the fonts in question, with both regular and color glyphs, are not being detected as color fonts (so the text color will be correct). So Freetype will be left out for now. [ChangeLog][QtGui][Text] Fixed bug where regular text rendered with a color font would always display in black. Task-number: QTBUG-55096 Task-number: QTBUG-74761 Change-Id: Icc7dbf73241db1e7cc6a0de18c2de927aeecf713 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | [Doc] Fix minor typosSze Howe Koh2019-07-101-1/+1
| | | | | | | | | | Change-Id: I7e74806218dcc07d800f4ec08e94abce32483f5e Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
* | QTextObject: One more 0 to nullptr conversionAndre Hartmann2019-07-081-1/+1
| | | | | | | | | | | | Change-Id: I61446afa882304400d3ae8045e4f17bb7a020600 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* | Handle multiple font-families in <font> face attributeAllan Sandfeld Jensen2019-07-031-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This seems to be a common use case, and to be expected from pastes of MSWord documents. Change-Id: I5849d7f51408e76f15a0b03c2118649f118af1d6 Fixes: QTBUG-66794 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-06-291-5/+9
|\| | | | | | | Change-Id: I4cb91777e7ae9f462fa219d5b9ebeb277fde49c3
| * Fix crash with drag cursor handlingJoni Poikelin2019-06-281-5/+9
| | | | | | | | | | | | | | | | | | 7a7c722782a435f7c01b94f48df7a5f4ff4d599e caused a regresssion in some cases. Change-Id: I1089a79534d811b195de663ff664d9ba5a6ac6c5 Fixes: QTBUG-74110 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-06-284-47/+47
|\| | | | | | | Change-Id: I912bd8851c390302414d3dfb3c8220df5a0d5630
| * Do not downscale png when the size is exactly rightAleix Pol2019-06-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't go through the doScaledRead path (i.e. calling read_image_scaled) when reading an image that the target size is the image of the file we are opening. This makes the loading of the file much faster while keeping the output correct. [ChangeLog][QtGui][QImage] Improve loading time when loading png files that have the same size as the target. Change-Id: I2a33c49fe1ce52ec296c2175ee542b5bcdec2c4b Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
| * Fix crash when setting QGuiApplication palette before app is availableTor Arne Vestbø2019-06-251-1/+4
| | | | | | | | | | | | Change-Id: Ia154f66a27cba970d179f100e66aa2daab01c9fa Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
| * QHighDpi::fromNativePixels: use correct screenMorten Johan Sørvig2019-06-192-45/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calls like QHighDpi::fromNativePixels(point, window) would return device independent coordinates outside any screen in cases where the window is spanning multiple screens and the native point was not on the main screen. Correct this by looking up the correct screen and use its scale factor and origin when scaling coordinates. Task-number: QTBUG-73231 Change-Id: I01a3a42f42121b8d9f4ced2bb0fb023d6ae6bfe7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Output all font families in HTML outputAllan Sandfeld Jensen2019-06-212-2/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix our generation of font-family CSS so it contains the full list of families. Change-Id: I37d5efa64faeb4b6aeb7e2c5d6a54ff07febe9cc Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-06-253-6/+3
|\| | | | | | | | | | | | | | | Conflicts: src/corelib/io/qstorageinfo_unix.cpp src/network/ssl/qsslsocket_openssl.cpp Change-Id: Ibc9ce799bef62d60d616beaa9fbde8ebeadfbc20
| * Fix GCC 9's warning about deprecated violation of Rule of 5Thiago Macieira2019-06-232-6/+0
| | | | | | | | | | | | | | | | error: implicitly-declared 'QDistanceField& QDistanceField::operator=(const QDistanceField&)' is deprecated [-Werror=deprecated-copy] note: because 'QDistanceField' has user-provided 'QDistanceField::QDistanceField(const QDistanceField&)' Change-Id: Ie7ae7616eadf4035bec6fffd15aabc58e99632d9 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
| * Release program when returning from QOpenGLTextureBlitter::create()Laszlo Agocs2019-06-191-0/+3
| | | | | | | | | | | | Change-Id: I27b9496f9a58ceabc613372463543068cb432bdc Fixes: QTBUG-60453 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Fix crash in QPainterPath::reserve()Eirik Aavitsland2019-06-191-1/+2
| | | | | | | | | | | | | | | | Function did not handle default-constructed (null d_ptr) path correctly. Fixes: QTBUG-76516 Change-Id: I2925d4306f7fce34ece6739b18a8e275e7970837 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-06-209-249/+120
|\| | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/gui/painting/qdrawhelper.cpp src/network/ssl/qsslsocket_openssl.cpp src/widgets/styles/qstylesheetstyle.cpp Change-Id: Ibe1cd40f46a823c9e5edbe0a3cd16be1e1686b17
| * High DPI: Fix crash in QWindow::mapFromGlobal()Friedemann Kleint2019-06-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | With Web Engine, QQuickWidget or similar, the code can hit on the offscreen window, when its handle is null. Add a check. Amends 3af7b279177f7fb092f0e0fb9ffc8e8d846ed774. Fixes: QTBUG-76440 Change-Id: I123633d18386efd3dbfb22aad6072e4f0877a62e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * Add accessibility notification roleFrederik Gladhorn2019-06-122-0/+2
| | | | | | | | | | | | | | | | | | | | | | On Linux this role is needed to make desktop notifications work. There is no equivalent for Windows, iOS or macOS. On these platforms the role will have no effect. Fixes: QTBUG-76333 Change-Id: I4ef3b3321f7a0e2c09c1ce432a668428d14c52b7 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * QVector3D: fix documentation spelling errorRichard Moe Gustavsen2019-06-191-1/+1
| | | | | | | | | | | | Change-Id: Id3b97ea3ce45452e0b59986bc4fd84fd9b0d3708 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * QHighDpi: Replace fromNative()/toNative() with scale()Morten Johan Sørvig2019-05-141-209/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need one scale() function for each type: the scale factor can be inverted by the caller for the fromNative case. Add a generic templated implementation which will handle simple types. Add add specialization functions for compound types that don't have operator*(), as well as for position types (e.g. QPoint) which account for the origin. There's no need for fromNativePixels() and toNativePixels() overloads for each type; replace with generic implementations which call scale(). Do the same thing for fromNativeLocalPosition(). Some user code is calling fromNative()/toNative() directly, so leave a definition of those functions around for now. Also leave a couple of one-off scaling functions which do not fit the pattern. Also fix “narrowing conversion scaleFactor to int” warning for the QMargins scale function. Change-Id: Ia67accbb670a80dc1747c2e264b97aab75b1251b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * Fix raster paint error in path joins of tightly bending bezier curvesEirik Aavitsland2019-06-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code for generating round line joins is optimized with a shortcut for the inner, normally invisible joins. For certain joins of a tightly turning bezier, this optimization would lead to visible painting error. Fix by avoiding the optimization if the next control point is so close as to allow such tight turns. As a driveby, make the angle > 90 test cheaper, since absolute precision is not required in the optimization choice. Fixes: QTBUG-75008 Change-Id: I293e0776003310dc36fa7f43fbcd9c25f1f8fa5d Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * Raster paint engine: optimize rect clippingLars Knoll2019-06-112-33/+54
| | | | | | | | | | | | | | | | | | | | | | More aggressively skip processing empty spans. Tested with the qpainter benchmark on armv7; yields small but measurable improvement. Change-Id: Ie0ed0f824a0be7bcc2de3a9aa98ebccb0e8accae Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
| * Generalize image file name @2x suffix handling to higher scale factorsEirik Aavitsland2019-06-141-4/+6
| | | | | | | | | | | | | | | | | | @3x is in use on iOS already, so extend the handling in QImageReader to all single-digit factors, like QIcon does. Fixes: QTBUG-76273 Change-Id: Ic9442731c0549dbe8f797e1ddb1a09d8447e8441 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>