зеркало из https://github.com/mozilla/pjs.git
Merge cedar into mozilla-central
This commit is contained in:
Коммит
ccf9ef9334
|
@ -656,10 +656,10 @@ PrivateBrowsingService.prototype = {
|
||||||
"AND state NOT IN (?2, ?3, ?4)"
|
"AND state NOT IN (?2, ?3, ?4)"
|
||||||
);
|
);
|
||||||
let pattern = stmt.escapeStringForLIKE(aDomain, "/");
|
let pattern = stmt.escapeStringForLIKE(aDomain, "/");
|
||||||
stmt.bindStringParameter(0, "%" + pattern + "%");
|
stmt.bindByIndex(0, "%" + pattern + "%");
|
||||||
stmt.bindInt32Parameter(1, Ci.nsIDownloadManager.DOWNLOAD_DOWNLOADING);
|
stmt.bindByIndex(1, Ci.nsIDownloadManager.DOWNLOAD_DOWNLOADING);
|
||||||
stmt.bindInt32Parameter(2, Ci.nsIDownloadManager.DOWNLOAD_PAUSED);
|
stmt.bindByIndex(2, Ci.nsIDownloadManager.DOWNLOAD_PAUSED);
|
||||||
stmt.bindInt32Parameter(3, Ci.nsIDownloadManager.DOWNLOAD_QUEUED);
|
stmt.bindByIndex(3, Ci.nsIDownloadManager.DOWNLOAD_QUEUED);
|
||||||
try {
|
try {
|
||||||
stmt.execute();
|
stmt.execute();
|
||||||
}
|
}
|
||||||
|
@ -719,7 +719,7 @@ PrivateBrowsingService.prototype = {
|
||||||
"WHERE name LIKE ?1 ESCAPE '/'"
|
"WHERE name LIKE ?1 ESCAPE '/'"
|
||||||
);
|
);
|
||||||
let pattern = stmt.escapeStringForLIKE(aDomain, "/");
|
let pattern = stmt.escapeStringForLIKE(aDomain, "/");
|
||||||
stmt.bindStringParameter(0, "%" + pattern);
|
stmt.bindByIndex(0, "%" + pattern);
|
||||||
try {
|
try {
|
||||||
while (stmt.executeStep())
|
while (stmt.executeStep())
|
||||||
if (stmt.getString(0).hasRootDomain(aDomain))
|
if (stmt.getString(0).hasRootDomain(aDomain))
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
!define AppName "Firefox"
|
!define AppName "Firefox"
|
||||||
!define AppVersion "@APP_VERSION@"
|
!define AppVersion "@APP_VERSION@"
|
||||||
#ifdef HAVE_64BIT_OS
|
#ifdef HAVE_64BIT_OS
|
||||||
// differentiate 64-bit builds, we do the same in widget.
|
; differentiate 64-bit builds, we do the same in widget.
|
||||||
!define AppUserModelID "${AppVendor}.${AppName}.${AppVersion}.Win64"
|
!define AppUserModelID "${AppVendor}.${AppName}.${AppVersion}.Win64"
|
||||||
#else
|
#else
|
||||||
!define AppUserModelID "${AppVendor}.${AppName}.${AppVersion}"
|
!define AppUserModelID "${AppVendor}.${AppName}.${AppVersion}"
|
||||||
|
|
|
@ -441,6 +441,7 @@ PBBUILD_BIN = @PBBUILD@
|
||||||
SDP = @SDP@
|
SDP = @SDP@
|
||||||
NSINSTALL_BIN = @NSINSTALL_BIN@
|
NSINSTALL_BIN = @NSINSTALL_BIN@
|
||||||
WGET = @WGET@
|
WGET = @WGET@
|
||||||
|
RPMBUILD = @RPMBUILD@
|
||||||
|
|
||||||
ifdef MOZ_NATIVE_JPEG
|
ifdef MOZ_NATIVE_JPEG
|
||||||
JPEG_CFLAGS = @JPEG_CFLAGS@
|
JPEG_CFLAGS = @JPEG_CFLAGS@
|
||||||
|
|
|
@ -130,7 +130,7 @@ GCONF_VERSION=1.2.1
|
||||||
GIO_VERSION=2.0
|
GIO_VERSION=2.0
|
||||||
STARTUP_NOTIFICATION_VERSION=0.8
|
STARTUP_NOTIFICATION_VERSION=0.8
|
||||||
DBUS_VERSION=0.60
|
DBUS_VERSION=0.60
|
||||||
SQLITE_VERSION=3.7.4
|
SQLITE_VERSION=3.7.5
|
||||||
LIBNOTIFY_VERSION=0.4
|
LIBNOTIFY_VERSION=0.4
|
||||||
|
|
||||||
MSMANIFEST_TOOL=
|
MSMANIFEST_TOOL=
|
||||||
|
@ -1011,6 +1011,9 @@ if test -z "$XARGS" -o "$XARGS" = ":"; then
|
||||||
AC_MSG_ERROR([xargs not found in \$PATH .])
|
AC_MSG_ERROR([xargs not found in \$PATH .])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
|
||||||
|
AC_SUBST(RPMBUILD)
|
||||||
|
|
||||||
if test "$COMPILE_ENVIRONMENT"; then
|
if test "$COMPILE_ENVIRONMENT"; then
|
||||||
|
|
||||||
dnl ========================================================
|
dnl ========================================================
|
||||||
|
|
|
@ -560,6 +560,7 @@ GK_ATOM(member, "member")
|
||||||
GK_ATOM(menu, "menu")
|
GK_ATOM(menu, "menu")
|
||||||
GK_ATOM(menubar, "menubar")
|
GK_ATOM(menubar, "menubar")
|
||||||
GK_ATOM(menubutton, "menubutton")
|
GK_ATOM(menubutton, "menubutton")
|
||||||
|
GK_ATOM(menuButton, "menu-button")
|
||||||
GK_ATOM(menugenerated, "menugenerated")
|
GK_ATOM(menugenerated, "menugenerated")
|
||||||
GK_ATOM(menuitem, "menuitem")
|
GK_ATOM(menuitem, "menuitem")
|
||||||
GK_ATOM(menulist, "menulist")
|
GK_ATOM(menulist, "menulist")
|
||||||
|
@ -915,6 +916,7 @@ GK_ATOM(span, "span")
|
||||||
GK_ATOM(spellcheck, "spellcheck")
|
GK_ATOM(spellcheck, "spellcheck")
|
||||||
GK_ATOM(spinner, "spinner")
|
GK_ATOM(spinner, "spinner")
|
||||||
GK_ATOM(split, "split")
|
GK_ATOM(split, "split")
|
||||||
|
GK_ATOM(splitmenu, "splitmenu")
|
||||||
GK_ATOM(splitter, "splitter")
|
GK_ATOM(splitter, "splitter")
|
||||||
GK_ATOM(spring, "spring")
|
GK_ATOM(spring, "spring")
|
||||||
GK_ATOM(src, "src")
|
GK_ATOM(src, "src")
|
||||||
|
|
|
@ -375,24 +375,24 @@ nsXULTemplateQueryProcessorStorage::CompileQuery(nsIXULTemplateBuilder* aBuilder
|
||||||
case 1:
|
case 1:
|
||||||
typeError = PR_sscanf(NS_ConvertUTF16toUTF8(value).get(),"%d",&valInt32);
|
typeError = PR_sscanf(NS_ConvertUTF16toUTF8(value).get(),"%d",&valInt32);
|
||||||
if (typeError > 0)
|
if (typeError > 0)
|
||||||
rv = statement->BindInt32Parameter(index, valInt32);
|
rv = statement->BindInt32ByIndex(index, valInt32);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
typeError = PR_sscanf(NS_ConvertUTF16toUTF8(value).get(),"%lld",&valInt64);
|
typeError = PR_sscanf(NS_ConvertUTF16toUTF8(value).get(),"%lld",&valInt64);
|
||||||
if (typeError > 0)
|
if (typeError > 0)
|
||||||
rv = statement->BindInt64Parameter(index, valInt64);
|
rv = statement->BindInt64ByIndex(index, valInt64);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
rv = statement->BindNullParameter(index);
|
rv = statement->BindNullByIndex(index);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
typeError = PR_sscanf(NS_ConvertUTF16toUTF8(value).get(),"%lf",&valFloat);
|
typeError = PR_sscanf(NS_ConvertUTF16toUTF8(value).get(),"%lf",&valFloat);
|
||||||
if (typeError > 0)
|
if (typeError > 0)
|
||||||
rv = statement->BindDoubleParameter(index, valFloat);
|
rv = statement->BindDoubleByIndex(index, valFloat);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
case nsIContent::ATTR_MISSING:
|
case nsIContent::ATTR_MISSING:
|
||||||
rv = statement->BindStringParameter(index, value);
|
rv = statement->BindStringByIndex(index, value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
typeError = 0;
|
typeError = 0;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
This is sqlite 3.7.4
|
This is sqlite 3.7.5
|
||||||
|
|
||||||
-- Paul O’Shannessy <paul@oshannessy.com>, 01/2011
|
-- Shawn Wilsher <me@shawnwilsher.com>, 03/2011
|
||||||
|
|
||||||
See http://www.sqlite.org/ for more info.
|
See http://www.sqlite.org/ for more info.
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,7 @@ EXPORTS
|
||||||
sqlite3_data_count
|
sqlite3_data_count
|
||||||
sqlite3_db_handle
|
sqlite3_db_handle
|
||||||
sqlite3_db_mutex
|
sqlite3_db_mutex
|
||||||
|
sqlite3_db_status
|
||||||
sqlite3_declare_vtab
|
sqlite3_declare_vtab
|
||||||
sqlite3_enable_load_extension
|
sqlite3_enable_load_extension
|
||||||
sqlite3_enable_shared_cache
|
sqlite3_enable_shared_cache
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -107,9 +107,9 @@ extern "C" {
|
||||||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||||
** [sqlite_version()] and [sqlite_source_id()].
|
** [sqlite_version()] and [sqlite_source_id()].
|
||||||
*/
|
*/
|
||||||
#define SQLITE_VERSION "3.7.4"
|
#define SQLITE_VERSION "3.7.5"
|
||||||
#define SQLITE_VERSION_NUMBER 3007004
|
#define SQLITE_VERSION_NUMBER 3007005
|
||||||
#define SQLITE_SOURCE_ID "2010-12-07 20:14:09 a586a4deeb25330037a49df295b36aaf624d0f45"
|
#define SQLITE_SOURCE_ID "2011-01-28 17:03:50 ed759d5a9edb3bba5f48f243df47be29e3fe8cd7"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
|
@ -390,7 +390,7 @@ SQLITE_API int sqlite3_exec(
|
||||||
#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
|
#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
|
||||||
#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
|
#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
|
||||||
#define SQLITE_CORRUPT 11 /* The database disk image is malformed */
|
#define SQLITE_CORRUPT 11 /* The database disk image is malformed */
|
||||||
#define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */
|
#define SQLITE_NOTFOUND 12 /* Unknown opcode in sqlite3_file_control() */
|
||||||
#define SQLITE_FULL 13 /* Insertion failed because database is full */
|
#define SQLITE_FULL 13 /* Insertion failed because database is full */
|
||||||
#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
|
#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
|
||||||
#define SQLITE_PROTOCOL 15 /* Database lock protocol error */
|
#define SQLITE_PROTOCOL 15 /* Database lock protocol error */
|
||||||
|
@ -622,7 +622,9 @@ struct sqlite3_file {
|
||||||
** core reserves all opcodes less than 100 for its own use.
|
** core reserves all opcodes less than 100 for its own use.
|
||||||
** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available.
|
** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available.
|
||||||
** Applications that define a custom xFileControl method should use opcodes
|
** Applications that define a custom xFileControl method should use opcodes
|
||||||
** greater than 100 to avoid conflicts.
|
** greater than 100 to avoid conflicts. VFS implementations should
|
||||||
|
** return [SQLITE_NOTFOUND] for file control opcodes that they do not
|
||||||
|
** recognize.
|
||||||
**
|
**
|
||||||
** The xSectorSize() method returns the sector size of the
|
** The xSectorSize() method returns the sector size of the
|
||||||
** device that underlies the file. The sector size is the
|
** device that underlies the file. The sector size is the
|
||||||
|
@ -715,6 +717,21 @@ struct sqlite3_io_methods {
|
||||||
** for the nominated database. Allocating database file space in large
|
** for the nominated database. Allocating database file space in large
|
||||||
** chunks (say 1MB at a time), may reduce file-system fragmentation and
|
** chunks (say 1MB at a time), may reduce file-system fragmentation and
|
||||||
** improve performance on some systems.
|
** improve performance on some systems.
|
||||||
|
**
|
||||||
|
** The [SQLITE_FCNTL_FILE_POINTER] opcode is used to obtain a pointer
|
||||||
|
** to the [sqlite3_file] object associated with a particular database
|
||||||
|
** connection. See the [sqlite3_file_control()] documentation for
|
||||||
|
** additional information.
|
||||||
|
**
|
||||||
|
** ^(The [SQLITE_FCNTL_SYNC_OMITTED] opcode is generated internally by
|
||||||
|
** SQLite and sent to all VFSes in place of a call to the xSync method
|
||||||
|
** when the database connection has [PRAGMA synchronous] set to OFF.)^
|
||||||
|
** Some specialized VFSes need this signal in order to operate correctly
|
||||||
|
** when [PRAGMA synchronous | PRAGMA synchronous=OFF] is set, but most
|
||||||
|
** VFSes do not need this signal and should silently ignore this opcode.
|
||||||
|
** Applications should not call [sqlite3_file_control()] with this
|
||||||
|
** opcode as doing so may disrupt the operation of the specilized VFSes
|
||||||
|
** that do require it.
|
||||||
*/
|
*/
|
||||||
#define SQLITE_FCNTL_LOCKSTATE 1
|
#define SQLITE_FCNTL_LOCKSTATE 1
|
||||||
#define SQLITE_GET_LOCKPROXYFILE 2
|
#define SQLITE_GET_LOCKPROXYFILE 2
|
||||||
|
@ -723,6 +740,7 @@ struct sqlite3_io_methods {
|
||||||
#define SQLITE_FCNTL_SIZE_HINT 5
|
#define SQLITE_FCNTL_SIZE_HINT 5
|
||||||
#define SQLITE_FCNTL_CHUNK_SIZE 6
|
#define SQLITE_FCNTL_CHUNK_SIZE 6
|
||||||
#define SQLITE_FCNTL_FILE_POINTER 7
|
#define SQLITE_FCNTL_FILE_POINTER 7
|
||||||
|
#define SQLITE_FCNTL_SYNC_OMITTED 8
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1842,7 +1860,7 @@ SQLITE_API void sqlite3_free_table(char **result);
|
||||||
** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
|
** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
|
||||||
** memory to hold the resulting string.
|
** memory to hold the resulting string.
|
||||||
**
|
**
|
||||||
** ^(In sqlite3_snprintf() routine is similar to "snprintf()" from
|
** ^(The sqlite3_snprintf() routine is similar to "snprintf()" from
|
||||||
** the standard C library. The result is written into the
|
** the standard C library. The result is written into the
|
||||||
** buffer supplied as the second parameter whose size is given by
|
** buffer supplied as the second parameter whose size is given by
|
||||||
** the first parameter. Note that the order of the
|
** the first parameter. Note that the order of the
|
||||||
|
@ -1861,6 +1879,8 @@ SQLITE_API void sqlite3_free_table(char **result);
|
||||||
** the zero terminator. So the longest string that can be completely
|
** the zero terminator. So the longest string that can be completely
|
||||||
** written will be n-1 characters.
|
** written will be n-1 characters.
|
||||||
**
|
**
|
||||||
|
** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf().
|
||||||
|
**
|
||||||
** These routines all implement some additional formatting
|
** These routines all implement some additional formatting
|
||||||
** options that are useful for constructing SQL statements.
|
** options that are useful for constructing SQL statements.
|
||||||
** All of the usual printf() formatting options apply. In addition, there
|
** All of the usual printf() formatting options apply. In addition, there
|
||||||
|
@ -1924,6 +1944,7 @@ SQLITE_API void sqlite3_free_table(char **result);
|
||||||
SQLITE_API char *sqlite3_mprintf(const char*,...);
|
SQLITE_API char *sqlite3_mprintf(const char*,...);
|
||||||
SQLITE_API char *sqlite3_vmprintf(const char*, va_list);
|
SQLITE_API char *sqlite3_vmprintf(const char*, va_list);
|
||||||
SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...);
|
SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...);
|
||||||
|
SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Memory Allocation Subsystem
|
** CAPI3REF: Memory Allocation Subsystem
|
||||||
|
@ -2301,7 +2322,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
||||||
** case the database must already exist, otherwise an error is returned.</dd>)^
|
** case the database must already exist, otherwise an error is returned.</dd>)^
|
||||||
**
|
**
|
||||||
** ^(<dt>[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]</dt>
|
** ^(<dt>[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]</dt>
|
||||||
** <dd>The database is opened for reading and writing, and is creates it if
|
** <dd>The database is opened for reading and writing, and is created if
|
||||||
** it does not already exist. This is the behavior that is always used for
|
** it does not already exist. This is the behavior that is always used for
|
||||||
** sqlite3_open() and sqlite3_open16().</dd>)^
|
** sqlite3_open() and sqlite3_open16().</dd>)^
|
||||||
** </dl>
|
** </dl>
|
||||||
|
@ -2650,14 +2671,31 @@ SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Determine If An SQL Statement Writes The Database
|
** CAPI3REF: Determine If An SQL Statement Writes The Database
|
||||||
**
|
**
|
||||||
** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if
|
** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if
|
||||||
** the [prepared statement] X is [SELECT] statement and false (zero) if
|
** and only if the [prepared statement] X makes no direct changes to
|
||||||
** X is an [INSERT], [UPDATE], [DELETE], CREATE, DROP, [ANALYZE],
|
** the content of the database file.
|
||||||
** [ALTER], or [REINDEX] statement.
|
**
|
||||||
** If X is a NULL pointer or any other kind of statement, including but
|
** Note that [application-defined SQL functions] or
|
||||||
** not limited to [ATTACH], [DETACH], [COMMIT], [ROLLBACK], [RELEASE],
|
** [virtual tables] might change the database indirectly as a side effect.
|
||||||
** [SAVEPOINT], [PRAGMA], or [VACUUM] the result of sqlite3_stmt_readonly(X) is
|
** ^(For example, if an application defines a function "eval()" that
|
||||||
** undefined.
|
** calls [sqlite3_exec()], then the following SQL statement would
|
||||||
|
** change the database file through side-effects:
|
||||||
|
**
|
||||||
|
** <blockquote><pre>
|
||||||
|
** SELECT eval('DELETE FROM t1') FROM t2;
|
||||||
|
** </pre></blockquote>
|
||||||
|
**
|
||||||
|
** But because the [SELECT] statement does not change the database file
|
||||||
|
** directly, sqlite3_stmt_readonly() would still return true.)^
|
||||||
|
**
|
||||||
|
** ^Transaction control statements such as [BEGIN], [COMMIT], [ROLLBACK],
|
||||||
|
** [SAVEPOINT], and [RELEASE] cause sqlite3_stmt_readonly() to return true,
|
||||||
|
** since the statements themselves do not actually modify the database but
|
||||||
|
** rather they control the timing of when other statements modify the
|
||||||
|
** database. ^The [ATTACH] and [DETACH] statements also cause
|
||||||
|
** sqlite3_stmt_readonly() to return true since, while those statements
|
||||||
|
** change the configuration of a database connection, they do not make
|
||||||
|
** changes to the content of the database files on disk.
|
||||||
*/
|
*/
|
||||||
SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
|
SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
|
||||||
|
|
||||||
|
@ -3051,13 +3089,17 @@ SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
|
||||||
** be the case that the same database connection is being used by two or
|
** be the case that the same database connection is being used by two or
|
||||||
** more threads at the same moment in time.
|
** more threads at the same moment in time.
|
||||||
**
|
**
|
||||||
** For all versions of SQLite up to and including 3.6.23.1, it was required
|
** For all versions of SQLite up to and including 3.6.23.1, a call to
|
||||||
** after sqlite3_step() returned anything other than [SQLITE_ROW] that
|
** [sqlite3_reset()] was required after sqlite3_step() returned anything
|
||||||
** [sqlite3_reset()] be called before any subsequent invocation of
|
** other than [SQLITE_ROW] before any subsequent invocation of
|
||||||
** sqlite3_step(). Failure to invoke [sqlite3_reset()] in this way would
|
** sqlite3_step(). Failure to reset the prepared statement using
|
||||||
** result in an [SQLITE_MISUSE] return from sqlite3_step(). But after
|
** [sqlite3_reset()] would result in an [SQLITE_MISUSE] return from
|
||||||
** version 3.6.23.1, sqlite3_step() began calling [sqlite3_reset()]
|
** sqlite3_step(). But after version 3.6.23.1, sqlite3_step() began
|
||||||
** automatically in this circumstance rather than returning [SQLITE_MISUSE].
|
** calling [sqlite3_reset()] automatically in this circumstance rather
|
||||||
|
** than returning [SQLITE_MISUSE]. This is not considered a compatibility
|
||||||
|
** break because any application that ever receives an SQLITE_MISUSE error
|
||||||
|
** is broken by definition. The [SQLITE_OMIT_AUTORESET] compile-time option
|
||||||
|
** can be used to restore the legacy behavior.
|
||||||
**
|
**
|
||||||
** <b>Goofy Interface Alert:</b> In the legacy interface, the sqlite3_step()
|
** <b>Goofy Interface Alert:</b> In the legacy interface, the sqlite3_step()
|
||||||
** API always returns a generic error code, [SQLITE_ERROR], following any
|
** API always returns a generic error code, [SQLITE_ERROR], following any
|
||||||
|
@ -3394,7 +3436,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
||||||
** ^(The fifth parameter is an arbitrary pointer. The implementation of the
|
** ^(The fifth parameter is an arbitrary pointer. The implementation of the
|
||||||
** function can gain access to this pointer using [sqlite3_user_data()].)^
|
** function can gain access to this pointer using [sqlite3_user_data()].)^
|
||||||
**
|
**
|
||||||
** ^The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
|
** ^The sixth, seventh and eighth parameters, xFunc, xStep and xFinal, are
|
||||||
** pointers to C-language functions that implement the SQL function or
|
** pointers to C-language functions that implement the SQL function or
|
||||||
** aggregate. ^A scalar SQL function requires an implementation of the xFunc
|
** aggregate. ^A scalar SQL function requires an implementation of the xFunc
|
||||||
** callback only; NULL pointers must be passed as the xStep and xFinal
|
** callback only; NULL pointers must be passed as the xStep and xFinal
|
||||||
|
@ -3403,7 +3445,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
||||||
** SQL function or aggregate, pass NULL poiners for all three function
|
** SQL function or aggregate, pass NULL poiners for all three function
|
||||||
** callbacks.
|
** callbacks.
|
||||||
**
|
**
|
||||||
** ^(If the tenth parameter to sqlite3_create_function_v2() is not NULL,
|
** ^(If the ninth parameter to sqlite3_create_function_v2() is not NULL,
|
||||||
** then it is destructor for the application data pointer.
|
** then it is destructor for the application data pointer.
|
||||||
** The destructor is invoked when the function is deleted, either by being
|
** The destructor is invoked when the function is deleted, either by being
|
||||||
** overloaded or when the database connection closes.)^
|
** overloaded or when the database connection closes.)^
|
||||||
|
@ -3507,7 +3549,7 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
|
||||||
** The xFunc (for scalar functions) or xStep (for aggregates) parameters
|
** The xFunc (for scalar functions) or xStep (for aggregates) parameters
|
||||||
** to [sqlite3_create_function()] and [sqlite3_create_function16()]
|
** to [sqlite3_create_function()] and [sqlite3_create_function16()]
|
||||||
** define callbacks that implement the SQL functions and aggregates.
|
** define callbacks that implement the SQL functions and aggregates.
|
||||||
** The 4th parameter to these callbacks is an array of pointers to
|
** The 3rd parameter to these callbacks is an array of pointers to
|
||||||
** [protected sqlite3_value] objects. There is one [sqlite3_value] object for
|
** [protected sqlite3_value] objects. There is one [sqlite3_value] object for
|
||||||
** each parameter to the SQL function. These routines are used to
|
** each parameter to the SQL function. These routines are used to
|
||||||
** extract values from the [sqlite3_value] objects.
|
** extract values from the [sqlite3_value] objects.
|
||||||
|
@ -5235,7 +5277,8 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
|
||||||
#define SQLITE_MUTEX_STATIC_OPEN 4 /* sqlite3BtreeOpen() */
|
#define SQLITE_MUTEX_STATIC_OPEN 4 /* sqlite3BtreeOpen() */
|
||||||
#define SQLITE_MUTEX_STATIC_PRNG 5 /* sqlite3_random() */
|
#define SQLITE_MUTEX_STATIC_PRNG 5 /* sqlite3_random() */
|
||||||
#define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */
|
#define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */
|
||||||
#define SQLITE_MUTEX_STATIC_LRU2 7 /* lru page list */
|
#define SQLITE_MUTEX_STATIC_LRU2 7 /* NOT USED */
|
||||||
|
#define SQLITE_MUTEX_STATIC_PMEM 7 /* sqlite3PageMalloc() */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Retrieve the mutex for a database connection
|
** CAPI3REF: Retrieve the mutex for a database connection
|
||||||
|
@ -5386,7 +5429,8 @@ SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetF
|
||||||
** The value written into the *pCurrent parameter is undefined.</dd>)^
|
** The value written into the *pCurrent parameter is undefined.</dd>)^
|
||||||
**
|
**
|
||||||
** ^(<dt>SQLITE_STATUS_MALLOC_COUNT</dt>
|
** ^(<dt>SQLITE_STATUS_MALLOC_COUNT</dt>
|
||||||
** <dd>This parameter records the number of separate memory allocations.</dd>)^
|
** <dd>This parameter records the number of separate memory allocations
|
||||||
|
** currently checked out.</dd>)^
|
||||||
**
|
**
|
||||||
** ^(<dt>SQLITE_STATUS_PAGECACHE_USED</dt>
|
** ^(<dt>SQLITE_STATUS_PAGECACHE_USED</dt>
|
||||||
** <dd>This parameter returns the number of pages used out of the
|
** <dd>This parameter returns the number of pages used out of the
|
||||||
|
@ -5492,6 +5536,28 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
||||||
** <dd>This parameter returns the number of lookaside memory slots currently
|
** <dd>This parameter returns the number of lookaside memory slots currently
|
||||||
** checked out.</dd>)^
|
** checked out.</dd>)^
|
||||||
**
|
**
|
||||||
|
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
|
||||||
|
** <dd>This parameter returns the number malloc attempts that were
|
||||||
|
** satisfied using lookaside memory. Only the high-water value is meaningful;
|
||||||
|
** the current value is always zero.
|
||||||
|
** checked out.</dd>)^
|
||||||
|
**
|
||||||
|
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt>
|
||||||
|
** <dd>This parameter returns the number malloc attempts that might have
|
||||||
|
** been satisfied using lookaside memory but failed due to the amount of
|
||||||
|
** memory requested being larger than the lookaside slot size.
|
||||||
|
** Only the high-water value is meaningful;
|
||||||
|
** the current value is always zero.
|
||||||
|
** checked out.</dd>)^
|
||||||
|
**
|
||||||
|
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt>
|
||||||
|
** <dd>This parameter returns the number malloc attempts that might have
|
||||||
|
** been satisfied using lookaside memory but failed due to all lookaside
|
||||||
|
** memory already being in use.
|
||||||
|
** Only the high-water value is meaningful;
|
||||||
|
** the current value is always zero.
|
||||||
|
** checked out.</dd>)^
|
||||||
|
**
|
||||||
** ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
|
** ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
|
||||||
** <dd>This parameter returns the approximate number of of bytes of heap
|
** <dd>This parameter returns the approximate number of of bytes of heap
|
||||||
** memory used by all pager caches associated with the database connection.)^
|
** memory used by all pager caches associated with the database connection.)^
|
||||||
|
@ -5514,11 +5580,14 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
||||||
** </dd>
|
** </dd>
|
||||||
** </dl>
|
** </dl>
|
||||||
*/
|
*/
|
||||||
#define SQLITE_DBSTATUS_LOOKASIDE_USED 0
|
#define SQLITE_DBSTATUS_LOOKASIDE_USED 0
|
||||||
#define SQLITE_DBSTATUS_CACHE_USED 1
|
#define SQLITE_DBSTATUS_CACHE_USED 1
|
||||||
#define SQLITE_DBSTATUS_SCHEMA_USED 2
|
#define SQLITE_DBSTATUS_SCHEMA_USED 2
|
||||||
#define SQLITE_DBSTATUS_STMT_USED 3
|
#define SQLITE_DBSTATUS_STMT_USED 3
|
||||||
#define SQLITE_DBSTATUS_MAX 3 /* Largest defined DBSTATUS */
|
#define SQLITE_DBSTATUS_LOOKASIDE_HIT 4
|
||||||
|
#define SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE 5
|
||||||
|
#define SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL 6
|
||||||
|
#define SQLITE_DBSTATUS_MAX 6 /* Largest defined DBSTATUS */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5646,11 +5715,13 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
||||||
** first parameter, szPage, is the size in bytes of the pages that must
|
** first parameter, szPage, is the size in bytes of the pages that must
|
||||||
** be allocated by the cache. ^szPage will not be a power of two. ^szPage
|
** be allocated by the cache. ^szPage will not be a power of two. ^szPage
|
||||||
** will the page size of the database file that is to be cached plus an
|
** will the page size of the database file that is to be cached plus an
|
||||||
** increment (here called "R") of about 100 or 200. SQLite will use the
|
** increment (here called "R") of less than 250. SQLite will use the
|
||||||
** extra R bytes on each page to store metadata about the underlying
|
** extra R bytes on each page to store metadata about the underlying
|
||||||
** database page on disk. The value of R depends
|
** database page on disk. The value of R depends
|
||||||
** on the SQLite version, the target platform, and how SQLite was compiled.
|
** on the SQLite version, the target platform, and how SQLite was compiled.
|
||||||
** ^R is constant for a particular build of SQLite. ^The second argument to
|
** ^(R is constant for a particular build of SQLite. Except, there are two
|
||||||
|
** distinct values of R when SQLite is compiled with the proprietary
|
||||||
|
** ZIPVFS extension.)^ ^The second argument to
|
||||||
** xCreate(), bPurgeable, is true if the cache being created will
|
** xCreate(), bPurgeable, is true if the cache being created will
|
||||||
** be used to cache database pages of a file stored on disk, or
|
** be used to cache database pages of a file stored on disk, or
|
||||||
** false if it is used for an in-memory database. The cache implementation
|
** false if it is used for an in-memory database. The cache implementation
|
||||||
|
@ -5682,7 +5753,7 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
||||||
** If the requested page is already in the page cache, then the page cache
|
** If the requested page is already in the page cache, then the page cache
|
||||||
** implementation must return a pointer to the page buffer with its content
|
** implementation must return a pointer to the page buffer with its content
|
||||||
** intact. If the requested page is not already in the cache, then the
|
** intact. If the requested page is not already in the cache, then the
|
||||||
** behavior of the cache implementation should use the value of the createFlag
|
** cache implementation should use the value of the createFlag
|
||||||
** parameter to help it determined what action to take:
|
** parameter to help it determined what action to take:
|
||||||
**
|
**
|
||||||
** <table border=1 width=85% align=center>
|
** <table border=1 width=85% align=center>
|
||||||
|
@ -5766,11 +5837,12 @@ typedef struct sqlite3_backup sqlite3_backup;
|
||||||
**
|
**
|
||||||
** See Also: [Using the SQLite Online Backup API]
|
** See Also: [Using the SQLite Online Backup API]
|
||||||
**
|
**
|
||||||
** ^Exclusive access is required to the destination database for the
|
** ^SQLite holds a write transaction open on the destination database file
|
||||||
** duration of the operation. ^However the source database is only
|
** for the duration of the backup operation.
|
||||||
** read-locked while it is actually being read; it is not locked
|
** ^The source database is read-locked only while it is being read;
|
||||||
** continuously for the entire backup operation. ^Thus, the backup may be
|
** it is not locked continuously for the entire backup operation.
|
||||||
** performed on a live source database without preventing other users from
|
** ^Thus, the backup may be performed on a live source database without
|
||||||
|
** preventing other database connections from
|
||||||
** reading or writing to the source database while the backup is underway.
|
** reading or writing to the source database while the backup is underway.
|
||||||
**
|
**
|
||||||
** ^(To perform a backup operation:
|
** ^(To perform a backup operation:
|
||||||
|
@ -5797,11 +5869,11 @@ typedef struct sqlite3_backup sqlite3_backup;
|
||||||
** sqlite3_backup_init(D,N,S,M) identify the [database connection]
|
** sqlite3_backup_init(D,N,S,M) identify the [database connection]
|
||||||
** and database name of the source database, respectively.
|
** and database name of the source database, respectively.
|
||||||
** ^The source and destination [database connections] (parameters S and D)
|
** ^The source and destination [database connections] (parameters S and D)
|
||||||
** must be different or else sqlite3_backup_init(D,N,S,M) will file with
|
** must be different or else sqlite3_backup_init(D,N,S,M) will fail with
|
||||||
** an error.
|
** an error.
|
||||||
**
|
**
|
||||||
** ^If an error occurs within sqlite3_backup_init(D,N,S,M), then NULL is
|
** ^If an error occurs within sqlite3_backup_init(D,N,S,M), then NULL is
|
||||||
** returned and an error code and error message are store3d in the
|
** returned and an error code and error message are stored in the
|
||||||
** destination [database connection] D.
|
** destination [database connection] D.
|
||||||
** ^The error code and message for the failed call to sqlite3_backup_init()
|
** ^The error code and message for the failed call to sqlite3_backup_init()
|
||||||
** can be retrieved using the [sqlite3_errcode()], [sqlite3_errmsg()], and/or
|
** can be retrieved using the [sqlite3_errcode()], [sqlite3_errmsg()], and/or
|
||||||
|
@ -5818,7 +5890,7 @@ typedef struct sqlite3_backup sqlite3_backup;
|
||||||
** the source and destination databases specified by [sqlite3_backup] object B.
|
** the source and destination databases specified by [sqlite3_backup] object B.
|
||||||
** ^If N is negative, all remaining source pages are copied.
|
** ^If N is negative, all remaining source pages are copied.
|
||||||
** ^If sqlite3_backup_step(B,N) successfully copies N pages and there
|
** ^If sqlite3_backup_step(B,N) successfully copies N pages and there
|
||||||
** are still more pages to be copied, then the function resturns [SQLITE_OK].
|
** are still more pages to be copied, then the function returns [SQLITE_OK].
|
||||||
** ^If sqlite3_backup_step(B,N) successfully finishes copying all pages
|
** ^If sqlite3_backup_step(B,N) successfully finishes copying all pages
|
||||||
** from source to destination, then it returns [SQLITE_DONE].
|
** from source to destination, then it returns [SQLITE_DONE].
|
||||||
** ^If an error occurs while running sqlite3_backup_step(B,N),
|
** ^If an error occurs while running sqlite3_backup_step(B,N),
|
||||||
|
@ -5832,7 +5904,7 @@ typedef struct sqlite3_backup sqlite3_backup;
|
||||||
** <li> the destination database was opened read-only, or
|
** <li> the destination database was opened read-only, or
|
||||||
** <li> the destination database is using write-ahead-log journaling
|
** <li> the destination database is using write-ahead-log journaling
|
||||||
** and the destination and source page sizes differ, or
|
** and the destination and source page sizes differ, or
|
||||||
** <li> The destination database is an in-memory database and the
|
** <li> the destination database is an in-memory database and the
|
||||||
** destination and source page sizes differ.
|
** destination and source page sizes differ.
|
||||||
** </ol>)^
|
** </ol>)^
|
||||||
**
|
**
|
||||||
|
@ -6163,7 +6235,8 @@ SQLITE_API void *sqlite3_wal_hook(
|
||||||
** from SQL.
|
** from SQL.
|
||||||
**
|
**
|
||||||
** ^Every new [database connection] defaults to having the auto-checkpoint
|
** ^Every new [database connection] defaults to having the auto-checkpoint
|
||||||
** enabled with a threshold of 1000 pages. The use of this interface
|
** enabled with a threshold of 1000 or [SQLITE_DEFAULT_WAL_AUTOCHECKPOINT]
|
||||||
|
** pages. The use of this interface
|
||||||
** is only necessary if the default setting is found to be suboptimal
|
** is only necessary if the default setting is found to be suboptimal
|
||||||
** for a particular application.
|
** for a particular application.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
* http://www.w3.org/TR/DOM-Level-2-Style
|
* http://www.w3.org/TR/DOM-Level-2-Style
|
||||||
*/
|
*/
|
||||||
|
|
||||||
[scriptable, uuid(abedfd52-9821-4311-b50c-7ef229b43abf)]
|
[scriptable, uuid(6b8fda8f-94f6-4d5c-aa77-17c5270f36c7)]
|
||||||
interface nsIDOMCSS2Properties : nsISupports
|
interface nsIDOMCSS2Properties : nsISupports
|
||||||
{
|
{
|
||||||
attribute DOMString azimuth;
|
attribute DOMString azimuth;
|
||||||
|
@ -734,6 +734,12 @@ interface nsIDOMCSS2Properties : nsISupports
|
||||||
attribute DOMString backgroundSize;
|
attribute DOMString backgroundSize;
|
||||||
// raises(DOMException) on setting
|
// raises(DOMException) on setting
|
||||||
|
|
||||||
|
attribute DOMString MozTextDecorationColor;
|
||||||
|
// raises(DOMException) on setting
|
||||||
|
|
||||||
|
attribute DOMString MozTextDecorationStyle;
|
||||||
|
// raises(DOMException) on setting
|
||||||
|
|
||||||
attribute DOMString MozTransitionProperty;
|
attribute DOMString MozTransitionProperty;
|
||||||
// raises(DOMException) on setting
|
// raises(DOMException) on setting
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,6 @@ MODULE = editor
|
||||||
GRE_MODULE = 1
|
GRE_MODULE = 1
|
||||||
|
|
||||||
XPIDLSRCS = \
|
XPIDLSRCS = \
|
||||||
nsICiter.idl \
|
|
||||||
nsIDocumentStateListener.idl \
|
nsIDocumentStateListener.idl \
|
||||||
nsIEditActionListener.idl \
|
nsIEditActionListener.idl \
|
||||||
nsIEditor.idl \
|
nsIEditor.idl \
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is mozilla.org code.
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Netscape Communications Corporation.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
|
||||||
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
#include "nsISupports.idl"
|
|
||||||
#include "domstubs.idl"
|
|
||||||
%{C++
|
|
||||||
#include "nsString.h"
|
|
||||||
%}
|
|
||||||
/** Handle plaintext citations, as in mail quoting.
|
|
||||||
* Used by the editor but not dependant on it.
|
|
||||||
*/
|
|
||||||
|
|
||||||
[scriptable, uuid(a6cf9102-15b3-11d2-932e-00805f8add32)]
|
|
||||||
|
|
||||||
interface nsICiter : nsISupports
|
|
||||||
{
|
|
||||||
|
|
||||||
DOMString GetCiteString(in DOMString aInString);
|
|
||||||
|
|
||||||
DOMString StripCites(in DOMString aInString);
|
|
||||||
|
|
||||||
DOMString Rewrap(in DOMString aInString,
|
|
||||||
in unsigned long aWrapCol, in unsigned long aFirstLineOffset,
|
|
||||||
in boolean aRespectNewlines);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/__init__.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/__init__.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/common.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/common.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/handlers.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/handlers.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/common.css
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/common.css
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/editable.css
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/editable.css
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/canonicalize.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/canonicalize.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/compare.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/compare.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/output.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/output.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/pad.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/pad.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/range.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/range.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/run.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/run.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/units.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/units.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/variables.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/variables.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/templates/output.html
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/templates/output.html
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/templates/richtext2.html
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/templates/richtext2.html
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/__init__.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/__init__.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/apply.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/apply.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/applyCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/applyCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/change.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/change.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/changeCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/changeCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/delete.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/delete.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/forwarddelete.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/forwarddelete.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/insert.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/insert.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryEnabled.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryEnabled.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryIndeterm.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryIndeterm.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryState.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryState.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/querySupported.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/querySupported.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryValue.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryValue.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/selection.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/selection.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/unapply.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/unapply.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/unapplyCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/unapplyCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/unittestexample.html
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/unittestexample.html
Executable file → Normal file
|
@ -58,18 +58,7 @@ const PRUnichar cr('\r');
|
||||||
/** Mail citations using the Internet style: > This is a citation
|
/** Mail citations using the Internet style: > This is a citation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
nsresult
|
||||||
nsInternetCiter::nsInternetCiter()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
nsInternetCiter::~nsInternetCiter()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS1(nsInternetCiter, nsICiter)
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsInternetCiter::GetCiteString(const nsAString& aInString, nsAString& aOutString)
|
nsInternetCiter::GetCiteString(const nsAString& aInString, nsAString& aOutString)
|
||||||
{
|
{
|
||||||
aOutString.Truncate();
|
aOutString.Truncate();
|
||||||
|
@ -155,7 +144,7 @@ nsInternetCiter::StripCitesAndLinebreaks(const nsAString& aInString,
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
nsresult
|
||||||
nsInternetCiter::StripCites(const nsAString& aInString, nsAString& aOutString)
|
nsInternetCiter::StripCites(const nsAString& aInString, nsAString& aOutString)
|
||||||
{
|
{
|
||||||
return StripCitesAndLinebreaks(aInString, aOutString, PR_FALSE, 0);
|
return StripCitesAndLinebreaks(aInString, aOutString, PR_FALSE, 0);
|
||||||
|
@ -188,7 +177,7 @@ static inline PRBool IsSpace(PRUnichar c)
|
||||||
return (nsCRT::IsAsciiSpace(c) || (c == nl) || (c == cr) || (c == nbsp));
|
return (nsCRT::IsAsciiSpace(c) || (c == nl) || (c == cr) || (c == nbsp));
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
nsresult
|
||||||
nsInternetCiter::Rewrap(const nsAString& aInString,
|
nsInternetCiter::Rewrap(const nsAString& aInString,
|
||||||
PRUint32 aWrapCol, PRUint32 aFirstLineOffset,
|
PRUint32 aWrapCol, PRUint32 aFirstLineOffset,
|
||||||
PRBool aRespectNewlines,
|
PRBool aRespectNewlines,
|
||||||
|
|
|
@ -38,33 +38,25 @@
|
||||||
#ifndef nsInternetCiter_h__
|
#ifndef nsInternetCiter_h__
|
||||||
#define nsInternetCiter_h__
|
#define nsInternetCiter_h__
|
||||||
|
|
||||||
#include "nsICiter.h"
|
|
||||||
|
|
||||||
#include "nsString.h"
|
#include "nsString.h"
|
||||||
|
|
||||||
/** Mail citations using standard Internet style.
|
/** Mail citations using standard Internet style.
|
||||||
*/
|
*/
|
||||||
class nsInternetCiter : public nsICiter
|
class nsInternetCiter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
nsInternetCiter();
|
static nsresult GetCiteString(const nsAString & aInString, nsAString & aOutString);
|
||||||
virtual ~nsInternetCiter();
|
|
||||||
//Interfaces for addref and release and queryinterface
|
|
||||||
//NOTE: Use NS_DECL_ISUPPORTS_INHERITED in any class inherited from nsEditor
|
|
||||||
NS_DECL_ISUPPORTS
|
|
||||||
|
|
||||||
NS_IMETHOD GetCiteString(const nsAString & aInString, nsAString & aOutString);
|
static nsresult StripCites(const nsAString & aInString, nsAString & aOutString);
|
||||||
|
|
||||||
NS_IMETHOD StripCites(const nsAString & aInString, nsAString & aOutString);
|
static nsresult Rewrap(const nsAString & aInString,
|
||||||
|
PRUint32 aWrapCol, PRUint32 aFirstLineOffset,
|
||||||
NS_IMETHOD Rewrap(const nsAString & aInString,
|
PRBool aRespectNewlines,
|
||||||
PRUint32 aWrapCol, PRUint32 aFirstLineOffset,
|
nsAString & aOutString);
|
||||||
PRBool aRespectNewlines,
|
|
||||||
nsAString & aOutString);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
nsresult StripCitesAndLinebreaks(const nsAString& aInString, nsAString& aOutString,
|
static nsresult StripCitesAndLinebreaks(const nsAString& aInString, nsAString& aOutString,
|
||||||
PRBool aLinebreaksToo, PRInt32* aCiteLevel);
|
PRBool aLinebreaksToo, PRInt32* aCiteLevel);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //nsInternetCiter_h__
|
#endif //nsInternetCiter_h__
|
||||||
|
|
|
@ -1530,12 +1530,9 @@ nsPlaintextEditor::InsertAsQuotation(const nsAString& aQuotedText,
|
||||||
// Protect the edit rules object from dying
|
// Protect the edit rules object from dying
|
||||||
nsCOMPtr<nsIEditRules> kungFuDeathGrip(mRules);
|
nsCOMPtr<nsIEditRules> kungFuDeathGrip(mRules);
|
||||||
|
|
||||||
// We have the text. Cite it appropriately:
|
|
||||||
nsCOMPtr<nsICiter> citer = new nsInternetCiter();
|
|
||||||
|
|
||||||
// Let the citer quote it for us:
|
// Let the citer quote it for us:
|
||||||
nsString quotedStuff;
|
nsString quotedStuff;
|
||||||
nsresult rv = citer->GetCiteString(aQuotedText, quotedStuff);
|
nsresult rv = nsInternetCiter::GetCiteString(aQuotedText, quotedStuff);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
// It's best to put a blank line after the quoted text so that mails
|
// It's best to put a blank line after the quoted text so that mails
|
||||||
|
@ -1630,13 +1627,9 @@ nsPlaintextEditor::Rewrap(PRBool aRespectNewlines)
|
||||||
&isCollapsed, current);
|
&isCollapsed, current);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsICiter> citer = new nsInternetCiter();
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
NS_ENSURE_TRUE(citer, NS_ERROR_UNEXPECTED);
|
|
||||||
|
|
||||||
nsString wrapped;
|
nsString wrapped;
|
||||||
PRUint32 firstLineOffset = 0; // XXX need to reset this if there is a selection
|
PRUint32 firstLineOffset = 0; // XXX need to reset this if there is a selection
|
||||||
rv = citer->Rewrap(current, wrapCol, firstLineOffset, aRespectNewlines,
|
rv = nsInternetCiter::Rewrap(current, wrapCol, firstLineOffset, aRespectNewlines,
|
||||||
wrapped);
|
wrapped);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
@ -1659,11 +1652,8 @@ nsPlaintextEditor::StripCites()
|
||||||
&isCollapsed, current);
|
&isCollapsed, current);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsICiter> citer = new nsInternetCiter();
|
|
||||||
NS_ENSURE_TRUE(citer, NS_ERROR_UNEXPECTED);
|
|
||||||
|
|
||||||
nsString stripped;
|
nsString stripped;
|
||||||
rv = citer->StripCites(current, stripped);
|
rv = nsInternetCiter::StripCites(current, stripped);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
if (isCollapsed) // rewrap the whole document
|
if (isCollapsed) // rewrap the whole document
|
||||||
|
|
|
@ -935,10 +935,10 @@ nsPermissionManager::Read()
|
||||||
getter_AddRefs(stmtDeleteExpired));
|
getter_AddRefs(stmtDeleteExpired));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
rv = stmtDeleteExpired->BindInt32Parameter(0, nsIPermissionManager::EXPIRE_TIME);
|
rv = stmtDeleteExpired->BindInt32ByIndex(0, nsIPermissionManager::EXPIRE_TIME);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
rv = stmtDeleteExpired->BindInt64Parameter(1, PR_Now() / 1000);
|
rv = stmtDeleteExpired->BindInt64ByIndex(1, PR_Now() / 1000);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
PRBool hasResult;
|
PRBool hasResult;
|
||||||
|
@ -1111,43 +1111,43 @@ nsPermissionManager::UpdateDB(OperationType aOp,
|
||||||
switch (aOp) {
|
switch (aOp) {
|
||||||
case eOperationAdding:
|
case eOperationAdding:
|
||||||
{
|
{
|
||||||
rv = aStmt->BindInt64Parameter(0, aID);
|
rv = aStmt->BindInt64ByIndex(0, aID);
|
||||||
if (NS_FAILED(rv)) break;
|
if (NS_FAILED(rv)) break;
|
||||||
|
|
||||||
rv = aStmt->BindUTF8StringParameter(1, aHost);
|
rv = aStmt->BindUTF8StringByIndex(1, aHost);
|
||||||
if (NS_FAILED(rv)) break;
|
if (NS_FAILED(rv)) break;
|
||||||
|
|
||||||
rv = aStmt->BindUTF8StringParameter(2, aType);
|
rv = aStmt->BindUTF8StringByIndex(2, aType);
|
||||||
if (NS_FAILED(rv)) break;
|
if (NS_FAILED(rv)) break;
|
||||||
|
|
||||||
rv = aStmt->BindInt32Parameter(3, aPermission);
|
rv = aStmt->BindInt32ByIndex(3, aPermission);
|
||||||
if (NS_FAILED(rv)) break;
|
if (NS_FAILED(rv)) break;
|
||||||
|
|
||||||
rv = aStmt->BindInt32Parameter(4, aExpireType);
|
rv = aStmt->BindInt32ByIndex(4, aExpireType);
|
||||||
if (NS_FAILED(rv)) break;
|
if (NS_FAILED(rv)) break;
|
||||||
|
|
||||||
rv = aStmt->BindInt64Parameter(5, aExpireTime);
|
rv = aStmt->BindInt64ByIndex(5, aExpireTime);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case eOperationRemoving:
|
case eOperationRemoving:
|
||||||
{
|
{
|
||||||
rv = aStmt->BindInt64Parameter(0, aID);
|
rv = aStmt->BindInt64ByIndex(0, aID);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case eOperationChanging:
|
case eOperationChanging:
|
||||||
{
|
{
|
||||||
rv = aStmt->BindInt64Parameter(0, aID);
|
rv = aStmt->BindInt64ByIndex(0, aID);
|
||||||
if (NS_FAILED(rv)) break;
|
if (NS_FAILED(rv)) break;
|
||||||
|
|
||||||
rv = aStmt->BindInt32Parameter(1, aPermission);
|
rv = aStmt->BindInt32ByIndex(1, aPermission);
|
||||||
if (NS_FAILED(rv)) break;
|
if (NS_FAILED(rv)) break;
|
||||||
|
|
||||||
rv = aStmt->BindInt32Parameter(2, aExpireType);
|
rv = aStmt->BindInt32ByIndex(2, aExpireType);
|
||||||
if (NS_FAILED(rv)) break;
|
if (NS_FAILED(rv)) break;
|
||||||
|
|
||||||
rv = aStmt->BindInt64Parameter(3, aExpireTime);
|
rv = aStmt->BindInt64ByIndex(3, aExpireTime);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3404,35 +3404,36 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor):
|
||||||
Decl(listenertype, listenervar.name) ],
|
Decl(listenertype, listenervar.name) ],
|
||||||
virtual=1))
|
virtual=1))
|
||||||
|
|
||||||
switchontype = StmtSwitch(pvar)
|
if not len(p.managesStmts):
|
||||||
for managee in p.managesStmts:
|
removemanagee.addstmts([ _runtimeAbort('unreached'), StmtReturn() ])
|
||||||
case = StmtBlock()
|
else:
|
||||||
actorvar = ExprVar('actor')
|
switchontype = StmtSwitch(pvar)
|
||||||
manageeipdltype = managee.decl.type
|
for managee in p.managesStmts:
|
||||||
manageecxxtype = _cxxBareType(ipdl.type.ActorType(manageeipdltype),
|
case = StmtBlock()
|
||||||
self.side)
|
actorvar = ExprVar('actor')
|
||||||
manageearray = p.managedVar(manageeipdltype, self.side)
|
manageeipdltype = managee.decl.type
|
||||||
|
manageecxxtype = _cxxBareType(ipdl.type.ActorType(manageeipdltype),
|
||||||
|
self.side)
|
||||||
|
manageearray = p.managedVar(manageeipdltype, self.side)
|
||||||
|
|
||||||
case.addstmts([
|
case.addstmts([
|
||||||
StmtDecl(Decl(manageecxxtype, actorvar.name),
|
StmtDecl(Decl(manageecxxtype, actorvar.name),
|
||||||
ExprCast(listenervar, manageecxxtype, static=1)),
|
ExprCast(listenervar, manageecxxtype, static=1)),
|
||||||
_abortIfFalse(
|
_abortIfFalse(
|
||||||
_cxxArrayHasElementSorted(manageearray, actorvar),
|
_cxxArrayHasElementSorted(manageearray, actorvar),
|
||||||
"actor not managed by this!"),
|
"actor not managed by this!"),
|
||||||
Whitespace.NL,
|
Whitespace.NL,
|
||||||
StmtExpr(_callCxxArrayRemoveSorted(manageearray, actorvar)),
|
StmtExpr(_callCxxArrayRemoveSorted(manageearray, actorvar)),
|
||||||
StmtExpr(ExprCall(_deallocMethod(manageeipdltype),
|
StmtExpr(ExprCall(_deallocMethod(manageeipdltype),
|
||||||
args=[ actorvar ])),
|
args=[ actorvar ])),
|
||||||
StmtReturn()
|
StmtReturn()
|
||||||
])
|
])
|
||||||
switchontype.addcase(CaseLabel(_protocolId(manageeipdltype).name),
|
switchontype.addcase(CaseLabel(_protocolId(manageeipdltype).name),
|
||||||
case)
|
case)
|
||||||
|
default = StmtBlock()
|
||||||
default = StmtBlock()
|
default.addstmts([ _runtimeAbort('unreached'), StmtReturn() ])
|
||||||
default.addstmts([ _runtimeAbort('unreached'), StmtReturn() ])
|
switchontype.addcase(DefaultLabel(), default)
|
||||||
switchontype.addcase(DefaultLabel(), default)
|
removemanagee.addstmt(switchontype)
|
||||||
|
|
||||||
removemanagee.addstmt(switchontype)
|
|
||||||
|
|
||||||
return [ register,
|
return [ register,
|
||||||
registerid,
|
registerid,
|
||||||
|
|
|
@ -3415,7 +3415,7 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
||||||
const PRUint8 aStyle,
|
const PRUint8 aStyle,
|
||||||
const gfxFloat aDescentLimit)
|
const gfxFloat aDescentLimit)
|
||||||
{
|
{
|
||||||
NS_ASSERTION(aStyle != DECORATION_STYLE_NONE, "aStyle is none");
|
NS_ASSERTION(aStyle != NS_STYLE_TEXT_DECORATION_STYLE_NONE, "aStyle is none");
|
||||||
|
|
||||||
gfxRect rect =
|
gfxRect rect =
|
||||||
GetTextDecorationRectInternal(aPt, aLineSize, aAscent, aOffset,
|
GetTextDecorationRectInternal(aPt, aLineSize, aAscent, aOffset,
|
||||||
|
@ -3438,12 +3438,12 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
||||||
nsRefPtr<gfxPattern> oldPattern;
|
nsRefPtr<gfxPattern> oldPattern;
|
||||||
|
|
||||||
switch (aStyle) {
|
switch (aStyle) {
|
||||||
case DECORATION_STYLE_SOLID:
|
case NS_STYLE_TEXT_DECORATION_STYLE_SOLID:
|
||||||
case DECORATION_STYLE_DOUBLE:
|
case NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE:
|
||||||
oldLineWidth = aGfxContext->CurrentLineWidth();
|
oldLineWidth = aGfxContext->CurrentLineWidth();
|
||||||
oldPattern = aGfxContext->GetPattern();
|
oldPattern = aGfxContext->GetPattern();
|
||||||
break;
|
break;
|
||||||
case DECORATION_STYLE_DASHED: {
|
case NS_STYLE_TEXT_DECORATION_STYLE_DASHED: {
|
||||||
aGfxContext->Save();
|
aGfxContext->Save();
|
||||||
contextIsSaved = PR_TRUE;
|
contextIsSaved = PR_TRUE;
|
||||||
aGfxContext->Clip(rect);
|
aGfxContext->Clip(rect);
|
||||||
|
@ -3455,7 +3455,7 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
||||||
rect.size.width += dashWidth;
|
rect.size.width += dashWidth;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DECORATION_STYLE_DOTTED: {
|
case NS_STYLE_TEXT_DECORATION_STYLE_DOTTED: {
|
||||||
aGfxContext->Save();
|
aGfxContext->Save();
|
||||||
contextIsSaved = PR_TRUE;
|
contextIsSaved = PR_TRUE;
|
||||||
aGfxContext->Clip(rect);
|
aGfxContext->Clip(rect);
|
||||||
|
@ -3474,7 +3474,7 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
||||||
rect.size.width += dashWidth;
|
rect.size.width += dashWidth;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DECORATION_STYLE_WAVY:
|
case NS_STYLE_TEXT_DECORATION_STYLE_WAVY:
|
||||||
aGfxContext->Save();
|
aGfxContext->Save();
|
||||||
contextIsSaved = PR_TRUE;
|
contextIsSaved = PR_TRUE;
|
||||||
aGfxContext->Clip(rect);
|
aGfxContext->Clip(rect);
|
||||||
|
@ -3498,13 +3498,13 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
||||||
aGfxContext->SetColor(gfxRGBA(aColor));
|
aGfxContext->SetColor(gfxRGBA(aColor));
|
||||||
aGfxContext->SetLineWidth(lineHeight);
|
aGfxContext->SetLineWidth(lineHeight);
|
||||||
switch (aStyle) {
|
switch (aStyle) {
|
||||||
case DECORATION_STYLE_SOLID:
|
case NS_STYLE_TEXT_DECORATION_STYLE_SOLID:
|
||||||
aGfxContext->NewPath();
|
aGfxContext->NewPath();
|
||||||
aGfxContext->MoveTo(rect.TopLeft());
|
aGfxContext->MoveTo(rect.TopLeft());
|
||||||
aGfxContext->LineTo(rect.TopRight());
|
aGfxContext->LineTo(rect.TopRight());
|
||||||
aGfxContext->Stroke();
|
aGfxContext->Stroke();
|
||||||
break;
|
break;
|
||||||
case DECORATION_STYLE_DOUBLE:
|
case NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE:
|
||||||
/**
|
/**
|
||||||
* We are drawing double line as:
|
* We are drawing double line as:
|
||||||
*
|
*
|
||||||
|
@ -3527,14 +3527,14 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
||||||
aGfxContext->LineTo(rect.BottomRight());
|
aGfxContext->LineTo(rect.BottomRight());
|
||||||
aGfxContext->Stroke();
|
aGfxContext->Stroke();
|
||||||
break;
|
break;
|
||||||
case DECORATION_STYLE_DOTTED:
|
case NS_STYLE_TEXT_DECORATION_STYLE_DOTTED:
|
||||||
case DECORATION_STYLE_DASHED:
|
case NS_STYLE_TEXT_DECORATION_STYLE_DASHED:
|
||||||
aGfxContext->NewPath();
|
aGfxContext->NewPath();
|
||||||
aGfxContext->MoveTo(rect.TopLeft());
|
aGfxContext->MoveTo(rect.TopLeft());
|
||||||
aGfxContext->LineTo(rect.TopRight());
|
aGfxContext->LineTo(rect.TopRight());
|
||||||
aGfxContext->Stroke();
|
aGfxContext->Stroke();
|
||||||
break;
|
break;
|
||||||
case DECORATION_STYLE_WAVY: {
|
case NS_STYLE_TEXT_DECORATION_STYLE_WAVY: {
|
||||||
/**
|
/**
|
||||||
* We are drawing wavy line as:
|
* We are drawing wavy line as:
|
||||||
*
|
*
|
||||||
|
@ -3616,7 +3616,7 @@ nsCSSRendering::GetTextDecorationRect(nsPresContext* aPresContext,
|
||||||
const gfxFloat aDescentLimit)
|
const gfxFloat aDescentLimit)
|
||||||
{
|
{
|
||||||
NS_ASSERTION(aPresContext, "aPresContext is null");
|
NS_ASSERTION(aPresContext, "aPresContext is null");
|
||||||
NS_ASSERTION(aStyle != DECORATION_STYLE_NONE, "aStyle is none");
|
NS_ASSERTION(aStyle != NS_STYLE_TEXT_DECORATION_STYLE_NONE, "aStyle is none");
|
||||||
|
|
||||||
gfxRect rect =
|
gfxRect rect =
|
||||||
GetTextDecorationRectInternal(gfxPoint(0, 0), aLineSize, aAscent, aOffset,
|
GetTextDecorationRectInternal(gfxPoint(0, 0), aLineSize, aAscent, aOffset,
|
||||||
|
@ -3639,9 +3639,10 @@ nsCSSRendering::GetTextDecorationRectInternal(const gfxPoint& aPt,
|
||||||
const PRUint8 aStyle,
|
const PRUint8 aStyle,
|
||||||
const gfxFloat aDescentLimit)
|
const gfxFloat aDescentLimit)
|
||||||
{
|
{
|
||||||
NS_ASSERTION(aStyle <= DECORATION_STYLE_WAVY, "Invalid aStyle value");
|
NS_ASSERTION(aStyle <= NS_STYLE_TEXT_DECORATION_STYLE_WAVY,
|
||||||
|
"Invalid aStyle value");
|
||||||
|
|
||||||
if (aStyle == DECORATION_STYLE_NONE)
|
if (aStyle == NS_STYLE_TEXT_DECORATION_STYLE_NONE)
|
||||||
return gfxRect(0, 0, 0, 0);
|
return gfxRect(0, 0, 0, 0);
|
||||||
|
|
||||||
PRBool canLiftUnderline = aDescentLimit >= 0.0;
|
PRBool canLiftUnderline = aDescentLimit >= 0.0;
|
||||||
|
@ -3658,7 +3659,7 @@ nsCSSRendering::GetTextDecorationRectInternal(const gfxPoint& aPt,
|
||||||
|
|
||||||
gfxFloat suggestedMaxRectHeight = NS_MAX(NS_MIN(ascent, descentLimit), 1.0);
|
gfxFloat suggestedMaxRectHeight = NS_MAX(NS_MIN(ascent, descentLimit), 1.0);
|
||||||
r.size.height = lineHeight;
|
r.size.height = lineHeight;
|
||||||
if (aStyle == DECORATION_STYLE_DOUBLE) {
|
if (aStyle == NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE) {
|
||||||
/**
|
/**
|
||||||
* We will draw double line as:
|
* We will draw double line as:
|
||||||
*
|
*
|
||||||
|
@ -3684,7 +3685,7 @@ nsCSSRendering::GetTextDecorationRectInternal(const gfxPoint& aPt,
|
||||||
r.size.height = NS_MAX(suggestedMaxRectHeight, lineHeight * 2.0 + 1.0);
|
r.size.height = NS_MAX(suggestedMaxRectHeight, lineHeight * 2.0 + 1.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (aStyle == DECORATION_STYLE_WAVY) {
|
} else if (aStyle == NS_STYLE_TEXT_DECORATION_STYLE_WAVY) {
|
||||||
/**
|
/**
|
||||||
* We will draw wavy line as:
|
* We will draw wavy line as:
|
||||||
*
|
*
|
||||||
|
|
|
@ -286,15 +286,6 @@ struct nsCSSRendering {
|
||||||
PRUint8 aEndBevelSide = 0,
|
PRUint8 aEndBevelSide = 0,
|
||||||
nscoord aEndBevelOffset = 0);
|
nscoord aEndBevelOffset = 0);
|
||||||
|
|
||||||
enum {
|
|
||||||
DECORATION_STYLE_NONE = 0,
|
|
||||||
DECORATION_STYLE_SOLID = 1,
|
|
||||||
DECORATION_STYLE_DOTTED = 2,
|
|
||||||
DECORATION_STYLE_DASHED = 3,
|
|
||||||
DECORATION_STYLE_DOUBLE = 4,
|
|
||||||
DECORATION_STYLE_WAVY = 5
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function for painting the decoration lines for the text.
|
* Function for painting the decoration lines for the text.
|
||||||
* NOTE: aPt, aLineSize, aAscent and aOffset are non-rounded device pixels,
|
* NOTE: aPt, aLineSize, aAscent and aOffset are non-rounded device pixels,
|
||||||
|
@ -313,8 +304,8 @@ struct nsCSSRendering {
|
||||||
* NS_STYLE_TEXT_DECORATION_UNDERLINE or
|
* NS_STYLE_TEXT_DECORATION_UNDERLINE or
|
||||||
* NS_STYLE_TEXT_DECORATION_OVERLINE or
|
* NS_STYLE_TEXT_DECORATION_OVERLINE or
|
||||||
* NS_STYLE_TEXT_DECORATION_LINE_THROUGH.
|
* NS_STYLE_TEXT_DECORATION_LINE_THROUGH.
|
||||||
* @param aStyle the style of the decoration line (See above
|
* @param aStyle the style of the decoration line such as
|
||||||
* enum names).
|
* NS_STYLE_TEXT_DECORATION_STYLE_*.
|
||||||
* @param aDescentLimit If aDescentLimit is zero or larger and the
|
* @param aDescentLimit If aDescentLimit is zero or larger and the
|
||||||
* underline overflows from the descent space,
|
* underline overflows from the descent space,
|
||||||
* the underline should be lifted up as far as
|
* the underline should be lifted up as far as
|
||||||
|
@ -353,8 +344,8 @@ struct nsCSSRendering {
|
||||||
* NS_STYLE_TEXT_DECORATION_UNDERLINE or
|
* NS_STYLE_TEXT_DECORATION_UNDERLINE or
|
||||||
* NS_STYLE_TEXT_DECORATION_OVERLINE or
|
* NS_STYLE_TEXT_DECORATION_OVERLINE or
|
||||||
* NS_STYLE_TEXT_DECORATION_LINE_THROUGH.
|
* NS_STYLE_TEXT_DECORATION_LINE_THROUGH.
|
||||||
* @param aStyle the style of the decoration line (See above
|
* @param aStyle the style of the decoration line such as
|
||||||
* enum names).
|
* NS_STYLE_TEXT_DECORATION_STYLE_*.
|
||||||
* @param aDescentLimit If aDescentLimit is zero or larger and the
|
* @param aDescentLimit If aDescentLimit is zero or larger and the
|
||||||
* underline overflows from the descent space,
|
* underline overflows from the descent space,
|
||||||
* the underline should be lifted up as far as
|
* the underline should be lifted up as far as
|
||||||
|
|
|
@ -626,6 +626,15 @@ static inline mozilla::css::Side operator++(mozilla::css::Side& side, int) {
|
||||||
#define NS_STYLE_TEXT_DECORATION_OVERRIDE_ALL 0x20
|
#define NS_STYLE_TEXT_DECORATION_OVERRIDE_ALL 0x20
|
||||||
#define NS_STYLE_TEXT_DECORATION_LINES_MASK (NS_STYLE_TEXT_DECORATION_UNDERLINE | NS_STYLE_TEXT_DECORATION_OVERLINE | NS_STYLE_TEXT_DECORATION_LINE_THROUGH)
|
#define NS_STYLE_TEXT_DECORATION_LINES_MASK (NS_STYLE_TEXT_DECORATION_UNDERLINE | NS_STYLE_TEXT_DECORATION_OVERLINE | NS_STYLE_TEXT_DECORATION_LINE_THROUGH)
|
||||||
|
|
||||||
|
// See nsStyleText
|
||||||
|
#define NS_STYLE_TEXT_DECORATION_STYLE_NONE 0 // not in CSS spec, mapped to -moz-none
|
||||||
|
#define NS_STYLE_TEXT_DECORATION_STYLE_DOTTED 1
|
||||||
|
#define NS_STYLE_TEXT_DECORATION_STYLE_DASHED 2
|
||||||
|
#define NS_STYLE_TEXT_DECORATION_STYLE_SOLID 3
|
||||||
|
#define NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE 4
|
||||||
|
#define NS_STYLE_TEXT_DECORATION_STYLE_WAVY 5
|
||||||
|
#define NS_STYLE_TEXT_DECORATION_STYLE_MAX NS_STYLE_TEXT_DECORATION_STYLE_WAVY
|
||||||
|
|
||||||
// See nsStyleText
|
// See nsStyleText
|
||||||
#define NS_STYLE_TEXT_TRANSFORM_NONE 0
|
#define NS_STYLE_TEXT_TRANSFORM_NONE 0
|
||||||
#define NS_STYLE_TEXT_TRANSFORM_CAPITALIZE 1
|
#define NS_STYLE_TEXT_TRANSFORM_CAPITALIZE 1
|
||||||
|
|
|
@ -239,6 +239,8 @@ input > .anonymous-div {
|
||||||
/* XXXldb I'm not sure if we really want the 'text-decoration: inherit',
|
/* XXXldb I'm not sure if we really want the 'text-decoration: inherit',
|
||||||
but it's needed to make 'text-decoration' "work" on text inputs. */
|
but it's needed to make 'text-decoration' "work" on text inputs. */
|
||||||
text-decoration: inherit;
|
text-decoration: inherit;
|
||||||
|
-moz-text-decoration-color: inherit;
|
||||||
|
-moz-text-decoration-style: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
input:disabled,
|
input:disabled,
|
||||||
|
|
|
@ -6076,6 +6076,7 @@ nsBlockFrame::PaintTextDecorationLine(gfxContext* aCtx,
|
||||||
const nsPoint& aPt,
|
const nsPoint& aPt,
|
||||||
nsLineBox* aLine,
|
nsLineBox* aLine,
|
||||||
nscolor aColor,
|
nscolor aColor,
|
||||||
|
PRUint8 aStyle,
|
||||||
gfxFloat aOffset,
|
gfxFloat aOffset,
|
||||||
gfxFloat aAscent,
|
gfxFloat aAscent,
|
||||||
gfxFloat aSize,
|
gfxFloat aSize,
|
||||||
|
@ -6096,7 +6097,7 @@ nsBlockFrame::PaintTextDecorationLine(gfxContext* aCtx,
|
||||||
nsCSSRendering::PaintDecorationLine(
|
nsCSSRendering::PaintDecorationLine(
|
||||||
aCtx, aColor, pt, size,
|
aCtx, aColor, pt, size,
|
||||||
PresContext()->AppUnitsToGfxUnits(aLine->GetAscent()),
|
PresContext()->AppUnitsToGfxUnits(aLine->GetAscent()),
|
||||||
aOffset, aDecoration, nsCSSRendering::DECORATION_STYLE_SOLID);
|
aOffset, aDecoration, aStyle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -369,6 +369,7 @@ protected:
|
||||||
const nsPoint& aPt,
|
const nsPoint& aPt,
|
||||||
nsLineBox* aLine,
|
nsLineBox* aLine,
|
||||||
nscolor aColor,
|
nscolor aColor,
|
||||||
|
PRUint8 aStyle,
|
||||||
gfxFloat aOffset,
|
gfxFloat aOffset,
|
||||||
gfxFloat aAscent,
|
gfxFloat aAscent,
|
||||||
gfxFloat aSize,
|
gfxFloat aSize,
|
||||||
|
|
|
@ -75,9 +75,9 @@ class nsDisplayTextDecoration : public nsDisplayItem {
|
||||||
public:
|
public:
|
||||||
nsDisplayTextDecoration(nsDisplayListBuilder* aBuilder,
|
nsDisplayTextDecoration(nsDisplayListBuilder* aBuilder,
|
||||||
nsHTMLContainerFrame* aFrame, PRUint8 aDecoration,
|
nsHTMLContainerFrame* aFrame, PRUint8 aDecoration,
|
||||||
nscolor aColor, nsLineBox* aLine)
|
nscolor aColor, PRUint8 aStyle, nsLineBox* aLine)
|
||||||
: nsDisplayItem(aBuilder, aFrame), mLine(aLine), mColor(aColor),
|
: nsDisplayItem(aBuilder, aFrame), mLine(aLine), mColor(aColor),
|
||||||
mDecoration(aDecoration) {
|
mDecoration(aDecoration), mStyle(aStyle) {
|
||||||
MOZ_COUNT_CTOR(nsDisplayTextDecoration);
|
MOZ_COUNT_CTOR(nsDisplayTextDecoration);
|
||||||
}
|
}
|
||||||
#ifdef NS_BUILD_REFCNT_LOGGING
|
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||||
|
@ -100,6 +100,7 @@ private:
|
||||||
nsLineBox* mLine;
|
nsLineBox* mLine;
|
||||||
nscolor mColor;
|
nscolor mColor;
|
||||||
PRUint8 mDecoration;
|
PRUint8 mDecoration;
|
||||||
|
PRUint8 mStyle;
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -136,16 +137,16 @@ nsDisplayTextDecoration::Paint(nsDisplayListBuilder* aBuilder,
|
||||||
if (mDecoration == NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
if (mDecoration == NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
||||||
gfxFloat underlineOffset = fontGroup->GetUnderlineOffset();
|
gfxFloat underlineOffset = fontGroup->GetUnderlineOffset();
|
||||||
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
||||||
underlineOffset, ascent,
|
mStyle, underlineOffset, ascent,
|
||||||
metrics.underlineSize, mDecoration);
|
metrics.underlineSize, mDecoration);
|
||||||
} else if (mDecoration == NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
} else if (mDecoration == NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||||
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
||||||
metrics.maxAscent, ascent,
|
mStyle, metrics.maxAscent, ascent,
|
||||||
metrics.underlineSize, mDecoration);
|
metrics.underlineSize, mDecoration);
|
||||||
} else {
|
} else {
|
||||||
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
||||||
metrics.strikeoutOffset, ascent,
|
mStyle, metrics.strikeoutOffset,
|
||||||
metrics.strikeoutSize, mDecoration);
|
ascent, metrics.strikeoutSize, mDecoration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,10 +160,12 @@ class nsDisplayTextShadow : public nsDisplayItem {
|
||||||
public:
|
public:
|
||||||
nsDisplayTextShadow(nsDisplayListBuilder* aBuilder,
|
nsDisplayTextShadow(nsDisplayListBuilder* aBuilder,
|
||||||
nsHTMLContainerFrame* aFrame,
|
nsHTMLContainerFrame* aFrame,
|
||||||
const PRUint8 aDecoration,
|
const PRUint8 aDecoration, PRUint8 aUnderlineStyle,
|
||||||
|
PRUint8 aOverlineStyle, PRUint8 aStrikeThroughStyle,
|
||||||
nsLineBox* aLine)
|
nsLineBox* aLine)
|
||||||
: nsDisplayItem(aBuilder, aFrame), mLine(aLine),
|
: nsDisplayItem(aBuilder, aFrame), mLine(aLine),
|
||||||
mDecorationFlags(aDecoration) {
|
mDecorationFlags(aDecoration), mUnderlineStyle(aUnderlineStyle),
|
||||||
|
mOverlineStyle(aOverlineStyle), mStrikeThroughStyle(aStrikeThroughStyle) {
|
||||||
MOZ_COUNT_CTOR(nsDisplayTextShadow);
|
MOZ_COUNT_CTOR(nsDisplayTextShadow);
|
||||||
}
|
}
|
||||||
virtual ~nsDisplayTextShadow() {
|
virtual ~nsDisplayTextShadow() {
|
||||||
|
@ -176,6 +179,9 @@ public:
|
||||||
private:
|
private:
|
||||||
nsLineBox* mLine;
|
nsLineBox* mLine;
|
||||||
PRUint8 mDecorationFlags;
|
PRUint8 mDecorationFlags;
|
||||||
|
PRUint8 mUnderlineStyle;
|
||||||
|
PRUint8 mOverlineStyle;
|
||||||
|
PRUint8 mStrikeThroughStyle;
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -243,22 +249,20 @@ nsDisplayTextShadow::Paint(nsDisplayListBuilder* aBuilder,
|
||||||
gfxSize size(lineWidth, metrics.underlineSize);
|
gfxSize size(lineWidth, metrics.underlineSize);
|
||||||
underlineRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
underlineRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
||||||
ascent, underlineOffset,
|
ascent, underlineOffset,
|
||||||
NS_STYLE_TEXT_DECORATION_UNDERLINE,
|
NS_STYLE_TEXT_DECORATION_UNDERLINE, mUnderlineStyle);
|
||||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
|
||||||
}
|
}
|
||||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||||
gfxSize size(lineWidth, metrics.underlineSize);
|
gfxSize size(lineWidth, metrics.underlineSize);
|
||||||
overlineRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
overlineRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
||||||
ascent, metrics.maxAscent,
|
ascent, metrics.maxAscent,
|
||||||
NS_STYLE_TEXT_DECORATION_OVERLINE,
|
NS_STYLE_TEXT_DECORATION_OVERLINE, mOverlineStyle);
|
||||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
|
||||||
}
|
}
|
||||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
||||||
gfxSize size(lineWidth, metrics.strikeoutSize);
|
gfxSize size(lineWidth, metrics.strikeoutSize);
|
||||||
lineThroughRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
lineThroughRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
||||||
ascent, metrics.strikeoutOffset,
|
ascent, metrics.strikeoutOffset,
|
||||||
NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
||||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
mStrikeThroughStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (PRUint32 i = shadowList->Length(); i > 0; --i) {
|
for (PRUint32 i = shadowList->Length(); i > 0; --i) {
|
||||||
|
@ -302,18 +306,19 @@ nsDisplayTextShadow::Paint(nsDisplayListBuilder* aBuilder,
|
||||||
|
|
||||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
||||||
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
||||||
underlineOffset, ascent,
|
mUnderlineStyle, underlineOffset, ascent,
|
||||||
metrics.underlineSize, NS_STYLE_TEXT_DECORATION_UNDERLINE);
|
metrics.underlineSize, NS_STYLE_TEXT_DECORATION_UNDERLINE);
|
||||||
}
|
}
|
||||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||||
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
||||||
metrics.maxAscent, ascent,
|
mOverlineStyle, metrics.maxAscent, ascent,
|
||||||
metrics.underlineSize, NS_STYLE_TEXT_DECORATION_OVERLINE);
|
metrics.underlineSize, NS_STYLE_TEXT_DECORATION_OVERLINE);
|
||||||
}
|
}
|
||||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
||||||
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
||||||
metrics.strikeoutOffset, ascent,
|
mStrikeThroughStyle, metrics.strikeoutOffset,
|
||||||
metrics.strikeoutSize, NS_STYLE_TEXT_DECORATION_LINE_THROUGH);
|
ascent, metrics.strikeoutSize,
|
||||||
|
NS_STYLE_TEXT_DECORATION_LINE_THROUGH);
|
||||||
}
|
}
|
||||||
|
|
||||||
contextBoxBlur.DoPaint();
|
contextBoxBlur.DoPaint();
|
||||||
|
@ -350,9 +355,11 @@ nsHTMLContainerFrame::DisplayTextDecorations(nsDisplayListBuilder* aBuilder,
|
||||||
// behind children, line-through in front. For Quirks mode, see
|
// behind children, line-through in front. For Quirks mode, see
|
||||||
// nsTextFrame::PaintTextDecorations. (See bug 1777.)
|
// nsTextFrame::PaintTextDecorations. (See bug 1777.)
|
||||||
nscolor underColor, overColor, strikeColor;
|
nscolor underColor, overColor, strikeColor;
|
||||||
|
PRUint8 underStyle, overStyle, strikeStyle;
|
||||||
PRUint8 decorations = NS_STYLE_TEXT_DECORATION_NONE;
|
PRUint8 decorations = NS_STYLE_TEXT_DECORATION_NONE;
|
||||||
GetTextDecorations(PresContext(), aLine != nsnull, decorations, underColor,
|
GetTextDecorations(PresContext(), aLine != nsnull, decorations, underColor,
|
||||||
overColor, strikeColor);
|
overColor, strikeColor, underStyle, overStyle,
|
||||||
|
strikeStyle);
|
||||||
|
|
||||||
if (decorations == NS_STYLE_TEXT_DECORATION_NONE)
|
if (decorations == NS_STYLE_TEXT_DECORATION_NONE)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
@ -362,26 +369,27 @@ nsHTMLContainerFrame::DisplayTextDecorations(nsDisplayListBuilder* aBuilder,
|
||||||
// list, underneath the text and all decorations.
|
// list, underneath the text and all decorations.
|
||||||
if (GetStyleText()->mTextShadow) {
|
if (GetStyleText()->mTextShadow) {
|
||||||
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
||||||
nsDisplayTextShadow(aBuilder, this, decorations, aLine));
|
nsDisplayTextShadow(aBuilder, this, decorations, underStyle, overStyle,
|
||||||
|
strikeStyle, aLine));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (decorations & NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
if (decorations & NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
||||||
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
||||||
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_UNDERLINE,
|
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_UNDERLINE,
|
||||||
underColor, aLine));
|
underColor, underStyle, aLine));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
}
|
}
|
||||||
if (decorations & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
if (decorations & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||||
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
||||||
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_OVERLINE,
|
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_OVERLINE,
|
||||||
overColor, aLine));
|
overColor, overStyle, aLine));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
}
|
}
|
||||||
if (decorations & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
if (decorations & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
||||||
rv = aAboveTextDecorations->AppendNewToTop(new (aBuilder)
|
rv = aAboveTextDecorations->AppendNewToTop(new (aBuilder)
|
||||||
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
||||||
strikeColor, aLine));
|
strikeColor, strikeStyle, aLine));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
}
|
}
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
@ -424,6 +432,7 @@ nsHTMLContainerFrame::PaintTextDecorationLine(
|
||||||
const nsPoint& aPt,
|
const nsPoint& aPt,
|
||||||
nsLineBox* aLine,
|
nsLineBox* aLine,
|
||||||
nscolor aColor,
|
nscolor aColor,
|
||||||
|
PRUint8 aStyle,
|
||||||
gfxFloat aOffset,
|
gfxFloat aOffset,
|
||||||
gfxFloat aAscent,
|
gfxFloat aAscent,
|
||||||
gfxFloat aSize,
|
gfxFloat aSize,
|
||||||
|
@ -442,7 +451,7 @@ nsHTMLContainerFrame::PaintTextDecorationLine(
|
||||||
PresContext()->AppUnitsToGfxUnits(bp.top + aPt.y));
|
PresContext()->AppUnitsToGfxUnits(bp.top + aPt.y));
|
||||||
gfxSize size(PresContext()->AppUnitsToGfxUnits(innerWidth), aSize);
|
gfxSize size(PresContext()->AppUnitsToGfxUnits(innerWidth), aSize);
|
||||||
nsCSSRendering::PaintDecorationLine(aCtx, aColor, pt, size, aAscent, aOffset,
|
nsCSSRendering::PaintDecorationLine(aCtx, aColor, pt, size, aAscent, aOffset,
|
||||||
aDecoration, nsCSSRendering::DECORATION_STYLE_SOLID);
|
aDecoration, aStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*virtual*/ void
|
/*virtual*/ void
|
||||||
|
@ -461,7 +470,10 @@ nsHTMLContainerFrame::GetTextDecorations(nsPresContext* aPresContext,
|
||||||
PRUint8& aDecorations,
|
PRUint8& aDecorations,
|
||||||
nscolor& aUnderColor,
|
nscolor& aUnderColor,
|
||||||
nscolor& aOverColor,
|
nscolor& aOverColor,
|
||||||
nscolor& aStrikeColor)
|
nscolor& aStrikeColor,
|
||||||
|
PRUint8& aUnderStyle,
|
||||||
|
PRUint8& aOverStyle,
|
||||||
|
PRUint8& aStrikeStyle)
|
||||||
{
|
{
|
||||||
aDecorations = NS_STYLE_TEXT_DECORATION_NONE;
|
aDecorations = NS_STYLE_TEXT_DECORATION_NONE;
|
||||||
if (!mStyleContext->HasTextDecorations()) {
|
if (!mStyleContext->HasTextDecorations()) {
|
||||||
|
@ -471,13 +483,15 @@ nsHTMLContainerFrame::GetTextDecorations(nsPresContext* aPresContext,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!aIsBlock) {
|
if (!aIsBlock) {
|
||||||
aDecorations = this->GetStyleTextReset()->mTextDecoration &
|
const nsStyleTextReset* styleTextReset = this->GetStyleTextReset();
|
||||||
|
aDecorations = styleTextReset->mTextDecoration &
|
||||||
NS_STYLE_TEXT_DECORATION_LINES_MASK;
|
NS_STYLE_TEXT_DECORATION_LINES_MASK;
|
||||||
if (aDecorations) {
|
if (aDecorations) {
|
||||||
nscolor color = this->GetVisitedDependentColor(eCSSProperty_color);
|
nscolor color =
|
||||||
aUnderColor = color;
|
this->GetVisitedDependentColor(eCSSProperty_text_decoration_color);
|
||||||
aOverColor = color;
|
aUnderColor = aOverColor = aStrikeColor = color;
|
||||||
aStrikeColor = color;
|
aUnderStyle = aOverStyle = aStrikeStyle =
|
||||||
|
styleTextReset->GetDecorationStyle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -491,23 +505,29 @@ nsHTMLContainerFrame::GetTextDecorations(nsPresContext* aPresContext,
|
||||||
|
|
||||||
// walk tree
|
// walk tree
|
||||||
for (nsIFrame* frame = this; frame; frame = frame->GetParent()) {
|
for (nsIFrame* frame = this; frame; frame = frame->GetParent()) {
|
||||||
PRUint8 decors = frame->GetStyleTextReset()->mTextDecoration & decorMask;
|
const nsStyleTextReset* styleTextReset = frame->GetStyleTextReset();
|
||||||
|
PRUint8 decors = styleTextReset->mTextDecoration & decorMask;
|
||||||
if (decors) {
|
if (decors) {
|
||||||
// A *new* text-decoration is found.
|
// A *new* text-decoration is found.
|
||||||
nscolor color = frame->GetVisitedDependentColor(eCSSProperty_color);
|
nscolor color = frame->GetVisitedDependentColor(
|
||||||
|
eCSSProperty_text_decoration_color);
|
||||||
|
PRUint8 style = styleTextReset->GetDecorationStyle();
|
||||||
|
|
||||||
if (NS_STYLE_TEXT_DECORATION_UNDERLINE & decors) {
|
if (NS_STYLE_TEXT_DECORATION_UNDERLINE & decors) {
|
||||||
aUnderColor = color;
|
aUnderColor = color;
|
||||||
|
aUnderStyle = style;
|
||||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
decorMask &= ~NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||||
aDecorations |= NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
aDecorations |= NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||||
}
|
}
|
||||||
if (NS_STYLE_TEXT_DECORATION_OVERLINE & decors) {
|
if (NS_STYLE_TEXT_DECORATION_OVERLINE & decors) {
|
||||||
aOverColor = color;
|
aOverColor = color;
|
||||||
|
aOverStyle = style;
|
||||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_OVERLINE;
|
decorMask &= ~NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||||
aDecorations |= NS_STYLE_TEXT_DECORATION_OVERLINE;
|
aDecorations |= NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||||
}
|
}
|
||||||
if (NS_STYLE_TEXT_DECORATION_LINE_THROUGH & decors) {
|
if (NS_STYLE_TEXT_DECORATION_LINE_THROUGH & decors) {
|
||||||
aStrikeColor = color;
|
aStrikeColor = color;
|
||||||
|
aStrikeStyle = style;
|
||||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
decorMask &= ~NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||||
aDecorations |= NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
aDecorations |= NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,6 +144,18 @@ protected:
|
||||||
* in aDecoration is set. It is undefined otherwise.
|
* in aDecoration is set. It is undefined otherwise.
|
||||||
* @param aStrikeColor The color of strike-through if the appropriate bit
|
* @param aStrikeColor The color of strike-through if the appropriate bit
|
||||||
* in aDecoration is set. It is undefined otherwise.
|
* in aDecoration is set. It is undefined otherwise.
|
||||||
|
* @param aUnderStyle The style of underline if the appropriate bit
|
||||||
|
* in aDecoration is set. It is undefined otherwise.
|
||||||
|
* The style is one of
|
||||||
|
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||||
|
* @param aOverStyle The style of overline if the appropriate bit
|
||||||
|
* in aDecoration is set. It is undefined otherwise.
|
||||||
|
* The style is one of
|
||||||
|
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||||
|
* @param aStrikeStyle The style of strike-through if the appropriate bit
|
||||||
|
* in aDecoration is set. It is undefined otherwise.
|
||||||
|
* The style is one of
|
||||||
|
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||||
* NOTE: This function assigns NS_STYLE_TEXT_DECORATION_NONE to
|
* NOTE: This function assigns NS_STYLE_TEXT_DECORATION_NONE to
|
||||||
* aDecorations for text-less frames. See bug 20163 for
|
* aDecorations for text-less frames. See bug 20163 for
|
||||||
* details.
|
* details.
|
||||||
|
@ -153,7 +165,10 @@ protected:
|
||||||
PRUint8& aDecorations,
|
PRUint8& aDecorations,
|
||||||
nscolor& aUnderColor,
|
nscolor& aUnderColor,
|
||||||
nscolor& aOverColor,
|
nscolor& aOverColor,
|
||||||
nscolor& aStrikeColor);
|
nscolor& aStrikeColor,
|
||||||
|
PRUint8& aUnderStyle,
|
||||||
|
PRUint8& aOverStyle,
|
||||||
|
PRUint8& aStrikeStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function that does the actual drawing of the textdecoration.
|
* Function that does the actual drawing of the textdecoration.
|
||||||
|
@ -161,6 +176,8 @@ protected:
|
||||||
* @param aCtx the Thebes graphics context to draw on
|
* @param aCtx the Thebes graphics context to draw on
|
||||||
* @param aLine the line, or nsnull if this is an inline frame
|
* @param aLine the line, or nsnull if this is an inline frame
|
||||||
* @param aColor the color of the text-decoration
|
* @param aColor the color of the text-decoration
|
||||||
|
* @param aStyle the style of the text-decoration, i.e., one of
|
||||||
|
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||||
* @param aAscent ascent of the font from which the
|
* @param aAscent ascent of the font from which the
|
||||||
* text-decoration was derived.
|
* text-decoration was derived.
|
||||||
* @param aOffset distance *above* baseline where the
|
* @param aOffset distance *above* baseline where the
|
||||||
|
@ -177,6 +194,7 @@ protected:
|
||||||
const nsPoint& aPt,
|
const nsPoint& aPt,
|
||||||
nsLineBox* aLine,
|
nsLineBox* aLine,
|
||||||
nscolor aColor,
|
nscolor aColor,
|
||||||
|
PRUint8 aStyle,
|
||||||
gfxFloat aOffset,
|
gfxFloat aOffset,
|
||||||
gfxFloat aAscent,
|
gfxFloat aAscent,
|
||||||
gfxFloat aSize,
|
gfxFloat aSize,
|
||||||
|
|
|
@ -432,13 +432,19 @@ protected:
|
||||||
|
|
||||||
struct TextDecorations {
|
struct TextDecorations {
|
||||||
PRUint8 mDecorations;
|
PRUint8 mDecorations;
|
||||||
|
PRUint8 mOverStyle;
|
||||||
|
PRUint8 mUnderStyle;
|
||||||
|
PRUint8 mStrikeStyle;
|
||||||
nscolor mOverColor;
|
nscolor mOverColor;
|
||||||
nscolor mUnderColor;
|
nscolor mUnderColor;
|
||||||
nscolor mStrikeColor;
|
nscolor mStrikeColor;
|
||||||
|
|
||||||
TextDecorations() :
|
TextDecorations() :
|
||||||
mDecorations(0), mOverColor(NS_RGB(0, 0, 0)),
|
mDecorations(0), mOverStyle(NS_STYLE_TEXT_DECORATION_STYLE_SOLID),
|
||||||
mUnderColor(NS_RGB(0, 0, 0)), mStrikeColor(NS_RGB(0, 0, 0))
|
mUnderStyle(NS_STYLE_TEXT_DECORATION_STYLE_SOLID),
|
||||||
|
mStrikeStyle(NS_STYLE_TEXT_DECORATION_STYLE_SOLID),
|
||||||
|
mOverColor(NS_RGB(0, 0, 0)), mUnderColor(NS_RGB(0, 0, 0)),
|
||||||
|
mStrikeColor(NS_RGB(0, 0, 0))
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
PRBool HasDecorationlines() {
|
PRBool HasDecorationlines() {
|
||||||
|
|
|
@ -3465,15 +3465,6 @@ static StyleIDs SelectionStyleIDs[] = {
|
||||||
nsILookAndFeel::eMetricFloat_SpellCheckerUnderlineRelativeSize }
|
nsILookAndFeel::eMetricFloat_SpellCheckerUnderlineRelativeSize }
|
||||||
};
|
};
|
||||||
|
|
||||||
static PRUint8 sUnderlineStyles[] = {
|
|
||||||
nsCSSRendering::DECORATION_STYLE_NONE, // NS_UNDERLINE_STYLE_NONE 0
|
|
||||||
nsCSSRendering::DECORATION_STYLE_DOTTED, // NS_UNDERLINE_STYLE_DOTTED 1
|
|
||||||
nsCSSRendering::DECORATION_STYLE_DASHED, // NS_UNDERLINE_STYLE_DASHED 2
|
|
||||||
nsCSSRendering::DECORATION_STYLE_SOLID, // NS_UNDERLINE_STYLE_SOLID 3
|
|
||||||
nsCSSRendering::DECORATION_STYLE_DOUBLE, // NS_UNDERLINE_STYLE_DOUBLE 4
|
|
||||||
nsCSSRendering::DECORATION_STYLE_WAVY // NS_UNDERLINE_STYLE_WAVY 5
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
void
|
||||||
nsTextPaintStyle::InitSelectionStyle(PRInt32 aIndex)
|
nsTextPaintStyle::InitSelectionStyle(PRInt32 aIndex)
|
||||||
{
|
{
|
||||||
|
@ -3546,9 +3537,9 @@ nsTextPaintStyle::GetSelectionUnderline(nsPresContext* aPresContext,
|
||||||
|
|
||||||
look->GetColor(styleID.mLine, color);
|
look->GetColor(styleID.mLine, color);
|
||||||
look->GetMetric(styleID.mLineStyle, style);
|
look->GetMetric(styleID.mLineStyle, style);
|
||||||
if (!NS_IS_VALID_UNDERLINE_STYLE(style)) {
|
if (style > NS_STYLE_TEXT_DECORATION_STYLE_MAX) {
|
||||||
NS_ERROR("Invalid underline style value is specified");
|
NS_ERROR("Invalid underline style value is specified");
|
||||||
style = NS_UNDERLINE_STYLE_SOLID;
|
style = NS_STYLE_TEXT_DECORATION_STYLE_SOLID;
|
||||||
}
|
}
|
||||||
look->GetMetric(styleID.mLineRelativeSize, size);
|
look->GetMetric(styleID.mLineRelativeSize, size);
|
||||||
|
|
||||||
|
@ -3558,9 +3549,9 @@ nsTextPaintStyle::GetSelectionUnderline(nsPresContext* aPresContext,
|
||||||
*aLineColor = color;
|
*aLineColor = color;
|
||||||
}
|
}
|
||||||
*aRelativeSize = size;
|
*aRelativeSize = size;
|
||||||
*aStyle = sUnderlineStyles[style];
|
*aStyle = style;
|
||||||
|
|
||||||
return sUnderlineStyles[style] != nsCSSRendering::DECORATION_STYLE_NONE &&
|
return style != NS_STYLE_TEXT_DECORATION_STYLE_NONE &&
|
||||||
color != NS_TRANSPARENT &&
|
color != NS_TRANSPARENT &&
|
||||||
size > 0.0f;
|
size > 0.0f;
|
||||||
}
|
}
|
||||||
|
@ -4270,13 +4261,15 @@ nsTextFrame::GetTextDecorations(nsPresContext* aPresContext)
|
||||||
// This handles the <a href="blah.html"><font color="green">La
|
// This handles the <a href="blah.html"><font color="green">La
|
||||||
// la la</font></a> case. The link underline should be green.
|
// la la</font></a> case. The link underline should be green.
|
||||||
useOverride = PR_TRUE;
|
useOverride = PR_TRUE;
|
||||||
overrideColor = context->GetVisitedDependentColor(eCSSProperty_color);
|
overrideColor = context->GetVisitedDependentColor(
|
||||||
|
eCSSProperty_text_decoration_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: see above (remove this check)
|
// FIXME: see above (remove this check)
|
||||||
PRUint8 useDecorations = decorMask & styleText->mTextDecoration;
|
PRUint8 useDecorations = decorMask & styleText->mTextDecoration;
|
||||||
if (useDecorations) {// a decoration defined here
|
if (useDecorations) {// a decoration defined here
|
||||||
nscolor color = context->GetVisitedDependentColor(eCSSProperty_color);
|
nscolor color = context->GetVisitedDependentColor(
|
||||||
|
eCSSProperty_text_decoration_color);
|
||||||
|
|
||||||
// FIXME: We also need to record the thickness and position
|
// FIXME: We also need to record the thickness and position
|
||||||
// metrics appropriate to this element (at least in standards
|
// metrics appropriate to this element (at least in standards
|
||||||
|
@ -4289,16 +4282,19 @@ nsTextFrame::GetTextDecorations(nsPresContext* aPresContext)
|
||||||
// This way we move the decorations for relative positioning.
|
// This way we move the decorations for relative positioning.
|
||||||
if (NS_STYLE_TEXT_DECORATION_UNDERLINE & useDecorations) {
|
if (NS_STYLE_TEXT_DECORATION_UNDERLINE & useDecorations) {
|
||||||
decorations.mUnderColor = useOverride ? overrideColor : color;
|
decorations.mUnderColor = useOverride ? overrideColor : color;
|
||||||
|
decorations.mUnderStyle = styleText->GetDecorationStyle();
|
||||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
decorMask &= ~NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||||
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||||
}
|
}
|
||||||
if (NS_STYLE_TEXT_DECORATION_OVERLINE & useDecorations) {
|
if (NS_STYLE_TEXT_DECORATION_OVERLINE & useDecorations) {
|
||||||
decorations.mOverColor = useOverride ? overrideColor : color;
|
decorations.mOverColor = useOverride ? overrideColor : color;
|
||||||
|
decorations.mOverStyle = styleText->GetDecorationStyle();
|
||||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_OVERLINE;
|
decorMask &= ~NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||||
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_OVERLINE;
|
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||||
}
|
}
|
||||||
if (NS_STYLE_TEXT_DECORATION_LINE_THROUGH & useDecorations) {
|
if (NS_STYLE_TEXT_DECORATION_LINE_THROUGH & useDecorations) {
|
||||||
decorations.mStrikeColor = useOverride ? overrideColor : color;
|
decorations.mStrikeColor = useOverride ? overrideColor : color;
|
||||||
|
decorations.mStrikeStyle = styleText->GetDecorationStyle();
|
||||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
decorMask &= ~NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||||
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||||
}
|
}
|
||||||
|
@ -4393,8 +4389,7 @@ nsTextFrame::PaintTextDecorations(gfxContext* aCtx, const gfxRect& aDirtyRect,
|
||||||
size.height = fontMetrics.underlineSize;
|
size.height = fontMetrics.underlineSize;
|
||||||
nsCSSRendering::PaintDecorationLine(
|
nsCSSRendering::PaintDecorationLine(
|
||||||
aCtx, lineColor, pt, size, ascent, fontMetrics.maxAscent,
|
aCtx, lineColor, pt, size, ascent, fontMetrics.maxAscent,
|
||||||
NS_STYLE_TEXT_DECORATION_OVERLINE,
|
NS_STYLE_TEXT_DECORATION_OVERLINE, decorations.mOverStyle);
|
||||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
|
||||||
}
|
}
|
||||||
if (decorations.HasUnderline()) {
|
if (decorations.HasUnderline()) {
|
||||||
lineColor = aOverrideColor ? *aOverrideColor : decorations.mUnderColor;
|
lineColor = aOverrideColor ? *aOverrideColor : decorations.mUnderColor;
|
||||||
|
@ -4402,8 +4397,7 @@ nsTextFrame::PaintTextDecorations(gfxContext* aCtx, const gfxRect& aDirtyRect,
|
||||||
gfxFloat offset = aProvider.GetFontGroup()->GetUnderlineOffset();
|
gfxFloat offset = aProvider.GetFontGroup()->GetUnderlineOffset();
|
||||||
nsCSSRendering::PaintDecorationLine(
|
nsCSSRendering::PaintDecorationLine(
|
||||||
aCtx, lineColor, pt, size, ascent, offset,
|
aCtx, lineColor, pt, size, ascent, offset,
|
||||||
NS_STYLE_TEXT_DECORATION_UNDERLINE,
|
NS_STYLE_TEXT_DECORATION_UNDERLINE, decorations.mUnderStyle);
|
||||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
|
||||||
}
|
}
|
||||||
if (decorations.HasStrikeout()) {
|
if (decorations.HasStrikeout()) {
|
||||||
lineColor = aOverrideColor ? *aOverrideColor : decorations.mStrikeColor;
|
lineColor = aOverrideColor ? *aOverrideColor : decorations.mStrikeColor;
|
||||||
|
@ -4411,8 +4405,7 @@ nsTextFrame::PaintTextDecorations(gfxContext* aCtx, const gfxRect& aDirtyRect,
|
||||||
gfxFloat offset = fontMetrics.strikeoutOffset;
|
gfxFloat offset = fontMetrics.strikeoutOffset;
|
||||||
nsCSSRendering::PaintDecorationLine(
|
nsCSSRendering::PaintDecorationLine(
|
||||||
aCtx, lineColor, pt, size, ascent, offset,
|
aCtx, lineColor, pt, size, ascent, offset,
|
||||||
NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
NS_STYLE_TEXT_DECORATION_LINE_THROUGH, decorations.mStrikeStyle);
|
||||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4440,30 +4433,6 @@ static const SelectionType SelectionTypesWithDecorations =
|
||||||
nsISelectionController::SELECTION_IME_CONVERTEDTEXT |
|
nsISelectionController::SELECTION_IME_CONVERTEDTEXT |
|
||||||
nsISelectionController::SELECTION_IME_SELECTEDCONVERTEDTEXT;
|
nsISelectionController::SELECTION_IME_SELECTEDCONVERTEDTEXT;
|
||||||
|
|
||||||
static PRUint8
|
|
||||||
GetTextDecorationStyle(const nsTextRangeStyle &aRangeStyle)
|
|
||||||
{
|
|
||||||
NS_PRECONDITION(aRangeStyle.IsLineStyleDefined(),
|
|
||||||
"aRangeStyle.mLineStyle have to be defined");
|
|
||||||
switch (aRangeStyle.mLineStyle) {
|
|
||||||
case nsTextRangeStyle::LINESTYLE_NONE:
|
|
||||||
return nsCSSRendering::DECORATION_STYLE_NONE;
|
|
||||||
case nsTextRangeStyle::LINESTYLE_SOLID:
|
|
||||||
return nsCSSRendering::DECORATION_STYLE_SOLID;
|
|
||||||
case nsTextRangeStyle::LINESTYLE_DOTTED:
|
|
||||||
return nsCSSRendering::DECORATION_STYLE_DOTTED;
|
|
||||||
case nsTextRangeStyle::LINESTYLE_DASHED:
|
|
||||||
return nsCSSRendering::DECORATION_STYLE_DASHED;
|
|
||||||
case nsTextRangeStyle::LINESTYLE_DOUBLE:
|
|
||||||
return nsCSSRendering::DECORATION_STYLE_DOUBLE;
|
|
||||||
case nsTextRangeStyle::LINESTYLE_WAVY:
|
|
||||||
return nsCSSRendering::DECORATION_STYLE_WAVY;
|
|
||||||
default:
|
|
||||||
NS_WARNING("Requested underline style is not valid");
|
|
||||||
return nsCSSRendering::DECORATION_STYLE_SOLID;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static gfxFloat
|
static gfxFloat
|
||||||
ComputeSelectionUnderlineHeight(nsPresContext* aPresContext,
|
ComputeSelectionUnderlineHeight(nsPresContext* aPresContext,
|
||||||
const gfxFont::Metrics& aFontMetrics,
|
const gfxFont::Metrics& aFontMetrics,
|
||||||
|
@ -4549,7 +4518,7 @@ static void DrawSelectionDecorations(gfxContext* aContext, SelectionType aType,
|
||||||
if (aRangeStyle.mLineStyle == nsTextRangeStyle::LINESTYLE_NONE) {
|
if (aRangeStyle.mLineStyle == nsTextRangeStyle::LINESTYLE_NONE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
style = GetTextDecorationStyle(aRangeStyle);
|
style = aRangeStyle.mLineStyle;
|
||||||
relativeSize = aRangeStyle.mIsBoldLine ? 2.0f : 1.0f;
|
relativeSize = aRangeStyle.mIsBoldLine ? 2.0f : 1.0f;
|
||||||
} else if (!weDefineSelectionUnderline) {
|
} else if (!weDefineSelectionUnderline) {
|
||||||
// There is no underline style definition.
|
// There is no underline style definition.
|
||||||
|
@ -5358,7 +5327,7 @@ nsTextFrame::CombineSelectionUnderlineRect(nsPresContext* aPresContext,
|
||||||
rangeStyle.mLineStyle == nsTextRangeStyle::LINESTYLE_NONE) {
|
rangeStyle.mLineStyle == nsTextRangeStyle::LINESTYLE_NONE) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
style = GetTextDecorationStyle(rangeStyle);
|
style = rangeStyle.mLineStyle;
|
||||||
relativeSize = rangeStyle.mIsBoldLine ? 2.0f : 1.0f;
|
relativeSize = rangeStyle.mIsBoldLine ? 2.0f : 1.0f;
|
||||||
} else if (!nsTextPaintStyle::GetSelectionUnderline(aPresContext, index,
|
} else if (!nsTextPaintStyle::GetSelectionUnderline(aPresContext, index,
|
||||||
nsnull, &relativeSize,
|
nsnull, &relativeSize,
|
||||||
|
|
|
@ -21,7 +21,7 @@ include backgrounds/reftest.list
|
||||||
include bidi/reftest.list
|
include bidi/reftest.list
|
||||||
|
|
||||||
# border-image
|
# border-image
|
||||||
include border-image/reftest.list
|
skip-if(Android) include border-image/reftest.list
|
||||||
|
|
||||||
# border-radius/
|
# border-radius/
|
||||||
include border-radius/reftest.list
|
include border-radius/reftest.list
|
||||||
|
@ -33,10 +33,10 @@ include box-ordinal/reftest.list
|
||||||
include box-properties/reftest.list
|
include box-properties/reftest.list
|
||||||
|
|
||||||
# box-shadow/
|
# box-shadow/
|
||||||
include box-shadow/reftest.list
|
skip-if(Android) include box-shadow/reftest.list
|
||||||
|
|
||||||
# bugs/
|
# bugs/
|
||||||
include bugs/reftest.list
|
skip-if(Android) include bugs/reftest.list
|
||||||
|
|
||||||
# canvas 2D
|
# canvas 2D
|
||||||
include canvas/reftest.list
|
include canvas/reftest.list
|
||||||
|
@ -51,10 +51,10 @@ include css-charset/reftest.list
|
||||||
include css-default/reftest.list
|
include css-default/reftest.list
|
||||||
|
|
||||||
# css :disable tests
|
# css :disable tests
|
||||||
include css-disabled/reftest.list
|
skip-if(Android) include css-disabled/reftest.list
|
||||||
|
|
||||||
# css :enable tests
|
# css :enable tests
|
||||||
include css-enabled/reftest.list
|
skip-if(Android) include css-enabled/reftest.list
|
||||||
|
|
||||||
# css @import tests
|
# css @import tests
|
||||||
include css-import/reftest.list
|
include css-import/reftest.list
|
||||||
|
@ -81,10 +81,10 @@ include css-required/reftest.list
|
||||||
include css-optional/reftest.list
|
include css-optional/reftest.list
|
||||||
|
|
||||||
# css valid
|
# css valid
|
||||||
include css-valid/reftest.list
|
skip-if(Android) include css-valid/reftest.list
|
||||||
|
|
||||||
# css invalid
|
# css invalid
|
||||||
include css-invalid/reftest.list
|
skip-if(Android) include css-invalid/reftest.list
|
||||||
|
|
||||||
# css-submit-invalid
|
# css-submit-invalid
|
||||||
include css-submit-invalid/reftest.list
|
include css-submit-invalid/reftest.list
|
||||||
|
@ -93,10 +93,10 @@ include css-submit-invalid/reftest.list
|
||||||
include css-transitions/reftest.list
|
include css-transitions/reftest.list
|
||||||
|
|
||||||
# css :-moz-ui-invalid
|
# css :-moz-ui-invalid
|
||||||
include css-ui-invalid/reftest.list
|
skip-if(Android) include css-ui-invalid/reftest.list
|
||||||
|
|
||||||
# css :-moz-ui-valid
|
# css :-moz-ui-valid
|
||||||
include css-ui-valid/reftest.list
|
skip-if(Android) include css-ui-valid/reftest.list
|
||||||
|
|
||||||
# css values and units
|
# css values and units
|
||||||
include css-valuesandunits/reftest.list
|
include css-valuesandunits/reftest.list
|
||||||
|
@ -129,7 +129,7 @@ include editor/reftest.list
|
||||||
include generated-content/reftest.list
|
include generated-content/reftest.list
|
||||||
|
|
||||||
# first-letter/
|
# first-letter/
|
||||||
include first-letter/reftest.list
|
skip-if(Android) include first-letter/reftest.list
|
||||||
|
|
||||||
# first-line/
|
# first-line/
|
||||||
include first-line/reftest.list
|
include first-line/reftest.list
|
||||||
|
@ -147,7 +147,7 @@ include font-features/reftest.list
|
||||||
include font-matching/reftest.list
|
include font-matching/reftest.list
|
||||||
|
|
||||||
# forms
|
# forms
|
||||||
include forms/reftest.list
|
skip-if(Android) include forms/reftest.list
|
||||||
|
|
||||||
# gfx
|
# gfx
|
||||||
include ../../gfx/tests/reftest/reftest.list
|
include ../../gfx/tests/reftest/reftest.list
|
||||||
|
@ -186,7 +186,7 @@ include margin-collapsing/reftest.list
|
||||||
include marquee/reftest.list
|
include marquee/reftest.list
|
||||||
|
|
||||||
# native-theme/
|
# native-theme/
|
||||||
include native-theme/reftest.list
|
skip-if(Android) include native-theme/reftest.list
|
||||||
|
|
||||||
# netwerk/
|
# netwerk/
|
||||||
include ../../netwerk/test/reftest/reftest.list
|
include ../../netwerk/test/reftest/reftest.list
|
||||||
|
@ -250,7 +250,7 @@ include text-decoration/reftest.list
|
||||||
include text-indent/reftest.list
|
include text-indent/reftest.list
|
||||||
|
|
||||||
# text-shadow/
|
# text-shadow/
|
||||||
include text-shadow/reftest.list
|
skip-if(Android) include text-shadow/reftest.list
|
||||||
|
|
||||||
# theme (pinstripe)
|
# theme (pinstripe)
|
||||||
include ../../toolkit/themes/pinstripe/reftests/reftest.list
|
include ../../toolkit/themes/pinstripe/reftests/reftest.list
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
<p style="color: #008000;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: #0000FF;">This blue text has green decoration lines</span>
|
||||||
|
</p>
|
||||||
|
<p style="color: yellow;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: red;">This red text has yellow decoration lines</span>
|
||||||
|
</p>
|
||||||
|
<p style="color: red; text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: #0000FF">This blue text has red lines</span>
|
||||||
|
</p>
|
||||||
|
<p style="color: orange;">
|
||||||
|
This orange text has transparent lines
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Here is no decoration lines, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
color: green;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: blue;">
|
||||||
|
this blue text has green decoration lines</span></span>,
|
||||||
|
and here is no decoration lines too.
|
||||||
|
</p>
|
||||||
|
<p style="color: red;">
|
||||||
|
This is red paragraph and here is no decoration lines, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
color: green;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: red;">here are green decoration lines</span></span>,
|
||||||
|
and here is no decoration lines too.
|
||||||
|
</p>
|
||||||
|
<p style="color: purple;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
This is purple paragraph and here are decoration lines of current color, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: purple;">here are red decoration lines</span></span>,
|
||||||
|
and here are current color decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: green;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
This is green paragraph and here are decoration lines of current color, and
|
||||||
|
<span style="font-size: 2em;">
|
||||||
|
here is specified red decoration color but has current color lines</span>,
|
||||||
|
and here are current color decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: blue;">
|
||||||
|
This is blue paragraph,
|
||||||
|
<span style="font-size:2em;
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: blue;">
|
||||||
|
here is red text with blue decoration lines</span>,
|
||||||
|
and here is blue text without decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: blue;">
|
||||||
|
This is blue paragraph and decoration color is specified as green,
|
||||||
|
<span style="font-size:2em;
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: green;">
|
||||||
|
here is red text with green decoration lines</span>,
|
||||||
|
and here is blue text without decoration lines.
|
||||||
|
</p>
|
|
@ -0,0 +1,73 @@
|
||||||
|
<p style="color: blue;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: green;">
|
||||||
|
This blue text has green decoration lines
|
||||||
|
</p>
|
||||||
|
<p style="color: #ff0000;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: #ffff00;">
|
||||||
|
This red text has yellow decoration lines
|
||||||
|
</p>
|
||||||
|
<p style="color: rgb(0%, 0%, 100%);
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: rgb(100%, 0%, 0%);">
|
||||||
|
This blue text has red lines
|
||||||
|
</p>
|
||||||
|
<p style="color: orange;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: transparent;">
|
||||||
|
This orange text has transparent lines
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Here is no decoration lines, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
color: blue;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: green;">
|
||||||
|
this blue text has green decoration lines</span>,
|
||||||
|
and here is no decoration lines too.
|
||||||
|
</p>
|
||||||
|
<p style="color: red;">
|
||||||
|
This is red paragraph and here is no decoration lines, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: green;">
|
||||||
|
here are green decoration lines</span>,
|
||||||
|
and here is no decoration lines too.
|
||||||
|
</p>
|
||||||
|
<p style="color: purple;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
This is purple paragraph and here are decoration lines of current color, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: red;">
|
||||||
|
here are red decoration lines</span>,
|
||||||
|
and here are current color decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: green;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
This is green paragraph and here are decoration lines of current color, and
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
-moz-text-decoration-color: red;">
|
||||||
|
here is specified red decoration color but has current color lines</span>,
|
||||||
|
and here are current color decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: blue;">
|
||||||
|
This is blue paragraph,
|
||||||
|
<span style="font-size:2em;
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: inherit;">
|
||||||
|
here is red text with blue decoration lines</span>,
|
||||||
|
and here is blue text without decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: blue;
|
||||||
|
-moz-text-decoration-color: green;">
|
||||||
|
This is blue paragraph and decoration color is specified as green,
|
||||||
|
<span style="font-size:2em;
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: inherit;">
|
||||||
|
here is red text with green decoration lines</span>,
|
||||||
|
and here is blue text without decoration lines.
|
||||||
|
</p>
|
|
@ -0,0 +1,67 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="color: #008000;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: #0000FF;">This blue text has green decoration lines</span>
|
||||||
|
</p>
|
||||||
|
<p style="color: yellow;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: red;">This red text has yellow decoration lines</span>
|
||||||
|
</p>
|
||||||
|
<p style="color: red;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: #0000FF">This blue text has red lines</span>
|
||||||
|
</p>
|
||||||
|
<p style="color: orange;">
|
||||||
|
This orange text has transparent lines
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Here is no decoration lines, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
color: green;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: blue;">
|
||||||
|
this blue text has green decoration lines</span></span>,
|
||||||
|
and here is no decoration lines too.
|
||||||
|
</p>
|
||||||
|
<p style="color: red;">
|
||||||
|
This is red paragraph and here is no decoration lines, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
color: green;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: red;">here are green decoration lines</span></span>,
|
||||||
|
and here is no decoration lines too.
|
||||||
|
</p>
|
||||||
|
<p style="color: purple;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
This is purple paragraph and here are decoration lines of current color, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
<span style="color: purple;">here are red decoration lines</span></span>,
|
||||||
|
and here are current color decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: green;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
This is green paragraph and here are decoration lines of current color, and
|
||||||
|
<span style="font-size: 2em;">
|
||||||
|
here is specified red decoration color but has current color lines</span>,
|
||||||
|
and here are current color decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: blue;">
|
||||||
|
This is blue paragraph,
|
||||||
|
<span style="font-size:2em;
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: blue;">
|
||||||
|
here is red text with blue decoration lines</span>,
|
||||||
|
and here is blue text without decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: blue;">
|
||||||
|
This is blue paragraph and decoration color is specified as green,
|
||||||
|
<span style="font-size:2em;
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: green;">
|
||||||
|
here is red text with green decoration lines</span>,
|
||||||
|
and here is blue text without decoration lines.
|
||||||
|
</p>
|
|
@ -0,0 +1,72 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="color: blue;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: green;">
|
||||||
|
This blue text has green decoration lines
|
||||||
|
</p>
|
||||||
|
<p style="color: #ff0000;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: #ffff00;">
|
||||||
|
This red text has yellow decoration lines
|
||||||
|
</p>
|
||||||
|
<p style="color: rgb(0%, 0%, 100%);
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: rgb(100%, 0%, 0%);">
|
||||||
|
This blue text has red lines
|
||||||
|
</p>
|
||||||
|
<p style="color: orange;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: transparent;">
|
||||||
|
This orange text has transparent lines
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Here is no decoration lines, but
|
||||||
|
<span style="font-size: 2em; color: blue;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: green;">
|
||||||
|
this blue text has green decoration lines</span>,
|
||||||
|
and here is no decoration lines too.
|
||||||
|
</p>
|
||||||
|
<p style="color: red;">
|
||||||
|
This is red paragraph and here is no decoration lines, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: green;">
|
||||||
|
here are green decoration lines</span>,
|
||||||
|
and here is no decoration lines too.</p>
|
||||||
|
<p style="color: purple;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
This is purple paragraph and here are decoration lines of current color, but
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: red;">
|
||||||
|
here are red decoration lines</span>,
|
||||||
|
and here are current color decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: green;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
This is green paragraph and here are decoration lines of current color, and
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
-moz-text-decoration-color: red;">
|
||||||
|
here is specified red decoration color but has current color lines</span>,
|
||||||
|
and here are current color decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: blue;">
|
||||||
|
This is blue paragraph,
|
||||||
|
<span style="font-size:2em;
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: inherit;">
|
||||||
|
here is red text with blue decoration lines</span>,
|
||||||
|
and here is blue text without decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="color: blue;
|
||||||
|
-moz-text-decoration-color: green;">
|
||||||
|
This is blue paragraph and decoration color is specified as green,
|
||||||
|
<span style="font-size:2em;
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-color: inherit;">
|
||||||
|
here is red text with green decoration lines</span>,
|
||||||
|
and here is blue text without decoration lines.
|
||||||
|
</p>
|
|
@ -0,0 +1,42 @@
|
||||||
|
<p>
|
||||||
|
Here is specified the decoration style as dotted but no decoration lines,
|
||||||
|
however,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration: solid;">
|
||||||
|
here has solid decoration lines</span>,
|
||||||
|
and here has no decoration lines.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Here is specified the decoration style as dashed but no decoration lines,
|
||||||
|
however,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: dashed;">
|
||||||
|
here has inherited decoration lines</span>,
|
||||||
|
and here has no decoration lines.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<span style="text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: dotted;">
|
||||||
|
Here has dotted decoration lines,
|
||||||
|
</span><span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: wavy;">
|
||||||
|
here has wavy decoration
|
||||||
|
lines</span><span style="text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: dotted;">,
|
||||||
|
and here has dotted decoration lines.</span>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<span style="text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: double;">
|
||||||
|
Here has double decoration lines,
|
||||||
|
</span><span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: double;">
|
||||||
|
here is specified as dashed decoration lines but should be
|
||||||
|
ignored</span><span style="text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: double;">,
|
||||||
|
and here has double decoration lines.</span>
|
||||||
|
</p>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<p style="-moz-text-decoration-style: dotted;">
|
||||||
|
Here is specified the decoration style as dotted but no decoration lines, however,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
here has solid decoration lines</span>,
|
||||||
|
and here has no decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="-moz-text-decoration-style: dashed;">
|
||||||
|
Here is specified the decoration style as dashed but no decoration lines,
|
||||||
|
however,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: inherit;">
|
||||||
|
here has inherited decoration lines</span>,
|
||||||
|
and here has no decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: dotted;">
|
||||||
|
Here has dotted decoration lines,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: wavy;">
|
||||||
|
here has wavy decoration lines</span>,
|
||||||
|
and here has dotted decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: double;">
|
||||||
|
Here has double decoration lines,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
-moz-text-decoration-style: dashed;">
|
||||||
|
here is specified as dashed decoration lines but should be ignored</span>,
|
||||||
|
and here has double decoration lines.
|
||||||
|
</p>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p>
|
||||||
|
Here is specified the decoration style as dotted but no decoration lines,
|
||||||
|
however,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration: solid;">
|
||||||
|
here has solid decoration lines</span>,
|
||||||
|
and here has no decoration lines.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Here is specified the decoration style as dashed but no decoration lines,
|
||||||
|
however,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: dashed;">
|
||||||
|
here has inherited decoration lines</span>,
|
||||||
|
and here has no decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: double;">
|
||||||
|
Here has double decoration lines,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: none;">
|
||||||
|
here is specified as dashed decoration lines but should be ignored</span>,
|
||||||
|
and here has double decoration lines.
|
||||||
|
</p>
|
|
@ -0,0 +1,25 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="-moz-text-decoration-style: dotted;">
|
||||||
|
Here is specified the decoration style as dotted but no decoration lines,
|
||||||
|
however,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;">
|
||||||
|
here has solid decoration lines</span>, and here has no decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="-moz-text-decoration-style: dashed;">
|
||||||
|
Here is specified the decoration style as dashed but no decoration lines,
|
||||||
|
however,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: inherit;">
|
||||||
|
here has inherited decoration lines</span>,
|
||||||
|
and here has no decoration lines.
|
||||||
|
</p>
|
||||||
|
<p style="text-decoration: underline line-through overline;
|
||||||
|
-moz-text-decoration-style: double;">
|
||||||
|
Here has double decoration lines,
|
||||||
|
<span style="font-size: 2em;
|
||||||
|
-moz-text-decoration-style: dashed;">
|
||||||
|
here is specified as dashed decoration lines but should be ignored</span>,
|
||||||
|
and here has double decoration lines.
|
||||||
|
</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p style="text-decoration: line-through; -moz-text-decoration-style: dashed;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="text-decoration: line-through; -moz-text-decoration-style: dashed;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p style="text-decoration: line-through; -moz-text-decoration-style: dotted;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="text-decoration: line-through; -moz-text-decoration-style: dotted;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p style="text-decoration: line-through; -moz-text-decoration-style: double;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="text-decoration: line-through; -moz-text-decoration-style: double;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p style="text-decoration: line-through;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p style="text-decoration: line-through; -moz-text-decoration-style: solid;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="text-decoration: line-through; -moz-text-decoration-style: solid;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="text-decoration: line-through;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p style="text-decoration: line-through; -moz-text-decoration-style: wavy;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="text-decoration: line-through; -moz-text-decoration-style: wavy;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: dashed;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: dashed;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: dotted;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: dotted;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: double;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: double;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: solid;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: solid;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: wavy;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: wavy;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p style="text-decoration: overline; -moz-text-decoration-style: dashed;">This paragraph has overline</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="text-decoration: overline; -moz-text-decoration-style: dashed;">This paragraph has overline</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p style="text-decoration: overline; -moz-text-decoration-style: dotted;">This paragraph has overline</p>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p style="text-decoration: overline; -moz-text-decoration-style: dotted;">This paragraph has overline</p>
|
|
@ -0,0 +1 @@
|
||||||
|
<p style="text-decoration: overline; -moz-text-decoration-style: double;">This paragraph has overline</p>
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче