summaryrefslogtreecommitdiffstats
path: root/src/gui/text
Commit message (Collapse)AuthorAgeFilesLines
* Fix warnings about truncations in constants.Friedemann Kleint2012-04-032-2/+2
| | | | | Change-Id: I46872c5b2866454112092c1ec5efbfe15db5af33 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Return early in QRawFont::setPixelSize.Pierre Rossi2012-04-031-1/+1
| | | | | | | | We would otherwise end up cloning the font engine for absolutely no reason when the pixel size is already right. Change-Id: I8c34d2b53b596ad49d00031a3fb8e79f3b30d591 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Change fatal exit in QPlatformFontDatabase to a warning.Friedemann Kleint2012-04-021-3/+3
| | | | | | | | | Only warn if the folder containing the qpf2 files is not found. The code path is triggered by the QPA 'minimal' plugin. Change-Id: I12a32001ce867096627033b1d5fb894cab163853 Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Calculate correct bounding rect for glyph runs in QTextLayoutEskil Abrahamsen Blomfeldt2012-04-021-1/+2
| | | | | | | | | | The positions returned by getGlyphPositions() in QFontEngine are for the base line of the glyphs. We offset this by -ascent to get the top of the actual bounding rect. Task-number: QTBUG-22919 Change-Id: Id82c66ecfbdf58064f5ad26f4193fa55ac26bc7c Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Fix a crash in cursorToX() when new block is addedJiang Jiang2012-04-021-0/+4
| | | | | | | | | | | | When an empty new block is being added, the layoutData->memory data will be 0, thus QTextEngine::attributes() will return 0. We should only access the attributes pointer when some text actually exist. Task-number: QTBUG-24718 (cherry picked from commit cac12f4592477d99ef6fffaad40345bf85ef53b5) Change-Id: I203b283dd28653d4b57ba8bfffb259c773f67f19 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Document preedit details on QTextLayoutPekka Vuorela2012-04-021-0/+2
| | | | | Change-Id: Ic73f6d2c748b2ac02b1a8b8c0b00721793557cfd Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Use "qt-project.org" instead of "trolltech" in the resource systemhjk2012-03-281-2/+2
| | | | | | | Task-number: QTBUG-23272 Change-Id: Idcdb9620910577b3c0fc9a792a0446665bd2eab6 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Protect QAbstractTextDocumentLayout::anchorAt() from preeditPekka Vuorela2012-03-271-0/+15
| | | | | | | | | | Previously the method didn't take into account that hitTest() returns visual index, i.e. containing the preedit, and thus was easily hitting assertion. Need to compensate for that before checking for actual link. Change-Id: I119e7f91088b4db9d347a3da338f6df915ce9719 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Fix warnings about commas at the end of enumsThiago Macieira2012-03-241-1/+1
| | | | | | | | It's non-standard to accept them, so remove them and silence the warnings. Change-Id: I51c5afe99eac408f326ab9fcf40435b60e953b54 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Fix the build of -qt-freetypeThiago Macieira2012-03-221-0/+1
| | | | | | | | | | | The symbol must be exported from QtGui for the plugins to be able to see it. Also, fix the build in namespaced case: cannot use extern in QtPlatformSupport because it's not compiled into the Qt namespace. Change-Id: I029533f3524e3cbf6c87aed79c1f2e7b55aebb9b Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Remove hardcoded font names in QFont::defaultFamily()Jiang Jiang2012-03-211-10/+11
| | | | | | | | | | | QFont::defaultFamily() should not use any hardcoded font names like "Helvetica" or "Times" as they might not be present in certain systems, it should rather use abstract names like "sans-serif", "serif" and "monospace" then let the platform plugin to decide which font map to them. Change-Id: I5aafb103a5238c17b10773711ad504806c6fc3ce Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Fix font cache check in QFontEngineFT::recalcAdvances()Miikka Heikkinen2012-03-161-1/+3
| | | | | | | | | | Cached font was used regardless of the format, resulting in incorrect advance in some cases when default format differed from the cached format. Task-number: QTBUG-24188 Change-Id: I39e4156bd9ba743afa7e106e934c90227fbf2b8b Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Use the lazily-queried families for all QPA multi font engines.Pierre Rossi2012-03-147-32/+47
| | | | | | | | | This is the approach introduced together with the WebKit "backdoor" that lets us use QRawFont with QTextLayout. We could use it all over the place and share more code. Change-Id: Ie1963679755f37ba9204d67554a163f1d1115604 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Cleanup after the qsf cache file if it fails to be written toAndy Shaw2012-03-121-8/+25
| | | | | | | | | | It is possible that although a qsf cache file could be opened that it could not be written to, therefore it should clean up after itself in these cases so that it does not cause a problem later on. Task-number: QTBUG-24122 Change-Id: I1999759837607657ddc3f967eeda370ce9991a16 Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
* Line up underlines if fallback fonts are used (QTBUG-21832)Stefan Hundhammer2012-03-123-5/+139
| | | | | Change-Id: Icecc514f6c47c0576af8cabd39cdc0987f8d93fa Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Add a movable type declaration to QGlyphRun.Andrew den Exter2012-03-121-0/+2
| | | | | | | Allow it to take advantage of QList optimisations for pointer types. Change-Id: Iddbb9741efef43604e38fc3eeb08b522c0414e21 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Enablers for shared graphics cache in raster paint engineJiang Jiang2012-03-084-20/+59
| | | | | | | | | | | | Required changes for using shared graphics cache for distance field raster glyph rendering. Most of the logic is in platform plugins. Platform plugins should implement QPlatformIntegration::createImagePaintEngine() to create a subclass of QRasterEngine. Change-Id: Icf0a396e722e43b4caa2c1849aae38753cde38f1 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Remove dead code.Pierre Rossi2012-03-084-32/+0
| | | | | | | | This logic was introduced as part of change I92dfb39289a359f49caa02c2caf8baf66098fb59 but isn't used anymore. Change-Id: I5bcfea99a7a2993434e1e978195a70dae52d6cfa Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Add fonts to QPlatformTheme.Friedemann Kleint2012-03-072-13/+1
| | | | | | | | | | | | | | | | - Remove QPlatformFontDatabase::defaultFonts() returning a hash containing widget name ->font and the Windows implementation. - Add enumeration and font accessor to QPlatformTheme. The value returned for the enumeration value overwrites the default font of the font database. - Implement for Windows, Mac and KDE. - Add more Windows palettes. Task-number: QTBUG-23686 Change-Id: I8a2abdfd216df23daa7c9630c54264cdf61295db Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Make cache of opentype tables in Harfbuzz face lazyEskil Abrahamsen Blomfeldt2012-03-063-6/+12
| | | | | | | | | | | | | | | | | | | | The mechanism in fontconfig which determines if a certain character is available (FcCharSetHasChar()) may give false positives, in which case we would load and unload those fonts per every char for which FC gave us a false positive. This was a major performance regression. Specifically the false positives happened when looking at e.g. italic variants of certain multilingual fonts, since we only check the charset of the font family as a whole and not of the specific variant, which may only support a subset of the chars. To optimize this, we remove the deletion of the font engines after loading them, but also wait with loading the opentype tables until they are actually needed. This means that for the false positives, we will load the font, but the cached data for each unused font will be much smaller. Change-Id: Idfc794401a2080da5946bf65204eb947aeb635ed Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Merge remote-tracking branch 'origin/api_changes'Lars Knoll2012-03-044-23/+3
|\ | | | | | | | | | | | | | | | | | | Conflicts: dist/changes-5.0.0 mkspecs/features/qt_module_config.prf qmake/project.cpp qmake/property.cpp Change-Id: I6e4af40743a9aeff8ed18533a48036e332acc296
| * Merge master -> api_changesRohan McGovern2012-02-294-30/+50
| |\ | | | | | | | | | | | | | | | Includes fixes for tst_qfiledialog2, tst_qtextedit autotests on mac. Change-Id: I49cac26894d31291a8339ccc1eb80b6a940f0827
| * | QFontMetrics: make conversion from QFont to QFontMetrics explicitMarc Mutz2012-02-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | There is no user of this in qtbase, and I don't think this is a desireable feature anyway. Change-Id: Ifebba5872b0eadb0daba3c3cd5f8b19abeed5c12 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * | QFontEngine: remove unused and buggy grayPalette()Marc Mutz2012-02-272-20/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QFontEngine::grayPalette() mistakenly returns an empty vector, so even if there's a user (the class it exported, after all), it cannot correctly use it. So, just remove it. Change-Id: Id5f70139e5f6ed9a2a3f28400cd0750d14cb7dc0 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
| * | Inline and mark as deprecated images's serialNumber()Olivier Goffart2012-02-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These function are marked as obsolete since Qt 4.3 The motivation here was too fix QPixmap::serialNumber which is marked as QT_DEPRECATED_SINCE but was not inlined. But then I took the oportunity to do the same with all the other functions. Change-Id: Ic50a7857461fc402b2f2b4528c83e53e8e28ea30 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | | Remove the usage of deprecated qdoc macros.Casper van Donderen2012-03-0210-114/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDoc now has support for Doxygen style commands for italics, bold and list items. This change applies that change in QDoc to the actual documentation. Task-number: QTBUG-24578 Change-Id: I519bf9c29b14092e3ab6067612f42bf749eeedf5 Reviewed-by: Shane Kearns <shane.kearns@accenture.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | | Revert "Don't render glyph with FT with fetchMetricsOnly"Jiang Jiang2012-03-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Report https://bugs.webkit.org/show_bug.cgi?id=79561 shows that this commit will cause significant slow down in text handling operations. Though the exact reason is unknown we should revert it first and find out the reason later. This reverts commit 692064bcfd116c2f3a2b30572e511ee68c6a0531. Change-Id: I16a56c3093bdfa2119ab6a6e9049ef2925468e29 Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
* | | Allow using multi fontengine in QTextLayout with QRawFont.Pierre Rossi2012-03-017-22/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change enables us to instantiate a QFontEngineMulti that takes the raw font's font engine as its primary engine but can use fallback engines based on the platform. Since this can be quite expensive, we defer the query for fallback families' names until it's needed and we cache the resulting multi font engine. Change-Id: I390dbc1cb2fe61d56867f29a03f313eb3eb49dc3 Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
* | | Add support for QRawFont in QTextLayout.Pierre Rossi2012-03-016-64/+171
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | The purpose of this change is to allow shaping complex text while using QRawFont. This is needed for WebKit so that we can switch to using QRawFont everywhere and be more in line with what other WebKit ports do. Since this change slightly bends the aim of QRawFont, let's reserve this for internal use for now. Change-Id: I5ec0881f50ce288350bd277570cb5f1fb70c355c Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
* | Fix divide by zero when glyphWidth is 0Jiang Jiang2012-02-281-0/+2
| | | | | | | | | | Change-Id: Ic0108b76b8d73cc977f8d64e036a65cb93db4684 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* | Fix icon loading in style sheets.Friedemann Kleint2012-02-272-28/+33
| | | | | | | | | | | | | | | | | | QIcon was moved to QtWidgets, while the parser is still in QtGui. Introduce a QCss::IconValue struct that contains the icon data and convert to QIcon in widgets. Change-Id: I09ac8a12a4b02bdca91ee2e8fcc28c86b5a001e7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* | QTextEngine - treat a fullstop (0x2E) as the same script as the preceeding ↵John Tapsell2012-02-231-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | text when dividing up strings Many languages use a fullstop to indicate an abbreviation, making the fullstop part of the word. For languages like thai, it is required to pass the fullstop along for correct word breaking. Change-Id: I5ad0ddbc66ea96e08913446dad8fd3c5d5dd0905 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* | Fix typosPekka Vuorela2012-02-221-1/+1
|/ | | | | Change-Id: Ic0389d36bad001935376fb29d8c925b7ff908e4f Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
* replace 'const QChar &' with 'QChar ' where appropriateKonstantin Ritt2012-02-218-13/+13
| | | | | | | | | as QChar is actually an ushort and there is no point in taking its address. Merge-request: 69 Change-Id: Idcc9d621e5627514ade006aa12a789a88929d48b Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Remove QPlatformIntegration/QPlatformTheme from QGuiAppPrivate.Friedemann Kleint2012-02-203-0/+3
| | | | | | | Forward-declare instead. Change-Id: I3851994e8bc05b389e94e948478339ba33d521c1 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Remove unnecessary image height adjustments from layout.Andrew den Exter2012-02-201-3/+3
| | | | | | | | | cb8445f0323b0eefbb04f1d8adad81a00b53abd8 removes an implied +1 from document line height so we need to remove the compensating -1 from image ascent/descent for image heights to be correct.. Change-Id: I310c06bcf1ce2eefef42c2828faa0eb435ad71cf Reviewed-by: Yann Bodson <yann.bodson@nokia.com>
* Don't render glyph with FT with fetchMetricsOnlyJiang Jiang2012-02-171-1/+1
| | | | | | | | | Neither rendering with outline nor fetchMetricsOnly requires the rendering from FreeType so we don't need to render them or cache it. It should speed up recalcAdvances() quite a lot. Change-Id: I0f623cb4f79da2edf6e9c9634a2f22fb0c66823c Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Remove historical +1 from font height calculationEskil Abrahamsen Blomfeldt2012-02-176-14/+13
| | | | | | | | | | | Historically, we've calculated font height as ascent+descent+1. In Qt 4, a patch was added to work around this by subtracting 1 from the descent of the font engines. We now remove the +1 and the work arounds. Change-Id: I7e25d49b97ac892015d3328f32d70eb9a7c2d88f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Avoid loading and keeping unused fallback font enginesEskil Abrahamsen Blomfeldt2012-02-179-4/+74
| | | | | | | | | | | | | | | | | | | | | | | | | When we request glyphs from fallback fonts, we would potentially load all fonts on the system into memory. This is especially true for glyphs that are not supported by any font (or by the last in the list) in any "Common" script (which e.g. includes CJK). This would make any application which tried to display unsupported glyphs use huge amounts of memory for keeping unused fonts cached, only limited by the number of fonts on the system. The patch contains two solutions: First, before loading the font, the multi font engine will be asked whether it needs to be tried for the given character. By default, this will always be true, so all fonts will be tried, but with the new font config multi engine in the platform plugin, it will ask FontConfig whether the font contains a glyph for the character. Should the font be loaded and still fail to resolve the character (which could be the case for other platforms), we will simply delete it again immediately instead keeping it cached. Change-Id: I92dfb39289a359f49caa02c2caf8baf66098fb59 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Add support for querying an elided sub-string from QTextEngine.Andrew den Exter2012-02-162-20/+24
| | | | | | | | | | | The QML Text element attempts to layout text first without eliding and only builds an elided string for the last visible line. This allows it to re-use the already generated layout information to build the elided string rather than doing a second layout of the relevant text. Change-Id: Ieee45902d0c129853abe822c465eece4d634a028 Reviewed-by: Martin Jones <martin.jones@nokia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Use english name to match font in windows platformjian liang2012-02-162-3/+37
| | | | | | | | | | | | | | In windows platform, simplified chinese envrionment, the default font family name is "SimSun" which is not in the font list generated by EnumFontFamiliesEx(), this will cause chinese font can't be displayed. This patch will generate font's english name during font enumeration in windows platform, and take font's english name into consideration in font matching. The english name generation code is taken from Qt4.8 Change-Id: Ie939ec0c8c08c628a835c7a53fb22d0545626d9c Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Use newly-added QFileInfo::isNativePathJoão Abecasis2012-02-142-7/+8
| | | | | | | | | | | | Don't indirect over internal API. With QAbstractFileEngine and friends on the way out, QFile is losing its (marked internal) virtual fileEngine() function and the file engine can't be queried for LocalDiskFlag. That information is now available through QFileInfo, instead. Change-Id: I48827a96fd8cd748055ad5f075912fc8e1c5ef7f Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Improvement to font database cleanupjian liang2012-02-102-21/+34
| | | | | | | | | | | | | | | | | | This patch do the following things: 1) Call QFontDatabasePrivate::free() to clean up font database before destroying the platform integration object. This is to prevent object leak which is allocated by platform plugin. 2) Allocate FontFile structure for each font registered in windows platform to prevent double free of FontFile structure. 3) qt_registerFont() will release the old handle of the registered font and replace it with the new handle. This is to prevent FontFont structure leak. Change-Id: Ib5ca20c695e1e365689fd8554f7caff6ee77a0b1 Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Preserve weight and style request for multi font enginesJiang Jiang2012-02-092-5/+7
| | | | | | | | So that fallback fonts can pickup the weight/style requested instead of using the weight and style of the primary font. Change-Id: Ia592e079cad61334f21e0453412b198a900bb6b6 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Eliminate a warningJiang Jiang2012-02-091-2/+2
| | | | | Change-Id: I984821d90df272b85d02c6ee0db5a89174d80873 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* QTextEdit cursor position fix when moving left/right with selectionPasi Matilainen2012-02-081-6/+20
| | | | | | | | | | | | When text has been selected in a QTextEdit and the left or right arrow key is pressed, the cursor moves one character beyond the start or end of the selection, when it shouldn't move past the selection. Fixed by moving the cursor to the right place when a selection is active. Task-number: QTBUG-22853 Change-Id: I9ea1863436db98627a6fd041ce554cf10be26493 Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com> (cherry picked from commit 1b031759ddfdab9703dfecac13f1ed318da3dafe)
* Fix memory leak of QFontEngineBox objectjian liang2012-02-061-1/+5
| | | | | | | | Delete QFontEngineBox object in QFontDatabase::load() if the object can not be used. Change-Id: Ifb055809703fb6be92f41fd56658198df30837fd Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Add distance field generation functions from ScenegraphJiang Jiang2012-02-063-2/+851
| | | | | | | | Since we may use distance field text rendering in raster, these functions need to be moved from declarative to QtGui. Change-Id: I158bc3bae02b5590ae812f06ad7a78a5914bcb9e Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Windows QPA: Compile with QT_NO_CAST_FROM_ASCII, warnings.Friedemann Kleint2012-02-021-1/+1
| | | | | Change-Id: I75d6a102a6a1fa0b5f8add049442f23d6fd57725 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Renamed QInputPanel as QInputMethodPekka Vuorela2012-02-021-2/+2
| | | | | | | | | | | QInputMethod better describes what the class is about, input methods in general, be they panels or just composing input from key events. Compatability headers added for old name. Not bulletproof but should be enough to get transition done. Change-Id: Iefde6e7ccb1ec4a3b226cef3469089e751c60fc1 Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>