Re-add the support for drag pixmaps to qdnd.
Use the new WindowTransparentForMouseEvents
flag for the window that shows the drag pixmap.
Change-Id: I4b594085c161475988b9be0ffdc02c75fcc37f66
Reviewed-on: http://codereview.qt-project.org/5261
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
When the platform window is created, it is the
authorative source for geometry information.
It would however be better if we could completely
avoid duplicated places for the geometry data.
Change-Id: Id90b24b9c40acb57f3d11b8b927292c06bac335e
Reviewed-on: http://codereview.qt-project.org/5258
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
As previously with QInputContext, now supporting filterEvent()
interface. Usage only on XCB so far.
Change-Id: I8e5972626552bda32318fe060017d0217bb79a94
Reviewed-on: http://codereview.qt-project.org/5240
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
QTouchEvent::TouchPoint assumes the rect() is in local coordinates,
whereas QWindowSystemInterface::TouchPoint uses screen coordinates.
We must therefore use QWindowSystemInterface::TouchPoint::area as the
screenRect() rather that the rect() and then use the screen coordinate
to calculate the local coordinate by using mapFromGlobal.
Change-Id: If7a52f5668c3938f46bdd38a5ea82b5313d6b626
Reviewed-on: http://codereview.qt-project.org/5253
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Bjørn Erik Nilsen <bjorn.nilsen@nokia.com>
The raster engine and the capabilities were leaked, use the
QScopedPointer to prevent that from happening.
Change-Id: I31ba0117280b48ad942fbb638fb151ccb7b34385
Merge-request: 59
Reviewed-on: http://codereview.qt-project.org/5242
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Use the QScopedPointer to prevent memory leaks, right now
the code appears to be sound but make it more clear that
calling ::setBlittable will destroy the old one.
Change-Id: Idc71add7cfd429ff5b9d0ea9908d9fff1e7ce74d
Merge-request: 59
Reviewed-on: http://codereview.qt-project.org/5243
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Task-number: QTBUG-21162 - Letters get truncated when font size=72 and set to Italic
Reviewed-by: Eskil
(cherry picked from commit cd43d6386de6e66379fa23c1ea4ec06141167c86)
Change-Id: Ic05f775975d5f21e0274e7b2c3a4903d6a4ae41f
Reviewed-on: http://codereview.qt-project.org/5203
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Avoids rounding issues with very large coordinates.
Task-number: QTBUG-21262 - QRasterPaintEngine & QFontEngineFT - fonts corrupted when scrolling to the bottom of long texts
Reviewed-by: Eskil
Signed-off-by: Aleksandar Stojiljkovic <aleksandar.stojiljkovic@nokia.com>
(cherry picked from commit 43e013e2048e8193e2d31276cac6348a9f6ce340)
Change-Id: I5810a1a60f2bbdba4889a6b5e493b183018f3976
Reviewed-on: http://codereview.qt-project.org/5202
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Since FreeType has internal caching, it has had a special
code path in the raster engine which avoided using Qt's glyph
cache, as that would be redundant. However, when compiling
with QPA, we want the same behavior without being able to
access the QFontEngineFT class. To achieve this, I've made
a new abstraction and added it to QFontEngine which allows
the FT engine to provide direct pointers into the alpha maps
stored by FT. This requires a locking/unlocking mechanism.
Yes, the QFontEngine::alphaMap* API is slowly becoming a horrible
mess, but due to time constraints, the task of refactoring these
functions into a more flexible API needs to wait. I've added a
TODO comment for this.
Change-Id: I08237403c2967f8fb952258178676f33a87c0353
Reviewed-on: http://codereview.qt-project.org/5155
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
In 20009ed797 I introduced a new
approach to synthesized oblique. However, while the embolden
function in FT alters the glyph metrics accordingly, the
oblique function does not, so the glyphs would be clipped to the
original, unslanted metrics. So I've implemented the same matrix
in the loadGlyph() function and we now apply this to the metrics
manually. This will only work as long as the underlying algorithm
doesn't change significantly.
Task-number: QTBUG-21202
Change-Id: Ic20b2a0fdeac5ce833e95fd06efa12b3b70feee5
Reviewed-on: http://codereview.qt-project.org/5156
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
Move handling of -qmljsdebugger= argument from QApplication
to QCoreApplication. It makes sense to allow debugging also
for applications based on QCoreApplication (which we intend
to support in QtDeclarative).
Change-Id: I5a03a4510fc166cea5aad146da673ee0e7cd5d36
Reviewed-on: http://codereview.qt-project.org/5121
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
When fetching the outlines we need to synthesize the weight and
style of the requested font. This is currently only supported
on FreeType versions that have the Embolden and Oblique functions.
We also use FreeType's Oblique function for regular text when
possible, and only use the matrix approach when that function
is unavailable.
Task-number: QTBUG-21202
Change-Id: I0656ab66cc3ec70d6a7675b8c78d06632625261c
Reviewed-on: http://codereview.qt-project.org/5076
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
The glyph caching was disabled on QPA, possibly due to some
bugs which have gone away now. To avoid the performance hit
of this, we need to enable it. Simple tests of QTextEdit
indicate that this works fine.
Change-Id: I40845b327331b366161f1ca55bf00853bca87358
Reviewed-on: http://codereview.qt-project.org/5096
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Do not try to fill fontDef when it's a test font engine, otherwise
it will cause a crash because desc.family is 0.
Change-Id: I008b784bae3e60a25c33c285d944442a3616a9a2
Reviewed-on: http://codereview.qt-project.org/5103
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
It seems to be the only sane way to fix it. Previous attempts to
fix it by compensating the trailing space width all failed in some
cases, one of the trickiest is when we are having embedded LTR text
that has trailing spaces in a RTL paragraph.
In this patch we leave line.length not including the trailing space
length, but saving it to a separated variable, so that we can always
add it back when needed (QTextLine::textLength() for instance).
It fixed all the problems in different alignments of both RTL and
LTR text. And no regression is found yet.
Reviewed-by: Eskil
(cherry picked from commit 80294c375eca9687d1c34e9ab048294373e7f00c)
Change-Id: Id248ab6f54f8cc25ba0e9d1626703463dfefbcea
Reviewed-on: http://codereview.qt-project.org/4778
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
There's no QImage::Format_A8 format. This is a term used in the
corresponding QFontEngineGlyphCache enum.
Reviewed-by: Jiang Jiang
(cherry picked from commit e453fce2731069dce993a94b0c2291307cc7806c)
Change-Id: I68a190abdf4446d05231af89ac861380ac79b188
Reviewed-on: http://codereview.qt-project.org/4773
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Removes the QT_NO_IM macro which was a temporary measure during
refactoring work. This macro disabled the setPreeditArea() call
and caused only the formats of the preedit text to be registered,
not the actual string.
Task-number: QTBUG-21261
Change-Id: I76cdf116043520fa2185ddcd34739da031c0fcdc
Reviewed-on: http://codereview.qt-project.org/4958
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
When cursor position or editor text changes many input method query attributes like
cursor rectangle, cursor position, surrounding text, current selection and anchor
position change as well. Checking in text control and editor classes what of those
related attributes have exactly changed before calling the update increases code
complexity unnecessarily for a little benefit. Qt::InputMethodQueries flag can still
be used to optimize more independent cases when attributes change individually, which is
more common for input methods hints, fonts, platform data, maximum length or enabled
attributes.
Change-Id: Ic9eee5f1edb6d33ef6c01d2c9c8ad582100c0150
Reviewed-on: http://codereview.qt-project.org/4739
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
This is simpler than the existing texture cache in QtOpenGL, as it only
serves the GL paint engine. There's one per context group, to simplify
the design and to prevent performance degradations.
Change-Id: I61e3c9a444d8e246a8b38da019a56f2c0a533c0c
Reviewed-on: http://codereview.qt-project.org/4674
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kim M. Kalland <kim.kalland@nokia.com>
When calling a style function such as pixelMetric() then this should be
done via the proxy style and not on the style directly. This is so that
the proxy style always has a chance to override the original style's
implementation and still preserve the fallback to the base style.
Task-number: QTBUG-20849
Merge-request: 2645
Reviewed-by: olivier
(cherry picked from commit 270c20490813fa943b4fbf0feb1aecb98f0b19ba)
Change-Id: Id43ec17fd1eae0136d6e1f050f23bca6d7d6d6cf
Reviewed-on: http://codereview.qt-project.org/4591
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
For some reason the test did not fail locally but fails in the CI
system. A manual check of the images from the test shows it should
have failed. Reason for this will be investigated separately
Reviewed-by: Sergio Ahumada
(cherry picked from commit c5f46907fbc0354aacc4bc4a6f5ab97c8b656d1a)
Change-Id: I15f09649bb37dd97401926eb5e52f33748e11ec0
Reviewed-on: http://codereview.qt-project.org/4668
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
The old approach was not the recommended one and although it worked on
Mac OS X 10.6 it did not work on 10.7. The new approach works correctly
on 10.6 and 10.7, so the fix is applied for both versions.
Task-number: QTBUG-19824
Merge-request: 1332
Reviewed-by: sroedal
(cherry picked from commit aaf94776ce1034ec2b2402b9ca0e5cf7c7848b12)
Change-Id: I567d7e2ed2e4b3256f3110f4110ab1342087bc43
Reviewed-on: http://codereview.qt-project.org/4583
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Add a create() method to the inputcontext factory that
takes no arguments.
Add a virtual isValid() to QPlatformInputContext to
determine whether it actually works.
Remove IBUS dependencies in the xcb code so that it
can also load other plugins.
Change-Id: I6345a845f48fd4b3cacf6d8652711b16835a235c
Reviewed-on: http://codereview.qt-project.org/4487
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
The event now takes a Qt::InputMethodQueries bitfield. Like this the
editor can set all properties in one go on the event instead of
having to process many query events.
Change-Id: Ifd9d7328a9fce0c21625371ec744ea2090e163be
Reviewed-on: http://codereview.qt-project.org/4448
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Also set ImhMultiLine on QTextEdit
Change-Id: I04a5a1d69c2048ea94c24210e2b8374f334be1b6
Reviewed-on: http://codereview.qt-project.org/4414
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Since platform font database will be populated in QFontDatabase::load,
no need to do it here in QFont::initialize.
Change-Id: I1b8c9f6fc9be40e0263ed3951c794141c6297e84
Reviewed-on: http://codereview.qt-project.org/4091
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
The new API is more flexible, allowing the use of QOpenGLPaintDevice
with any QOpenGLContext, and putting more responsibility on the user for
ensuring the correct FBO is current (the user knows best anyhow).
Task-number: QTBUG-21263
Change-Id: I50b954125f552baef52fbb3fe2ed907a11ad519c
Reviewed-on: http://codereview.qt-project.org/4325
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
Always set the microFocus/cursorRectangle in item
coordinates.
Correctly update the itemTransform in the QInputPanel for QWidgets.
Change-Id: Ic0187f808996f31e6238d934f43bc97a70522a55
Reviewed-on: http://codereview.qt-project.org/4402
Reviewed-by: Vesa Rantanen <vesa.rantanen@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
To be called when input context is expected to commit what it had as
preedit, and resetting its state. Earlier this was done with ::reset()
when in fact documentation somewhat disallowed doing so.
Change-Id: I10ad0620aa42fce6d01a69265af8a4f5f9f4d397
Reviewed-on: http://codereview.qt-project.org/4401
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Vesa Rantanen <vesa.rantanen@nokia.com>
If a non-printable character has an advance, we would lay out the text
as if the character was part of the output, and then ignore the
character later when the text was rendered. To fix cases such as this,
we take the dontPrint attribute into consideration when adjusting the
advances.
Task-number: QTBUG-21347
Reviewed-by: Eskil
Reviewed-by: Lars
(cherry picked from commit 6326227674efa85c1a5320141041110d211efc75)
Change-Id: I4d01b60498f3b5f30b69530c8b49dd720d83ad0b
Reviewed-on: http://codereview.qt-project.org/4410
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Results of the ongoing workshop in Oslo:
QInputPanel will be the application facing interface
for controlling the input context as well as querying
things like the position of the virtual keyboard.
QInputContext is significantly cleaned up and only there as
a compatibility API for existing code.
Change-Id: Ie8e2ee480930763f414bfaae63247b1fb6500c82
Reviewed-on: http://codereview.qt.nokia.com/4357
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Vesa Rantanen <vesa.rantanen@nokia.com>
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
This code is no longer in use.
Change-Id: I1e582b8a5f1fad40ef75e412162f3aa9f10ab535
Reviewed-on: http://codereview.qt.nokia.com/4352
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
This change prepares for enabling native menus
on OS X.
Move code from src/widgets to cocoa:
- qcocoaapplicaiton
- qcocoaapplicaitondelegate
- qcocoamenuloader
- qcocoamenu
- qmenu_mac
- misc helpers to qcocoahelpers
Create a QNSApplication and
QCocoaApplicationDelegate at application startup.
New Lighthouse API:
- class QPlatformMenu
- class QPlatformMenuBar
- QPlatformIntegration::createPlatformMenu()
- QPlatformIntegration::createPlatformMenuBar()
Platforms that wants a native menu integration
subclasses QPlatformMenu[|Bar] and implements the
create function. The default implementation returns
0, which causes QMenu to use the standard Qt
menus.
This API is based on the current native menu
abstraction that Mac, Wince and S60 uses in Qt 4.
The main difference is that the platform classes are
proper standalone classes and not #ifdeffed into
QMenuPrivate.
Change-Id: I3da41f80b0ae903a476937908b1f9b88014b7954
Reviewed-on: http://codereview.qt.nokia.com/4068
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
also move QPlatformSurface to its own file
Change-Id: I29fb6c70ede18a0ac5e0f6bfb97a33293633e668
Reviewed-on: http://codereview.qt.nokia.com/4309
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
QPixmap::init shadows base class QPaintDevice::init with different
declaration which makes latest clang builds fail on modules.
Simple renaming of this private function fixes the issue.
Change-Id: I65b2b09e81f4833dc9b54b36423ba7c15d9ded4f
Reviewed-on: http://codereview.qt.nokia.com/4289
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
All virtual base classes with accessible destructor should declare
the destructor as virtual too.
Change-Id: I2b07c7e824612af072d7802095d958dca8cc34c8
Reviewed-on: http://codereview.qt.nokia.com/4274
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
emitCursorPositionChanged won't emit cursorPositionChanged if the
cursor position hasn't changed but that doesn't mean the micro focus
hasn't changed, so emit updateMicroFocus changed when
cursorPositionChanged isn't.
Task-number: QTBUG-21017 QTBUG-21011
Change-Id: Id0b6bd5aed16563b7b5cce643745e453ba4857a5
Reviewed-on: http://codereview.qt.nokia.com/4181
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Martin Jones <martin.jones@nokia.com>
The mouse, touch, key events have no timestamp field currently,
meaning that the timestamp passed to QWindowSystemInterface's
handleMouse, Touch, KeyEvent functions will not be stored in the
generated events. The timestamp can be quite valuable in some cases
(e.g. when performing filtering of touch events) so losing this
information is not desirable. The patch adds a timestamp field to
QInputEvent, which is the base for mouse, touch, key, and other
events, and also makes QGuiApplication to store the timestamp in the
generated events.
Change-Id: Icb9de8b238cb341916eac33ce21603f4955baca7
Reviewed-on: http://codereview.qt.nokia.com/4196
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
QPlatformNativeInterface can now contain generic window
properties in a QVariantMap, to facilitate communication
with the compositor and clients for certain platforms.
When window properties change, a signal is emitted from the
respective QPlatformNativeInterface instance. The properties
are intended to be read/writable from both client and server.
Change-Id: I7b42f7910d03c0d309add6c7dbb1c9b66ad22a3f
Reviewed-on: http://codereview.qt.nokia.com/3956
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
QTextControl's word selection will only include a word if the cursor
position is past the mid point of the word. This can make it
difficult to select words near the edges of the screen on touch
devices. For the TextEdit word selection mode select a word ignore
the relative position within a word.
Task-number: QT-5206
Change-Id: I4e5675596cd89934b3c2bc5d825088887c222fe8
Reviewed-by: Martin Jones
Reviewed-on: http://codereview.qt.nokia.com/4166
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Unmask the last character typed, not the last character in the string.
Change-Id: I9c70d2347bf878c18ab0a7f4ea76f755ca19a85c
Task-number: QTBUG-17003
Reviewed-by: Alan Alpert
(cherry picked from commit b98e9e69dd8ba33d5f01b9518d95b63b86c4b443)
Reviewed-on: http://codereview.qt.nokia.com/4165
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Task-number: QTBUG-19109
Reviewed-by: Martin Jones
Change-Id: I709427fe73b2d6ed9e3526af140b9dc375740789
Reviewed-on: http://codereview.qt.nokia.com/4164
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
use an inlined version of isValid() everywhere;
don't detach where is non required;
get rid of extra checks where possible
Change-Id: I6815c1f7d7c03677d9c57dda2731ed2868ea92aa
Merge-request: 1343
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Reviewed-on: http://codereview.qt.nokia.com/4144
All this API is "new" since 5.0.
Change-Id: I7ba1718a4a24eac00ccc4db1646200e9544ee5a4
Reviewed-on: http://codereview.qt.nokia.com/4131
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Rename the default accessors for positions to localPos, windowPos
and screenPos, to be explicit about their use.
Introduce a QT_NO_INTEGER_EVENT_COORDINATES define so one can make sure
to always use the float based coordinates.
Fixup all Qt code to use the correct constructor that specifies all
three coordinates.
Change-Id: If4bb93b8d1e2eb2440260d99680c468706cfe68f
Reviewed-on: http://codereview.qt.nokia.com/4058
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
By not waiting until deleteLater() kicks in it's easier to auto-test. We
can now add a test case for what happens when a shared resource is still
valid while the last context is destroyed.
Change-Id: I72963928e6a921e49ed59a79e2579b497ba37ccf
Reviewed-on: http://codereview.qt.nokia.com/3732
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Versions 1.4.0 to 1.5.2 of libpng declare png_longjmp_ptr to
have a noreturn attribute if PNG_PEDANTIC_WARNINGS_SUPPORTED
is enabled, but most declarations of longjmp in the wild do
not add this attribute. This causes problems when the png_jmpbuf
macro expands to calling png_set_longjmp_fn with a mismatched
longjmp, as compilers such as Clang will treat this as an error.
To work around this we override the png_jmpbuf macro to cast
longjmp to a png_longjmp_ptr.
See also http://llvm.org/bugs/show_bug.cgi?id=10338
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
Change-Id: I197cfa12af76410310e409bc0fce7d4332ee66a6
Reviewed-on: http://codereview.qt.nokia.com/3929
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
The SG render thread was racing window creation in
the GUI thread, which would cause flicker if the
window won the race and was shown before the SG
thread had a frame ready.
Send a synchronous expose event before showing the
window - this will wait for the SG render thread.
In addition, don't defer NSwindow creation. The GL
context setup is done before the window is shown
and needs a fully created window.
New API: QWindowSystemInterface::handleSynchronousExposeEvent
Retire: QWindowSystemInterface::handleExposeEvent
Change-Id: I0bb46089d16ec4882aaac8db67b57d15e0f51531
Reviewed-on: http://codereview.qt.nokia.com/3399
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@nokia.com>
Merge-request: 1254
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
(cherry picked from commit 31ff55bbeb84f10e75e997c75a63deda83e62507)
Change-Id: I0644514299c16cabe19d1e6d024dd652b2d7bc4e
Reviewed-on: http://codereview.qt.nokia.com/3933
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
Merge-request: 1254
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
(cherry picked from commit 9aeadca09ab4e27ebf299873f90490d585b4fb7f)
Change-Id: Ib0f035ac15ad0cc6be52807e8101f5dcfb5b041b
Reviewed-on: http://codereview.qt.nokia.com/3932
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
This will help abstracting the platform specific parts of QMenuBarPrivate in a
common interface.
Merge-request: 1254
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
(cherry picked from commit 68d633cc840c5526a0ad77985404f53ada6ba91a)
Change-Id: I733b8dfb71ae0dc78536cfe48b466394206d1de3
Reviewed-on: http://codereview.qt.nokia.com/3931
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
Merge-request: 1254
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
(cherry picked from commit b4ddcbbf1ce067a823815c07a357a065be731d48)
Change-Id: I809de3c201f47cd8936845447ad60b00cf4c0db7
Reviewed-on: http://codereview.qt.nokia.com/3930
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
The code was mispositioning lines by half a pixel, as it
added half a pixel offset and then rounded in addition.
This submit fixes this and also removes certain artifacts when
drawing rects at .5 pixel positions.
Lance now doesn't show any significant differences to the
4.7 rendering anymore.
Task-number: QTBUG-20199
Reviewed-by: Aavit
(cherry picked from commit 49409f612c47f30434aa809e4d2c963f1a6bb88a)
Change-Id: Iab3936e688eba16b82f5cdb4f36f54af807d78ea
Reviewed-on: http://codereview.qt.nokia.com/3260
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
This class encapsulates platform specific style hints
like doubleClickInterval or cursorFlashTime.
Change-Id: I0d88c47a59d564d8d346642184e5b14e1864cf40
Reviewed-on: http://codereview.qt.nokia.com/3927
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
This used to reside in QApplication, but we need it here
to remove a dependency of QtDeclarative onto widgets.
Change-Id: I119fef1d51387087b00e08aff1ee4b00503a6cd5
Reviewed-on: http://codereview.qt.nokia.com/3926
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
We don't want to have source files in the opengl module and gui with the
same name, at least not private headers.
Change-Id: I5f2bf629c943a67a405574fb148aa4c70e58ecbb
Reviewed-on: http://codereview.qt.nokia.com/3864
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Since QOpenGLContext is now a QObject, it needs to be moved to, or
created in, the thread where it's going to be used.
Change-Id: I7ed12b25e75c84bb12be8c7102e46e9a242fc2df
Reviewed-on: http://codereview.qt.nokia.com/3858
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Made resource handling more robust by attempting to free GL resources in
the correct thread, and not forcing a context to become current to free
resources.
Change-Id: Ie81d4005b608972375755571d9b50ce82080709b
Reviewed-on: http://codereview.qt.nokia.com/3258
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
The method is called when the text of a label is changed and setAccessibleName has
not been called on the label, as the text of the label acts as the accessible name
of the label.
Merge-request: 1301
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
(cherry picked from commit a1f2b68e97477440cf508e6d497eb5f5d9971971)
Change-Id: Ic10f75e72ac3faa84777c444177b287b720a1dc2
Reviewed-on: http://codereview.qt.nokia.com/3040
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
Q_GLOBAL_STATIC may be destroyed and we still send
ObjectDestroyed notifications.
This only shows now that we actually send the Destroyed notifications.
Change-Id: I3057556cdc897dab6adfc3274e4abc68473ffa7f
Reviewed-on: http://codereview.qt.nokia.com/3657
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
Easily reproducible by testing Chinese with the threaded
renderer. The multi engine would then have a list of engines
with a single item, but the glyphs might belong to e.g. engine
11. In that case, engine() would assert when it couldn't find
the engine if the layout had been done in a different thread.
We force the loading of the required engine if it's not already
loaded.
Note that this fix does not work on Mac, as loadEngine() will
crash there, so the layout has to be done in the same thread
as the rendering, since loading the engines is part of the
layout process.
Task-number: QTBUG-21112
Change-Id: I71cc396664e3b95fbb4815a90873457e1f89528e
Reviewed-on: http://codereview.qt.nokia.com/3631
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
Lets the platform plugin advertise whether it's safe to use OpenGL from
a different thread. With XCB we only advertise this if we have a
reasonably new XCB libary, as older versions suffer from the
xcb_wait_for_reply() blocking bug, which cause GL rendering in a
separate to stall when using Mesa drivers.
Change-Id: I4829df7e583a1c8aed218ae13a159d21266cc594
Reviewed-on: http://codereview.qt.nokia.com/3613
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Since the trailing space is included in the QScriptLine, it may affect
the positions of preceding script items when the text is RTL. The best
solution for this would be to disregard the trailing space in the layout
process, or somehow make it have an advance of 0 so it doesn't affect
the layout. However, to minimize the impact of the change, and to be
consistent with previous work arounds such as
bf992df6434fc37715f728ca09601c5567dd83c9, we simply include the trailing
(visually leading) space in the justification pass for now.
Task-number: QTBUG-20920
Reviewed-by: Lars
(cherry picked from commit 1a8a36eb6b6df9e2550b5eaa4606f2d411fd4294)
Change-Id: I94972ebaea2e1bdb09950523c43844351b304abe
Reviewed-on: http://codereview.qt.nokia.com/3462
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
QApplication::keyboardModifiers returns the keyboard modifiers
from the last keypress event in this process, as documented. However
there are use cases for querying keyboard modifiers as they currently are,
see QTBUG-11243.
Merge-request: 585
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
(cherry picked from commit 3b5354386225974ea6db78c12f32cb81e2d50104)
Change-Id: I9b4e54ac79fc225e3ed8d2bcaba953a6eb59f0d2
Reviewed-on: http://codereview.qt.nokia.com/3581
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
In case the platform plugin returns an instance of QFontEngineMulti
(which happens on Windows).
Change-Id: I87470e47cfe113557313b7f6b3b09d1455af1c17
Reviewed-on: http://codereview.qt.nokia.com/3319
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Implement the IAccessible table2 interface for itemviews.
This is simpler than what we have in complexwidgets.
For now it is only used on Linux.
The new table2 interface is ifdef'ed to only be used on X11.
Improve handling of accessible events and clean up.
There are two xfails for the Table and Tree where sibling
navigation is not implemented yet.
Reviewed-by: Gabi
(cherry picked from commit e797ba558dddd45522b5a317316e497e9efc44a8)
(cherry picked from commit eff5ecc5d8f65fa25d6cfd6ed96a9d2a00d0c663)
(cherry picked from commit d29876008fad400bca8d6b37e5d5f61dd1bcb39d)
(cherry picked from commit 2a326fdc8f8bf2bd2c5764394616100906d9db2d)
(cherry picked from commit 9b72e79e20d0d3560e0b064b8b0d75e35feb720e)
(cherry picked from commit 075b0f744363842ed4179c644d933d461389544f)
Change-Id: I654f74991830ae1fc7df7cc91d930390fb88b2a4
Reviewed-on: http://codereview.qt.nokia.com/3274
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
No longer initialize FormatOptions to SwapBehaviour::DoubleBuffer
in the constructor as it is a different enumeration.
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Change-Id: Id69e0345d4395ee88532ac3ee0e89c35e6c5b083
Reviewed-on: http://codereview.qt.nokia.com/3254
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
It's now unused since the GL1 paintengine is gone.
Change-Id: I1415b725dc05aab920670976a8eb8c3145464297
Reviewed-on: http://codereview.qt.nokia.com/3246
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Several required fixes and changes to fix problems that arose
when porting SceneGraph's QSGTextInput and QSGTextEdit to
use QSGTextNode, especially related to having selections
on the text.
Also fixes crashes with the threaded renderer on Mac OS X
when using the TextEdit or TextInput elements.
Task-number: QTBUG-18019, QTBUG-20017
Change-Id: I67f24465352daa1d2cb12b6d2f378feb676c9804
Reviewed-on: http://codereview.qt.nokia.com/2864
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
Type1 support was only required for postscript
generation. As we don't support this anymore, get
rid of this code.
Change-Id: Ifdc27ec563b5da8d94554f8b078bcd3ac079d201
Reviewed-on: http://codereview.qt.nokia.com/3214
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Add a margin method to QPagedPaintDevice. The other variables
required are stored in QPagedPaintDevicePrivate without a
public API for now. This needs cleaning up once we have a new
printing system.
Change-Id: Id3f2d7ac7f3cbce8619072a897d91f3a588add64
Reviewed-on: http://codereview.qt.nokia.com/3211
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
QPlatformIntegration can't have a dependency onto printing
anymore now that printing lives in it's own library. Move
it into a plugin of it's own.
Change-Id: I3ec4b38f4336eb96d92ea799544d17af359c83e1
Reviewed-on: http://codereview.qt.nokia.com/3210
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Create a libQtPrintSupport library that contains our current
printing infrastructure. Long term this will get replaced
with a libQtPrint, as the current architecture is not
really maintainable.
Change-Id: I7362fff6786b58c5b4e9213c23eda36d15048aa2
Reviewed-on: http://codereview.qt.nokia.com/3209
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
This is required to be able to move the printing system into
it's own library.
Change-Id: If70a55be4c4413f9cd917a30d1b368f32c1145e4
Reviewed-on: http://codereview.qt.nokia.com/3207
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Introduce a QPagedPaintDevice class that has a
newPage() method and page dimensions. QPdfWriter
and QPrinter inherit from it.
Add a bit of API to QPdfWriter.
Change-Id: Ibf23e7fe741f3a5ed854faf5d249a272acc75f35
Reviewed-on: http://codereview.qt.nokia.com/3206
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
This is done to prepare the next step where we move
printing into it's own module.
Change-Id: I95919c28079983e7c5e4ff23d223f8c062b8ac8c
Reviewed-on: http://codereview.qt.nokia.com/3205
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Remove the inheritance from the alpha paint engine
for the PDF generator. The alpha engine was only
required to support transparency on Postscript.
Change-Id: If09a00a3123f73e4c36f708651a3abae014187a3
Reviewed-on: http://codereview.qt.nokia.com/3204
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Rename QPdfBaseEngine to QPdfEngine and QPdfEngine
to QPdfPrintEngine. This fit's better with the use cases.
Change-Id: Ic208b079581768a957f9fdcc333f0bf87f619d46
Reviewed-on: http://codereview.qt.nokia.com/3202
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Goal is to have all functionality related to PDF generation
in QPdf, and then separate out the parts related to
interfacing with the printing system into the pdf printengine.
Change-Id: I8c30cb65365c503945fc270fad5cbcaabe59495d
Reviewed-on: http://codereview.qt.nokia.com/3201
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
The class is required to be able to move the printing
subsystem out into a module of it's own.
Change-Id: I80703b8a8725504c7e6884a34f76e0735efcf95a
Reviewed-on: http://codereview.qt.nokia.com/3200
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Remove the remaining dependency in qnativeimage
and move the whole class into QtGui for compatibility.
The class is not needed anymore since we're not going
to support 8bit/indexed displays going forward.
Change-Id: I7b5f1b2a5661db4ed77bb3801039114c7518512d
Reviewed-on: http://codereview.qt.nokia.com/3199
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Loading of fallback fonts from the font cache was broken.
While iterating through fallback fonts, we would incorrectly skip any
fonts which were already in the cache. This would cause unstable lookup
results for some fonts, depending on the order in which fonts were
loaded during the current process.
Change-Id: I56a6a07e93196ed14f33f4cc181e41c5b8f19498
Reviewed-on: http://codereview.qt.nokia.com/3059
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
This is more conforming to the AT-SPI specs.
Also we have working relations for the label when a buddy is set.
Reviewed-by: Gabi
(cherry picked from commit 8be3168aa2f300f9a93a53b417704f3f10b1dc8b)
Change-Id: I1831d5063b003df2d209aba99d54558b6493a3e9
Reviewed-on: http://codereview.qt.nokia.com/3027
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
Add boundary helper functions to the QAccessibleTextInterface.
Move LineEdit over to use QTextBoundaryFinder.
Reviewed-by: Jan-Arve
(cherry picked from commit c1ec1a95806cda54d5b4e9f8ed159a611bd75964)
Change-Id: Ib93599c49110aab50debe1e3fb0073dd34071c87
Reviewed-on: http://codereview.qt.nokia.com/3025
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
According to the UBA, the object replacement character should be
considered ON. There's no reason to special case its directionality, as
the bidi algorithm will already have given it an implicit
directionality.
Task-number: QTBUG-20910
Reviewed-by: Lars
(cherry picked from commit 2657bfa7c4de9f114331d1714a306b3999ae30d8)
Change-Id: I1c8e45d67ef44b1b6f96edb2f5074331b5422eb7
Reviewed-on: http://codereview.qt.nokia.com/2999
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Do not send accessibility focus events when menus are involved.
There are focus events to preserve the old focus when showing a new popup window.
Reviewed-by: Jan-Arve
(cherry picked from commit 32079bb0b348ef5f7126e69be9bcfb249c1a6412)
Change-Id: Id4838a3aede1d60a1850385e97660d085f055d64
Reviewed-on: http://codereview.qt.nokia.com/3021
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
During window resizing the geometry change events
must be processed before returning from the event
handler.
New API: QWindowSystemInterface::handleSynchronousGeometryChange,
similar to handleGeometryChange but sends the event
immediately instead of queueing it.
Change-Id: I7dc809b3fd2e8a933c100fef3f5144972f46e363
Reviewed-on: http://codereview.qt.nokia.com/2993
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>