| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
(cherry picked from commit cb38007cd3b253fb2e3a8587ae9e64080e707a31)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit 0ba1b4d0 introduced a regression to QTextDocument: it postponed
cursor position adjustment until the move operation is done, but
contentsChanged will be triggered by finishEdit() in this move
operation, thus cursor positions in this signal handler will be in
inconsistent states (normally we should first update cursor position
then trigger contentsChanged). In this case we should also postpone
finishEdit() handling after cursor positions have been adjusted, then
the states expose to applications will be consistent.
Task-number: QTBUG-15857
Reviewed-by: Eskil
(cherry picked from commit 34c297faca93e1286573b2a01127e4e7af00aff2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QTBUG-6611 implemented the long awaited app font support on Symbian. One
of the problems with the underlying Symbian Api for font loading is that
all fonts go into one system wide font store on fbserv. All fonts are
visible to and accessible by every application. And there is no way to
find out if a font is an app font and whose process' app font it is. If
a font with a certain family name is already loaded on fbserv, no other
application can load its font with the same family name. If two
applications access the same font, bad things can happen (details:
QTBUG-16514).
This patch works around naming collisions on the fbserv. It also
prevents Qt applications from using other Qt applications' app fonts. It
does so by "marking" the name of the temporary ttf file before the file
gets loaded by fbserv. All font name strings in the font's 'name' table
get a marker string appended. The marker is composed by a "Q", the uid3,
and on Symbian^3|PR1&below the pid. The marker length is four characters.
When the QFontDatabase is populated, all own app font names are cleand
from the marker, so that the Qt app can use the original font name. Other
applications' app fonts are detected and filtered out of the own font
database.
Symbian's font Api supports only 24 characters as names for font
families. The name marker reduces the effective characters to 20. The
reduced name length is documented for
QFontDatabase::addApplication[FontFromData] as a note.
Since the app font feature is much safer now, it got re-enabled for
Symbian^1 and below by reverting
25ac59fcf1bb03c9af9a2c967218c96c7c77361a .
Task-number: QTBUG-16514
(cherry picked from commit cfb7c16d738993fc8a594361f4bdf10e24fa754a)
|
|
|
|
|
|
|
|
|
|
|
|
| |
read http://bugreports.qt.nokia.com/browse/QTBUG-16514 for
a recipy to reboot the phone just by handling with fonts.
Symbian^1 is vulnerable, and Symbain^3 prevents a phone reboot.
Therefore, I prefer to disable the app font feature for
Symbian^1, until QTBUG-16514 us properly handled.
Task-Number: QTBUG-16514
(cherry picked from commit 25ac59fcf1bb03c9af9a2c967218c96c7c77361a)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch finally implements the missing application font support on
Symbian. QFontDatabase's addApplicationFont[FromData],
applicationFontFamilies and removeApplicationFont are now functional and
allow an application to load, use and unload fonts at run-time.
The underlying Symbian API comes with some restrictions/specialties.
Most of them are worked around in this patch, the missing ones are left
as part of QTBUG-16514:
- The font file must be a file, not a memory buffer. Web fonts and qrc
fonts come as memory buffers. These buffers are saved to a temporary
.ttf file and the file is loaded by the underlying Symbian API. The
temporary file can only be deleted after the font is unloaded.
- The font file must be in a public location in order to be loadable by
Symbian. It can for example not reside in the private application
directory. Therefore, all application fonts (also those that are on the
file system) become a temporary .ttf file in c:\temp\.
- Symbian3/PR2 will come with a font table API which provides direct
access to font tables. Symbian3/PR1 and below are missing this API,
therefore, an own TFontStore is (ab)used to read font tables out of a
font. This patch is considering both code paths in several occasions,
making the Qt Symbian font implementation significantly less
maintainable.
- The fonts are loaded into Symbian's central font server. Loaded fonts
from different processes can have colliding font typeface names (not
file names) on that server. The server does not separate loaded fonts by
their origin processes. Working around such collisions is part of
QTBUG-16514.
The number of fonts loadable at the same time by a Qt application is
limited to the random value 5. Just to prevent abuse of the font
server's memory.
As usual, this patch was looked at by colleagues, and it was adjusted
according to the feedback. But since the bus factor for the
interaction of Qt's and Symbian's font systems is 1, I reviewed this
patch, myself.
Task-Number: QTBUG-6611
Autotest: tst_QFontDatabase::addAppFont
(cherry picked from commit 770fb729929764a1f1c5fbd3d54714cf811c81e0)
|
|
|
|
|
| |
Reviewed-by: Trust Me
(cherry picked from commit ac5c099cc3c5b8c7eec7a49fdeb8a21037230350)
|
|
|
|
|
|
|
|
|
|
| |
We should check not just p but also n in next()/previous(),
which is what isValid() does. Otherwise n == 0 will cause
crash in QFragmentMap.
Task-number: QTBUG-16279
Reviewed-by: Eskil
(cherry picked from commit 64852122ba71bbb297b4f1e440f6fabee16ca2fe)
|
|\
| |
| |
| |
| |
| |
| |
| | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2:
Fixes crash in QGraphicsItem's destructor.
Doc: Fixing typo
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
operator[]
Improves scrolling in testfile content.xml attached to QTBUG-9549.
According to callgrind, the improvement is nearly 35% (comparing total incl. cost of QTextEngine::setBoundary)
total incl cost / calls to setBoundary =
before: 6.0883269E9 / 46520 = approx. 130875.47
after: 2.4834313E9 / 29370 = approx. 84556.733
in relation this gives us: 84556.733 / 130875.47 = approx. 0.64608542
Merge-request: 975
Reviewed-by: Harald Fernengel <harald.fernengel@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Symbian Font Table API is a feature from (the former)
Symbian^4 which will be backported into Symbian^3 in a
random minor OS version. In order to keep Qt source and binary
compatible between these minor versions, we cannot decide at
compile time whether or not to use the new Font Table API.
This patch changes many "#ifdef Q_SYMBIAN_HAS_FONTTABLE_API"
into "if (symbianFontTableApiAvailable())". The Font Table
feature is detected at runtime. Currently, CFeatureDiscovery
is not used, because at the time of writing, that feature flag
test would give false positives or false negatives. Instead,
CFont::ExtendedFunction() is called with KFontGetFontTable to
see if the return value is KErrNone, which indicates that the
feature is available. The avalibility information gets cached,
so the hack happens only once per application run.
The font table Api feature comes with helper classes such as
"RFontTable" and "TGetFontTableParam". But we cannot use those,
because we want to stay source and binary compatible across the
Symbian(^3) versions without the Font table API and those with.
So, in Qt, RFontTable is simply not used and TGetFontTableParam
is replicated as "QSymbianTGetFontTableParam". Same for
KFontGetFontTable, KFontReleaseFontTable and later also
FfFontTable.
This patch has been looked at by colleagues, who verified the
overall #ifdef to if() conversion, but did not feel entitled to
give their official Reviewed-By for an obscure topic like Qt
font support on Symbian. (It sucks to be the only creature in
this universe who -kind of- knows how Qt text handling and
Symbian text handling interact)
Task-Number: QTBUG-15515
|
|
|
|
|
|
|
|
| |
6f6c25b6 introduced this regression because it didn't check d->lout
before calling d->lout->documentChange().
Task-number: QTBUG-15777
Reviewed-by: Eskil
|
|
|
|
|
|
|
|
|
| |
Doing selectAll() after the entire block of text has been removed
will cause this crash, because we didn't check if the block we
found is valid or not.
Task-number: QTBUG-15857
Reviewed-by: Eskil
|
|
|
|
|
| |
Strict aliasing is violated here, so just silence the compiler (GCC)
by using an extension.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The QStaticTextItem held an uncounted reference to QFontEngine. The
pointer would dangle in some cases where there was no font object
referencing the engine and the cache was cleaned out (e.g. when a
new application font is added.) Properly count the reference, and also
add reference counting to userData to make it harder to shoot yourself
in the foot, since the QStaticTextItem class is now being used in
different places,
Task-number: QTBUG-14446
Reviewed-by: Martin Jones
|
| |
|
|
|
|
|
|
|
|
| |
The pixelSize ends up being 0 unless these changes are applied. Must be
a compiler bug in GCC 4.3.x, fixed in GCC 4.4.1.
Reviewed-by: Prasanth
Reviewed-by: Olivier Goffart
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On some Symbian versions (apparently <= Symbian^1),
CFont::GetCharacterData() returns 8-bit data with gray values
0x00, 0x10 ... 0xe0, 0xf0 due to a bug. The glyphs are nowhere
perfectly opaque, which is bad for blitting.
This has been however been fixed for Symbian^3.
The funny thing about this tweak was that it was only executed
on Symbian^3 (with the OpenVG/OpenGL paintengines). On Symbian^1
and below (rasterpaintengine), QFontEngineS60::alphaMapForGlyph()
does not get called at all, anymore.
Therefore, the removal of this tweak should not be noticable
anywhere, except that on Symbian^3, quite a few CPU cycles are
now saved.
See the attachments in QTBUG-14419 for details.
Task-Number: QTBUG-14419
Reviewed-By: TrustMe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(Addition to ab057be7228d20d909246183505b72e821cc440f)
Instead of using a glyph_metrics_t (which gets filled with
data from a TOpenFontCharMetrics), we use a
TOpenFontCharMetrics, directly.
Also, the advances_y gets set to 0. Like on the other
platforms.
These change increases the Fps in
qt\tests\manual\textrendering\textperformance "Latin" from 16.5 to
16.6 Fps on an XM5800. I am sure that I can construct a benchmark
where the speed gain is bigger.
Task-number: QTBUG-14378
Reviewed-by: TrustMe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some glyph position tweaks during the shaping phase require
the "Units per Em" information for the font. QFontEngineS60
did not reimplement emSquareSize(), therefore, some combined
glyphs were rendered incorrectly (see QTBUG-10725)
This patch implements QFontEngineS60::emSquareSize()
Since Symbian does not provide the "Units per Em" via public
Api, we have to pick that out of the 'head' font table.
The value is cached per font.
Task-Number: QTBUG-10725
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QFontEngineS60::boundingBox_const(): The metrics that
CFont::getCharacterData() returns is equivalent to what
TOpenFontCharMetrics::GetHorizBounds() returns. So, remove
the use of TRect glyphBounds, and
TOpenFontCharMetrics::GetHorizBounds().
Implementation of TOpenFontCharMetrics::GetHorizBounds():
http://developer.symbian.org/oss/API_REF/Public_API/file/837f303aceeb/epoc32/include/openfont.h#l1352
QRasterPaintEngine::drawGlyphsS60(): The metrics that
QFontEngineS60::getCharacterData() returns are equivalent to
what QFontEngineS60::boundingBox() returns. So, remove the
use of glyph_metrics_t metrics, and QFontEngineS60::boundingBox().
These changes increase the Fps in
qt\tests\manual\textrendering\textperformance "Latin" from 16.2 to
16.5 Fps on an XM5800. And they do that by removing code :)
Task-number: QTBUG-14378
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
|
|
|
|
| |
An "Open()"ed RGlyphOutlineIterator needs to be "Close()"d
before destroying the iterator. Otherwise some allocated
memory does not get freed. The RGlyphOutlineIterator
destructor does not close an open iterator.
Task-Number: QTBUG-14408
Done-by: Colleague from Nokia, Oulu
Reviewed-by: Alessandro Portale
|
|
|
|
|
|
|
|
|
|
|
| |
If the Arabic text is for some reason undisplayable, e.g. because of
QTBUG-13132, the font engine will be unable to find the tatweel character
and the kashida width may be returned as 0. This would potentially cause
an infinite loop, as "need" would remain >= minKashida forever because
x - 0 is still >= 0.
Task-number: QTBUG-13130
Reviewed-by: Lars
|
|
|
|
|
|
|
| |
It is only used by the fontengines. This is one of the steps to make it
easier to make fontengines build outside of QtGui.
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QFontMetrics::lineWidth() and ::underlinePos() return value 1
regardless of the font size if the size was defined in points
(instead of pixels).
(On Symbian) QFontMetrics::lineWidth() calls
QFontEngine::lineThickness() which uses its fontDef.pixelSize in
order to come up with a suitable line width. If the QFont size
was defined in points, Qt needs to make sure that fontDef.pixelSize
is set accordingly. This patch adds the code to make sure that
QFontEngine::fontDef always has a valid pixel size.
tst_QFontMetrics::lineWidth() was added, wich failed before and
passes after this patch.
Task-Number: QTBUG-13009
Autotest: Passes
Reviewed-By: Eskil
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
An implementation of QFont::lastResortFont() is still(!) missing
in Qt 4.7.0. I only became aware of QTBUG-6921, lately.
This patch...
1) implements QFont::lastResortFont() in qfont_s60.cpp by first
trying to get the lastResortFamily() and then falling back to a
hardcoded font.
2) updates the .def files with one additional entry
3) adds an autotest which verifies that lastResortFamily() does
return a non-empty string. In the firt place, that autotest makes
sure that lastResortFamily() is implemented and exported, so that
something like this issue will not go unnoticed in the next
Qt port.
Task-number: QTBUG-6921
Reviewed-by: Eskil
|
|
|
|
|
|
|
|
| |
QTextControl should no longer inherit the layout direction of
parent widget as its default text direction.
Reviewed-by: Eskil Abrahamsen Blomfeldt
Reviewed-by: Lars Knoll
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The document layou will call setPen() with the PaintContext's text
color. If this is different from the current painter settings, the pen
will be passed on to the paint engine. The result was that, on X11 using
the raster (or opengl) engine, QStaticText would record the pen as
changed even when it hadn't explicitly been changed by the document.
Task-number: QTBUG-13740
Reviewed-by: Samuel
|
|
|
|
|
| |
Task-number: QT-1212
Reviewed-by: David Boddie
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
While drawText() will use the path fallback for large fonts, and never
hit this problem, QStaticText will draw the large fonts into the glyph
cache. This broke when the freetype (or any other font engine) falls
back to the generic implementation of alphaMapForGlyph() which uses
path drawing. The problem was that alphaMapForGlyph() is not supposed
to contain the bearing of the glyph, only the actual pixels. Since
QFontEngine did not honor this contract, we would sample the wrong
area in the glyph cache to get the glyph image.
Task-number: QTBUG-12540
Reviewed-by: Gunnar
|
|\ \
| |/ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Originally, QFontEngineMultiWin does not set its cache_cost according to
the regular font engines it refers to, which makes cache management in
QFontCache useless because cache_cost is always 0, and garbage
collecting timerEvent can hardly be triggered. This patch solve part of
the problem by using cache_cost of the first font engine for
QFontEngineMultiWin.
However, if a font engine is loaded by QFontEngineMulti::loadEngine, the
cost is still not counted.
Task-number: QTBUG-12562
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The assumption that the output glyph array and input glyph array is
of equal size is wrong when unprintable characters are used (and
discarded in getGlyphPositions())
Task-number: QTBUG-12614
Reviewed-by: Jiang Jiang
|
|\ \
| |/ |
|
| |
| |
| |
| |
| |
| | |
Preparations for Application font support on Symbian
Task-Number: QTBUG-6611
|
| |
| |
| |
| |
| |
| | |
Preparations for Application font support on Symbian
Task-Number: QTBUG-6611
|
| |
| |
| |
| |
| |
| | |
Preparations for Application font support on Symbian
Task-Number: QTBUG-6611
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
qmake/Makefile.win32
src/corelib/io/qfsfileengine_win.cpp
src/corelib/kernel/qeventdispatcher_win.cpp
src/gui/dialogs/qfiledialog_win.cpp
src/gui/inputmethod/qcoefepinputcontext_s60.cpp
src/gui/text/qfontdatabase_win.cpp
src/gui/util/qsystemtrayicon_win.cpp
src/script/utils/qscriptdate.cpp
tests/auto/qinputcontext/tst_qinputcontext.cpp
tests/auto/qscriptengine/tst_qscriptengine.cpp
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This was a security hole that has been there for a while, but the
public awareness have recently rised so the threat is more imminent
now.
The solution is to fix all places where we dynamically load system
libraries. More specifically, we now load all system libraries with
an absolute path that points to a library in the system directory
(usually c:\windows\system32).
We therefore introduce a small class named QSystemLibrary that only loads
libraries located in the system path. This shares some of the API with
QLibrary (in order to make the patch as small as possible).
We don't fix QLibrary due to risk of regressions. In
addition, applications can fix the code that calls QLibrary themselves.
The problem does not apply to Windows CE, since the search order is
documented as not searching in the current directory.
However, it touches some CE-specific code - therefore QSystemLibrary
is sometimes used on WinCE (however, it will just do a normal
LoadLibrary() since its safe anyway).
This change does not affect the testability plugin (it is not clearly
documented where that plugin is located, and the plugin should never
be used in production code anyway)
Loading OpenSSL libraries
The ssl libraries are handled specially, and searched in this order
(we cannot expect them to always be in the system folder):
1. Application path
2. System libraries path
3. Trying all paths inside the PATH environment variable
Task-number: QT-3825
Reviewed-by: Thiago Macieira
Reviewed-by: Peter Hartmann
|
|\ \ \
| |/ / |
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (25 commits)
Recognize @, #, $ and ` as word separators
rebuild configure.exe
Fix dependencies so JOM will handle parallellization properly
Symbian: Disable IPv6 for now
Doc: Fixed namespaced Qt build breakage in the model/view tutorial.
Doc: Fixing links on index page and corecting HTML in the template.
Accept empty authority segments in QUrl as different from not-present
Doc: Adds line about non-support for Webkit on Solaris
protect nil dictionary from release.
Fix potential KERN-EXEC 0 on Symbian.
Ukrainian translation updated
Fix remote crash in delivering D-Bus calls with too few arguments
Ensure that OpenGL contexts are attached to an NSView before first paint
Doc: Updating the 3rd party lib used in Qt - including JQuery
Doc: Changed the default URL to avoid a Flash plugin crash on x86-64.
Reduce memory consumption of QtScript/JSC on Symbian
Doc: Updated Supported Platforms page. Finished
New binary of configure.exe with -mp/-no-mp option
Turn Makefile.win32 into batch-mode, enable /MP and PCH
Add option to enable -MP compile option for MSVC
...
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The behavior of Qt with these characters was different than other
toolkits, which annoys some people.
Task-number: QTCREATORBUG-2241
Reviewed-by: mae
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The text option property of QStaticText was not copied in the copy
constructor, so when the text was detached, the property would be
reset to the default.
Task-number: QTBUG-13368
Reviewed-by: Gunnar
|
|\ \ \
| |/ / |
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public:
Symbian: return better default font for SansSerif style hint
Removing a left over #if 1..#endif construct
Fixed a few warnings.
Fixed a bug where passwords would not be committed when confirming.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The latest QtWebkit will use QFont::defaultFamily() with style
hints to ask for the appropriate default fonts on a system.
This patch makes sure thath "Nokia Sans S60" and "Series 60 Sans"
are prioritized for QFont::SansSerif, if they are present.
Task-Number: QTBUG-12611
|
| | | | |
|