summaryrefslogtreecommitdiffstats
path: root/src/gui
Commit message (Collapse)AuthorAgeFilesLines
* Fix spin box with fine grained wheel eventsAllan Sandfeld Jensen2014-09-231-1/+10
| | | | | | | | | | | Only step the value in the spin box when we have accumulated one wheel tick worth of wheel delta. Also fixes the obsolete contructors of QWheelEvent so they set the non obsolete properties. Change-Id: Ic6ea4b37afa8eec85a6ca7bdc0d919bf8fb02608 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Use NonPremultipliedImageSrc shader when painting non-premuled imagesAllan Sandfeld Jensen2014-09-231-3/+23
| | | | | | | | | Recognize non-premultiplied images and draw them using the existing NonPremultipliedImageSrc shader so we save premultiplying them on the CPU. Change-Id: I3dfc8f9385ff91502d64ccabf4bf54049cc28040 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Respect the PM_SmallIconSize setting for icons in a menu on OS XAndy Shaw2014-09-201-1/+1
| | | | | | | | | When a platform menu is used then it would hard code the icon size to 16x16. Instead of using the hard coded value then PM_SmallIconSize should be used instead. Change-Id: I27540ebc4397501e8f57686a118c28cd7167c0a1 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Fix default implementations of raster opsEskil Abrahamsen Blomfeldt2014-09-201-2/+0
| | | | | | | | | | | | | | | | | | In the list of default implementations, the raster ops added in ae0ddb8c729c105a5b4f32a4f6765af8fe546333 were all offset by one composition mode because of a duplicate entry in the array. The effect would be, e.g. that using the NotDestination operator would resolve to the Set operator instead. Most users will probably not have experienced this since any of the asm-based functions will be preferred. [ChangeLog][Painting] Fixed some very rare cases of mismatched raster modes in QPainter. Change-Id: Ia242b54c78acbe1c89d9b4ecd10936564ec134b2 Task-number: QTBUG-41413 Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* a11y: Don't try to update accessibility if there's no interfaceTor Arne Vestbø2014-09-201-5/+10
| | | | | Change-Id: I970729e65ba0eb857e6974f9947f27ae8e6410c3 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Keep a source of propagated mouse eventsAlexander Volkov2014-09-191-1/+2
| | | | | | | | | Synthesized mouse events should not cause mouse events which look like they were obtained from the system. So set the source of generated events from the original event. Change-Id: I862829446ac6ef664e1b8e4a5b54ed11926a1d4b Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Set a missing source for mouse events synthesized by QtAlexander Volkov2014-09-191-1/+2
| | | | | | | | Mouse events synthesized from touch events by Qt should be marked as Qt::MouseEventSynthesizedByQt. Change-Id: I73612621a0248440b3b773f1280395c05c55e4aa Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* QPaintBuffer paints drawGlyphRun with wrong fontAllan Sandfeld Jensen2014-09-193-1/+11
| | | | | | | | | | | | If QRawFont and and drawGlyphRun is used on a QPaintBuffer it will lose the QRawFont and end up painting with primary font at the time. With this patch, QStaticTextItem can now indicate that they must be drawn using the supplied font-engine and that the font information is not enough. Change-Id: Id6bd376d797d2bfb457e7de55c48bdcf9f20ae38 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Restore -qt-block-indent on <li> elementsAllan Sandfeld Jensen2014-09-181-1/+1
| | | | | | Task-number: QTBUG-20877 Change-Id: If049065ed99eaf8ffc85c8ff54d3da892a095795 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Fix menu mnemonic inside ligaturesAllan Sandfeld Jensen2014-09-184-131/+52
| | | | | | | | | | | The code to draw underlines on specific characters in widget menu could not handle ligatures. Instead of using special code to handle this case this patch changes the mnemonic underlines to use normal format-ranges making the text engine deal with splitting ligatures as necessary. Task-number: QTBUG-20960 Change-Id: I6159110eae7aa8c819af16ba4a393d758871e2e0 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Remove pointless check in QImageData::create()Maks Naumov2014-09-171-1/+0
| | | | | | | "height <= 0" already verified above. Change-Id: Ia2ab90a4cd5533f7b5101686876c2c2cc3e275ac Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Change the state of only the left mouse button when sending fake mouse eventsAlexander Volkov2014-09-161-2/+3
| | | | | | | | Mouse events synthesized from touch events affect only the left mouse button. So preserve the state of other buttons. Change-Id: I628d41089db39f0c983aa95f311a842111b8c39c Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Rephrase sentence in QIntValidator documentation.Mitch Curtis2014-09-161-1/+1
| | | | | Change-Id: I53b4e4615ad23a603bc724b896de5fd1644cdab0 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* QRegion: Reorganise members to reduce padding in QRegionPrivateMaks Naumov2014-09-161-3/+3
| | | | | | | | On 64-bit platforms: 56 -> 48 bytes. On 32-bit platforms it's still the same size (44 bytes). Change-Id: Ia4831753258ef12aa983757523bb76979e6fc4b0 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Fix high dpi support in QOpenGLWindowLaszlo Agocs2014-09-151-3/+4
| | | | | Change-Id: I0be29fb25d854e09ae961cade0c8490586788394 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Use default surface format in QOffscreenSurfaceLaszlo Agocs2014-09-141-0/+1
| | | | | Change-Id: I3b2f790089e6d1bcfe92f2f732489c08afa766cd Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Force a full layout on the frame if it's vertical geometry changesLars Knoll2014-09-121-5/+22
| | | | | | | | | | When the frame's vertical geometry changes because top/bottom margins, border or padding changes we need to do a full relayout of the frame to position it correctly. Task-number: QTBUG-2975 Change-Id: Ia0f063cc2057b6d7a469977d258ec1608feff9bf Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* QRegion: remove some toplevel const from return typesMarc Mutz2014-09-102-8/+39
| | | | | | | | | | | | | It has no effect and inhibits move semantics. After this change, two and five more copies are moves in QtGui and QtWidgets, resp. Keep the old form for compilers that mangle the return type. Change-Id: I6257683144110230079fe9095303907ecc858c94 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* qpa: Make screen geometry updates (full and available geometry) atomicTor Arne Vestbø2014-09-106-53/+30
| | | | | | | | | | | | | | | | | Updating the geometry and available geometry in two steps means that QScreen will be in an inconsistent state when emitting the geometry change signal, as the available geometry has not been updated yet. Piggy-backing changes to the availableGeometry based on the virtual geometry changing does not make sense, so we now tie geometry and availableGeometry (and their size variants) to their own separate geometryChanged and availableGeometryChanged signals. Change-Id: Iee0ced642cbb91c470cb54bc507d2c0512482c13 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Destroy the QOpenGLTextureBlitter in the destructorJørgen Lind2014-09-101-0/+3
| | | | | | | if it has not already been destroyed Change-Id: If9a29da25eb23d5d65204eecabe095df215737ee Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Add an option to share between TLWsLaszlo Agocs2014-09-103-3/+26
| | | | | | Task-number: QTBUG-41191 Change-Id: I510d1631926ed0d9e371703d22229aed92432aa6 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* QRegion: remove check for null ptr after "new" operatorMaks Naumov2014-09-091-2/+1
| | | | | | | Change-Id: Iebba0b1f024e22cd36a04c53377b3958638b389e Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Enhance the VAO docsLaszlo Agocs2014-09-081-0/+10
| | | | | | | | Make it clear that the class is usable regardless of the OpenGL version the app is targeting. It may just do nothing. Change-Id: I50e68a46e36ef1f4694016311af93c6f8719ce4f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Remove GLdouble and GL_DOUBLE typedefs for OpenGL ES 2.Gunnar Sletta2014-09-052-6/+2
| | | | | | | | | We have no business defining types which come from another library. These originally stem from the S60 port without further explanation and Qt and its examples today compile without them, so remove them. Change-Id: I683ea897c00ab3a1f7c809c45352fe590ae9a41f Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Accessibility: Improve line boundary helper functionsFrederik Gladhorn2014-09-041-4/+92
| | | | | | | | | These functions are supposed to make it easy for third parties (and QLineEdit) to implement the textAt/Before/AfterOffset functions. Before the functions were ignoring newlines completely and thus only somewhat useful. Change-Id: I7136b9502a7fa6f8ad9ad7236761a34c1a7fd4da Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Use QPlatformTheme::SystemIconFallbackThemeName in static QString ↵Albert Astals Cid2014-09-031-1/+1
| | | | | | | | | fallbackTheme() Instead of QPlatformTheme::SystemIconThemeName Change-Id: Id318944730cd1b8014380a972eb28fd8aab1f382 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* QImage: add a qMove()Marc Mutz2014-09-022-2/+2
| | | | | | | | | | | | | | | | | | | | | | | The color table is passed by value (good for C++11), so when the argument is assigned to the member variable, that's a good spot for a move assignment. However, the argument is also declared const. The standard says that top-level const is ignored, but some compilers (I know about SunCC) think differently, so we cannot remove it. Instead, we do a const_cast. It is well-defined: Even though apparently the argument was declared as const, the standard says the const is not there, and no sane compiler would put the argument copy into read-only memory. Add a reminder to remove the top-level const from the signature come Qt 6. Change-Id: Iac18846ba669de0a30da620685ad1438c267e193 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QOpenGL2GradientCache::getBuffer: calculate hash value outside critical sectionMarc Mutz2014-09-021-1/+1
| | | | | | | | | | | | The code doesn't touch any member variables, so it doesn't need mutex protection. Reducing the time spent under the mutex allows a higher speedup (Amdahl's Law), so do it. Also made the mutex locker const to indicate it is never unlock()ed again. Change-Id: Ic50b827c0e34d39cbddc7ec83675b568a9c33f6d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
* QTextEngine: remove unnecessary assignment in LayoutData::reallocate()Maks Naumov2014-09-021-2/+1
| | | | | Change-Id: I82e34d5525354fc20ca9aba6df3767e3fee51bf8 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* QIconLoader: enable an easy case of transactional processingMarc Mutz2014-09-021-3/+4
| | | | | | | | | It's easy to do the work on the side and then commit. This is strongly exception safe, but in Qt, we don't care. But transactional code, when this easy to achieve, is also clearer. Change-Id: I30f1badec7745d62a09af4eede234cb312b373aa Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Fix no-opengl buildLaszlo Agocs2014-09-011-0/+6
| | | | | | Change-Id: I577bd5d10e52571c95c9e646327264cf95ac6eb1 Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Fix advance of zero-width spaces in fonts that omits the glyphAllan Sandfeld Jensen2014-09-012-7/+21
| | | | | | | | | | | | | | | Some fonts appear to include zero-width space in the CMAP table, but not include an actual definitions of the glyph they point to. The missing glyph causes a warning, but isn't handled making the character end up being giving the same metrics as whatever character it came after. This patch adds explicit handling of missing glyphs, and also caches their missing state when caching is enabled. Task-number: QTBUG-40912 Change-Id: I06fba9c01df59548e750e36babfdd5a6bafd6bd0 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* Avoid trying convert to RGB32(ARGB32) when image already RGB32 while writing ↵Maks Naumov2014-08-311-1/+1
| | | | | | | | | | | | XPM image "sourceImage.format() != QImage::Format_RGB32 || sourceImage.format() != QImage::Format_ARGB32 || sourceImage.format() != QImage::Format_ARGB32_Premultiplied)" This condition always "true". Change-Id: I67b3dfac135985a75bcd697b4c1a84ec3c0b66f5 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
* Code cleaning in qt_gl_resolve_extensionsAllan Sandfeld Jensen2014-08-281-34/+42
| | | | | | | | | Moves feature checks so OpenGL vs OpenGLES is only tested one way and extensions so they are not tested if already required by their version. Change-Id: Ia77f6ea924559fa7a428beb6316ae392063dfc4f Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Use ctor-init-list in QRegionPrivate(QRect) ctorMarc Mutz2014-08-261-5/+6
| | | | | | Change-Id: I531b862db7bdec0a504c6022c1a15635aaf3fc8d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QRegionPrivate: remove copy ctor and assignment operatorMarc Mutz2014-08-261-17/+0
| | | | | | | | They're identical to the compiler-generated ones, and probably inhibit move operators here and there. Change-Id: I918f2946f6b6aa49aa883420dc87df44013938a5 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Document loading of high resolution versions of images.Friedemann Kleint2014-08-265-14/+55
| | | | | | Task-number: QTBUG-38858 Change-Id: I87ee18b66e137f5f5c01d77910f1a7f256b85e18 Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
* Mention supportedMimeTypes() in QImageReader documentation.Friedemann Kleint2014-08-261-2/+3
| | | | | Change-Id: Iaa07a463e07982352fe2c7dd77d691a390a65f35 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* QEvent check for QT_NO_GESTURES in new debug code.Dyami Caliri2014-08-251-0/+4
| | | | | | | | Latest changes to QEvent break compiling with -no-feature-gestures. Change-Id: Ibbddd73a4f567051c3793a7aaf438240add6583a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* QOpenGLTextureBlitter: Do not call vao functions if it failed to createLaszlo Agocs2014-08-251-7/+7
| | | | | | | | Follow the good practice of checking for isCreated() before calling VAO functions like bind(). Use also the vao binder where applicable. Change-Id: Ib827f3bce838396bf2e08f9480fa63801d4d3a50 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Support QOpenGLWidget and QQuickWidget on AndroidLaszlo Agocs2014-08-251-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | It gets somewhat complicated due to the fact that a RasterGLSurface window (i.e. any widget window since 5.3) may behave either like an OpenGLSurface or a RasterSurface, and the expected behavior may change on each backingstore sync. This does not fit designs where the platform window implementation is separated and there is different behavior for raster and GL windows. Therefore QAndroidPlatformOpenGLWindow is now made capable of behaving like the raster one, based on a flag communicated from the widget stack via QWindowPrivate (since the plugin knows nothing about widgets). This means that widget windows that do not have renderToTexture children (QOpenGLWidget, QQuickWidget) will go through the raster path, while the ones that have will behave like an OpenGL window with the actual rendering happening in QPlatformBackingStore::composeAndFlush(). The surface type is RasterGLSurface in both cases nonetheless. Task-number: QTBUG-37907 Change-Id: I6f9261fc0fd993afcda7f30d379c5410069033d3 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Initialize textureId in platform backing storeLaszlo Agocs2014-08-251-0/+1
| | | | | | | | | | | | | Setting it initially to 0 is very important, otherwise we will do a glDeleteTextures with the undefined value. The result sometimes goes unnoticed and sometimes causes bizarre issues: For example in the 'textures' example one face of one cube out of the six did go blank from time to time since the corresponding texture was deleted by the backingstore. Change-Id: Id19eb2164471b542b08a277a65edfcb5d0f8248d Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Fix composition for translucent AlwaysStackOnTop widgetsLaszlo Agocs2014-08-241-1/+1
| | | | | | | | | | | | | | | Writing out the alpha is re-enabled too early. When blitting the AlwaysStackOnTop widgets as the last step of the composition, they need the exact same settings as the backingstore content, meaning blending but without writing out alpha. Move the glColorMask call to fix this. This will avoid issues with semi-transparent AlwaysStackOnTop widgets when the top-level has alpha enabled too. Task-number: QTBUG-40910 Change-Id: Id6d0d684cfa78bf79b65a097efd92de575e73b2c Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Do not resolve core functions on GLES in texture helperLaszlo Agocs2014-08-231-0/+64
| | | | | | | | | | | | | As the spec for eglGetProcAddress says, some implementations may not return function pointers for core functions. Similarly to how we cannot get OpenGL 1.0/1.1 functions with WGL for example. To make sure QOpenGLTexture does not just crash with such implementations, we simply use the statically exported functions in -opengl es2 builds. Change-Id: I213bfcc21e58888b17e0ebcd0a26f26f77517e40 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QIconLoader: don't inherit QObjectMarc Mutz2014-08-231-1/+1
| | | | | | | | | QIconLoader did not use the services from QObject and the Q_OBJECT macro was missing, too, so external code couldn't have used it in a qobject_cast or inherits(), either. Change-Id: I1f33dd540fa2ded48d871d848a77eee743a4e3c0 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QIconLoader: replace an inefficient QList with a QVectorMarc Mutz2014-08-232-3/+4
| | | | | | | | | | QIconDirInfo is larger than a pointer, so holding it in a QList is horribly inefficient. Fix by holding it in a QVector instead. Change-Id: I6551d2d2941447e600a33c3d68edf46db002d96c Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QIconLoader: mark virtual overridesMarc Mutz2014-08-231-2/+2
| | | | | Change-Id: I72f20b5935d56d7c090fdd685e2bedc0778db505 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QIconLoader: mark a helper type as movableMarc Mutz2014-08-231-0/+2
| | | | | | | | QIconDirInfo is held in Qt containers, so reap the performance benefit of a movable type. Change-Id: I317c69ec46d324623b21a33043856e22f60e21b1 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QIconLoader: replace while(!empty()) delete takeLast() with qDeleteAll()Marc Mutz2014-08-231-6/+2
| | | | | | | | | | There's no calling back into QIconLoaderEngine from the QIconLoaderEngineEntry dtors, so don't bother slicing off one element by one from the container as they are deleted, the more so as m_entires is either move-assigned or deleted right after these loops. Change-Id: Ic9ffa442ef0b0c59e19eb91d164183ea5c3bab67 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QIconLoader: don't re-evaluate container.size() all the time (II)Marc Mutz2014-08-231-2/+4
| | | | | | | | Experience shows that the compiler does not recognize the size() call as a constant expression, so help it along. Change-Id: I688244f37c555365566cd1a59dc601974316a2e6 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>