aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornyamatongwe <unknown>2010-04-30 06:58:46 +0000
committernyamatongwe <unknown>2010-04-30 06:58:46 +0000
commit03583d15f483886327216abe0b76a26c88ddfea9 (patch)
treea299fdca1a8527d73149cb2073d85233b10787ce
parentaff97b192694d5f150eb6336f8624b74e68a2ef6 (diff)
downloadscintilla-mirror-03583d15f483886327216abe0b76a26c88ddfea9.tar.gz
Fix bug #2994224 CSS @font-face displayed incorrectly
-rw-r--r--include/SciLexer.h1
-rw-r--r--include/Scintilla.iface1
-rw-r--r--src/LexCSS.cxx13
3 files changed, 11 insertions, 4 deletions
diff --git a/include/SciLexer.h b/include/SciLexer.h
index ced86f433..523cdd6d3 100644
--- a/include/SciLexer.h
+++ b/include/SciLexer.h
@@ -637,6 +637,7 @@
#define SCE_CSS_EXTENDED_IDENTIFIER 19
#define SCE_CSS_EXTENDED_PSEUDOCLASS 20
#define SCE_CSS_EXTENDED_PSEUDOELEMENT 21
+#define SCE_CSS_MEDIA 22
#define SCE_POV_DEFAULT 0
#define SCE_POV_COMMENT 1
#define SCE_POV_COMMENTLINE 2
diff --git a/include/Scintilla.iface b/include/Scintilla.iface
index 158d0b515..96f1494c5 100644
--- a/include/Scintilla.iface
+++ b/include/Scintilla.iface
@@ -2906,6 +2906,7 @@ val SCE_CSS_PSEUDOELEMENT=18
val SCE_CSS_EXTENDED_IDENTIFIER=19
val SCE_CSS_EXTENDED_PSEUDOCLASS=20
val SCE_CSS_EXTENDED_PSEUDOELEMENT=21
+val SCE_CSS_MEDIA=22
# Lexical states for SCLEX_POV
lex POV=SCLEX_POV SCE_POV_
val SCE_POV_DEFAULT=0
diff --git a/src/LexCSS.cxx b/src/LexCSS.cxx
index 25f974e63..f63103de3 100644
--- a/src/LexCSS.cxx
+++ b/src/LexCSS.cxx
@@ -141,9 +141,9 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
sc.SetState(SCE_CSS_TAG);
break;
case '{':
- if (lastState == SCE_CSS_DIRECTIVE)
+ if (lastState == SCE_CSS_MEDIA)
sc.SetState(SCE_CSS_DEFAULT);
- else if (lastState == SCE_CSS_TAG)
+ else if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DIRECTIVE)
sc.SetState(SCE_CSS_IDENTIFIER);
break;
case '}':
@@ -220,7 +220,8 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
sc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_PSEUDOELEMENT ||
sc.state == SCE_CSS_EXTENDED_PSEUDOCLASS || sc.state == SCE_CSS_EXTENDED_PSEUDOELEMENT ||
sc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS ||
- sc.state == SCE_CSS_IMPORTANT
+ sc.state == SCE_CSS_IMPORTANT ||
+ sc.state == SCE_CSS_DIRECTIVE
)) {
char s[100];
sc.GetCurrentLowered(s, sizeof(s));
@@ -264,6 +265,10 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
if (strcmp(s2, "important") != 0)
sc.ChangeState(SCE_CSS_VALUE);
break;
+ case SCE_CSS_DIRECTIVE:
+ if (op == '@' && strcmp(s2, "media") == 0)
+ sc.ChangeState(SCE_CSS_MEDIA);
+ break;
}
}
@@ -288,7 +293,7 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
} else if (IsCssOperator(sc.ch)
&& (sc.state != SCE_CSS_ATTRIBUTE || sc.ch == ']')
&& (sc.state != SCE_CSS_VALUE || sc.ch == ';' || sc.ch == '}' || sc.ch == '!')
- && (sc.state != SCE_CSS_DIRECTIVE || sc.ch == ';' || sc.ch == '{')
+ && ((sc.state != SCE_CSS_DIRECTIVE && sc.state != SCE_CSS_MEDIA) || sc.ch == ';' || sc.ch == '{')
) {
if (sc.state != SCE_CSS_OPERATOR)
lastState = sc.state;