| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
5f2b6dd2a50275bc05ae5d7e9dd8902d6d49d9df increased refcounts for
font engines in QTextEngine cache, we need to decrease them when
the QTextEngine is deallocated.
Task-number: QTBUG-21222
Reviewed-by: Eskil
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Loading app fonts will clear the application font cache, but
QFontPrivate::engineWithScript will try to load the font again,
in Mac the font engine used here must be the one used for shaping,
because subsequent sub font engines may be added to it during the
shaping process (QCoreTextFontEngineMulti::stringToCMap). That is
why we need to fetch the font engine directly from QTextEngine's
fontEngine cache instead of QFontCache.
Task-number: QTBUG-20250
Reviewed-by: Eskil
|
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/plugins/platforms/wayland/qwaylandclipboard.cpp
src/plugins/platforms/wayland/qwaylandclipboard.h
src/plugins/platforms/wayland/qwaylanddisplay.cpp
src/s60installs/eabi/QtOpenGLu.def
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
doc/src/examples/wheel.qdoc
src/gui/util/qflickgesture.cpp
src/gui/util/qflickgesture_p.h
src/gui/util/qscroller.cpp
src/gui/util/qscroller.h
src/gui/util/qscroller_p.h
src/gui/util/qscrollerproperties.cpp
src/gui/util/qscrollerproperties.h
tests/auto/qscroller/tst_qscroller.cpp
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Updated version of LGPL and FDL licenseheaders.
Apply release phase licenseheaders for all source files.
Reviewed-by: Trust Me
|
| | |
| | |
| | |
| | | |
Reviewed-by: TrustMe
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We need to find out the closest element in the ligature to
the point we clicked (or tapped), currently we do this by
dividing the width of that ligature glyph evenly by the number
of characters it covered. We only support Common and Greek script
at this point, ligatures in other scripts are still handled as a
whole.
Task-number: QTBUG-19260
Reviewed-by: Eskil
|
|/
|
|
|
|
|
|
|
| |
We cannot use QTextCursor::MoveStyle enums in QTextLine because
QTextCursor is not a QObject, while referring to that enum in
Q_PROPERTY requires it to be. That's why we need to move the
enums in Qt namespace.
Reviewed-by: David Boddie
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bidi input can in some contexts be more intuitive if the cursor
works in visual way: pressing left arrow key always make cursor
move one character to the left regardless the language of text,
pressing right arrow key always make cursor move to the right.
It is also the behavior of Mac OS X. Based on the above reason
and requests from Symbian we implemented this support for visual
movement in BIDI text. 3 public properties are added to
QTextDocument, QTextLayout and QLineEdit respectively:
- QTextDocument::defaultCursorMoveStyle can be used to control
the cursor behavior in all widgets based on QTextDocument,
like QTextEdit, QPlainTextEdit, etc. When set to QTextCursor::
Visual, it will enable visual movement for all the cursors in
the corresponding text edit. Default is QTextCursor::Logical.
- QTextLayout::cursorMoveStyle is used for low-level cursor
manipulation. When set to Visual, it will enable visual movement
behavior for all the cursor related methods, including cursorToX,
xToCursor and drawCursor. Default is Logical.
- QLineEdit::cursorMoveStyle is used to control cursor movement
behavior in QLineEdit. Default is Logical.:
Task-number: QTBUG-13859
Reviewed-by: Eskil
|
|
|
|
|
|
|
|
| |
In this case we can't use line width to align the text, we have to
use the rectangle width given in QPainter::drawText for alignment
instead.
Reviewed-by: Eskil
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
examples/webkit/imageanalyzer/imageanalyzer.h
examples/webkit/imageanalyzer/mainwindow.h
mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h
src/corelib/io/qfsfileengine_iterator_unix.cpp
src/corelib/io/qfsfileengine_iterator_win.cpp
src/corelib/kernel/qcoreapplication.cpp
src/network/access/qnetworkaccessdatabackend.cpp
src/plugins/bearer/connman/qconnmanservice_linux.cpp
src/plugins/platforms/openvglite/qwindowsurface_vglite.h
src/s60installs/bwins/QtCoreu.def
src/s60installs/eabi/QtCoreu.def
src/s60installs/s60installs.pro
tools/assistant/tools/assistant/helpviewer_qwv.h
tools/qdoc3/test/qt-html-templates.qdocconf
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/gui/painting/qpainter.cpp
src/gui/text/qtextengine.cpp
tests/auto/qimage/tst_qimage.cpp
tests/auto/qpainter/tst_qpainter.cpp
tools/qdoc3/test/assistant.qdocconf
tools/qdoc3/test/designer.qdocconf
tools/qdoc3/test/linguist.qdocconf
tools/qdoc3/test/qmake.qdocconf
tools/qdoc3/test/qt-build-docs.qdocconf
tools/qdoc3/test/qt-html-templates.qdocconf
tools/qdoc3/test/qt-html-templates_zh_CN.qdocconf
tools/qdoc3/test/qt.qdocconf
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Internally, QTextEngine use int to calculate most of the layout data
required. If a string longer than 2^24 is passed into either QTextEngine
or classes using it (QStackTextEngine, QPainter, QFontMetrics, etc.),
overflow will happen because the memory size required to allocate for
layout will become too large for int to handle. This patch will prevent
these cases and add error handling mechanism for relevant code.
Task-number: QT-3658
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|\ \
| |/
| |
| |
| | |
Conflicts:
src/gui/kernel/qapplication.h
|
| |
| |
| |
| |
| |
| | |
The QPaintBuffer gets the text from the text item in order to stream it.
Reviewed-by: Jocelyn Turcotte
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-2: (37 commits)
Small fix in iteviews for sizeHintForColumn/Row
Incorrect assertion in item views
Track the GL DCs we use across different threads under Windows.
Add copyright header
Avoid static local QHash
Remove explicit 'virtual' specifiers to conform to Qt coding standard
Use Q_ASSERT_X() rather than Q_ASSERT(!"message") idiom
Add eglnullws QScreen driver
Fixes the double spinbox not updating geometry when suffix is changed
Made QGL2GradientCache thread safe.
Add QItemSelectionRange::operator<()
Don't call GetDC() nedlessly.
Make QScriptAnalysis fit in two bytes again
QGLPixelBuffer should not rely on temporary QGLWidgets.
Initialize pex.
Remove warning.
Fix the tests for the internal GL resource system.
Rework how QGLTextureGlyphCache makes use of the resource system.
The group pointer should no longer be a part of the 64 bit int.
Enable glyph uploads from a thread in the X11 font engine.
...
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-2: (34 commits)
Add copyright header
Avoid static local QHash
Remove explicit 'virtual' specifiers to conform to Qt coding standard
Use Q_ASSERT_X() rather than Q_ASSERT(!"message") idiom
Add eglnullws QScreen driver
Fixes the double spinbox not updating geometry when suffix is changed
Made QGL2GradientCache thread safe.
Add QItemSelectionRange::operator<()
Don't call GetDC() nedlessly.
Make QScriptAnalysis fit in two bytes again
QGLPixelBuffer should not rely on temporary QGLWidgets.
Initialize pex.
Remove warning.
Fix the tests for the internal GL resource system.
Rework how QGLTextureGlyphCache makes use of the resource system.
The group pointer should no longer be a part of the 64 bit int.
Enable glyph uploads from a thread in the X11 font engine.
Make qt_pixmap_serial thread-safe.
Clean up debug output.
Clarification regarding the WA_X11InitThreads flag.
...
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When the size of the "flags" variable was increased, the bit field
was expanded to be three bytes. Since the "script" variable does not
use its full eight bits, we reduce it by one to compensate.
Reviewed-by: Simon Hausmann
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When laying out text, a significant amount of time was being spent
querying for the font engine. This patch:
* changes the layout to only query for the engine when a new script item
is encountered.
* adds an internal cache of the previous result to
QTextEngine::fontEngine(). This catches the important case of multiline
text with few font engine changes.
With these changes layout costs are now approximately 60% of what they
were previously, as measured by the text layout benchmarks.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|/
|
|
|
|
|
|
| |
When "leadingIncluded" was introduced, "length" was mistakenly not
decremented. This commit also changes a bool in QTextEngine::LayoutData
to make it part of a 1 byte bit field.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
| |
Make sure we use the same method to determine RTL/LTR
for the layout everywhere.
Task-number: Part of QT-3292
Reviewed-by: Simon Hausmann
|
|
|
|
|
|
|
|
|
|
| |
This allows quick layouting especially with Windows fonts which
contain heavy OpenType logic.
On regular latin text the visual compromize is the loss of kerning,
justification, capitalization, word spacing and letter spacing support.
Reviewed-by: Simon Hausmann
Reviewed-by: Eskil
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The mac font engine was made to return fractional values. This has
exposed a few bugs where the rounded height of the font was used for
text layouts and widget size hints. Since a fractional part of the
font's height also creates pixels, rounding the height down in these
cases is always wrong.
The biggest culprit was QScriptLine::height. This is used to lay out
text lines and returning a fractional height created problems all
over the place. Rather than ceil the number in all places where it
is used, we simply return a ceiled value for the line's height.
In 4.6, this value would be qRound(ascent)+qRound(descent)+1,
which would in some cases cause the previous and current line to
overlap by one pixel. By ceiling the sum of the two, we guarantee
that the text line contains the complete bounds of the font.
A note about the removal of the code that gets the font metrics for
QSmallFont: The condition would never be true since this is inside
a branch which is only evaluated if fontIsSet is true.
Task-number: QTBUG-9971
Reviewed-by: Gunnar
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In change 5364fd96a72c89b281f0540da909fe64d0575ccf and some related
changes, we made sure that the natural text width used for calculating
bounding rects and line breaks in the text, takes the right bearing
of the last glyph into consideration.
As a side-effect, this broke alignment of text, as we want to align
based on the accumulated advance of the glyphs, not based on the actual
width. This is in particular important when aligning monospaced text,
since the text can become misaligned if the glyphs extend beyond their
advance. The bug was visible e.g. in line numbers ending with 2 in
Qt Creator on X11, which would be shifted one pixel to the left compared
to other line numbers.
Task-number: QTBUG-8864
Reviewed-by: Thorbjørn
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QTextEdit (via QTextLayout) and QPlainTextEdit in Qt used to ignore
any font leading but added one extra pixel in QFontMetrics. With many
freetype fonts, this resulted in a "spacy" text layout.
The necessary fixes on X11 and Windows were to take (positive) leading
into account, to make the font database convert point sizes to pixel
sizes without rounding to plain integer values, and to subtract the
extra pixel from QFontMetrics from the font engines' descent value.
The change also fixes several places in styles and widgets, where
QFontMetrics::lineSpacing() was wrongly used instead of
QFontMetrics::height().
Ideally we should also handle negative leading, which would require
additional and bigger code changes in QTextLayout and QPlainTextEdit.
In addition, all other editors we have tested seem to ignore leading on
X11. If we choose to believe the values provided by freetype, our text
layout would be one pixel smaller than everybody else's.
On the Mac, this change does nothing. There our layout is still too spacy,
and for smaller fonts quite ugly compared to native Mac applications.
Done with mae.
Reviewed-by: mae
|
|
|
|
|
|
|
|
|
| |
In the QPF1 engine if the font does not exist, then the default
constructor of glyph_metrics_t is used which sets the x and y values to
the unlikely value of 100000. These glyph_metrics_t instances are not
suppose to be used in the text layout calculations.
Task-number: pending
|
|
|
|
| |
Reviewed-by: Trust Me
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
demos/boxes/glshaders.cpp
demos/boxes/vector.h
demos/embedded/fluidlauncher/pictureflow.cpp
demos/embedded/fluidlauncher/pictureflow.h
doc/src/desktop-integration.qdoc
doc/src/distributingqt.qdoc
doc/src/examples-overview.qdoc
doc/src/examples.qdoc
doc/src/frameworks-technologies/dbus-adaptors.qdoc
doc/src/geometry.qdoc
doc/src/groups.qdoc
doc/src/objecttrees.qdoc
doc/src/platform-notes.qdoc
doc/src/plugins-howto.qdoc
doc/src/qt3support.qdoc
doc/src/qtdbus.qdoc
doc/src/qtdesigner.qdoc
doc/src/qtgui.qdoc
doc/src/qtmain.qdoc
doc/src/qtopengl.qdoc
doc/src/qtsvg.qdoc
doc/src/qtuiloader.qdoc
doc/src/qundo.qdoc
doc/src/richtext.qdoc
doc/src/topics.qdoc
src/corelib/tools/qdumper.cpp
src/gui/embedded/qkbdpc101_qws.cpp
src/gui/embedded/qkbdsl5000_qws.cpp
src/gui/embedded/qkbdusb_qws.cpp
src/gui/embedded/qkbdvr41xx_qws.cpp
src/gui/embedded/qkbdyopy_qws.cpp
src/gui/embedded/qmousebus_qws.cpp
src/gui/embedded/qmousevr41xx_qws.cpp
src/gui/embedded/qmouseyopy_qws.cpp
src/gui/painting/qpaintengine_d3d.cpp
src/gui/painting/qwindowsurface_d3d.cpp
src/opengl/gl2paintengineex/glgc_shader_source.h
src/opengl/gl2paintengineex/qglpexshadermanager.cpp
src/opengl/gl2paintengineex/qglpexshadermanager_p.h
src/opengl/gl2paintengineex/qglshader.cpp
src/opengl/gl2paintengineex/qglshader_p.h
src/opengl/util/fragmentprograms_p.h
src/plugins/kbddrivers/linuxis/linuxiskbdhandler.cpp
src/plugins/mousedrivers/linuxis/linuxismousehandler.cpp
src/script/parser/qscript.g
src/script/qscriptarray_p.h
src/script/qscriptasm_p.h
src/script/qscriptbuffer_p.h
src/script/qscriptclass.cpp
src/script/qscriptclassdata_p.h
src/script/qscriptcompiler.cpp
src/script/qscriptcompiler_p.h
src/script/qscriptcontext.cpp
src/script/qscriptcontext_p.cpp
src/script/qscriptcontext_p.h
src/script/qscriptcontextfwd_p.h
src/script/qscriptecmaarray.cpp
src/script/qscriptecmaarray_p.h
src/script/qscriptecmaboolean.cpp
src/script/qscriptecmacore.cpp
src/script/qscriptecmadate.cpp
src/script/qscriptecmadate_p.h
src/script/qscriptecmaerror.cpp
src/script/qscriptecmaerror_p.h
src/script/qscriptecmafunction.cpp
src/script/qscriptecmafunction_p.h
src/script/qscriptecmaglobal.cpp
src/script/qscriptecmaglobal_p.h
src/script/qscriptecmamath.cpp
src/script/qscriptecmamath_p.h
src/script/qscriptecmanumber.cpp
src/script/qscriptecmanumber_p.h
src/script/qscriptecmaobject.cpp
src/script/qscriptecmaobject_p.h
src/script/qscriptecmaregexp.cpp
src/script/qscriptecmaregexp_p.h
src/script/qscriptecmastring.cpp
src/script/qscriptecmastring_p.h
src/script/qscriptengine.cpp
src/script/qscriptengine_p.cpp
src/script/qscriptengine_p.h
src/script/qscriptenginefwd_p.h
src/script/qscriptextenumeration.cpp
src/script/qscriptextenumeration_p.h
src/script/qscriptextqobject.cpp
src/script/qscriptextqobject_p.h
src/script/qscriptextvariant.cpp
src/script/qscriptfunction.cpp
src/script/qscriptfunction_p.h
src/script/qscriptgc_p.h
src/script/qscriptmember_p.h
src/script/qscriptobject_p.h
src/script/qscriptprettypretty.cpp
src/script/qscriptprettypretty_p.h
src/script/qscriptvalue.cpp
src/script/qscriptvalueimpl.cpp
src/script/qscriptvalueimpl_p.h
src/script/qscriptvalueimplfwd_p.h
src/script/qscriptvalueiteratorimpl.cpp
src/script/qscriptxmlgenerator.cpp
src/script/qscriptxmlgenerator_p.h
tests/auto/linguist/lupdate/testdata/recursivescan/project.ui
tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp
tests/auto/qkeyevent/tst_qkeyevent.cpp
tools/linguist/shared/cpp.cpp
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|\ \
| |/ |
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Task-number: 246130
Reviewed-by: joerg
Introduce Q_WS_WINCE for Windows CE only windowing parts. So far we
decided to stick with Q_WS_WIN32, but having a separate define
makes the code more readable. In addition Q_WS_WINCE_WM is available
for Windows Mobile only parts, where we do not check for the OS on
runtime.
|
|
|