Commit Graph

1096 Commits

Author SHA1 Message Date
Xidorn Quan
aa54f7c700 Bug 1283106 - Put empty skip chars in gfxPlatform singleton rather than static local variable. r=jfkthame
MozReview-Commit-ID: 5SU6ewm5wbd
2016-07-05 11:02:24 +10:00
Xidorn Quan
ac4daefb98 Bug 1160847 part 3 - Restore virtual bidi control characters for reordering. r=jfkthame
This patch mainly consists of two parts, one for resolving and the other
for reordering.

In the resolving part, the added code stores the lowest embedding level
of all bidi formatting characters precede a frame to the bidi data of
that frame when necessary.

In the reordering part, virtual frame is restored from the information
stored above before asking the bidi engine to reorder frames

Collapsing a run of continuous virtual formatting characters into one
virtual character with the lowest embedding level among them should work
because a character with a higher embedding level than either of its
neighbors should not affect the reordering result of any other part of
the sequence. (No formal proof of this theorem, though)

MozReview-Commit-ID: LQjRu0mWsZP
2016-06-29 17:47:18 +10:00
Xidorn Quan
5c7f995803 Bug 1160847 part 2 - Add glue to nsBidiPresUtils to use support for bidi isolate in nsBidi. r=jfkthame
This patch is mainly based on smontagu's wip patch. Some non-trivial differences:

* BidiParagraphData.mIsolateCount and related code are not added in this patch.
  I investigated uses of this field in the wip patch, and it seems to me none of
  them makes sense:
  1. in the fast path of nsBidiPresUtils::ResolveParagraph, if there would be
     any isolate character in the surrounding text, there must exist more than
     one runs, which indicates the isolate count condition is redundant.
  2. in handle of br frame in nsBidiPresUtils::TraverseFrames, based on my
     understanding of "CSS Writing Modes Level 3" section "2.4.4. Paragraph
     Breaks Within Embeddings and Isolates", the resolving should happen
     unconditionally.

* {control,override}Char in nsBidiPresUtils::TraverseFrames are assigned
  unconditionally when in a bidi inline container, so that we can properly
  handle it when there are continuations. I suspect this was the reason of
  regressions in dynamic reftests from the wip patch mentioned in comment 1.

MozReview-Commit-ID: LUdBAapA48e
2016-06-29 17:47:00 +10:00
Brad Werth
69ccb7e3db Bug 1243559 - Removes static casts from calls to FrameProperties::Get, ::Set, and ::Remove, and forces callers to use the type associated with the property. r=dbaron 2016-06-21 13:17:11 -07:00
Makoto Kato
82adc21cb9 Bug 1203871 - Part 1. Add nsIFrame::GetCharacterRectsInRange. r=jfkthame
Masayuki suggests GetCharcterRectsInRange instead of first idea's API by part 2 implementation.

IME wants to need the width per character.  Now nsTextFrame/nsIFrmae has only API to get point of string.  So I want to add this method to calculate simply by comment #3.

If no text frame,  I would like to return error due to no character.  (Caller shouldn't call this API on non-text frame.)

MozReview-Commit-ID: LQHUTzhnGn
2016-06-23 12:02:14 +01:00
Xidorn Quan
597eddfb3f Bug 1281457 - Compute justification spacing eagerly in SetupJustificationSpacing. r=jfkthame
Before this change, SetupJustificationSpacing calls ComputeJustification
to compute how justification gaps are assigned to characters, and store
them in the PropertyProvider instance. When GetSpacing is called, those
information would be used to compute actual spacings from justification
before/after each character.

The bug is that, GetSpacing did not take gaps before the given range
into account when computing the spacing, which leads to unstable results
when range varies because of ignorance of accumulated error.

This patch changes it to eagerly computing the actual spacings inside
SetupJustificationSpacing, so that GetSpacing just queries the result
from mJustificationSpacings.

MozReview-Commit-ID: HoWqeOhD85w
2016-06-28 10:26:47 +10:00
Phil Ringnalda
ae1f6b874d Back out changeset 0bb00282a4c2 (bug 1243559) for widespread SVG assertion failures
CLOSED TREE
2016-06-22 18:45:08 -07:00
Brad Werth
665cd94da6 Bug 1243559 - Removes static casts from calls to FrameProperties::Get, ::Set, and ::Remove, and forces callers to use the type associated with the property. r=dbaron 2016-06-21 13:17:11 -07:00
Xidorn Quan
e58ba38557 Bug 1281099 part 2 - Merge three bidi frame properties into one. r=jfkthame
MozReview-Commit-ID: CEJhM3c21KO
2016-06-21 17:53:10 +10:00
Xidorn Quan
e4b1698b6a Bug 1281099 part 1 - Convert some macros to functions to help later change. r=jfkthame
MozReview-Commit-ID: 2OS5eIsNAYN
2016-06-21 17:21:09 +10:00
Xidorn Quan
99d0105305 Bug 1186892 - Handle url strikeout separately from IME selection types. r=jfkthame
MozReview-Commit-ID: CVwoKiMOHj9
2016-06-21 08:19:21 +10:00
Masayuki Nakano
35646e4494 Bug 1278014 part.14 Rename SelectionType::SELECTION_URLSTRIKEOUT to SelectionType::eURLStrikeout r=smaug
MozReview-Commit-ID: 7AqeDbHxGE2
2016-06-09 20:58:56 +09:00
Masayuki Nakano
fdeb61aef7 Bug 1278014 part.13 Rename SelectionType::SELECTION_URLSECONDARY to SelectionType::eURLSecondary r=smaug
MozReview-Commit-ID: C2IW7nqjEkD
2016-06-09 20:47:48 +09:00
Masayuki Nakano
322b23236c Bug 1278014 part.12 Rename SelectionType::SELECTION_FIND to SelectionType::eFind r=smaug
MozReview-Commit-ID: BZxBnCDBghi
2016-06-09 20:35:20 +09:00
Masayuki Nakano
22e3897811 Bug 1278014 part.10 Rename SelectionType::SELECTION_IME_SELECTEDCONVERTEDTEXT to SelectionType::eIMESelectedClause r=smaug
MozReview-Commit-ID: 8v3mqcYorOI
2016-06-09 19:29:29 +09:00
Masayuki Nakano
89a66c2729 Bug 1278014 part.9 Rename SelectionType::SELECTION_IME_CONVERTEDTEXT to SelectionType::eIMEConvertedClause r=smaug
MozReview-Commit-ID: 5UNqhB2ZEcZ
2016-06-09 19:14:17 +09:00
Masayuki Nakano
2bd1f0507f Bug 1278014 part.8 Rename SelectionType::SELECTION_IME_SELECTEDRAWTEXT to SelectionType::eIMESelectedRawClause r=smaug
MozReview-Commit-ID: DgprOxg87K6
2016-06-09 19:03:40 +09:00
Masayuki Nakano
52d14e77bb Bug 1278014 part.7 Rename SelectionType::SELECTION_IME_RAWINPUT to SelectionType::eIMERawClause r=smaug
MozReview-Commit-ID: BRe10Lyx5mt
2016-06-09 18:51:49 +09:00
Masayuki Nakano
400a8761f1 Bug 1278014 part.6 Rename SelectionType::SELECTION_SPELLCHECK to SelectionType::eSpellCheck r=smaug
MozReview-Commit-ID: 4n2jEVax37O
2016-06-09 18:37:36 +09:00
Masayuki Nakano
09b74b02de Bug 1278014 part.5 Rename SelectionType::SELECTION_NORMAL to SelectionType::eNormal r=smaug
MozReview-Commit-ID: AAdxTTKEvrk
2016-06-09 18:35:22 +09:00
Masayuki Nakano
ad13c60b69 Bug 1278014 part.4 Rename SelectionType::SELECTION_NONE to SelectionType::eNone r=smaug
MozReview-Commit-ID: BRfzs8sColP
2016-06-09 18:07:18 +09:00
Masayuki Nakano
4e5926428a Bug 1278014 part.3 Define 2 constants for number of SelectionType and number of SelectionType except "none" r=smaug
This patch defines two constants kSelectionTypeCount and kPresentSelectionTypeCount.  The former is same as nsISelectionController::NUM_SELECTIONTYPES.  The latter is kSelectionTypeCount - 1 for excluding SELECTION_NONE.  The latter is useful in some loops which handle all selection types except SELECTION_NONE.

Note that this patch fixes a bug of nsFrameSelection.  That doesn't treat SELECTION_NONE as a selection (see the definition of index), however, it defines redundant item and doesn't use it actually.  Additionally, it computes invalid selection type in each loop.  Therefore, without this patch, debug build hits MOZ_ASSERT() in ToSelectionType(RawSelectionType).

Note that these constants are defined as anonymous enum because we cannot define as const (or static) even with extern.  If we'd try to do it, it caused link error or not available in nsFrameSelection.cpp as constant value since they were not initialized if they were initialized in nsSelection.cpp.  Therefore, these constants are defined as enum items but using "k" prefix.

MozReview-Commit-ID: H6sH7NBEXlE
2016-06-11 11:12:26 +09:00
Masayuki Nakano
4b3d1e8406 Bug 1278014 part.2 Define mozilla::SelectionType as an enum class and use it instead of RawSelectionType as far as possible r=smaug
This patch defines mozilla::SelectionType as an enum class.  This is safer than nsISelectionController::SELECTION_* since setting illegal value to its variable is checked at build time.  So, as far as possible, this should be used everywhere (but of course, this isn't available in scriptable interfaces).

And also this implements some useful methods for managing SelectionType and RawSelectionType which are implemented in layout/nsSelection.cpp because nsISelectionController is implemented by both PresShell and nsTextEditorState.  Therefore, implementing one of them may make hard to find them.  On the other hand, nsSelection.cpp is a better file name to look for them.

Note that this patch creates mozilla::Selection::RawType() for binding.  Native code should keep using Selection::Type() but the binding code needs to use RawType() due to impossible to convert from SelectionType to RawSelectionType without explicit cast.

MozReview-Commit-ID: 81vX7A0hHQN
2016-06-11 11:06:37 +09:00
Masayuki Nakano
71befe7dcf Bug 1278014 part.1 Rename SelectionType in nsISelectionController.idl to mozilla::RawSelectionType r=smaug
mozilla::SelectionType will be an enum class. Therefore, we need to rename SelectionType with a word "raw" since it's a type for raw nsISelectionController::SELECTION_*.

MozReview-Commit-ID: K8SO0bbpv0Y
2016-06-07 22:42:06 +09:00
Carsten "Tomcat" Book
e9321e1391 merge mozilla-inbound to mozilla-central a=merge 2016-06-08 11:57:53 +02:00
Nicholas Nethercote
07e48a1ba0 Bug 1278452 - Remove an unnecessary null check in layout/generic/. r=heycam.
mLineContainer is dereferenced shortly before and after the check, so it's
obviously not useful.
2016-06-07 14:45:38 +10:00
Xidorn Quan
8b9905ef1a Bug 1277937 - Fix SELECTION_URLSTRIKEOUT. r=jfkthame
MozReview-Commit-ID: LumW94mTX4X
2016-06-07 16:12:15 -07:00
Xidorn Quan
51df4a4c00 Bug 1268342 part 3 - Treat orthogonal text frame as non-text frame when applying justification gap. r=jfkthame
Also correct the comment in ComputeJustification.

MozReview-Commit-ID: AWGGuupFLze
2016-05-30 09:24:18 +10:00
Xidorn Quan
7e26fd8f7c Bug 1275059 - Simple fix for this bug. r=jfkthame
MozReview-Commit-ID: IVScO6eV6RP
2016-05-25 09:54:37 +10:00
CJKu
a1dab046b9 Bug 1269971 - Part 7. Clean out unused things created in bug 759568; r=jfkthame
MozReview-Commit-ID: 4spLj1fgthI
2016-05-13 00:09:39 +08:00
CJKu
f911bbb803 Bug 1269971 - Part 4. Add text stroke into text mask; r=jfkthame
MozReview-Commit-ID: IkaLMEX5q0T
2016-05-13 00:09:05 +08:00
CJKu
2ca6611b52 Bug 1269971 - Part 3. Handle selection text color and selection backgrond painting; r=jfkthame
MozReview-Commit-ID: CQmqiCmvygr
2016-05-13 00:08:53 +08:00
CJKu
b5b879d00c Bug 1269971 - Part 2. From ClipBackgroundByText to GenerateAndPushTextMask; r=jfkthame,mtseng
MozReview-Commit-ID: 1PK2Huytq3i
2016-05-13 00:08:41 +08:00
CJKu
17721f6781 Bug 1269971 - Part 1. Rename IsForGenerateGlyphPath to IsForGenerateGlyphMask; r=jfkthame
MozReview-Commit-ID: 80DZsEAvXxB
2016-05-13 00:08:30 +08:00
Matt Woodrow
61200a9c5c Bug 1243610 - Refactor UpdateOverflow to separate out local overflow from that contributed by descendants. r=dbaron 2016-05-04 12:27:43 +12:00
Aryeh Gregor
c00d4b886e Bug 1193762 part 7 - Use .get() when assigning to variables; r=froydnj
Unlike when returning an nsCOMPtr in a ternary operator or passing to a
function, I used .get() here, since the operation is actually unsafe and
deserves to be marked explicitly.
2016-05-01 21:29:23 +03:00
CJKu
647da23a2f Bug 1266948 - text-decoration-color: currentcolor should not use value from -webkit-text-fill-color; r=jfkthame
MozReview-Commit-ID: 2SfENZieSzQ
2016-04-26 23:56:44 +08:00
Jeremy Chen
57063f1344 Bug 1248708 - Part2.2: render -webkit-text-stroke property. r=jfkthame 2016-04-23 01:40:39 +08:00
Xidorn Quan
e3a772c73a Bug 1097499 part 14 - Draw emphasis marks properly for text-combine-upright. r=jfkthame
MozReview-Commit-ID: 2bHWXxZDVGk
2016-04-22 09:18:41 +10:00
Xidorn Quan
0c1ee61704 Bug 1097499 part 13 - Draw decoration line properly for text-combine-upright. r=jfkthame
MozReview-Commit-ID: AymG09nvxh1
2016-04-22 09:18:41 +10:00
Xidorn Quan
c420f792b8 Bug 1097499 part 12 - Handle spacing sensibly for text-combine-upright. r=jfkthame
MozReview-Commit-ID: DSBMUcccfNi
2016-04-22 09:18:41 +10:00
Xidorn Quan
8f0254cf82 Bug 1097499 part 9 - Transform full-width characters to non-full-width correspondents for combined text. r=jfkthame
MozReview-Commit-ID: CXntBz9HPJu
2016-04-22 09:18:41 +10:00
Xidorn Quan
c6293269fd Bug 1097499 part 5 - Layout text combine upright. r=jfkthame
MozReview-Commit-ID: 2HnXJ8bEvJH
2016-04-22 09:18:41 +10:00
Jonathan Kew
cbb738f072 Bug 1266391 - Introduce an enum class mozilla::unicode::Script, and use this instead of bare integers to specify script codes for better type checking. r=masayuki 2016-04-21 18:58:59 +01:00
Jonathan Kew
c005e4fdbc Bug 1265648 followup - Use an array of UniquePtr<> for mTextRunsToDelete. r=mats 2016-04-20 10:55:15 +01:00
Jonathan Kew
453ebfaa9e Bug 1265648 - Remove the global nsTextFrameTextRunCache, as it no longer serves any useful purpose. r=mats 2016-04-20 10:54:43 +01:00
Jonathan Kew
e6846dd2c6 Bug 1265459 - Replace uses of nsAutoPtr<gfxTextRun> with UniquePtr, and let MakeTextRun and similar methods return a UniquePtr. r=jrmuizel 2016-04-19 17:13:28 +01:00
Markus Stange
d33e47b3b2 Bug 1265568 - Don't require component alpha layers for text with -moz-osx-font-smoothing:grayscale. r=jfkthame,mattwoodrow
MozReview-Commit-ID: KujmkbgadPo
2016-04-18 19:41:50 -04:00
CJKu
3773790ca6 Bug 1261578 - Part 2. Correct text decoration color; r=jfkthame
MozReview-Commit-ID: LfZnmTnL5KY
2016-04-19 17:09:54 +08:00
CJKu
1e87bac705 Bug 1261578 - Part 1. Correct text color in selection range; r=jfkthame
MozReview-Commit-ID: 9gBWQ00MtNC
2016-04-19 17:09:42 +08:00