зеркало из https://github.com/mozilla/pjs.git
Fixes for:
94653 - can't right align text in outliner cell 95730 - White block displays/artifacts in the highlight area after Move/Drag mail to folder. 112238 - [RFE] Outliner widget should support line-through 116855 - Modify outliner builder syntax to match outliner content model 118093 - Make -moz-image-region work in the outliner 118113 - Too little space between pref category tree and pref page 118154 - Category now has a column picker 118647 - Memory leak of 52 bytes from 1 block allocated in nsOutlinerBodyFrame::CheckVerticalOverflow 118660 - left arrow no longer moves to parent category 119751 - Branches are open by default and then closed after launch. - outermost <outlinerchildren> has "-moz-box-flex: 1" by default and it actaully replaced <outlinerbody> - all event handlers moved on <outliner> - content builder, outliner builder and content view use <outliner> as root element - nsIBoxObject has a new attribute "element" - all CSS rules outlinerbody:foo replaced with outlinerchildren:foo - drop feedback is now skinable r=waterson for the changes in mozilla/content r=sspitzer on the mailnews parts r=blake on the bookmarks/history r=bryner on the OutlinerBodyFrame and OutlinerContentView changes sr=hyatt,hewitt
This commit is contained in:
Родитель
97bbd37458
Коммит
bbc83df106
|
@ -96,7 +96,6 @@ XUL_ATOM(closed, "closed")
|
|||
XUL_ATOM(focus, "focus")
|
||||
|
||||
XUL_ATOM(outliner, "outliner")
|
||||
XUL_ATOM(outlinerbody, "outlinerbody")
|
||||
XUL_ATOM(outlinercols, "outlinercols")
|
||||
XUL_ATOM(outlinercol, "outlinercol")
|
||||
XUL_ATOM(outlinerchildren, "outlinerchildren")
|
||||
|
@ -109,6 +108,10 @@ XUL_ATOM(cycler, "cycler")
|
|||
XUL_ATOM(primary, "primary")
|
||||
XUL_ATOM(current, "current")
|
||||
XUL_ATOM(seltype, "seltype")
|
||||
XUL_ATOM(sorted, "sorted")
|
||||
XUL_ATOM(drop, "drop")
|
||||
XUL_ATOM(dropBefore, "dropBefore")
|
||||
XUL_ATOM(dropAfter, "dropAfter")
|
||||
XUL_ATOM(mozoutlinerrow, ":-moz-outliner-row")
|
||||
XUL_ATOM(mozoutlinercell, ":-moz-outliner-cell")
|
||||
XUL_ATOM(mozoutlinercolumn, ":-moz-outliner-column")
|
||||
|
|
|
@ -6382,7 +6382,7 @@ nsXULDocument::CheckTemplateBuilder(nsIContent* aElement)
|
|||
// Flag "dont-build-content" is used to identify that we shouldn't build
|
||||
// content and just attach the outliner builder view.
|
||||
if ((nameSpaceID == kNameSpaceID_XUL) &&
|
||||
(baseTag.get() == nsXULAtoms::outlinerbody)) {
|
||||
(baseTag.get() == nsXULAtoms::outliner)) {
|
||||
nsAutoString flags;
|
||||
aElement->GetAttr(kNameSpaceID_None, nsXULAtoms::flags, flags);
|
||||
if (flags.Find(NS_LITERAL_STRING("dont-build-content").get()) >= 0) {
|
||||
|
@ -6400,6 +6400,19 @@ nsXULDocument::CheckTemplateBuilder(nsIContent* aElement)
|
|||
if (xuldoc)
|
||||
xuldoc->SetTemplateBuilderFor(aElement, builder);
|
||||
|
||||
nsCOMPtr<nsIContent> bodyContent;
|
||||
nsXULContentUtils::FindChildByTag(aElement, kNameSpaceID_XUL, nsXULAtoms::outlinerchildren, getter_AddRefs(bodyContent));
|
||||
if (!bodyContent) {
|
||||
nsCOMPtr<nsIDOMDocument> domdoc = do_QueryInterface(doc);
|
||||
if (domdoc) {
|
||||
nsCOMPtr<nsIDOMElement> bodyElement;
|
||||
domdoc->CreateElement(NS_LITERAL_STRING("outlinerchildren"),
|
||||
getter_AddRefs(bodyElement));
|
||||
bodyContent = do_QueryInterface(bodyElement);
|
||||
aElement->AppendChildTo(bodyContent, PR_FALSE, PR_TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "nsIContent.h"
|
||||
#include "nsIDOMElement.h"
|
||||
#include "nsILocalStore.h"
|
||||
#include "nsIBoxObject.h"
|
||||
#include "nsIOutlinerBoxObject.h"
|
||||
#include "nsIOutlinerSelection.h"
|
||||
#include "nsIOutlinerView.h"
|
||||
|
@ -107,10 +108,10 @@ protected:
|
|||
Init();
|
||||
|
||||
/**
|
||||
* Collect sort variables from the <outlinercol>s
|
||||
* Get sort variables from the active <outlinercol>
|
||||
*/
|
||||
nsresult
|
||||
GetSortVariables(VariableSet& aVariables);
|
||||
EnsureSortVariables();
|
||||
|
||||
virtual nsresult
|
||||
InitializeRuleNetworkForSimpleRules(InnerNode** aChildNode);
|
||||
|
@ -644,10 +645,11 @@ nsXULOutlinerBuilder::SetOutliner(nsIOutlinerBoxObject* outliner)
|
|||
|
||||
if (! mRoot) {
|
||||
// Get our root element
|
||||
nsCOMPtr<nsIDOMElement> body;
|
||||
mBoxObject->GetOutlinerBody(getter_AddRefs(body));
|
||||
nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mBoxObject);
|
||||
nsCOMPtr<nsIDOMElement> element;
|
||||
boxObject->GetElement(getter_AddRefs(element));
|
||||
|
||||
mRoot = do_QueryInterface(body);
|
||||
mRoot = do_QueryInterface(element);
|
||||
|
||||
LoadDataSources();
|
||||
|
||||
|
@ -699,6 +701,10 @@ nsXULOutlinerBuilder::SetOutliner(nsIOutlinerBoxObject* outliner)
|
|||
return NS_ERROR_FAILURE;
|
||||
|
||||
Rebuild();
|
||||
|
||||
EnsureSortVariables();
|
||||
if (mSortVariable)
|
||||
SortSubtree(mRows.GetRoot());
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -1189,56 +1195,44 @@ nsXULOutlinerBuilder::SynchronizeMatch(nsTemplateMatch* aMatch, const VariableSe
|
|||
//----------------------------------------------------------------------
|
||||
|
||||
nsresult
|
||||
nsXULOutlinerBuilder::GetSortVariables(VariableSet& aVariables)
|
||||
nsXULOutlinerBuilder::EnsureSortVariables()
|
||||
{
|
||||
// The <outlinercol>'s are siblings of the <outlinerbody>, which
|
||||
// is what our mRoot is. Walk up one level to find the <outliner>,
|
||||
// then grovel through *its* kids to find the <outlinercol>'s...
|
||||
nsCOMPtr<nsIContent> outliner;
|
||||
mRoot->GetParent(*getter_AddRefs(outliner));
|
||||
// Grovel through <outlinercols> kids to find the <outlinercol>
|
||||
// with the sort attributes.
|
||||
nsCOMPtr<nsIContent> outlinercols;
|
||||
|
||||
nsXULContentUtils::FindChildByTag(mRoot, kNameSpaceID_XUL, nsXULAtoms::outlinercols, getter_AddRefs(outlinercols));
|
||||
|
||||
if (! outliner)
|
||||
return NS_ERROR_FAILURE;
|
||||
if (!outlinercols)
|
||||
return NS_OK;
|
||||
|
||||
PRInt32 count;
|
||||
outliner->ChildCount(count);
|
||||
|
||||
for (PRInt32 i = count - 1; i >= 0; --i) {
|
||||
outlinercols->ChildCount(count);
|
||||
for (PRInt32 i = 0; i < count; i++) {
|
||||
nsCOMPtr<nsIContent> child;
|
||||
outliner->ChildAt(i, *getter_AddRefs(child));
|
||||
|
||||
if (! child)
|
||||
continue;
|
||||
|
||||
// XXX probably need to get base tag here
|
||||
outlinercols->ChildAt(i, *getter_AddRefs(child));
|
||||
nsCOMPtr<nsIAtom> tag;
|
||||
child->GetTag(*getter_AddRefs(tag));
|
||||
if (tag == nsXULAtoms::outlinercol) {
|
||||
nsAutoString sortActive;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sortActive, sortActive);
|
||||
if (sortActive == NS_LITERAL_STRING("true")) {
|
||||
nsAutoString sort;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sort, sort);
|
||||
if (sort.Length()) {
|
||||
mSortVariable = mRules.LookupSymbol(sort.get(), PR_TRUE);
|
||||
|
||||
if (tag != nsXULAtoms::outlinercol)
|
||||
continue;
|
||||
|
||||
nsAutoString sort;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sort, sort);
|
||||
if (! sort.Length())
|
||||
continue;
|
||||
|
||||
PRInt32 var = mRules.LookupSymbol(sort.get(), PR_TRUE);
|
||||
aVariables.Add(var);
|
||||
|
||||
nsAutoString active;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sortActive, active);
|
||||
if (active == NS_LITERAL_STRING("true")) {
|
||||
nsAutoString dir;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sortDirection, dir);
|
||||
|
||||
if (dir == NS_LITERAL_STRING("none"))
|
||||
mSortDirection = eDirection_Natural;
|
||||
else if (dir == NS_LITERAL_STRING("descending"))
|
||||
mSortDirection = eDirection_Descending;
|
||||
else
|
||||
mSortDirection = eDirection_Ascending;
|
||||
|
||||
mSortVariable = var;
|
||||
nsAutoString sortDirection;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sortDirection, sortDirection);
|
||||
if (sortDirection == NS_LITERAL_STRING("ascending"))
|
||||
mSortDirection = eDirection_Ascending;
|
||||
else if (sortDirection == NS_LITERAL_STRING("descending"))
|
||||
mSortDirection = eDirection_Descending;
|
||||
else
|
||||
mSortDirection = eDirection_Natural;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "nsIContent.h"
|
||||
#include "nsIDOMElement.h"
|
||||
#include "nsILocalStore.h"
|
||||
#include "nsIBoxObject.h"
|
||||
#include "nsIOutlinerBoxObject.h"
|
||||
#include "nsIOutlinerSelection.h"
|
||||
#include "nsIOutlinerView.h"
|
||||
|
@ -107,10 +108,10 @@ protected:
|
|||
Init();
|
||||
|
||||
/**
|
||||
* Collect sort variables from the <outlinercol>s
|
||||
* Get sort variables from the active <outlinercol>
|
||||
*/
|
||||
nsresult
|
||||
GetSortVariables(VariableSet& aVariables);
|
||||
EnsureSortVariables();
|
||||
|
||||
virtual nsresult
|
||||
InitializeRuleNetworkForSimpleRules(InnerNode** aChildNode);
|
||||
|
@ -644,10 +645,11 @@ nsXULOutlinerBuilder::SetOutliner(nsIOutlinerBoxObject* outliner)
|
|||
|
||||
if (! mRoot) {
|
||||
// Get our root element
|
||||
nsCOMPtr<nsIDOMElement> body;
|
||||
mBoxObject->GetOutlinerBody(getter_AddRefs(body));
|
||||
nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mBoxObject);
|
||||
nsCOMPtr<nsIDOMElement> element;
|
||||
boxObject->GetElement(getter_AddRefs(element));
|
||||
|
||||
mRoot = do_QueryInterface(body);
|
||||
mRoot = do_QueryInterface(element);
|
||||
|
||||
LoadDataSources();
|
||||
|
||||
|
@ -699,6 +701,10 @@ nsXULOutlinerBuilder::SetOutliner(nsIOutlinerBoxObject* outliner)
|
|||
return NS_ERROR_FAILURE;
|
||||
|
||||
Rebuild();
|
||||
|
||||
EnsureSortVariables();
|
||||
if (mSortVariable)
|
||||
SortSubtree(mRows.GetRoot());
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -1189,56 +1195,44 @@ nsXULOutlinerBuilder::SynchronizeMatch(nsTemplateMatch* aMatch, const VariableSe
|
|||
//----------------------------------------------------------------------
|
||||
|
||||
nsresult
|
||||
nsXULOutlinerBuilder::GetSortVariables(VariableSet& aVariables)
|
||||
nsXULOutlinerBuilder::EnsureSortVariables()
|
||||
{
|
||||
// The <outlinercol>'s are siblings of the <outlinerbody>, which
|
||||
// is what our mRoot is. Walk up one level to find the <outliner>,
|
||||
// then grovel through *its* kids to find the <outlinercol>'s...
|
||||
nsCOMPtr<nsIContent> outliner;
|
||||
mRoot->GetParent(*getter_AddRefs(outliner));
|
||||
// Grovel through <outlinercols> kids to find the <outlinercol>
|
||||
// with the sort attributes.
|
||||
nsCOMPtr<nsIContent> outlinercols;
|
||||
|
||||
nsXULContentUtils::FindChildByTag(mRoot, kNameSpaceID_XUL, nsXULAtoms::outlinercols, getter_AddRefs(outlinercols));
|
||||
|
||||
if (! outliner)
|
||||
return NS_ERROR_FAILURE;
|
||||
if (!outlinercols)
|
||||
return NS_OK;
|
||||
|
||||
PRInt32 count;
|
||||
outliner->ChildCount(count);
|
||||
|
||||
for (PRInt32 i = count - 1; i >= 0; --i) {
|
||||
outlinercols->ChildCount(count);
|
||||
for (PRInt32 i = 0; i < count; i++) {
|
||||
nsCOMPtr<nsIContent> child;
|
||||
outliner->ChildAt(i, *getter_AddRefs(child));
|
||||
|
||||
if (! child)
|
||||
continue;
|
||||
|
||||
// XXX probably need to get base tag here
|
||||
outlinercols->ChildAt(i, *getter_AddRefs(child));
|
||||
nsCOMPtr<nsIAtom> tag;
|
||||
child->GetTag(*getter_AddRefs(tag));
|
||||
if (tag == nsXULAtoms::outlinercol) {
|
||||
nsAutoString sortActive;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sortActive, sortActive);
|
||||
if (sortActive == NS_LITERAL_STRING("true")) {
|
||||
nsAutoString sort;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sort, sort);
|
||||
if (sort.Length()) {
|
||||
mSortVariable = mRules.LookupSymbol(sort.get(), PR_TRUE);
|
||||
|
||||
if (tag != nsXULAtoms::outlinercol)
|
||||
continue;
|
||||
|
||||
nsAutoString sort;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sort, sort);
|
||||
if (! sort.Length())
|
||||
continue;
|
||||
|
||||
PRInt32 var = mRules.LookupSymbol(sort.get(), PR_TRUE);
|
||||
aVariables.Add(var);
|
||||
|
||||
nsAutoString active;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sortActive, active);
|
||||
if (active == NS_LITERAL_STRING("true")) {
|
||||
nsAutoString dir;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sortDirection, dir);
|
||||
|
||||
if (dir == NS_LITERAL_STRING("none"))
|
||||
mSortDirection = eDirection_Natural;
|
||||
else if (dir == NS_LITERAL_STRING("descending"))
|
||||
mSortDirection = eDirection_Descending;
|
||||
else
|
||||
mSortDirection = eDirection_Ascending;
|
||||
|
||||
mSortVariable = var;
|
||||
nsAutoString sortDirection;
|
||||
child->GetAttr(kNameSpaceID_None, nsXULAtoms::sortDirection, sortDirection);
|
||||
if (sortDirection == NS_LITERAL_STRING("ascending"))
|
||||
mSortDirection = eDirection_Ascending;
|
||||
else if (sortDirection == NS_LITERAL_STRING("descending"))
|
||||
mSortDirection = eDirection_Descending;
|
||||
else
|
||||
mSortDirection = eDirection_Natural;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,12 @@
|
|||
|
||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
orient="vertical">
|
||||
<outliner flex="1">
|
||||
<outliner id="tree"
|
||||
flex="1"
|
||||
datasources="rdf:ldap"
|
||||
ref="ldap://alpha.dante.org.uk:389/dc=dante,dc=org,dc=uk??one?(objectclass=*)"
|
||||
containment="http://home.netscape.com/NC-rdf#recursiveChild"
|
||||
flags="dont-build-content">
|
||||
<outlinercols>
|
||||
<outlinercol id="description"
|
||||
class="sortDirectionIndicator"
|
||||
|
@ -23,25 +28,17 @@
|
|||
sort="rdf:http://www.mozilla.org/LDAPATTR-rdf#cn"
|
||||
persist="width sortActive sortDirection" />
|
||||
</outlinercols>
|
||||
|
||||
<outlinerbody id="tree"
|
||||
datasources="rdf:ldap"
|
||||
ref="ldap://alpha.dante.org.uk:389/dc=dante,dc=org,dc=uk??one?(objectclass=*)"
|
||||
flex="1"
|
||||
containment="http://home.netscape.com/NC-rdf#recursiveChild"
|
||||
flags="dont-build-content">
|
||||
<template>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:http://home.netscape.com/NC-rdf#recursiveChild">
|
||||
<outlinerrow>
|
||||
<outlinercell ref="description"
|
||||
label="rdf:http://www.mozilla.org/LDAPATTR-rdf#description" />
|
||||
<outlinercell ref="cn"
|
||||
label="rdf:http://www.mozilla.org/LDAPATTR-rdf#cn" />
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</template>
|
||||
</outlinerbody>
|
||||
<template>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:http://home.netscape.com/NC-rdf#recursiveChild">
|
||||
<outlinerrow>
|
||||
<outlinercell ref="description"
|
||||
label="rdf:http://www.mozilla.org/LDAPATTR-rdf#description" />
|
||||
<outlinercell ref="cn"
|
||||
label="rdf:http://www.mozilla.org/LDAPATTR-rdf#cn" />
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</template>
|
||||
</outliner>
|
||||
</window>
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
<!-- category tree entries for editor -->
|
||||
<outlinerchildren id="panelChildren">
|
||||
<outlineritem container="true" open="true" id="editor" position="3">
|
||||
<outlineritem container="true" id="editor" position="3">
|
||||
<outlinerrow>
|
||||
<outlinercell url="chrome://editor/content/pref-composer.xul" label="&compose.label;" />
|
||||
</outlinerrow>
|
||||
|
|
|
@ -136,7 +136,7 @@
|
|||
<outlinercol id="cmp-number" flex="1" label="Number"
|
||||
persist="hidden width"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="project-body" flex="1"/>
|
||||
<outlinerchildren id="project-body"/>
|
||||
</outliner>
|
||||
|
||||
</vbox>
|
||||
|
@ -160,7 +160,7 @@
|
|||
<outlinercol id="ifc-number" flex="1" label="Number"
|
||||
persist="hidden width"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="project-body" flex="1"/>
|
||||
<outlinerchildren id="project-body"/>
|
||||
</outliner>
|
||||
|
||||
</vbox>
|
||||
|
|
|
@ -27,18 +27,18 @@
|
|||
font-family: monospace;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(cmp-name,component) {
|
||||
outlinerchildren:-moz-outliner-image(cmp-name,component) {
|
||||
list-style-image: url("chrome://cview/skin/images/component.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(cmp-name,interface) {
|
||||
outlinerchildren:-moz-outliner-image(cmp-name,interface) {
|
||||
list-style-image: url("chrome://cview/skin/images/interface.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(cmp-name,method) {
|
||||
outlinerchildren:-moz-outliner-image(cmp-name,method) {
|
||||
list-style-image: url("chrome://cview/skin/images/method.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(ifc-name) {
|
||||
outlinerchildren:-moz-outliner-image(ifc-name) {
|
||||
list-style-image: url("chrome://cview/skin/images/interface.gif");
|
||||
}
|
||||
|
|
|
@ -201,7 +201,7 @@ function goHome() {
|
|||
function selectItem() {
|
||||
var outliner = document.getElementById("help-toc-outliner");
|
||||
if (!gBuilder)
|
||||
gBuilder = outliner.outlinerBoxObject.outlinerBody.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
gBuilder = outliner.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
|
||||
var source = gBuilder.getResourceAtIndex(outliner.outlinerBoxObject.selection.currentIndex);
|
||||
if (!gRDF)
|
||||
|
@ -209,7 +209,7 @@ function selectItem() {
|
|||
|
||||
var property = gRDF.GetResource("http://home.netscape.com/NC-rdf#link");
|
||||
|
||||
var target = outliner.outlinerBoxObject.outlinerBody.database.GetTarget(source, property, true);
|
||||
var target = outliner.database.GetTarget(source, property, true);
|
||||
if (target)
|
||||
target = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
|
||||
loadURI(target);
|
||||
|
|
|
@ -124,38 +124,37 @@
|
|||
</tabs>
|
||||
<tabpanels flex="1">
|
||||
<hbox id="help-toc">
|
||||
<outliner id="help-toc-outliner" flex="1" >
|
||||
<outlinerbody datasources="chrome://help/locale/help-toc.rdf"
|
||||
flex="1" ref="urn:root" flags="dont-build-content"
|
||||
containment="http://home.netscape.com/NC-rdf#subheadings"
|
||||
onselect="selectItem();">
|
||||
<outliner id="help-toc-outliner" flex="1"
|
||||
datasources="chrome://help/locale/help-toc.rdf"
|
||||
ref="urn:root" flags="dont-build-content"
|
||||
containment="http://home.netscape.com/NC-rdf#subheadings"
|
||||
onselect="selectItem();">
|
||||
|
||||
<template>
|
||||
<rule>
|
||||
<conditions>
|
||||
<outlineritem uri="?uri"/>
|
||||
<triple subject="?uri"
|
||||
predicate="http://home.netscape.com/NC-rdf#subheadings"
|
||||
object="?subheadings" />
|
||||
<member container="?subheadings" child="?subheading"/>
|
||||
</conditions>
|
||||
<bindings>
|
||||
<binding subject="?subheading"
|
||||
predicate="http://home.netscape.com/NC-rdf#name"
|
||||
object="?name" />
|
||||
</bindings>
|
||||
<action>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="?subheading">
|
||||
<outlinerrow>
|
||||
<outlinercell ref="Column" label="?name"/>
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</action>
|
||||
</rule>
|
||||
</template>
|
||||
</outlinerbody>
|
||||
<template>
|
||||
<rule>
|
||||
<conditions>
|
||||
<outlineritem uri="?uri"/>
|
||||
<triple subject="?uri"
|
||||
predicate="http://home.netscape.com/NC-rdf#subheadings"
|
||||
object="?subheadings" />
|
||||
<member container="?subheadings" child="?subheading"/>
|
||||
</conditions>
|
||||
<bindings>
|
||||
<binding subject="?subheading"
|
||||
predicate="http://home.netscape.com/NC-rdf#name"
|
||||
object="?name" />
|
||||
</bindings>
|
||||
<action>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="?subheading">
|
||||
<outlinerrow>
|
||||
<outlinercell ref="Column" label="?name"/>
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</action>
|
||||
</rule>
|
||||
</template>
|
||||
<outlinercols>
|
||||
<outlinercol flex="1" id="Column" primary="true"/>
|
||||
</outlinercols>
|
||||
|
|
|
@ -1,90 +0,0 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 2001
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Joe Hewitt <hewitt@netscape.com> (original author)
|
||||
*
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either 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 NPL, 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 NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/***************************************************************
|
||||
* inBaseOutlinerView -------------------------------------------------
|
||||
* Simple outliner view object meant to be extended.
|
||||
*
|
||||
* Usage example: MyView.prototype = new inBaseOutlinerView();
|
||||
****************************************************************/
|
||||
|
||||
function inBaseOutlinerView() { }
|
||||
|
||||
inBaseOutlinerView.prototype =
|
||||
{
|
||||
mRowCount: 0,
|
||||
mOutliner: null,
|
||||
|
||||
get rowCount() { return this.mRowCount; },
|
||||
setOutliner: function(aOutliner) { this.mOutliner = aOutliner; },
|
||||
getCellText: function(aRow, aColId) { return ""; },
|
||||
getRowProperties: function(aIndex, aProperties) {},
|
||||
getCellProperties: function(aIndex, aColId, aProperties) {},
|
||||
getColumnProperties: function(aColId, aColElt, aProperties) {},
|
||||
getParentIndex: function(aRowIndex) { },
|
||||
hasNextSibling: function(aRowIndex, aAfterIndex) { },
|
||||
getLevel: function(aIndex) {},
|
||||
isContainer: function(aIndex) {},
|
||||
isContainerOpen: function(aIndex) {},
|
||||
isContainerEmpty: function(aIndex) {},
|
||||
toggleOpenState: function(aIndex) {},
|
||||
selectionChanged: function() {},
|
||||
cycleHeader: function(aColId, aElt) {},
|
||||
cycleCell: function(aRow, aColId) {},
|
||||
isEditable: function(aRow, aColId) {},
|
||||
setCellText: function(aRow, aColId, aValue) {},
|
||||
performAction: function(aAction) {},
|
||||
performActionOnRow: function(aAction, aRow) {},
|
||||
performActionOnCell: function(aAction, aRow, aColId) {},
|
||||
isSeparator: function(aIndex) {},
|
||||
|
||||
|
||||
// extra utility stuff
|
||||
|
||||
createAtom: function(aVal)
|
||||
{
|
||||
try {
|
||||
var i = Components.interfaces.nsIAtomService;
|
||||
var svc = Components.classes["@mozilla.org/atom-service;1"].getService(i);
|
||||
return svc.getAtom(aVal);
|
||||
} catch(ex) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
|
@ -62,6 +62,8 @@ inBaseOutlinerView.prototype =
|
|||
isContainer: function(aIndex) {},
|
||||
isContainerOpen: function(aIndex) {},
|
||||
isContainerEmpty: function(aIndex) {},
|
||||
isSeparator: function(aIndex) {},
|
||||
isSorted: function() {},
|
||||
toggleOpenState: function(aIndex) {},
|
||||
selectionChanged: function() {},
|
||||
cycleHeader: function(aColId, aElt) {},
|
||||
|
@ -71,7 +73,6 @@ inBaseOutlinerView.prototype =
|
|||
performAction: function(aAction) {},
|
||||
performActionOnRow: function(aAction, aRow) {},
|
||||
performActionOnCell: function(aAction, aRow, aColId) {},
|
||||
isSeparator: function(aIndex) {},
|
||||
|
||||
|
||||
// extra utility stuff
|
||||
|
|
|
@ -1,672 +0,0 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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) 2001
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Joe Hewitt <hewitt@netscape.com> (original author)
|
||||
*
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either 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 NPL, 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 NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/***************************************************************
|
||||
* inOutlinerBuilder -------------------------------------------------
|
||||
* Automatically builds up an outliner so that it will display a tabular
|
||||
* set of data with titled columns and optionally an icon for each row.
|
||||
* The outliner that is supplied must have an outlinerbody with an
|
||||
* empty template inside of it.
|
||||
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
* REQUIRED IMPORTS:
|
||||
* chrome://inspector/content/jsutil/xul/DNDUtils.js
|
||||
****************************************************************/
|
||||
|
||||
//////////// global variables /////////////////////
|
||||
|
||||
var inOutlinerBuilderPartCount = 0;
|
||||
|
||||
//////////// global constants ////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//// class inOutlinerBuilder
|
||||
|
||||
function inOutlinerBuilder(aOutliner, aNameSpace, aArcName)
|
||||
{
|
||||
this.outliner = aOutliner;
|
||||
this.nameSpace = aNameSpace;
|
||||
this.arcName = aArcName;
|
||||
|
||||
this.mColumns = [];
|
||||
this.mExtras = [];
|
||||
}
|
||||
|
||||
inOutlinerBuilder.prototype =
|
||||
{
|
||||
mOutliner: null,
|
||||
mOutlinerBody: null,
|
||||
// datasource stuff
|
||||
mNameSpace: null,
|
||||
mArcName: null,
|
||||
mIsRefContainer: false,
|
||||
mIsContainer: true,
|
||||
|
||||
// table structure stuff
|
||||
mIsIconic: false,
|
||||
mColumns: null,
|
||||
mSplitters: true,
|
||||
mRowFields: null,
|
||||
mRowAttrs: null,
|
||||
mAllowDND: false,
|
||||
mLastDragCol: null,
|
||||
mLastDragColWhere: null,
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//// properties
|
||||
|
||||
// the xul tree node we will construct
|
||||
get outliner() { return this.mOutliner },
|
||||
set outliner(aVal)
|
||||
{
|
||||
this.mOutliner = aVal;
|
||||
if (aVal)
|
||||
this.mOutlinerBody = aVal.getElementsByTagName("outlinerbody")[0];
|
||||
aVal._outlinerBuilder = this
|
||||
},
|
||||
|
||||
// the namespace to use for all fields
|
||||
get nameSpace() { return this.mNameSpace },
|
||||
set nameSpace(aVal) { this.mNameSpace = aVal },
|
||||
|
||||
// the name of the arc to the container
|
||||
get arcName() { return this.mArcName },
|
||||
set arcName(aVal) { this.mArcName = aVal },
|
||||
|
||||
// is the datasource ref an arc to a container, or a container itself
|
||||
get isRefContainer() { return this.mIsRefContainer },
|
||||
set isRefContainer(aVal) { this.mIsRefContainer = aVal },
|
||||
|
||||
// is each row a potential container?
|
||||
get isContainer() { return this.mIsContainer },
|
||||
set isContainer(aVal) { this.mIsContainer = aVal },
|
||||
|
||||
// place an icon before the first column of each row
|
||||
get isIconic() { return this.mIsIconic },
|
||||
set isIconic(aVal) { this.mIsIconic = aVal },
|
||||
|
||||
// put splitters between the columns?
|
||||
get useSplitters() { return this.mSplitters },
|
||||
set useSplitters(aVal) { this.mSplitters = aVal },
|
||||
|
||||
// extra attributes to set on the treeitem
|
||||
get rowAttributes() { return this.mRowAttrs },
|
||||
set rowAttributes(aVal) { this.mRowAttrs = aVal },
|
||||
|
||||
// extra data fields to set on the treeitem
|
||||
get rowFields() { return this.mRowFields },
|
||||
set rowFields(aVal) { this.mRowFields = aVal },
|
||||
|
||||
// extra data fields to set on the treeitem
|
||||
get allowDragColumns() { return this.mAllowDND },
|
||||
set allowDragColumns(aVal) { this.mAllowDND = aVal },
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//// event handlers
|
||||
|
||||
get onColumnAdd() { return this.mOnColumnAdd },
|
||||
set onColumnAdd(aFn) { this.mOnColumnAdd = aFn },
|
||||
|
||||
get onColumnRemove() { return this.mOnColumnRemove },
|
||||
set onColumnRemove(aFn) { this.mOnColumnRemove = aFn },
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//// initialization
|
||||
|
||||
initialize: function()
|
||||
{
|
||||
this.initColumns();
|
||||
this.initTemplate();
|
||||
},
|
||||
|
||||
initColumns: function()
|
||||
{
|
||||
this.initDND();
|
||||
},
|
||||
|
||||
initTemplate: function()
|
||||
{
|
||||
var template = this.mOutliner.getElementsByTagNameNS(kXULNSURI, "template")[0];
|
||||
this.mTemplate = template;
|
||||
this.clearChildren(template);
|
||||
|
||||
var rule = document.createElementNS(kXULNSURI, "rule");
|
||||
template.appendChild(rule);
|
||||
this.mRule = rule;
|
||||
|
||||
this.createDefaultConditions();
|
||||
|
||||
var bindings = document.createElementNS(kXULNSURI, "bindings");
|
||||
rule.appendChild(bindings);
|
||||
this.mBindings = bindings;
|
||||
|
||||
this.createDefaultAction();
|
||||
},
|
||||
|
||||
createDefaultConditions: function()
|
||||
{
|
||||
var conditions = document.createElementNS(kXULNSURI, "conditions");
|
||||
this.mRule.appendChild(conditions);
|
||||
|
||||
var content = document.createElementNS(kXULNSURI, "outlinerrow");
|
||||
content.setAttribute("uri", "?uri");
|
||||
conditions.appendChild(content);
|
||||
|
||||
var triple = this.createTriple("?uri", this.mNameSpace+this.mArcName,
|
||||
this.mIsRefContainer ? "?table" : "?row");
|
||||
conditions.appendChild(triple);
|
||||
|
||||
if (this.mIsRefContainer) {
|
||||
var member = this.createMember("?table", "?row");
|
||||
conditions.appendChild(member);
|
||||
}
|
||||
},
|
||||
|
||||
createDefaultAction: function()
|
||||
{
|
||||
var action = document.createElementNS(kXULNSURI, "action");
|
||||
this.mRule.appendChild(action);
|
||||
|
||||
var orow = this.createTemplatePart("outlinerrow");
|
||||
orow.setAttribute("uri", "?row");
|
||||
action.appendChild(orow);
|
||||
this.mOutlinerRow = orow;
|
||||
|
||||
// assign the item attributes
|
||||
if (this.mRowAttrs)
|
||||
for (key in this.mRowAttrs)
|
||||
orow.setAttribute(key, this.mRowAttrs[key]);
|
||||
},
|
||||
|
||||
createDefaultBindings: function()
|
||||
{
|
||||
// assign the item fields
|
||||
var binding;
|
||||
if (this.mRowFields) {
|
||||
var props = "";
|
||||
for (key in this.mRowFields) {
|
||||
binding = this.createBinding(this.mRowFields[key]);
|
||||
this.mBindings.appendChild(binding);
|
||||
props += key+"-?"+this.mRowFields[key]+" ";
|
||||
}
|
||||
this.mOutlinerRow.setAttribute("properties", props);
|
||||
}
|
||||
},
|
||||
|
||||
createTriple: function(aSubject, aPredicate, aObject)
|
||||
{
|
||||
var triple = document.createElementNS(kXULNSURI, "triple");
|
||||
triple.setAttribute("subject", aSubject);
|
||||
triple.setAttribute("predicate", aPredicate);
|
||||
triple.setAttribute("object", aObject);
|
||||
|
||||
return triple;
|
||||
},
|
||||
|
||||
createMember: function(aContainer, aChild)
|
||||
{
|
||||
var member = document.createElementNS(kXULNSURI, "member");
|
||||
member.setAttribute("container", aContainer);
|
||||
member.setAttribute("child", aChild);
|
||||
|
||||
return member;
|
||||
},
|
||||
|
||||
reset: function()
|
||||
{
|
||||
this.mColumns = [];
|
||||
this.mIsIconic = false;
|
||||
|
||||
this.resetOutliner();
|
||||
},
|
||||
|
||||
resetOutliner: function()
|
||||
{
|
||||
var kids = this.mOutliner.childNodes;
|
||||
for (var i = 0 ; i < kids.length; ++i)
|
||||
if (kids[i].localName != "outlinerbody")
|
||||
this.mOutliner.removeChild(kids[i]);
|
||||
|
||||
this.clearChildren(this.mBindings);
|
||||
this.clearChildren(this.mOutlinerRow);
|
||||
this.createDefaultBindings();
|
||||
},
|
||||
|
||||
clearChildren: function(aEl)
|
||||
{
|
||||
while (aEl.childNodes.length)
|
||||
aEl.removeChild(aEl.lastChild);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//// column drag and drop
|
||||
|
||||
initDND: function()
|
||||
{
|
||||
if (this.mAllowDND) {
|
||||
// addEventListener doesn't work for dnd events, apparently... so we use the attributes
|
||||
this.addDNDListener(this.mOutliner, "ondragenter");
|
||||
this.addDNDListener(this.mOutliner, "ondragover");
|
||||
this.addDNDListener(this.mOutliner, "ondragexit");
|
||||
this.addDNDListener(this.mOutliner, "ondraggesture");
|
||||
this.addDNDListener(this.mOutliner, "ondragdrop");
|
||||
}
|
||||
},
|
||||
|
||||
onDragEnter: function(aEvent)
|
||||
{
|
||||
},
|
||||
|
||||
onDragOver: function(aEvent)
|
||||
{
|
||||
if (!DNDUtils.checkCanDrop("OutlinerBuilder/column-add"))
|
||||
return;
|
||||
|
||||
var idx = this.getColumnIndexFromX(aEvent.clientX, 0.5);
|
||||
this.mColumnInsertIndex = idx;
|
||||
var col = this.getColumnAt(idx);
|
||||
|
||||
if (idx == -1)
|
||||
this.markColumnInsert(col, "after");
|
||||
else
|
||||
this.markColumnInsert(col, "before");
|
||||
},
|
||||
|
||||
onDragExit: function(aEvent)
|
||||
{
|
||||
},
|
||||
|
||||
onDragDrop: function(aEvent)
|
||||
{
|
||||
this.markColumnInsert(null);
|
||||
var dragService = XPCU.getService("@mozilla.org/widget/dragservice;1", "nsIDragService");
|
||||
var dragSession = dragService.getCurrentSession();
|
||||
|
||||
if (!dragSession.isDataFlavorSupported("OutlinerBuilder/column-add"))
|
||||
return false;
|
||||
|
||||
var trans = XPCU.createInstance("@mozilla.org/widget/transferable;1", "nsITransferable");
|
||||
trans.addDataFlavor("OutlinerBuilder/column-add");
|
||||
|
||||
dragSession.getData(trans, 0);
|
||||
var data = {};
|
||||
trans.getAnyTransferData ({}, data, {});
|
||||
|
||||
var string = XPCU.QI(data.value, "nsISupportsWString");
|
||||
|
||||
this.insertColumn(this.mColumnInsertIndex,
|
||||
{
|
||||
name: string.data,
|
||||
title: string.data,
|
||||
flex: 1
|
||||
});
|
||||
|
||||
|
||||
// if we rebuildContent during this thread, it will crash in the dnd service
|
||||
setTimeout(function(me) { me.build(); me.buildContent() }, 1, this);
|
||||
|
||||
// bug 56270 - dragSession.sourceDocument is null --
|
||||
// causes me to code this very temporary, very nasty hack
|
||||
// to tell columnsDialog.js about the drop
|
||||
if (this.mOutliner.onClientDrop) {
|
||||
this.mOutliner.onClientDrop();
|
||||
}
|
||||
},
|
||||
|
||||
markColumnInsert: function (aColumn, aWhere)
|
||||
{
|
||||
var col = this.mLastDragCol;
|
||||
var lastWhere = this.mLastDragColWhere;
|
||||
if (col)
|
||||
col.setAttribute("properties", "");
|
||||
|
||||
if (aWhere != "before" && aWhere != "after") {
|
||||
this.mLastDragCol = null;
|
||||
this.mLastDragColWhere = null;
|
||||
return;
|
||||
}
|
||||
|
||||
col = aColumn;
|
||||
if (col) {
|
||||
this.mLastDragCol = col;
|
||||
this.mLastDragColWhere = aWhere;
|
||||
col.setAttribute("properties", "dnd-insert-"+aWhere);
|
||||
}
|
||||
|
||||
var bx = this.mOutliner.boxObject.QueryInterface(Components.interfaces.nsIOutlinerBoxObject);
|
||||
bx.invalidate();
|
||||
},
|
||||
|
||||
getColumnIndexFromX: function(aX, aThresh)
|
||||
{
|
||||
var width = 0;
|
||||
var col, cw;
|
||||
for (var i = 0; i < this.columnCount; ++i) {
|
||||
col = this.getColumnAt(i);
|
||||
cw = col.boxObject.width;
|
||||
width += cw;
|
||||
if (width-(cw*aThresh) > aX)
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
},
|
||||
|
||||
getColumnIndexFromHeader: function(aHeader)
|
||||
{
|
||||
var headers = this.mOutliner.getElementsByTagName("outlinercol");
|
||||
for (var i = 0; i < headers.length; ++i) {
|
||||
if (headers[i] == aHeader)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
},
|
||||
|
||||
//// for drag-n-drop removal/arrangement of columns
|
||||
|
||||
onDragGesture: function(aEvent)
|
||||
{
|
||||
var target = aEvent.target;
|
||||
if (target.parentNode == this.mOutliner) {
|
||||
var column = target.getAttribute("label");
|
||||
|
||||
var idx = this.getColumnIndexFromHeader(target);
|
||||
if (idx == -1) return;
|
||||
this.mColumnDragging = idx;
|
||||
|
||||
DNDUtils.invokeSession(target, ["OutlinerBuilder/column-remove"], [column]);
|
||||
}
|
||||
},
|
||||
|
||||
addColumnDropTarget: function(aBox)
|
||||
{
|
||||
aBox._outlinerBuilderDropTarget = this;
|
||||
this.addDNDListener(aBox, "ondragover", "Target");
|
||||
this.addDNDListener(aBox, "ondragdrop", "Target");
|
||||
},
|
||||
|
||||
removeColumnDropTarget: function(aBox)
|
||||
{
|
||||
aBox._outlinerBuilderDropTarget = this;
|
||||
this.removeDNDListener(aBox, "ondragover", "Target");
|
||||
this.removeDNDListener(aBox, "ondragdrop", "Target");
|
||||
},
|
||||
|
||||
onDragOverTarget: function(aBox, aEvent)
|
||||
{
|
||||
DNDUtils.checkCanDrop("OutlinerBuilder/column-remove");
|
||||
},
|
||||
|
||||
onDragDropTarget: function(aBox, aEvent)
|
||||
{
|
||||
this.removeColumn(this.mColumnDragging);
|
||||
this.build();
|
||||
// if we rebuildContent during this thread, it will crash in the dnd service
|
||||
setTimeout(function(aTreeBuilder) { aTreeBuilder.buildContent() }, 1, this);
|
||||
},
|
||||
|
||||
// these are horrible hacks to compensate for the lack of true multiple
|
||||
// listener support for the DND events
|
||||
|
||||
addDNDListener: function(aBox, aType, aModifier)
|
||||
{
|
||||
var js = "inOutlinerBuilder_"+aType+(aModifier?"_"+aModifier:"")+"(this, event);";
|
||||
|
||||
var attr = aBox.getAttribute(aType);
|
||||
attr = attr ? attr : "";
|
||||
aBox.setAttribute(aType, attr + js);
|
||||
},
|
||||
|
||||
removeDNDListener: function(aBox, aType, aModifier)
|
||||
{
|
||||
var js = "inOutlinerBuilder_"+aType+(aModifier?"_"+aModifier:"")+"(this, event);";
|
||||
|
||||
var attr = aBox.getAttribute(aType);
|
||||
var idx = attr.indexOf(js);
|
||||
if (idx != -1)
|
||||
attr = attr.substr(0,idx) + attr.substr(idx+1);
|
||||
aBox.setAttribute(aType, attr);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//// column properties
|
||||
|
||||
addColumn: function(aData)
|
||||
{
|
||||
this.mColumns.push(aData);
|
||||
|
||||
if (this.mOnColumnAdd)
|
||||
this.mOnColumnAdd(this.mColumns.length-1)
|
||||
},
|
||||
|
||||
insertColumn: function(aIndex, aData)
|
||||
{
|
||||
var idx;
|
||||
if (aIndex == -1) {
|
||||
this.mColumns.push(aData);
|
||||
idx = this.mColumns.length-1;
|
||||
} else {
|
||||
this.mColumns.splice(aIndex, 0, aData);
|
||||
idx = aIndex;
|
||||
}
|
||||
|
||||
if (this.mOnColumnAdd)
|
||||
this.mOnColumnAdd(idx);
|
||||
},
|
||||
|
||||
removeColumn: function(aIndex)
|
||||
{
|
||||
this.mColumns.splice(aIndex, 1);
|
||||
|
||||
if (this.mOnColumnRemove)
|
||||
this.mOnColumnRemove(aIndex);
|
||||
},
|
||||
|
||||
getColumnAt: function(aIndex)
|
||||
{
|
||||
var kids = this.mOutliner.getElementsByTagName("outlinercol");
|
||||
return aIndex < 0 || aIndex >= kids.length ? kids[kids.length-1] : kids[aIndex];
|
||||
},
|
||||
|
||||
get columnCount() { return this.mColumns.length },
|
||||
|
||||
getColumnName: function(aIndex) { return this.mColumns[aIndex].name },
|
||||
setColumnName: function(aIndex, aValue) { this.mColumns[aIndex].name = aValue },
|
||||
|
||||
getColumnTitle: function(aIndex) { return this.mColumns[aIndex].title },
|
||||
setColumnTitle: function(aIndex, aValue) { this.mColumns[aIndex].title = aValue },
|
||||
|
||||
getColumnClassName: function(aIndex) { return this.mColumns[aIndex].className },
|
||||
setColumnClassName: function(aIndex, aValue) { this.mColumns[aIndex].className = aValue },
|
||||
|
||||
getColumnFlex: function(aIndex) { return this.mColumns[aIndex].flex },
|
||||
setColumnFlex: function(aIndex, aValue) { this.mColumns[aIndex].flex = aValue },
|
||||
|
||||
getExtras: function(aIndex) { return this.mColumns[aIndex].extras },
|
||||
setExtras: function(aIndex, aValue) { this.mColumns[aIndex].extras = aExtras },
|
||||
|
||||
getAttrs: function(aIndex) { return this.mColumns[aIndex].attrs },
|
||||
setAttrs: function(aIndex, aValue) { this.mColumns[aIndex].attrs = aExtras },
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//// template building
|
||||
|
||||
build: function(aBuildContent)
|
||||
{
|
||||
try {
|
||||
this.resetOutliner();
|
||||
this.buildColumns();
|
||||
this.buildTemplate();
|
||||
if (aBuildContent)
|
||||
this.buildContent();
|
||||
} catch (ex) {
|
||||
debug("### ERROR - inOutlinerBuilder::build failed.\n" + ex);
|
||||
}
|
||||
|
||||
//dumpDOM2(this.mOutliner);
|
||||
|
||||
},
|
||||
|
||||
buildContent: function()
|
||||
{
|
||||
this.mOutlinerBody.builder.rebuild();
|
||||
var bx = this.mOutliner.boxObject.QueryInterface(Components.interfaces.nsIOutlinerBoxObject);
|
||||
setTimeout(function(a) { a.invalidate() }, 1, bx);
|
||||
},
|
||||
|
||||
buildColumns: function()
|
||||
{
|
||||
var cols = document.createElementNS(kXULNSURI, "outlinercols");
|
||||
var col, val, split;
|
||||
for (var i = 0; i < this.mColumns.length; i++) {
|
||||
col = document.createElementNS(kXULNSURI, "outlinercol");
|
||||
col.setAttribute("id", "outlinercol-"+this.mColumns[i].name);
|
||||
col.setAttribute("persist", "width");
|
||||
col.setAttribute("label", this.mColumns[i].title);
|
||||
|
||||
// mark first node as primary, if necessary
|
||||
if (i == 0 && this.mIsContainer)
|
||||
col.setAttribute("primary", "true");
|
||||
|
||||
val = cols[i].className;
|
||||
if (val)
|
||||
col.setAttribute("class", val);
|
||||
val = cols[i].flex;
|
||||
if (val)
|
||||
col.setAttribute("flex", val);
|
||||
|
||||
cols.appendChild(col);
|
||||
|
||||
if (this.mSplitters && i < this.mColumns.length-1) {
|
||||
split = document.createElementNS(kXULNSURI, "splitter");
|
||||
split.setAttribute("class", "tree-splitter");
|
||||
cols.appendChild(split);
|
||||
}
|
||||
}
|
||||
this.mOutliner.appendChild(cols);
|
||||
},
|
||||
|
||||
buildTemplate: function()
|
||||
{
|
||||
var cols = this.mColumns;
|
||||
var bindings = this.mBindings;
|
||||
var row = this.mOutlinerRow;
|
||||
var cell, binding, val, extras, attrs, key, className;
|
||||
|
||||
if (this.mIsIconic) {
|
||||
binding = this.createBinding("_icon");
|
||||
bindings.appendChild(binding);
|
||||
}
|
||||
|
||||
for (var i = 0; i < cols.length; ++i) {
|
||||
val = cols[i].name;
|
||||
if (!val)
|
||||
throw "Column data is incomplete - missing name at index " + i + ".";
|
||||
|
||||
cell = this.createTemplatePart("outlinercell");
|
||||
className = "";
|
||||
|
||||
// build the default value data field
|
||||
binding = this.createBinding(val);
|
||||
bindings.appendChild(binding);
|
||||
|
||||
cell.setAttribute("label", "?" + val);
|
||||
cell.setAttribute("ref", "outlinercol-"+cols[i].name);
|
||||
cell.setAttribute("class", className);
|
||||
|
||||
var props = "";
|
||||
for (key in this.mRowFields)
|
||||
props += key+"-?"+this.mRowFields[key]+" ";
|
||||
cell.setAttribute("properties", props);
|
||||
|
||||
row.appendChild(cell);
|
||||
}
|
||||
},
|
||||
|
||||
createBinding: function(aName)
|
||||
{
|
||||
var binding = document.createElementNS(kXULNSURI, "binding");
|
||||
binding.setAttribute("subject", "?row");
|
||||
binding.setAttribute("predicate", this.mNameSpace+aName);
|
||||
binding.setAttribute("object", "?" + aName);
|
||||
return binding;
|
||||
},
|
||||
|
||||
createTemplatePart: function(aTagName)
|
||||
{
|
||||
var el = document.createElementNS(kXULNSURI, aTagName);
|
||||
el.setAttribute("id", "templatePart"+inOutlinerBuilderPartCount);
|
||||
inOutlinerBuilderPartCount++;
|
||||
return el;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
function inOutlinerBuilder_ondraggesture(aOutliner, aEvent)
|
||||
{
|
||||
return aOutliner._outlinerBuilder.onDragGesture(aEvent);
|
||||
}
|
||||
|
||||
function inOutlinerBuilder_ondragenter(aOutliner, aEvent)
|
||||
{
|
||||
return aOutliner._outlinerBuilder.onDragEnter(aEvent);
|
||||
}
|
||||
|
||||
function inOutlinerBuilder_ondragover(aOutliner, aEvent)
|
||||
{
|
||||
return aOutliner._outlinerBuilder.onDragOver(aEvent);
|
||||
}
|
||||
|
||||
function inOutlinerBuilder_ondragexit(aOutliner, aEvent)
|
||||
{
|
||||
return aOutliner._outlinerBuilder.onDragExit(aEvent);
|
||||
}
|
||||
|
||||
function inOutlinerBuilder_ondragdrop(aOutliner, aEvent)
|
||||
{
|
||||
return aOutliner._outlinerBuilder.onDragDrop(aEvent);
|
||||
}
|
||||
|
||||
function inOutlinerBuilder_ondragover_Target(aBox, aEvent)
|
||||
{
|
||||
return aBox._outlinerBuilderDropTarget.onDragOverTarget(aBox, aEvent);
|
||||
}
|
||||
|
||||
function inOutlinerBuilder_ondragdrop_Target(aBox, aEvent)
|
||||
{
|
||||
return aBox._outlinerBuilderDropTarget.onDragDropTarget(aBox, aEvent);
|
||||
}
|
|
@ -40,7 +40,7 @@
|
|||
* inOutlinerBuilder -------------------------------------------------
|
||||
* Automatically builds up an outliner so that it will display a tabular
|
||||
* set of data with titled columns and optionally an icon for each row.
|
||||
* The outliner that is supplied must have an outlinerbody with an
|
||||
* The outliner that is supplied must have an outlinerchildren with an
|
||||
* empty template inside of it.
|
||||
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
* REQUIRED IMPORTS:
|
||||
|
@ -95,7 +95,7 @@ inOutlinerBuilder.prototype =
|
|||
{
|
||||
this.mOutliner = aVal;
|
||||
if (aVal)
|
||||
this.mOutlinerBody = aVal.getElementsByTagName("outlinerbody")[0];
|
||||
this.mOutlinerBody = aVal.getElementsByTagName("outlinerchildren")[0];
|
||||
aVal._outlinerBuilder = this
|
||||
},
|
||||
|
||||
|
@ -258,7 +258,7 @@ inOutlinerBuilder.prototype =
|
|||
{
|
||||
var kids = this.mOutliner.childNodes;
|
||||
for (var i = 0 ; i < kids.length; ++i)
|
||||
if (kids[i].localName != "outlinerbody")
|
||||
if (kids[i].localName != "outlinerchildren")
|
||||
this.mOutliner.removeChild(kids[i]);
|
||||
|
||||
this.clearChildren(this.mBindings);
|
||||
|
|
|
@ -24,6 +24,6 @@
|
|||
<splitter class="tree-splitter"/>
|
||||
<outlinercol id="olcStyleValue" label="Value" flex="1"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="olbStyles" flex="1"/>
|
||||
<outlinerchildren id="olbStyles"/>
|
||||
</outliner>
|
||||
</page>
|
||||
|
|
|
@ -89,6 +89,6 @@
|
|||
<splitter class="tree-splitter"/>
|
||||
<outlinercol id="col@class" label="class" persist="width,hidden,ordinal" flex="1"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="trDOMOutlinerBody" flex="1" context="ppDOMContext"/>
|
||||
<outlinerchildren id="trDOMOutlinerBody" context="ppDOMContext"/>
|
||||
</outliner>
|
||||
</page>
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<splitter class="tree-splitter"/>
|
||||
<outlinercol id="colNodeValue" label="nodeValue" persist="width,hidden,ordinal" flex="1"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="olAttrBody" flex="1" context="ppAttrContext"/>
|
||||
<outlinerchildren id="olAttrBody" context="ppAttrContext"/>
|
||||
</outliner>
|
||||
|
||||
</vbox>
|
||||
|
|
|
@ -110,6 +110,11 @@ JSObjectView.prototype =
|
|||
{
|
||||
},
|
||||
|
||||
isSorted: function()
|
||||
{
|
||||
return false;
|
||||
},
|
||||
|
||||
getParentIndex: function(aRowIndex)
|
||||
{
|
||||
return 1;
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
<splitter class="tree-splitter"/>
|
||||
<outlinercol id="olcLine" label="Line"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="olbStyleRules" flex="1"/>
|
||||
<outlinerchildren id="olbStyleRules"/>
|
||||
</outliner>
|
||||
|
||||
<splitter id="splOutliners" collapse="after" persist="state">
|
||||
|
@ -70,7 +70,7 @@
|
|||
<splitter class="tree-splitter"/>
|
||||
<outlinercol id="olcPropValue" label="Value" flex="1"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="olbStyleProps" flex="1"/>
|
||||
<outlinerchildren id="olbStyleProps"/>
|
||||
</outliner>
|
||||
|
||||
</page>
|
||||
|
|
|
@ -22,6 +22,6 @@
|
|||
<splitter class="tree-splitter"/>
|
||||
<outlinercol id="olcRules" label="Rules" persist="width,hidden,ordinal" style="width: 4em"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="olbStyleSheets" flex="1"/>
|
||||
<outlinerchildren id="olbStyleSheets"/>
|
||||
</outliner>
|
||||
</page>
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<splitter class="tree-splitter"/>
|
||||
<outlinercol id="colNodeValue" label="nodeValue" flex="1"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="olbContent" flex="1"/>
|
||||
<outlinerchildren id="olbContent"/>
|
||||
</outliner>
|
||||
</multipanel>
|
||||
|
||||
|
@ -40,7 +40,7 @@
|
|||
<outlinercols>
|
||||
<outlinercol id="olcMethodName" flex="1"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="olbMethods" flex="1" context="ppDOMContext"/>
|
||||
<outlinerchildren id="olbMethods" context="ppDOMContext"/>
|
||||
</outliner>
|
||||
</multipanel>
|
||||
|
||||
|
@ -55,7 +55,7 @@
|
|||
<outlinercols>
|
||||
<outlinercol id="olcPropName" label="Property" flex="1"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="olbProps" flex="1" context="ppDOMContext"/>
|
||||
<outlinerchildren id="olbProps" context="ppDOMContext"/>
|
||||
</outliner>
|
||||
</vbox>
|
||||
</multipanel>
|
||||
|
@ -67,7 +67,7 @@
|
|||
<outlinercol id="olcHandlerEvent" flex="1"/>
|
||||
<outlinercol id="olcHandlerPhase"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="olbHandlers" flex="1" context="ppDOMContext"/>
|
||||
<outlinerchildren id="olbHandlers" context="ppDOMContext"/>
|
||||
</outliner>
|
||||
</multipanel>
|
||||
|
||||
|
@ -77,7 +77,7 @@
|
|||
<outlinercol id="olcResourceType" flex="1"/>
|
||||
<outlinercol id="olcResourceSrc" flex="2"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="olbResources" flex="1" context="ppDOMContext"/>
|
||||
<outlinerchildren id="olbResources" context="ppDOMContext"/>
|
||||
</outliner>
|
||||
</multipanel>
|
||||
|
||||
|
|
|
@ -40,37 +40,37 @@
|
|||
|
||||
/* :::::::: node type color coding :::::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(ELEMENT_NODE) {
|
||||
outlinerchildren:-moz-outliner-cell-text(ELEMENT_NODE) {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(ATTRIBUTE_NODE) {
|
||||
outlinerchildren:-moz-outliner-cell-text(ATTRIBUTE_NODE) {
|
||||
color: #556b2f;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(CDATA_SECTION_NODE),
|
||||
outlinerbody:-moz-outliner-cell-text(TEXT_NODE) {
|
||||
outlinerchildren:-moz-outliner-cell-text(CDATA_SECTION_NODE),
|
||||
outlinerchildren:-moz-outliner-cell-text(TEXT_NODE) {
|
||||
color: #0000AA;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(COMMENT_NODE) {
|
||||
outlinerchildren:-moz-outliner-cell-text(COMMENT_NODE) {
|
||||
color: #228b22;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(anonymous) {
|
||||
outlinerchildren:-moz-outliner-cell-text(anonymous) {
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(selected, focus) {
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, focus) {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* :::::::: drag and drop insertion indicators :::::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-column(dnd-insert-before) {
|
||||
outlinerchildren:-moz-outliner-column(dnd-insert-before) {
|
||||
border-left: 2px solid #000000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-column(dnd-insert-after) {
|
||||
outlinerchildren:-moz-outliner-column(dnd-insert-after) {
|
||||
border-right: 2px solid #000000;
|
||||
}
|
||||
|
|
|
@ -40,39 +40,39 @@
|
|||
|
||||
/* :::::::: node type color coding :::::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(ELEMENT_NODE) {
|
||||
outlinerchildren:-moz-outliner-cell-text(ELEMENT_NODE) {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(ATTRIBUTE_NODE) {
|
||||
outlinerchildren:-moz-outliner-cell-text(ATTRIBUTE_NODE) {
|
||||
color: #556b2f;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(CDATA_SECTION_NODE),
|
||||
outlinerbody:-moz-outliner-cell-text(TEXT_NODE) {
|
||||
outlinerchildren:-moz-outliner-cell-text(CDATA_SECTION_NODE),
|
||||
outlinerchildren:-moz-outliner-cell-text(TEXT_NODE) {
|
||||
color: #0000AA;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(COMMENT_NODE) {
|
||||
outlinerchildren:-moz-outliner-cell-text(COMMENT_NODE) {
|
||||
color: #228b22;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(anonymous) {
|
||||
outlinerchildren:-moz-outliner-cell-text(anonymous) {
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(selected, focus) {
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, focus) {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* :::::::: drag and drop insertion indicators :::::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-column(dnd-insert-before) {
|
||||
outlinerchildren:-moz-outliner-column(dnd-insert-before) {
|
||||
border-left: 2px solid #000000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-column(dnd-insert-after) {
|
||||
outlinerchildren:-moz-outliner-column(dnd-insert-after) {
|
||||
border-right: 2px solid #000000;
|
||||
}
|
||||
|
||||
|
|
|
@ -73,13 +73,13 @@
|
|||
</groupbox>
|
||||
<spacer flex="1" /></hbox>
|
||||
|
||||
<outliner id="out" flex="1">
|
||||
<outliner id="out" flex="1" onselect="sel_change()">
|
||||
<outlinercols>
|
||||
<outlinercol id="name" label="Name" flex="1"/>
|
||||
<outlinercol id="purp" label="Purpose" flex="2"/>
|
||||
<outlinercol id="comm" label="Comment" flex="1"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" onselect="sel_change()"/>
|
||||
<outlinerchildren/>
|
||||
</outliner>
|
||||
|
||||
</window>
|
||||
|
|
|
@ -26,23 +26,23 @@ text.head {
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(success)
|
||||
outlinerchildren:-moz-outliner-row(success)
|
||||
{
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(fail)
|
||||
outlinerchildren:-moz-outliner-row(fail)
|
||||
{
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(selected)
|
||||
outlinerchildren:-moz-outliner-row(selected)
|
||||
{
|
||||
border: 1px solid blue;
|
||||
background-color: white ;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(selected)
|
||||
outlinerchildren:-moz-outliner-cell-text(selected)
|
||||
{
|
||||
color: black;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<outlinercol flex="1" id="sample-gender" label="Gender"
|
||||
class="outlinercol-header outlinercol-inset-header"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="sample-body" flex="1"/>
|
||||
<outlinerchildren id="sample-body"/>
|
||||
</outliner>
|
||||
|
||||
<button onclick="document.location.href=document.location.href" label="reload"/>
|
||||
|
|
|
@ -901,7 +901,7 @@ function con_sourceclick (e)
|
|||
{
|
||||
var target = e.originalTarget;
|
||||
|
||||
if (target.localName == "outlinerbody")
|
||||
if (target.localName == "outlinerchildren")
|
||||
{
|
||||
var row = new Object();
|
||||
var colID = new Object();
|
||||
|
|
|
@ -79,7 +79,7 @@
|
|||
persist="hidden width"/>
|
||||
</outlinercols>
|
||||
|
||||
<outlinerbody id="project-body" flex="1"/>
|
||||
<outlinerchildren id="project-body"/>
|
||||
</outliner>
|
||||
|
||||
<splitter collapse="before"><grippy/></splitter>
|
||||
|
@ -100,7 +100,7 @@
|
|||
<outlinercol flex="1" id="script-line-extent"
|
||||
label="&ScriptCol2.header;" persist="hidden width" hidden="true"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="script-list-body" flex="1"/>
|
||||
<outlinerchildren id="script-list-body"/>
|
||||
</outliner>
|
||||
</vbox>
|
||||
|
||||
|
@ -120,7 +120,7 @@
|
|||
<splitter class="tree-splitter"/>
|
||||
<outlinercol id="source-line-text" flex="90" persist="hidden width"/>
|
||||
</outlinercols>
|
||||
<outlinerbody id="source-outliner-body" flex="1"/>
|
||||
<outlinerchildren id="source-outliner-body"/>
|
||||
</outliner>
|
||||
|
||||
</hbox>
|
||||
|
@ -151,7 +151,7 @@
|
|||
label="&StackCol3.header;" hidden="true"/>
|
||||
</outlinercols>
|
||||
|
||||
<outlinerbody id="stack-body" flex="1"/>
|
||||
<outlinerchildren id="stack-body"/>
|
||||
</outliner>
|
||||
|
||||
<splitter collapse="after" persist="left"><grippy/></splitter>
|
||||
|
|
|
@ -147,171 +147,171 @@
|
|||
list-style-image: url("chrome://venkman/skin/images/step-out-act.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell(breakpoint-col) {
|
||||
outlinerchildren:-moz-outliner-cell(breakpoint-col) {
|
||||
background: #CCCCCC;
|
||||
border-right: 1px grey solid;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell(source-line-number) {
|
||||
outlinerchildren:-moz-outliner-cell(source-line-number) {
|
||||
border-right: 2px #CCCCCC solid;
|
||||
text-align: right;
|
||||
background: #EEEEEE;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(current-line, selected) {
|
||||
outlinerchildren:-moz-outliner-row(current-line, selected) {
|
||||
background: green !important;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell(source-line-number, highlight-start),
|
||||
outlinerbody:-moz-outliner-cell(source-line-number, highlight-range),
|
||||
outlinerbody:-moz-outliner-cell(source-line-number, highlight-end) {
|
||||
outlinerchildren:-moz-outliner-cell(source-line-number, highlight-start),
|
||||
outlinerchildren:-moz-outliner-cell(source-line-number, highlight-range),
|
||||
outlinerchildren:-moz-outliner-cell(source-line-number, highlight-end) {
|
||||
border-right: 2px #919bd6 solid;
|
||||
background: #d5d5e0;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell(source-line-text, highlight-start),
|
||||
outlinerbody:-moz-outliner-cell(source-line-text, highlight-range),
|
||||
outlinerbody:-moz-outliner-cell(source-line-text, highlight-end) {
|
||||
outlinerchildren:-moz-outliner-cell(source-line-text, highlight-start),
|
||||
outlinerchildren:-moz-outliner-cell(source-line-text, highlight-range),
|
||||
outlinerchildren:-moz-outliner-cell(source-line-text, highlight-end) {
|
||||
border-left: 1px black solid;
|
||||
background: #EEEEEE;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell(source-line-text, selected),
|
||||
outlinerbody:-moz-outliner-cell(source-line-number, selected) {
|
||||
outlinerchildren:-moz-outliner-cell(source-line-text, selected),
|
||||
outlinerchildren:-moz-outliner-cell(source-line-number, selected) {
|
||||
border-left: inherit !important;
|
||||
background: inherit !important;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row {
|
||||
outlinerchildren:-moz-outliner-row {
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell(source-line-number, current-line),
|
||||
outlinerbody:-moz-outliner-cell(source-line-text, current-line) {
|
||||
outlinerchildren:-moz-outliner-cell(source-line-number, current-line),
|
||||
outlinerchildren:-moz-outliner-cell(source-line-text, current-line) {
|
||||
background: #ecef34;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(breakpoint-col, code) {
|
||||
outlinerchildren:-moz-outliner-image(breakpoint-col, code) {
|
||||
list-style-image: url("chrome://venkman/skin/images/code-line.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(breakpoint-col, code, prettyprint) {
|
||||
outlinerchildren:-moz-outliner-image(breakpoint-col, code, prettyprint) {
|
||||
list-style-image: url("chrome://venkman/skin/images/code-line-dis.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(breakpoint-col, breakpoint) {
|
||||
outlinerchildren:-moz-outliner-image(breakpoint-col, breakpoint) {
|
||||
list-style-image: url("chrome://venkman/skin/images/breakpoint-line.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(current-frame-flag){
|
||||
outlinerchildren:-moz-outliner-image(current-frame-flag){
|
||||
list-style-image: url("chrome://venkman/skin/images/current-frame.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell(script-name,fn-guessed) {
|
||||
outlinerchildren:-moz-outliner-cell(script-name,fn-guessed) {
|
||||
color: red;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(project-col-0,pj-blacklist){
|
||||
outlinerchildren:-moz-outliner-image(project-col-0,pj-blacklist){
|
||||
list-style-image: url("chrome://venkman/skin/images/proj-blacklist.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(project-col-0,pj-bl-item){
|
||||
outlinerchildren:-moz-outliner-image(project-col-0,pj-bl-item){
|
||||
list-style-image: url("chrome://venkman/skin/images/proj-bl-item.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(project-col-0,pj-breakpoints){
|
||||
outlinerchildren:-moz-outliner-image(project-col-0,pj-breakpoints){
|
||||
list-style-image: url("chrome://venkman/skin/images/proj-breakpoints.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(project-col-0,pj-breakpoint){
|
||||
outlinerchildren:-moz-outliner-image(project-col-0,pj-breakpoint){
|
||||
list-style-image: url("chrome://venkman/skin/images/proj-breakpoint.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name){
|
||||
outlinerchildren:-moz-outliner-image(script-name){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-function.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,has-bp){
|
||||
outlinerchildren:-moz-outliner-image(script-name,has-bp){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-function-bp.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,ft-unk){
|
||||
outlinerchildren:-moz-outliner-image(script-name,ft-unk){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-unknown.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,ft-js){
|
||||
outlinerchildren:-moz-outliner-image(script-name,ft-js){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-js.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,ft-html){
|
||||
outlinerchildren:-moz-outliner-image(script-name,ft-html){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-html.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,ft-xul){
|
||||
outlinerchildren:-moz-outliner-image(script-name,ft-xul){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-xul.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,ft-xml){
|
||||
outlinerchildren:-moz-outliner-image(script-name,ft-xml){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-xml.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,ft-unk,has-bp){
|
||||
outlinerchildren:-moz-outliner-image(script-name,ft-unk,has-bp){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-unknown-bp.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,ft-js,has-bp){
|
||||
outlinerchildren:-moz-outliner-image(script-name,ft-js,has-bp){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-js-bp.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,ft-html,has-bp){
|
||||
outlinerchildren:-moz-outliner-image(script-name,ft-html,has-bp){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-html-bp.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,ft-xul,has-bp){
|
||||
outlinerchildren:-moz-outliner-image(script-name,ft-xul,has-bp){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-xul-bp.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(script-name,ft-xml,has-bp){
|
||||
outlinerchildren:-moz-outliner-image(script-name,ft-xml,has-bp){
|
||||
list-style-image: url("chrome://venkman/skin/images/file-xml-bp.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(stack-col-0,w-stack){
|
||||
outlinerchildren:-moz-outliner-image(stack-col-0,w-stack){
|
||||
list-style-image: url("chrome://venkman/skin/images/watch-stack.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(stack-col-0,w-frame){
|
||||
outlinerchildren:-moz-outliner-image(stack-col-0,w-frame){
|
||||
list-style-image: url("chrome://venkman/skin/images/watch-frame.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(stack-col-0,w-void){
|
||||
outlinerchildren:-moz-outliner-image(stack-col-0,w-void){
|
||||
list-style-image: url("chrome://venkman/skin/images/watch-void.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(stack-col-0,w-null){
|
||||
outlinerchildren:-moz-outliner-image(stack-col-0,w-null){
|
||||
list-style-image: url("chrome://venkman/skin/images/watch-null.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(stack-col-0,w-bool){
|
||||
outlinerchildren:-moz-outliner-image(stack-col-0,w-bool){
|
||||
list-style-image: url("chrome://venkman/skin/images/watch-bool.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(stack-col-0,w-int){
|
||||
outlinerchildren:-moz-outliner-image(stack-col-0,w-int){
|
||||
list-style-image: url("chrome://venkman/skin/images/watch-int.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(stack-col-0,w-double){
|
||||
outlinerchildren:-moz-outliner-image(stack-col-0,w-double){
|
||||
list-style-image: url("chrome://venkman/skin/images/watch-double.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(stack-col-0,w-string){
|
||||
outlinerchildren:-moz-outliner-image(stack-col-0,w-string){
|
||||
list-style-image: url("chrome://venkman/skin/images/watch-string.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(stack-col-0,w-function){
|
||||
outlinerchildren:-moz-outliner-image(stack-col-0,w-function){
|
||||
list-style-image: url("chrome://venkman/skin/images/watch-function.png");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(stack-col-0,w-object){
|
||||
outlinerchildren:-moz-outliner-image(stack-col-0,w-object){
|
||||
list-style-image: url("chrome://venkman/skin/images/watch-object.png");
|
||||
}
|
||||
|
|
|
@ -53,7 +53,8 @@
|
|||
<label value="&div.cookiesonsystem.label;"/>
|
||||
<separator class="thin"/>
|
||||
<outliner id="cookiesOutliner" flex="1" style="height: 10em;" multiple="true"
|
||||
onkeypress="HandleCookieKeyPress(event)">
|
||||
onkeypress="HandleCookieKeyPress(event)"
|
||||
onselect="CookieSelected();">
|
||||
<outlinercols>
|
||||
<outlinercol id="domainCol" label="&treehead.cookiedomain.label;" flex="3"
|
||||
onclick="CookieColumnSort('rawHost');"/>
|
||||
|
@ -61,7 +62,7 @@
|
|||
<outlinercol id="nameCol" label="&treehead.cookiename.label;" flex="7"
|
||||
onclick="CookieColumnSort('name');"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" onselect="CookieSelected();"/>
|
||||
<outlinerchildren/>
|
||||
</outliner>
|
||||
<groupbox>
|
||||
<caption label="&treehead.infoselected.label;"/>
|
||||
|
@ -118,7 +119,8 @@
|
|||
<description id="permissionsText" value="&div.bannedservers.label;"/>
|
||||
<separator class="thin"/>
|
||||
<outliner id="permissionsOutliner" flex="1" style="height: 10em;" multiple="true"
|
||||
onkeypress="HandlePermissionKeyPress(event)">
|
||||
onkeypress="HandlePermissionKeyPress(event)"
|
||||
onselect="PermissionSelected();">
|
||||
<outlinercols>
|
||||
<outlinercol id="siteCol" label="&treehead.sitename.label;" flex="5"
|
||||
onclick="PermissionColumnSort('rawHost');"/>
|
||||
|
@ -126,7 +128,7 @@
|
|||
<outlinercol id="statusCol" label="&treehead.status.label;" flex="5"
|
||||
onclick="PermissionColumnSort('capability');"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" onselect="PermissionSelected();"/>
|
||||
<outlinerchildren/>
|
||||
</outliner>
|
||||
<hbox>
|
||||
<button id="removePermission" disabled="true"
|
||||
|
|
|
@ -56,8 +56,9 @@
|
|||
<vbox id="savedsignons" flex="1">
|
||||
<description>&spiel.signonsstored.label;</description>
|
||||
<separator class="thin"/>
|
||||
<outliner id="signonsOutliner" flex="1" style="height: 10em;" multiple="true"
|
||||
onkeypress="HandleSignonKeyPress(event)">
|
||||
<outliner id="signonsOutliner" flex="1" style="height: 10em;"
|
||||
onkeypress="HandleSignonKeyPress(event)"
|
||||
onselect="SignonSelected();">
|
||||
<outlinercols>
|
||||
<outlinercol id="siteCol" label="&treehead.site.label;" flex="5"
|
||||
onclick="SignonColumnSort('host');"/>
|
||||
|
@ -65,7 +66,7 @@
|
|||
<outlinercol id="userCol" label="&treehead.username.label;" flex="5"
|
||||
onclick="SignonColumnSort('user');"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" onselect="SignonSelected();"/>
|
||||
<outlinerchildren/>
|
||||
</outliner>
|
||||
<separator class="thin"/>
|
||||
<hbox>
|
||||
|
@ -80,13 +81,14 @@
|
|||
<vbox id="rejectedsites" flex="1">
|
||||
<description>&spiel.signonsnotstored.label;</description>
|
||||
<separator class="thin"/>
|
||||
<outliner id="rejectsOutliner" flex="1" style="height: 10em;" multiple="true"
|
||||
onkeypress="HandleRejectKeyPress(event)">
|
||||
<outliner id="rejectsOutliner" flex="1" style="height: 10em;"
|
||||
onkeypress="HandleRejectKeyPress(event)"
|
||||
onselect="RejectSelected();">
|
||||
<outlinercols>
|
||||
<outlinercol id="rejectCol" label="&treehead.site.label;" flex="5"
|
||||
onclick="RejectColumnSort('host');"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" onselect="RejectSelected();"/>
|
||||
<outlinerchildren/>
|
||||
</outliner>
|
||||
<separator class="thin"/>
|
||||
<hbox>
|
||||
|
@ -102,12 +104,13 @@
|
|||
<description>&spiel.nopreview.label;</description>
|
||||
<separator class="thin"/>
|
||||
<outliner id="nopreviewsOutliner" flex="1" style="height: 10em;" multiple="true"
|
||||
onkeypress="HandleNopreviewKeyPress(event)">
|
||||
onkeypress="HandleNopreviewKeyPress(event)"
|
||||
onselect="NopreviewSelected();">
|
||||
<outlinercols>
|
||||
<outlinercol id="nopreviewCol" label="&treehead.site.label;" flex="5"
|
||||
onclick="NopreviewColumnSort('host');"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" onselect="NopreviewSelected();"/>
|
||||
<outlinerchildren/>
|
||||
</outliner>
|
||||
<separator class="thin"/>
|
||||
<hbox>
|
||||
|
@ -123,12 +126,13 @@
|
|||
<description>&spiel.nocapture.label;</description>
|
||||
<separator class="thin"/>
|
||||
<outliner id="nocapturesOutliner" flex="1" style="height: 10em;" multiple="true"
|
||||
onkeypress="HandleNocaptureKeyPress(event)">
|
||||
onkeypress="HandleNocaptureKeyPress(event)"
|
||||
onselect="NocaptureSelected();">
|
||||
<outlinercols>
|
||||
<outlinercol id="nocaptureCol" label="&treehead.site.label;" flex="5"
|
||||
onclick="NocaptureColumnSort('host');"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" onselect="NocaptureSelected();"/>
|
||||
<outlinerchildren/>
|
||||
</outliner>
|
||||
<separator class="thin"/>
|
||||
<hbox>
|
||||
|
|
|
@ -5069,7 +5069,7 @@ nsCSSFrameConstructor::ConstructXULFrame(nsIPresShell* aPresShell,
|
|||
isReplaced = PR_TRUE;
|
||||
rv = NS_NewSpringFrame(aPresShell, &newFrame);
|
||||
}
|
||||
else if (aTag == nsXULAtoms::outlinerbody) {
|
||||
else if (aTag == nsXULAtoms::outlinerchildren) {
|
||||
isReplaced = PR_TRUE;
|
||||
rv = NS_NewOutlinerBodyFrame(aPresShell, &newFrame);
|
||||
}
|
||||
|
@ -5579,7 +5579,7 @@ nsCSSFrameConstructor::ConstructXULFrame(nsIPresShell* aPresShell,
|
|||
|
||||
// register tooltip support if needed
|
||||
nsAutoString value;
|
||||
if (aTag == nsXULAtoms::outlinerbody || // outliners always need titletips
|
||||
if (aTag == nsXULAtoms::outlinerchildren || // outliners always need titletips
|
||||
aContent->GetAttr(kNameSpaceID_None, nsXULAtoms::tooltiptext, value) !=
|
||||
NS_CONTENT_ATTR_NOT_THERE ||
|
||||
aContent->GetAttr(kNameSpaceID_None, nsXULAtoms::tooltip, value) !=
|
||||
|
@ -7756,12 +7756,10 @@ nsCSSFrameConstructor::ContentAppended(nsIPresContext* aPresContext,
|
|||
bindingManager->ResolveTag(aContainer, &namespaceID, getter_AddRefs(tag));
|
||||
|
||||
// Just ignore outliner tags, anyway we don't create any frames for them.
|
||||
if (tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerseparator ||
|
||||
tag == nsXULAtoms::outlinerchildren ||
|
||||
if (tag == nsXULAtoms::outlinerchildren ||
|
||||
tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerrow ||
|
||||
tag == nsXULAtoms::outlinercell ||
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::option))
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::select))
|
||||
return NS_OK;
|
||||
|
||||
PRBool treeChildren = tag.get() == nsXULAtoms::treechildren;
|
||||
|
@ -8368,12 +8366,10 @@ nsCSSFrameConstructor::ContentInserted(nsIPresContext* aPresContext,
|
|||
bindingManager->ResolveTag(aContainer, &namespaceID, getter_AddRefs(tag));
|
||||
|
||||
// Just ignore outliner tags, anyway we don't create any frames for them.
|
||||
if (tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerseparator ||
|
||||
tag == nsXULAtoms::outlinerchildren ||
|
||||
if (tag == nsXULAtoms::outlinerchildren ||
|
||||
tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerrow ||
|
||||
tag == nsXULAtoms::outlinercell ||
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::option))
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::select))
|
||||
return NS_OK;
|
||||
|
||||
PRBool treeChildren = tag && tag.get() == nsXULAtoms::treechildren;
|
||||
|
@ -9287,12 +9283,10 @@ nsCSSFrameConstructor::ContentRemoved(nsIPresContext* aPresContext,
|
|||
bindingManager->ResolveTag(aContainer, &namespaceID, getter_AddRefs(tag));
|
||||
|
||||
// Just ignore outliner tags, anyway we don't create any frames for them.
|
||||
if (tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerseparator ||
|
||||
tag == nsXULAtoms::outlinerchildren ||
|
||||
if (tag == nsXULAtoms::outlinerchildren ||
|
||||
tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerrow ||
|
||||
tag == nsXULAtoms::outlinercell ||
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::option))
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::select))
|
||||
return NS_OK;
|
||||
|
||||
PRBool treeChildren = tag && tag.get() == nsXULAtoms::treechildren;
|
||||
|
|
|
@ -124,11 +124,9 @@
|
|||
</xul:outlinercols>
|
||||
<xul:outlinerrows class="select-outlinerrows outliner-rows" flex="1">
|
||||
<xul:hbox flex="1" class="outliner-bodybox">
|
||||
<xul:outlinerbody flex="1" class="select-outlinerbody">
|
||||
<xul:outlinerchildren>
|
||||
<children/>
|
||||
</xul:outlinerchildren>
|
||||
</xul:outlinerbody>
|
||||
<xul:outlinerchildren class="select-outlinerbody">
|
||||
<children/>
|
||||
</xul:outlinerchildren>
|
||||
</xul:hbox>
|
||||
<xul:scrollbar orient="vertical" class="outliner-scrollbar"/>
|
||||
</xul:outlinerrows>
|
||||
|
|
|
@ -124,11 +124,9 @@
|
|||
</xul:outlinercols>
|
||||
<xul:outlinerrows class="select-outlinerrows outliner-rows" flex="1">
|
||||
<xul:hbox flex="1" class="outliner-bodybox">
|
||||
<xul:outlinerbody flex="1" class="select-outlinerbody">
|
||||
<xul:outlinerchildren>
|
||||
<children/>
|
||||
</xul:outlinerchildren>
|
||||
</xul:outlinerbody>
|
||||
<xul:outlinerchildren class="select-outlinerbody">
|
||||
<children/>
|
||||
</xul:outlinerchildren>
|
||||
</xul:hbox>
|
||||
<xul:scrollbar orient="vertical" class="outliner-scrollbar"/>
|
||||
</xul:outlinerrows>
|
||||
|
|
|
@ -5069,7 +5069,7 @@ nsCSSFrameConstructor::ConstructXULFrame(nsIPresShell* aPresShell,
|
|||
isReplaced = PR_TRUE;
|
||||
rv = NS_NewSpringFrame(aPresShell, &newFrame);
|
||||
}
|
||||
else if (aTag == nsXULAtoms::outlinerbody) {
|
||||
else if (aTag == nsXULAtoms::outlinerchildren) {
|
||||
isReplaced = PR_TRUE;
|
||||
rv = NS_NewOutlinerBodyFrame(aPresShell, &newFrame);
|
||||
}
|
||||
|
@ -5579,7 +5579,7 @@ nsCSSFrameConstructor::ConstructXULFrame(nsIPresShell* aPresShell,
|
|||
|
||||
// register tooltip support if needed
|
||||
nsAutoString value;
|
||||
if (aTag == nsXULAtoms::outlinerbody || // outliners always need titletips
|
||||
if (aTag == nsXULAtoms::outlinerchildren || // outliners always need titletips
|
||||
aContent->GetAttr(kNameSpaceID_None, nsXULAtoms::tooltiptext, value) !=
|
||||
NS_CONTENT_ATTR_NOT_THERE ||
|
||||
aContent->GetAttr(kNameSpaceID_None, nsXULAtoms::tooltip, value) !=
|
||||
|
@ -7756,12 +7756,10 @@ nsCSSFrameConstructor::ContentAppended(nsIPresContext* aPresContext,
|
|||
bindingManager->ResolveTag(aContainer, &namespaceID, getter_AddRefs(tag));
|
||||
|
||||
// Just ignore outliner tags, anyway we don't create any frames for them.
|
||||
if (tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerseparator ||
|
||||
tag == nsXULAtoms::outlinerchildren ||
|
||||
if (tag == nsXULAtoms::outlinerchildren ||
|
||||
tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerrow ||
|
||||
tag == nsXULAtoms::outlinercell ||
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::option))
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::select))
|
||||
return NS_OK;
|
||||
|
||||
PRBool treeChildren = tag.get() == nsXULAtoms::treechildren;
|
||||
|
@ -8368,12 +8366,10 @@ nsCSSFrameConstructor::ContentInserted(nsIPresContext* aPresContext,
|
|||
bindingManager->ResolveTag(aContainer, &namespaceID, getter_AddRefs(tag));
|
||||
|
||||
// Just ignore outliner tags, anyway we don't create any frames for them.
|
||||
if (tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerseparator ||
|
||||
tag == nsXULAtoms::outlinerchildren ||
|
||||
if (tag == nsXULAtoms::outlinerchildren ||
|
||||
tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerrow ||
|
||||
tag == nsXULAtoms::outlinercell ||
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::option))
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::select))
|
||||
return NS_OK;
|
||||
|
||||
PRBool treeChildren = tag && tag.get() == nsXULAtoms::treechildren;
|
||||
|
@ -9287,12 +9283,10 @@ nsCSSFrameConstructor::ContentRemoved(nsIPresContext* aPresContext,
|
|||
bindingManager->ResolveTag(aContainer, &namespaceID, getter_AddRefs(tag));
|
||||
|
||||
// Just ignore outliner tags, anyway we don't create any frames for them.
|
||||
if (tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerseparator ||
|
||||
tag == nsXULAtoms::outlinerchildren ||
|
||||
if (tag == nsXULAtoms::outlinerchildren ||
|
||||
tag == nsXULAtoms::outlineritem ||
|
||||
tag == nsXULAtoms::outlinerrow ||
|
||||
tag == nsXULAtoms::outlinercell ||
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::option))
|
||||
(UseXBLForms() && tag == nsHTMLAtoms::select))
|
||||
return NS_OK;
|
||||
|
||||
PRBool treeChildren = tag && tag.get() == nsXULAtoms::treechildren;
|
||||
|
|
|
@ -45,6 +45,8 @@ interface nsIDOMElement;
|
|||
[scriptable, uuid(CAABF76F-9D35-401f-BEAC-3955817C645C)]
|
||||
interface nsIBoxObject : nsISupports
|
||||
{
|
||||
readonly attribute nsIDOMElement element;
|
||||
|
||||
attribute nsIBoxLayoutManager layoutManager;
|
||||
attribute nsIBoxPaintManager paintManager;
|
||||
|
||||
|
|
|
@ -88,6 +88,16 @@ nsBoxObject::~nsBoxObject(void)
|
|||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsBoxObject::GetElement(nsIDOMElement** aResult)
|
||||
{
|
||||
if (mContent)
|
||||
mContent->QueryInterface(NS_GET_IID(nsIDOMElement), (void**)aResult);
|
||||
else
|
||||
*aResult = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsBoxObject::GetLayoutManager(nsIBoxLayoutManager** aResult)
|
||||
{
|
||||
|
|
|
@ -252,11 +252,11 @@ nsXULTooltipListener::Init(nsIContent* aSourceNode, nsIRootBox* aRootBox)
|
|||
mSourceNode = aSourceNode;
|
||||
AddTooltipSupport(aSourceNode);
|
||||
|
||||
// if the target is an outlinerbody, we may have some special
|
||||
// if the target is an outlinerchildren, we may have some special
|
||||
// case handling to do
|
||||
nsCOMPtr<nsIAtom> tag;
|
||||
mSourceNode->GetTag(*getter_AddRefs(tag));
|
||||
mIsTargetOutliner = tag == nsXULAtoms::outlinerbody;
|
||||
mIsTargetOutliner = tag == nsXULAtoms::outlinerchildren;
|
||||
|
||||
static PRBool prefChangeRegistered = PR_FALSE;
|
||||
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
outlinerbody {
|
||||
background-color: white;
|
||||
color: black;
|
||||
-moz-user-select: none;
|
||||
}
|
||||
|
||||
:-moz-outliner-column
|
||||
{
|
||||
}
|
||||
|
||||
:-moz-outliner-row(current)
|
||||
{
|
||||
border: 1px black dotted;
|
||||
}
|
||||
|
||||
:-moz-outliner-row(selected)
|
||||
{
|
||||
background-color: blue;
|
||||
}
|
||||
|
||||
:-moz-outliner-cell(selected)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
:-moz-outliner-cell-text
|
||||
{
|
||||
}
|
||||
|
||||
:-moz-outliner-cell-text(selected)
|
||||
{
|
||||
color: white;
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<?xml-stylesheet href="chrome://communicator/skin/"?>
|
||||
<?xml-stylesheet href="outliner.css"?>
|
||||
|
||||
<window id="insaneInsertion"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
orient="vertical">
|
||||
<script>
|
||||
var view = ({
|
||||
rowCount : 5000000,
|
||||
getRowProperties : function(index, prop) {},
|
||||
getCellProperties : function(index, col, prop) {},
|
||||
getColumnProperties : function(col, elt, prop) {},
|
||||
isSeparator : function(index) {
|
||||
if (index % 10 == 0)
|
||||
return true;
|
||||
return false;
|
||||
},
|
||||
outlinerbox : null,
|
||||
setOutliner : function(out) { this.outlinerbox = out; },
|
||||
getCellText : function(i, col) { return "Text at row #" + i + " in col " + col; }
|
||||
});
|
||||
|
||||
function setView(outliner, v) {
|
||||
dump('Outliner is ' + outliner + '\n');
|
||||
outliner.outlinerBoxObject.view = v;
|
||||
}
|
||||
</script>
|
||||
|
||||
<html>
|
||||
This outliner contains 5,000,000 rows. Can you believe it?
|
||||
</html>
|
||||
<spacer style="height: 16px"/>
|
||||
|
||||
<outliner id="out" flex="1">
|
||||
<outlinercols>
|
||||
<outlinercol id="Col1" label="Col1" flex="1"/>
|
||||
<outlinercol id="Col2" label="Col2" flex="1"/>
|
||||
<outlinercol id="Col3" label="Col3" flex="1"/>
|
||||
<outlinercol id="Col4" label="Col4" flex="1"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" onselect="dump('selection changed!\n')"/>
|
||||
</outliner>
|
||||
|
||||
<hbox>
|
||||
<button label="Attach View" oncommand="setView(document.getElementById('out'), view)"/>
|
||||
<button label="Clear View" oncommand="setView(document.getElementById('out'), null)"/>
|
||||
|
||||
</hbox>
|
||||
</window>
|
|
@ -126,6 +126,7 @@ interface nsIOutlinerBoxObject : nsISupports
|
|||
void invalidateColumn(in wstring colID);
|
||||
void invalidateRow(in long index);
|
||||
void invalidateCell(in long row, in wstring colID);
|
||||
void invalidatePrimaryCell(in long row);
|
||||
void invalidateRange(in long startIndex, in long endIndex);
|
||||
void invalidateScrollbar();
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ interface nsIOutlinerContentView : nsISupports
|
|||
/**
|
||||
* The element in the DOM which this view uses as root content.
|
||||
*/
|
||||
attribute nsIDOMElement root;
|
||||
readonly attribute nsIDOMElement root;
|
||||
|
||||
/**
|
||||
* Retrieve the content item associated with the specified index.
|
||||
|
|
|
@ -1,203 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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):
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either 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 NPL, 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 NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsIOutlinerBoxObject.idl"
|
||||
#include "nsISupportsArray.idl"
|
||||
#include "domstubs.idl"
|
||||
|
||||
interface nsIOutlinerSelection;
|
||||
|
||||
[scriptable, uuid(7660811D-3CB8-441f-8E58-466DE4F3FA9A)]
|
||||
interface nsIOutlinerView : nsISupports
|
||||
{
|
||||
/**
|
||||
* The total number of rows in the outliner (including the offscreen rows).
|
||||
*/
|
||||
readonly attribute long rowCount;
|
||||
|
||||
/**
|
||||
* The selection for this view.
|
||||
*/
|
||||
attribute nsIOutlinerSelection selection;
|
||||
|
||||
/**
|
||||
* An atomized list of properties for a given row. Each property, x, that
|
||||
* the view gives back will cause the pseudoclass :moz-outliner-row-x
|
||||
* to be matched on the pseudoelement ::moz-outliner-row.
|
||||
*/
|
||||
void getRowProperties(in long index, in nsISupportsArray properties);
|
||||
|
||||
/**
|
||||
* An atomized list of properties for a given cell. Each property, x, that
|
||||
* the view gives back will cause the pseudoclass :moz-outliner-cell-x
|
||||
* to be matched on the ::moz-outliner-cell pseudoelement.
|
||||
*/
|
||||
void getCellProperties(in long row, in wstring colID, in nsISupportsArray properties);
|
||||
|
||||
/**
|
||||
* Called to get properties to paint a column background. For shading the sort
|
||||
* column, etc.
|
||||
*/
|
||||
void getColumnProperties(in wstring colID, in nsIDOMElement colElt, in nsISupportsArray properties);
|
||||
|
||||
/**
|
||||
* Methods that can be used to test whether or not a twisty should be drawn,
|
||||
* and if so, whether an open or closed twisty should be used.
|
||||
*/
|
||||
boolean isContainer(in long index);
|
||||
boolean isContainerOpen(in long index);
|
||||
boolean isContainerEmpty(in long index);
|
||||
|
||||
/**
|
||||
* isSeparator is used to determine if the row at index is a separator.
|
||||
* A value of true will result in the outliner drawing a horizontal line.
|
||||
* The outliner uses the border properties on the ::moz-outliner-separator
|
||||
* pseudoclass to draw the separator.
|
||||
*/
|
||||
boolean isSeparator(in long index);
|
||||
|
||||
/**
|
||||
* Specifies if there is currently a sort on any column. Used mostly by dragdrop
|
||||
* to affect drop feedback.
|
||||
*/
|
||||
boolean isSorted ( ) ;
|
||||
|
||||
/**
|
||||
* Methods used by the drag feedback code to determine if a drag is allowable at
|
||||
* the current location. To get the behavior where drops are only allowed on
|
||||
* items, such as the mailNews folder pane, always return false from |canDropBeforeAfter()|.
|
||||
*/
|
||||
boolean canDropOn ( in long index );
|
||||
boolean canDropBeforeAfter ( in long index, in boolean before );
|
||||
|
||||
/**
|
||||
* Called when the user drops something on this view. The |orientation| param
|
||||
* specifies before/on/after the given |row|.
|
||||
*/
|
||||
const long inDropBefore = 1;
|
||||
const long inDropOn = 2;
|
||||
const long inDropAfter = 3;
|
||||
void drop ( in long row, in long orientation ) ;
|
||||
|
||||
/**
|
||||
* Methods used by the outliner to draw vertical lines in the tree.
|
||||
* GetParentIndex is used to obtain the index of a parent row.
|
||||
*/
|
||||
long getParentIndex(in long rowIndex);
|
||||
|
||||
/**
|
||||
* HasNextSibling is used to determine if the row at rowIndex has a nextSibling
|
||||
* that occurs *after* the index specified by afterIndex. Code that is forced
|
||||
* to march down the view looking at levels can optimize the march by starting
|
||||
* at afterIndex+1.
|
||||
*/
|
||||
boolean hasNextSibling(in long rowIndex, in long afterIndex);
|
||||
|
||||
/**
|
||||
* The level is an integer value that represents
|
||||
* the level of indentation. It is multiplied by the width specified in the
|
||||
* :moz-outliner-indentation pseudoelement to compute the exact indendation.
|
||||
*/
|
||||
long getLevel(in long index);
|
||||
|
||||
/**
|
||||
* The text for a given cell. If a column consists only of an image, then
|
||||
* the empty string is returned.
|
||||
*/
|
||||
AString getCellText(in long row, in wstring colID);
|
||||
|
||||
/**
|
||||
* Called during initialization to link the view to the front end box object.
|
||||
*/
|
||||
void setOutliner(in nsIOutlinerBoxObject outliner);
|
||||
|
||||
/**
|
||||
* Called on the view when an item is opened or closed.
|
||||
*/
|
||||
void toggleOpenState(in long index);
|
||||
|
||||
/**
|
||||
* Called on the view when a header is clicked.
|
||||
*/
|
||||
void cycleHeader(in wstring colID, in nsIDOMElement elt);
|
||||
|
||||
/**
|
||||
* Should be called from a XUL onselect handler whenever the selection changes.
|
||||
* XXX Should this be done automatically?
|
||||
*/
|
||||
void selectionChanged();
|
||||
|
||||
/**
|
||||
* Called on the view when a cell in a non-selectable cycling column (e.g., unread/flag/etc.) is clicked.
|
||||
*/
|
||||
void cycleCell(in long row, in wstring colID);
|
||||
|
||||
/**
|
||||
* isEditable is called to ask the view if the cell contents are editable.
|
||||
* A value of true will result in the outliner popping up a text field when
|
||||
* the user tries to inline edit the cell.
|
||||
*/
|
||||
boolean isEditable(in long row, in wstring colID);
|
||||
|
||||
/**
|
||||
* setCellText is called when the contents of the cell have been edited by the user.
|
||||
*/
|
||||
void setCellText(in long row, in wstring colID, in wstring value);
|
||||
|
||||
/**
|
||||
* A command API that can be used to invoke commands on the selection. The outliner
|
||||
* will automatically invoke this method when certain keys are pressed. For example,
|
||||
* when the DEL key is pressed, performAction will be called with the "delete" string.
|
||||
*/
|
||||
void performAction(in wstring action);
|
||||
|
||||
/**
|
||||
* A command API that can be used to invoke commands on a specific row.
|
||||
*/
|
||||
void performActionOnRow(in wstring action, in long row);
|
||||
|
||||
/**
|
||||
* A command API that can be used to invoke commands on a specific cell.
|
||||
*/
|
||||
void performActionOnCell(in wstring action, in long row, in wstring colID);
|
||||
};
|
||||
|
||||
%{C++
|
||||
// Initializer,
|
||||
%}
|
||||
|
|
@ -189,6 +189,9 @@ nsOutlinerColumn::nsOutlinerColumn(nsIContent* aColElement, nsIFrame* aFrame)
|
|||
nsCOMPtr<nsIStyleContext> styleContext;
|
||||
aFrame->GetStyleContext(getter_AddRefs(styleContext));
|
||||
|
||||
const nsStyleVisibility* vis =
|
||||
(const nsStyleVisibility*)styleContext->GetStyleData(eStyleStruct_Visibility);
|
||||
|
||||
// Fetch the crop style.
|
||||
mCropStyle = 0;
|
||||
nsAutoString crop;
|
||||
|
@ -199,8 +202,6 @@ nsOutlinerColumn::nsOutlinerColumn(nsIContent* aColElement, nsIFrame* aFrame)
|
|||
mCropStyle = 2;
|
||||
|
||||
if (mCropStyle == 0 || mCropStyle == 2) { // Left or Right
|
||||
const nsStyleVisibility* vis =
|
||||
(const nsStyleVisibility*)styleContext->GetStyleData(eStyleStruct_Visibility);
|
||||
if (vis->mDirection == NS_STYLE_DIRECTION_RTL)
|
||||
mCropStyle = 2 - mCropStyle; // Right becomes left, left becomes right.
|
||||
}
|
||||
|
@ -210,6 +211,10 @@ nsOutlinerColumn::nsOutlinerColumn(nsIContent* aColElement, nsIFrame* aFrame)
|
|||
(const nsStyleText*)styleContext->GetStyleData(eStyleStruct_Text);
|
||||
|
||||
mTextAlignment = textStyle->mTextAlign;
|
||||
if (mTextAlignment == 0 || mTextAlignment == 2) { // Left or Right
|
||||
if (vis->mDirection == NS_STYLE_DIRECTION_RTL)
|
||||
mTextAlignment = 2 - mTextAlignment; // Right becomes left, left becomes right.
|
||||
}
|
||||
|
||||
// Figure out if we're the primary column (that has to have indentation
|
||||
// and twisties drawn.
|
||||
|
@ -297,9 +302,8 @@ NS_INTERFACE_MAP_END_INHERITING(nsLeafFrame)
|
|||
nsOutlinerBodyFrame::nsOutlinerBodyFrame(nsIPresShell* aPresShell)
|
||||
:nsLeafBoxFrame(aPresShell), mPresContext(nsnull), mOutlinerBoxObject(nsnull), mImageCache(nsnull),
|
||||
mColumns(nsnull), mScrollbar(nsnull), mTopRowIndex(0), mRowHeight(0), mIndentation(0), mStringWidth(-1),
|
||||
mDropRow(kIllegalRow), mDropOrient(kNoOrientation), mFocused(PR_FALSE), mColumnsDirty(PR_TRUE), mDropAllowed(PR_FALSE),
|
||||
mAlreadyUndrewDueToScroll(PR_FALSE), mHasFixedRowCount(PR_FALSE), mVerticalOverflow(PR_FALSE),
|
||||
mOpenTimer(nsnull), mOpenTimerRow(-1)
|
||||
mFocused(PR_FALSE), mColumnsDirty(PR_TRUE), mDropAllowed(PR_FALSE), mHasFixedRowCount(PR_FALSE),
|
||||
mVerticalOverflow(PR_FALSE), mDropRow(-1), mDropOrient(-1), mOpenTimer(nsnull), mOpenTimerRow(-1)
|
||||
{
|
||||
NS_NewISupportsArray(getter_AddRefs(mScratchArray));
|
||||
}
|
||||
|
@ -540,25 +544,25 @@ NS_IMETHODIMP nsOutlinerBodyFrame::Reflow(nsIPresContext* aPresContext,
|
|||
// A content model view is always created and hooked up,
|
||||
// unless there is a XULOutlinerBuilder view.
|
||||
|
||||
nsCOMPtr<nsIDOMXULElement> xulele = do_QueryInterface(mContent);
|
||||
nsCOMPtr<nsIContent> parent;
|
||||
mContent->GetParent(*getter_AddRefs(parent));
|
||||
nsCOMPtr<nsIDOMXULElement> xulele = do_QueryInterface(parent);
|
||||
if (xulele) {
|
||||
nsCOMPtr<nsIOutlinerView> view;
|
||||
|
||||
// First, see if there is a XUL outliner builder
|
||||
// associated with the element.
|
||||
// associated with the parent element.
|
||||
nsCOMPtr<nsIXULTemplateBuilder> builder;
|
||||
xulele->GetBuilder(getter_AddRefs(builder));
|
||||
if (builder)
|
||||
view = do_QueryInterface(builder);
|
||||
|
||||
if (!view) {
|
||||
// No outliner builder, create a outliner content view.
|
||||
// No outliner builder, create an outliner content view.
|
||||
nsCOMPtr<nsIOutlinerContentView> contentView;
|
||||
NS_NewOutlinerContentView(getter_AddRefs(contentView));
|
||||
if (contentView) {
|
||||
contentView->SetRoot(xulele);
|
||||
if (contentView)
|
||||
view = do_QueryInterface(contentView);
|
||||
}
|
||||
}
|
||||
|
||||
// Hook up the view.
|
||||
|
@ -639,7 +643,7 @@ NS_IMETHODIMP nsOutlinerBodyFrame::SetView(nsIOutlinerView * aView)
|
|||
nsCOMPtr<nsIOutlinerSelection> sel;
|
||||
mView->GetSelection(getter_AddRefs(sel));
|
||||
if (!sel) {
|
||||
NS_NewOutlinerSelection(this, getter_AddRefs(sel));
|
||||
NS_NewOutlinerSelection(mOutlinerBoxObject, getter_AddRefs(sel));
|
||||
mView->SetSelection(sel);
|
||||
}
|
||||
|
||||
|
@ -742,7 +746,7 @@ NS_IMETHODIMP nsOutlinerBodyFrame::GetPageCount(PRInt32 *_retval)
|
|||
NS_IMETHODIMP nsOutlinerBodyFrame::Invalidate()
|
||||
{
|
||||
if (!mRect.IsEmpty()) {
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, mRect, PR_FALSE);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, mRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -754,7 +758,7 @@ NS_IMETHODIMP nsOutlinerBodyFrame::InvalidateColumn(const PRUnichar *aColID)
|
|||
currCol = currCol->GetNext()) {
|
||||
if (currCol->GetID().Equals(aColID)) {
|
||||
nsRect columnRect(currX, mInnerBox.y, currCol->GetWidth(), mInnerBox.height);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, columnRect, PR_FALSE);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, columnRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
break;
|
||||
}
|
||||
currX += currCol->GetWidth();
|
||||
|
@ -769,9 +773,8 @@ NS_IMETHODIMP nsOutlinerBodyFrame::InvalidateRow(PRInt32 aIndex)
|
|||
return NS_OK;
|
||||
|
||||
nsRect rowRect(mInnerBox.x, mInnerBox.y+mRowHeight*(aIndex-mTopRowIndex), mInnerBox.width, mRowHeight);
|
||||
if (!rowRect.IsEmpty()) {
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, rowRect, PR_FALSE);
|
||||
}
|
||||
if (!rowRect.IsEmpty())
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, rowRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -787,7 +790,27 @@ NS_IMETHODIMP nsOutlinerBodyFrame::InvalidateCell(PRInt32 aIndex, const PRUnicha
|
|||
|
||||
if (currCol->GetID().Equals(aColID)) {
|
||||
nsRect cellRect(currX, yPos, currCol->GetWidth(), mRowHeight);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, cellRect, PR_FALSE);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, cellRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
break;
|
||||
}
|
||||
currX += currCol->GetWidth();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsOutlinerBodyFrame::InvalidatePrimaryCell(PRInt32 aIndex)
|
||||
{
|
||||
if (aIndex < mTopRowIndex || aIndex > mTopRowIndex + mPageCount + 1)
|
||||
return NS_OK;
|
||||
|
||||
nscoord currX = mInnerBox.x;
|
||||
nscoord yPos = mInnerBox.y+mRowHeight*(aIndex-mTopRowIndex);
|
||||
for (nsOutlinerColumn* currCol = mColumns; currCol && currX < mInnerBox.x+mInnerBox.width;
|
||||
currCol = currCol->GetNext()) {
|
||||
|
||||
if (currCol->IsPrimary()) {
|
||||
nsRect cellRect(currX, yPos, currCol->GetWidth(), mRowHeight);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, cellRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
break;
|
||||
}
|
||||
currX += currCol->GetWidth();
|
||||
|
@ -812,7 +835,7 @@ NS_IMETHODIMP nsOutlinerBodyFrame::InvalidateRange(PRInt32 aStart, PRInt32 aEnd)
|
|||
aEnd = last;
|
||||
|
||||
nsRect rangeRect(mInnerBox.x, mInnerBox.y+mRowHeight*(aStart-mTopRowIndex), mInnerBox.width, mRowHeight*(aEnd-aStart+1));
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, rangeRect, PR_FALSE);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, rangeRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -858,9 +881,16 @@ nsresult nsOutlinerBodyFrame::CheckVerticalOverflow()
|
|||
event->nativeMsg = nsnull;
|
||||
event->message = mVerticalOverflow ? NS_SCROLLPORT_OVERFLOW : NS_SCROLLPORT_UNDERFLOW;
|
||||
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
mPresContext->GetShell(getter_AddRefs(shell));
|
||||
shell->PostDOMEvent(mContent, event);
|
||||
if (mState & NS_FRAME_IN_REFLOW) {
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
mPresContext->GetShell(getter_AddRefs(shell));
|
||||
shell->PostDOMEvent(mContent, event);
|
||||
}
|
||||
else {
|
||||
nsEventStatus status = nsEventStatus_eIgnore;
|
||||
mContent->HandleDOMEvent(mPresContext, event, nsnull, NS_EVENT_FLAG_INIT, &status);
|
||||
delete event;
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -910,20 +940,16 @@ NS_IMETHODIMP nsOutlinerBodyFrame::InvalidateScrollbar()
|
|||
}
|
||||
|
||||
|
||||
//
|
||||
// AdjustEventCoordsToBoxCoordSpace
|
||||
//
|
||||
// Takes client x/y in pixels, converts them to twips, and massages them to be
|
||||
// in our coordinate system.
|
||||
//
|
||||
void
|
||||
nsOutlinerBodyFrame :: AdjustEventCoordsToBoxCoordSpace ( PRInt32 inX, PRInt32 inY, PRInt32* outX, PRInt32* outY )
|
||||
nsOutlinerBodyFrame::AdjustEventCoordsToBoxCoordSpace (PRInt32 aX, PRInt32 aY, PRInt32* aResultX, PRInt32* aResultY)
|
||||
{
|
||||
// Convert our x and y coords to twips.
|
||||
float pixelsToTwips = 0.0;
|
||||
mPresContext->GetPixelsToTwips(&pixelsToTwips);
|
||||
inX = NSToIntRound(inX * pixelsToTwips);
|
||||
inY = NSToIntRound(inY * pixelsToTwips);
|
||||
aX = NSToIntRound(aX * pixelsToTwips);
|
||||
aY = NSToIntRound(aY * pixelsToTwips);
|
||||
|
||||
// Get our box object.
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
|
@ -962,16 +988,15 @@ nsOutlinerBodyFrame :: AdjustEventCoordsToBoxCoordSpace ( PRInt32 inX, PRInt32 i
|
|||
}
|
||||
|
||||
// Adjust into our coordinate space.
|
||||
x = inX-x;
|
||||
y = inY-y;
|
||||
x = aX-x;
|
||||
y = aY-y;
|
||||
|
||||
// Adjust y by the inner box y, so that we're in the inner box's
|
||||
// coordinate space.
|
||||
y += mInnerBox.y;
|
||||
|
||||
*outX = x;
|
||||
*outY = y;
|
||||
|
||||
*aResultX = x;
|
||||
*aResultY = y;
|
||||
} // AdjustEventCoordsToBoxCoordSpace
|
||||
|
||||
|
||||
|
@ -1516,6 +1541,12 @@ nsOutlinerBodyFrame::PrefillPropertyArray(PRInt32 aRowIndex, nsOutlinerColumn* a
|
|||
if (mFocused)
|
||||
mScratchArray->AppendElement(nsXULAtoms::focus);
|
||||
|
||||
// sort
|
||||
PRBool sorted = PR_FALSE;
|
||||
mView->IsSorted(&sorted);
|
||||
if (sorted)
|
||||
mScratchArray->AppendElement(nsXULAtoms::sorted);
|
||||
|
||||
if (aRowIndex != -1) {
|
||||
nsCOMPtr<nsIOutlinerSelection> selection;
|
||||
mView->GetSelection(getter_AddRefs(selection));
|
||||
|
@ -1551,12 +1582,25 @@ nsOutlinerBodyFrame::PrefillPropertyArray(PRInt32 aRowIndex, nsOutlinerColumn* a
|
|||
else {
|
||||
mScratchArray->AppendElement(nsXULAtoms::leaf);
|
||||
}
|
||||
|
||||
// drop feedback
|
||||
if (mDropAllowed && mDropRow == aRowIndex) {
|
||||
if (mDropOrient == nsIOutlinerView::inDropBefore)
|
||||
mScratchArray->AppendElement(nsXULAtoms::dropBefore);
|
||||
else if (mDropOrient == nsIOutlinerView::inDropOn)
|
||||
mScratchArray->AppendElement(nsXULAtoms::drop);
|
||||
else if (mDropOrient == nsIOutlinerView::inDropAfter)
|
||||
mScratchArray->AppendElement(nsXULAtoms::dropAfter);
|
||||
}
|
||||
}
|
||||
|
||||
if (aCol) {
|
||||
nsCOMPtr<nsIAtom> colID;
|
||||
aCol->GetIDAtom(getter_AddRefs(colID));
|
||||
mScratchArray->AppendElement(colID);
|
||||
|
||||
if (aCol->IsPrimary())
|
||||
mScratchArray->AppendElement(nsXULAtoms::primary);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1655,10 +1699,18 @@ nsRect nsOutlinerBodyFrame::GetImageSize(PRInt32 aRowIndex, const PRUnichar* aCo
|
|||
|
||||
const nsStylePosition* myPosition = (const nsStylePosition*)
|
||||
aStyleContext->GetStyleData(eStyleStruct_Position);
|
||||
const nsStyleList* myList = (const nsStyleList*)
|
||||
aStyleContext->GetStyleData(eStyleStruct_List);
|
||||
|
||||
r.x += myList->mImageRegion.x;
|
||||
r.y += myList->mImageRegion.y;
|
||||
|
||||
if (myPosition->mWidth.GetUnit() == eStyleUnit_Coord) {
|
||||
PRInt32 val = myPosition->mWidth.GetCoordValue();
|
||||
r.width += val;
|
||||
}
|
||||
else if (myList->mImageRegion.width > 0)
|
||||
r.width += myList->mImageRegion.width;
|
||||
else
|
||||
needWidth = PR_TRUE;
|
||||
|
||||
|
@ -1666,15 +1718,19 @@ nsRect nsOutlinerBodyFrame::GetImageSize(PRInt32 aRowIndex, const PRUnichar* aCo
|
|||
PRInt32 val = myPosition->mHeight.GetCoordValue();
|
||||
r.height += val;
|
||||
}
|
||||
else if (myList->mImageRegion.height > 0)
|
||||
r.height += myList->mImageRegion.height;
|
||||
else
|
||||
needHeight = PR_TRUE;
|
||||
|
||||
if (needWidth || needHeight) {
|
||||
#ifdef USE_IMG2
|
||||
nsCOMPtr<imgIContainer> image;
|
||||
GetImage(aRowIndex, aColID, aStyleContext, getter_AddRefs(image));
|
||||
// Get the natural image size.
|
||||
if (image) {
|
||||
// We have to load image even though we already have a size.
|
||||
// Don't change this, otherwise things start to go crazy.
|
||||
nsCOMPtr<imgIContainer> image;
|
||||
GetImage(aRowIndex, aColID, aStyleContext, getter_AddRefs(image));
|
||||
if (image) {
|
||||
if (needWidth || needHeight) {
|
||||
// Get the natural image size.
|
||||
float p2t;
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
|
||||
|
@ -2375,6 +2431,134 @@ NS_IMETHODIMP nsOutlinerBodyFrame::PaintText(int aRowIndex,
|
|||
textMarginData->GetMargin(textMargin);
|
||||
textRect.Deflate(textMargin);
|
||||
|
||||
// Compute our text size.
|
||||
const nsStyleFont* fontStyle = (const nsStyleFont*)textContext->GetStyleData(eStyleStruct_Font);
|
||||
|
||||
nsCOMPtr<nsIDeviceContext> deviceContext;
|
||||
aPresContext->GetDeviceContext(getter_AddRefs(deviceContext));
|
||||
|
||||
nsCOMPtr<nsIFontMetrics> fontMet;
|
||||
deviceContext->GetMetricsFor(fontStyle->mFont, *getter_AddRefs(fontMet));
|
||||
nscoord height, baseline;
|
||||
fontMet->GetHeight(height);
|
||||
fontMet->GetMaxAscent(baseline);
|
||||
|
||||
// Center the text. XXX Obey vertical-align style prop?
|
||||
if (height < textRect.height) {
|
||||
textRect.y += (textRect.height - height)/2;
|
||||
textRect.height = height;
|
||||
}
|
||||
|
||||
// Set our font.
|
||||
aRenderingContext.SetFont(fontMet);
|
||||
|
||||
nscoord width;
|
||||
aRenderingContext.GetWidth(text, width);
|
||||
|
||||
if (width > textRect.width) {
|
||||
// See if the width is even smaller than the ellipsis
|
||||
// If so, clear the text completely.
|
||||
nscoord ellipsisWidth;
|
||||
aRenderingContext.GetWidth(ELLIPSIS, ellipsisWidth);
|
||||
|
||||
nscoord width = textRect.width;
|
||||
if (ellipsisWidth > width)
|
||||
text.SetLength(0);
|
||||
else if (ellipsisWidth == width)
|
||||
text.Assign(NS_LITERAL_STRING(ELLIPSIS));
|
||||
else {
|
||||
// We will be drawing an ellipsis, thank you very much.
|
||||
// Subtract out the required width of the ellipsis.
|
||||
// This is the total remaining width we have to play with.
|
||||
width -= ellipsisWidth;
|
||||
|
||||
// Now we crop.
|
||||
switch (aColumn->GetCropStyle()) {
|
||||
default:
|
||||
case 0: {
|
||||
// Crop right.
|
||||
nscoord cwidth;
|
||||
nscoord twidth = 0;
|
||||
int length = text.Length();
|
||||
int i;
|
||||
for (i = 0; i < length; ++i) {
|
||||
PRUnichar ch = text[i];
|
||||
aRenderingContext.GetWidth(ch,cwidth);
|
||||
if (twidth + cwidth > width)
|
||||
break;
|
||||
twidth += cwidth;
|
||||
}
|
||||
text.Truncate(i);
|
||||
text += NS_LITERAL_STRING(ELLIPSIS);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: {
|
||||
// Crop left.
|
||||
nscoord cwidth;
|
||||
nscoord twidth = 0;
|
||||
int length = text.Length();
|
||||
int i;
|
||||
for (i=length-1; i >= 0; --i) {
|
||||
PRUnichar ch = text[i];
|
||||
aRenderingContext.GetWidth(ch,cwidth);
|
||||
if (twidth + cwidth > width)
|
||||
break;
|
||||
twidth += cwidth;
|
||||
}
|
||||
|
||||
nsAutoString copy;
|
||||
text.Right(copy, length-1-i);
|
||||
text.Assign(NS_LITERAL_STRING(ELLIPSIS));
|
||||
text += copy;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
{
|
||||
// Crop center.
|
||||
nsAutoString leftStr, rightStr;
|
||||
nscoord cwidth, twidth = 0;
|
||||
int length = text.Length();
|
||||
int rightPos = length - 1;
|
||||
for (int leftPos = 0; leftPos < rightPos; ++leftPos) {
|
||||
PRUnichar ch = text[leftPos];
|
||||
aRenderingContext.GetWidth(ch, cwidth);
|
||||
twidth += cwidth;
|
||||
if (twidth > width)
|
||||
break;
|
||||
leftStr.Append(ch);
|
||||
|
||||
ch = text[rightPos];
|
||||
aRenderingContext.GetWidth(ch, cwidth);
|
||||
twidth += cwidth;
|
||||
if (twidth > width)
|
||||
break;
|
||||
rightStr.Insert(ch, 0);
|
||||
--rightPos;
|
||||
}
|
||||
text = leftStr + NS_LITERAL_STRING(ELLIPSIS) + rightStr;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
switch (aColumn->GetTextAlignment()) {
|
||||
case NS_STYLE_TEXT_ALIGN_RIGHT: {
|
||||
textRect.x += textRect.width - width;
|
||||
}
|
||||
break;
|
||||
case NS_STYLE_TEXT_ALIGN_CENTER: {
|
||||
textRect.x += (textRect.width - width) / 2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
aRenderingContext.GetWidth(text, width);
|
||||
textRect.width = width;
|
||||
|
||||
// If the layer is the background layer, we must paint our borders and background for our
|
||||
// text rect.
|
||||
if (NS_FRAME_PAINT_LAYER_BACKGROUND == aWhichLayer)
|
||||
|
@ -2384,125 +2568,28 @@ NS_IMETHODIMP nsOutlinerBodyFrame::PaintText(int aRowIndex,
|
|||
// Adjust the rect for its border and padding.
|
||||
AdjustForBorderPadding(textContext, textRect);
|
||||
|
||||
// Compute our text size.
|
||||
const nsStyleFont* fontStyle = (const nsStyleFont*)textContext->GetStyleData(eStyleStruct_Font);
|
||||
|
||||
nsCOMPtr<nsIDeviceContext> deviceContext;
|
||||
aPresContext->GetDeviceContext(getter_AddRefs(deviceContext));
|
||||
|
||||
nsCOMPtr<nsIFontMetrics> fontMet;
|
||||
deviceContext->GetMetricsFor(fontStyle->mFont, *getter_AddRefs(fontMet));
|
||||
nscoord height, baseline;
|
||||
fontMet->GetHeight(height);
|
||||
fontMet->GetMaxAscent(baseline);
|
||||
|
||||
// Center the text. XXX Obey vertical-align style prop?
|
||||
if (height < textRect.height) {
|
||||
textRect.y += (textRect.height - height)/2;
|
||||
textRect.height = height;
|
||||
}
|
||||
|
||||
// Set our font.
|
||||
aRenderingContext.SetFont(fontMet);
|
||||
|
||||
nscoord width;
|
||||
aRenderingContext.GetWidth(text, width);
|
||||
|
||||
if (width > textRect.width) {
|
||||
// See if the width is even smaller than the ellipsis
|
||||
// If so, clear the text completely.
|
||||
nscoord ellipsisWidth;
|
||||
aRenderingContext.GetWidth(ELLIPSIS, ellipsisWidth);
|
||||
|
||||
nscoord width = textRect.width;
|
||||
if (ellipsisWidth > width)
|
||||
text.SetLength(0);
|
||||
else if (ellipsisWidth == width)
|
||||
text.Assign(NS_LITERAL_STRING(ELLIPSIS));
|
||||
else {
|
||||
// We will be drawing an ellipsis, thank you very much.
|
||||
// Subtract out the required width of the ellipsis.
|
||||
// This is the total remaining width we have to play with.
|
||||
width -= ellipsisWidth;
|
||||
|
||||
// Now we crop.
|
||||
switch (aColumn->GetCropStyle()) {
|
||||
default:
|
||||
case 0: {
|
||||
// Crop right.
|
||||
nscoord cwidth;
|
||||
nscoord twidth = 0;
|
||||
int length = text.Length();
|
||||
int i;
|
||||
for (i = 0; i < length; ++i) {
|
||||
PRUnichar ch = text[i];
|
||||
aRenderingContext.GetWidth(ch,cwidth);
|
||||
if (twidth + cwidth > width)
|
||||
break;
|
||||
twidth += cwidth;
|
||||
}
|
||||
|
||||
text.Truncate(i);
|
||||
text += NS_LITERAL_STRING(ELLIPSIS);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: {
|
||||
// Crop left.
|
||||
nscoord cwidth;
|
||||
nscoord twidth = 0;
|
||||
int length = text.Length();
|
||||
int i;
|
||||
for (i=length-1; i >= 0; --i) {
|
||||
PRUnichar ch = text[i];
|
||||
aRenderingContext.GetWidth(ch,cwidth);
|
||||
if (twidth + cwidth > width)
|
||||
break;
|
||||
|
||||
twidth += cwidth;
|
||||
}
|
||||
|
||||
nsAutoString copy;
|
||||
text.Right(copy, length-1-i);
|
||||
text.Assign(NS_LITERAL_STRING(ELLIPSIS));
|
||||
text += copy;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
{
|
||||
// Crop center.
|
||||
nsAutoString leftStr, rightStr;
|
||||
nscoord cwidth, twidth = 0;
|
||||
int length = text.Length();
|
||||
int rightPos = length - 1;
|
||||
for (int leftPos = 0; leftPos < rightPos; ++leftPos) {
|
||||
PRUnichar ch = text[leftPos];
|
||||
aRenderingContext.GetWidth(ch, cwidth);
|
||||
twidth += cwidth;
|
||||
if (twidth > width)
|
||||
break;
|
||||
leftStr.Append(ch);
|
||||
|
||||
ch = text[rightPos];
|
||||
aRenderingContext.GetWidth(ch, cwidth);
|
||||
twidth += cwidth;
|
||||
if (twidth > width)
|
||||
break;
|
||||
rightStr.Insert(ch, 0);
|
||||
--rightPos;
|
||||
}
|
||||
text = leftStr + NS_LITERAL_STRING(ELLIPSIS) + rightStr;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set our color.
|
||||
const nsStyleColor* colorStyle = (const nsStyleColor*)textContext->GetStyleData(eStyleStruct_Color);
|
||||
aRenderingContext.SetColor(colorStyle->mColor);
|
||||
|
||||
// Draw decorations.
|
||||
const nsStyleTextReset* textStyle = (const nsStyleTextReset*)textContext->GetStyleData(eStyleStruct_TextReset);
|
||||
PRUint8 decorations = textStyle->mTextDecoration;
|
||||
|
||||
nscoord offset;
|
||||
nscoord size;
|
||||
if (decorations & (NS_FONT_DECORATION_OVERLINE | NS_FONT_DECORATION_UNDERLINE)) {
|
||||
fontMet->GetUnderline(offset, size);
|
||||
if (decorations & NS_FONT_DECORATION_OVERLINE)
|
||||
aRenderingContext.FillRect(textRect.x, textRect.y, width, size);
|
||||
if (decorations & NS_FONT_DECORATION_UNDERLINE)
|
||||
aRenderingContext.FillRect(textRect.x, textRect.y + baseline - offset, width, size);
|
||||
}
|
||||
if (decorations & NS_FONT_DECORATION_LINE_THROUGH) {
|
||||
fontMet->GetStrikeout(offset, size);
|
||||
aRenderingContext.FillRect(textRect.x, textRect.y + baseline - offset, width, size);
|
||||
}
|
||||
|
||||
aRenderingContext.DrawString(text, textRect.x, textRect.y + baseline);
|
||||
}
|
||||
|
||||
|
@ -2561,18 +2648,6 @@ NS_IMETHODIMP nsOutlinerBodyFrame::ScrollToRow(PRInt32 aRow)
|
|||
ScrollInternal(aRow);
|
||||
UpdateScrollbar();
|
||||
|
||||
#ifdef XP_MAC
|
||||
// mac can't process the event loop during a drag, so if we're dragging,
|
||||
// grab the scroll widget and make it paint synchronously. This is
|
||||
// sorta slow (having to paint the entire tree), but it works.
|
||||
if ( mDragSession ) {
|
||||
nsCOMPtr<nsIWidget> scrollWidget;
|
||||
mScrollbar->GetWindow(mPresContext, getter_AddRefs(scrollWidget));
|
||||
if ( scrollWidget )
|
||||
scrollWidget->Invalidate(PR_TRUE);
|
||||
}
|
||||
#endif
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -2650,9 +2725,16 @@ nsOutlinerBodyFrame::ScrollInternal(PRInt32 aRow)
|
|||
PRInt32 absDelta = delta > 0 ? delta : -delta;
|
||||
if (hasBackground || absDelta*mRowHeight >= mRect.height)
|
||||
Invalidate();
|
||||
else if (mOutlinerWidget)
|
||||
else if (mOutlinerWidget) {
|
||||
mOutlinerWidget->Scroll(0, -delta*rowHeightAsPixels, nsnull);
|
||||
|
||||
#ifdef XP_MAC || defined(XP_MACOSX)
|
||||
// mac can't process the event loop during a drag, so if we're dragging,
|
||||
// update outliner widget synchronously.
|
||||
if (mDragSession)
|
||||
mOutlinerWidget->Update();
|
||||
#endif
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -2834,39 +2916,27 @@ NS_IMETHODIMP nsOutlinerBodyFrame::ClearStyleAndImageCaches()
|
|||
#pragma mark -
|
||||
#endif
|
||||
|
||||
|
||||
//
|
||||
// OnDragDrop
|
||||
//
|
||||
// Tell the view where the drop happened
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerBodyFrame :: OnDragDrop ( nsIDOMEvent* inEvent )
|
||||
nsOutlinerBodyFrame::OnDragDrop (nsIDOMEvent* aEvent)
|
||||
{
|
||||
mView->Drop ( mDropRow, mDropOrient );
|
||||
mView->Drop (mDropRow, mDropOrient);
|
||||
return NS_OK;
|
||||
|
||||
} // OnDragDrop
|
||||
|
||||
|
||||
//
|
||||
// OnDragExit
|
||||
//
|
||||
// Clear out all our tracking vars. If we were drawing feedback, undraw it
|
||||
//
|
||||
// Clear out all our tracking vars.
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerBodyFrame :: OnDragExit ( nsIDOMEvent* inEvent )
|
||||
nsOutlinerBodyFrame::OnDragExit(nsIDOMEvent* aEvent)
|
||||
{
|
||||
if ( mDropAllowed && !mAlreadyUndrewDueToScroll )
|
||||
DrawDropFeedback ( mDropRow, mDropOrient, kUndrawFeedback ) ;
|
||||
|
||||
mDropRow = kIllegalRow;
|
||||
mDropOrient = kNoOrientation;
|
||||
mDropAllowed = PR_FALSE;
|
||||
mAlreadyUndrewDueToScroll = PR_FALSE;
|
||||
|
||||
if (mDropAllowed) {
|
||||
mDropAllowed = PR_FALSE;
|
||||
InvalidatePrimaryCell(mDropRow);
|
||||
}
|
||||
else
|
||||
mDropAllowed = PR_FALSE;
|
||||
mDropRow = -1;
|
||||
mDropOrient = -1;
|
||||
mDragSession = nsnull;
|
||||
mRenderingContext = nsnull;
|
||||
|
||||
if (mOpenTimer) {
|
||||
mOpenTimer->Cancel();
|
||||
|
@ -2875,55 +2945,43 @@ nsOutlinerBodyFrame :: OnDragExit ( nsIDOMEvent* inEvent )
|
|||
}
|
||||
|
||||
return NS_OK;
|
||||
|
||||
} // OnDragExit
|
||||
|
||||
|
||||
//
|
||||
// OnDragOver
|
||||
//
|
||||
// The mouse is hovering over this outliner. If we determine things are different from the
|
||||
// last time, undraw feedback at the old position, query the view to see if the current location is
|
||||
// droppable, and then draw feedback at the new location if it is. The mouse may or may
|
||||
// last time, invalidate primary cell at the old position, query the view to see if the current location is
|
||||
// droppable, and then invalidate primary cell at the new location if it is. The mouse may or may
|
||||
// not have changed position from the last time we were called, so optimize out a lot of
|
||||
// the extra notifications by checking if anything changed first.
|
||||
//
|
||||
// For drop feedback we use drop, dropBefore and dropAfter property.
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerBodyFrame :: OnDragOver ( nsIDOMEvent* inEvent )
|
||||
nsOutlinerBodyFrame::OnDragOver(nsIDOMEvent* aEvent)
|
||||
{
|
||||
// while we're here, handle tracking of scrolling during a drag. There is a little craziness
|
||||
// here as we turn off tracking of feedback during the scroll. When we first start scrolling,
|
||||
// we explicitly undraw the previous feedback, then set |mAlreadyUndrewDueToScroll| to
|
||||
// alert other places not to undraw again later (we're using XOR, so undrawing twice
|
||||
// is bad). Below, we'll clear this member the next time we try to undraw the regular feedback.
|
||||
// while we're here, handle tracking of scrolling during a drag.
|
||||
PRBool scrollUp = PR_FALSE;
|
||||
if ( IsInDragScrollRegion(inEvent, &scrollUp) ) {
|
||||
if ( mDropAllowed && !mAlreadyUndrewDueToScroll )
|
||||
DrawDropFeedback ( mDropRow, mDropOrient, kUndrawFeedback ); // undraw it at old loc, if we were drawing
|
||||
mAlreadyUndrewDueToScroll = PR_TRUE;
|
||||
ScrollByLines ( scrollUp ? -1 : 1);
|
||||
if (IsInDragScrollRegion(aEvent, &scrollUp)) {
|
||||
if (mDropAllowed) {
|
||||
// invalidate primary cell at old location.
|
||||
mDropAllowed = PR_FALSE;
|
||||
InvalidatePrimaryCell(mDropRow);
|
||||
}
|
||||
ScrollByLines(scrollUp ? -1 : 1);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// compute the row mouse is over and the above/below/on state. Below we'll use this
|
||||
// to see if anything changed.
|
||||
PRInt32 newRow = kIllegalRow;
|
||||
DropOrientation newOrient = kNoOrientation;
|
||||
ComputeDropPosition ( inEvent, &newRow, &newOrient );
|
||||
PRInt32 newRow = -1;
|
||||
PRInt16 newOrient = -1;
|
||||
ComputeDropPosition(aEvent, &newRow, &newOrient);
|
||||
|
||||
// if changed from last time, undraw it at the old location and if allowed,
|
||||
// draw it at the new location. If nothing changed, just bail.
|
||||
if ( newRow != mDropRow || newOrient != mDropOrient ) {
|
||||
|
||||
// undraw feedback at old loc. If we are coming off a scroll,
|
||||
// don't undraw the old (we already did that), but reset us so that
|
||||
// we're back in the normal case.
|
||||
if ( !mAlreadyUndrewDueToScroll ) {
|
||||
if ( mDropAllowed )
|
||||
DrawDropFeedback ( mDropRow, mDropOrient, kUndrawFeedback );
|
||||
// if changed from last time, invalidate primary cell at the old location and if allowed,
|
||||
// invalidate primary cell at the new location. If nothing changed, just bail.
|
||||
if (newRow != mDropRow || newOrient != mDropOrient) {
|
||||
// Invalidate row at the old location.
|
||||
if (mDropAllowed) {
|
||||
mDropAllowed = PR_FALSE;
|
||||
InvalidatePrimaryCell(mDropRow);
|
||||
}
|
||||
else
|
||||
mAlreadyUndrewDueToScroll = PR_FALSE;
|
||||
|
||||
if (mOpenTimer && newRow != mOpenTimerRow) {
|
||||
// timer is active but for a different row than the current one - kill it
|
||||
|
@ -2936,10 +2994,8 @@ nsOutlinerBodyFrame :: OnDragOver ( nsIDOMEvent* inEvent )
|
|||
// for next time.
|
||||
mDropRow = newRow;
|
||||
mDropOrient = newOrient;
|
||||
|
||||
mDropAllowed = PR_FALSE;
|
||||
|
||||
|
||||
if (mDropRow >= 0) {
|
||||
if (!mOpenTimer) {
|
||||
// either there wasn't a timer running or it was just killed above.
|
||||
|
@ -2959,14 +3015,15 @@ nsOutlinerBodyFrame :: OnDragOver ( nsIDOMEvent* inEvent )
|
|||
}
|
||||
|
||||
PRBool canDropAtNewLocation = PR_FALSE;
|
||||
if ( mDropOrient == kOnRow )
|
||||
mView->CanDropOn ( mDropRow, &canDropAtNewLocation );
|
||||
if (mDropOrient == nsIOutlinerView::inDropOn)
|
||||
mView->CanDropOn(mDropRow, &canDropAtNewLocation);
|
||||
else
|
||||
mView->CanDropBeforeAfter ( mDropRow, mDropOrient == kBeforeRow ? PR_TRUE : PR_FALSE, &canDropAtNewLocation );
|
||||
mView->CanDropBeforeAfter (mDropRow, mDropOrient == nsIOutlinerView::inDropBefore ? PR_TRUE : PR_FALSE, &canDropAtNewLocation);
|
||||
|
||||
if ( canDropAtNewLocation ) {
|
||||
DrawDropFeedback ( mDropRow, mDropOrient, kDrawFeedback ); // draw it at old loc, if we are allowed
|
||||
if (canDropAtNewLocation) {
|
||||
// Invalidate row at the new location/
|
||||
mDropAllowed = canDropAtNewLocation;
|
||||
InvalidatePrimaryCell(mDropRow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2977,86 +3034,8 @@ nsOutlinerBodyFrame :: OnDragOver ( nsIDOMEvent* inEvent )
|
|||
mDragSession->SetCanDrop(PR_TRUE);
|
||||
|
||||
return NS_OK;
|
||||
|
||||
} // OnDragOver
|
||||
|
||||
|
||||
//
|
||||
// DrawDropFeedback
|
||||
//
|
||||
// Takes care of actually drawing the correct feedback. |inDrawFeedback| tells us whether
|
||||
// we're drawing or undrawing (removing/clearing) the feedback for the given row.
|
||||
//
|
||||
// XXX Need to be able to make line color respect style
|
||||
//
|
||||
void
|
||||
nsOutlinerBodyFrame :: DrawDropFeedback ( PRInt32 inDropRow, DropOrientation inDropOrient, PRBool inDrawFeedback )
|
||||
{
|
||||
// call appropriate routine (insert, container, etc) based on |inDropOrient| and pass in |inDrawFeedback|
|
||||
float pixelsToTwips = 0.0;
|
||||
mPresContext->GetPixelsToTwips ( &pixelsToTwips );
|
||||
|
||||
#if NOT_YET_WORKING
|
||||
// feedback will differ depending on if we're sorted or not -- leaving this around
|
||||
// for later.
|
||||
if ( viewSorted ) {
|
||||
PRInt32 penSize = NSToIntRound(1*pixelsToTwips); // use a 1 pixel wide pen
|
||||
|
||||
// draw outline rectangle made of 4 rects (gfx can't just frame a rectangle). The
|
||||
// rects can't overlap because we're XORing.
|
||||
mRenderingContext->InvertRect ( 0, 0, mRect.width, penSize ); // top
|
||||
mRenderingContext->InvertRect ( 0, penSize, penSize, mRect.height ); // left
|
||||
mRenderingContext->InvertRect ( mRect.width - penSize, penSize, penSize, mRect.height ); // right
|
||||
mRenderingContext->InvertRect ( penSize, mRect.height - penSize,
|
||||
mRect.width - 2*penSize, penSize ); // bottom
|
||||
}
|
||||
#endif
|
||||
|
||||
nsOutlinerColumn* primaryCol = nsnull;
|
||||
for (nsOutlinerColumn* currCol = mColumns; currCol; currCol = currCol->GetNext()) {
|
||||
if ( currCol->IsPrimary() ) {
|
||||
primaryCol = currCol;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( !primaryCol )
|
||||
return;
|
||||
|
||||
if ( inDropOrient == kOnRow ) {
|
||||
// drawing "on" a row. Invert the image and text in the primary column.
|
||||
PRInt32 x, y, width, height;
|
||||
GetCoordsForCellItem ( inDropRow, primaryCol->GetID().get(), NS_LITERAL_STRING("image").get(),
|
||||
&x, &y, &width, &height );
|
||||
mRenderingContext->InvertRect ( NSToIntRound(x*pixelsToTwips), NSToIntRound(y*pixelsToTwips),
|
||||
NSToIntRound(width*pixelsToTwips), NSToIntRound(height*pixelsToTwips) );
|
||||
GetCoordsForCellItem ( inDropRow, primaryCol->GetID().get(), NS_LITERAL_STRING("text").get(),
|
||||
&x, &y, &width, &height );
|
||||
mRenderingContext->InvertRect ( NSToIntRound(x*pixelsToTwips), NSToIntRound(y*pixelsToTwips),
|
||||
NSToIntRound(width*pixelsToTwips), NSToIntRound(height*pixelsToTwips) );
|
||||
}
|
||||
else {
|
||||
// drawing between rows, find the X/Y to draw a 2 pixel line indented 5 pixels
|
||||
// from the left of the image in the primary column.
|
||||
PRInt32 whereToDrawY = mRowHeight * (inDropRow - mTopRowIndex);
|
||||
if ( inDropOrient == kAfterRow )
|
||||
whereToDrawY += mRowHeight;
|
||||
|
||||
PRInt32 whereToDrawX = 0;
|
||||
PRInt32 y, width, height;
|
||||
GetCoordsForCellItem ( inDropRow, primaryCol->GetID().get(), NS_LITERAL_STRING("image").get(),
|
||||
&whereToDrawX, &y, &width, &height );
|
||||
whereToDrawX += 5; // indent 5 pixels from left of image
|
||||
|
||||
mRenderingContext->InvertRect ( NSToIntRound(whereToDrawX*pixelsToTwips),
|
||||
whereToDrawY, NSToIntRound(25*pixelsToTwips), NSToIntRound(2*pixelsToTwips) );
|
||||
}
|
||||
|
||||
} // DrawDropFeedback
|
||||
|
||||
|
||||
//
|
||||
// ComputeDropPosition
|
||||
//
|
||||
// Given a dom event, figure out which row in the tree the mouse is over
|
||||
// and if we should drop before/after/on that row. Doesn't query the content
|
||||
// about if the drag is allowable, that's done elsewhere.
|
||||
|
@ -3067,121 +3046,99 @@ nsOutlinerBodyFrame :: DrawDropFeedback ( PRInt32 inDropRow, DropOrientation inD
|
|||
//
|
||||
// For non-containers, if the mouse is in the top 50% of the row, the drop is
|
||||
// _before_ and the bottom 50% _after_
|
||||
//
|
||||
void
|
||||
nsOutlinerBodyFrame :: ComputeDropPosition ( nsIDOMEvent* inEvent, PRInt32* outRow, DropOrientation* outOrient )
|
||||
nsOutlinerBodyFrame::ComputeDropPosition(nsIDOMEvent* aEvent, PRInt32* aRow, PRInt16* aOrient)
|
||||
{
|
||||
nsCOMPtr<nsIDOMMouseEvent> mouseEvent ( do_QueryInterface(inEvent) );
|
||||
if ( mouseEvent ) {
|
||||
nsCOMPtr<nsIDOMMouseEvent> mouseEvent (do_QueryInterface(aEvent));
|
||||
if (mouseEvent) {
|
||||
PRInt32 x = 0, y = 0;
|
||||
mouseEvent->GetClientX(&x); mouseEvent->GetClientY(&y);
|
||||
|
||||
nsXPIDLString colID, child;
|
||||
GetCellAt ( x, y, outRow, getter_Copies(colID), getter_Copies(child) );
|
||||
if (*outRow == -1) {
|
||||
*outOrient = kNoOrientation;
|
||||
GetCellAt (x, y, aRow, getter_Copies(colID), getter_Copies(child));
|
||||
if (*aRow == -1) {
|
||||
*aOrient = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
// Compute the top/bottom of the row in question. We need to convert
|
||||
// our y coord to twips since |mRowHeight| is in twips.
|
||||
PRInt32 yTwips, xTwips;
|
||||
AdjustEventCoordsToBoxCoordSpace ( x, y, &xTwips, &yTwips );
|
||||
PRInt32 rowTop = mRowHeight * (*outRow - mTopRowIndex);
|
||||
PRInt32 yOffset = yTwips - rowTop;
|
||||
AdjustEventCoordsToBoxCoordSpace (x, y, &xTwips, &yTwips);
|
||||
PRInt32 yOffset = yTwips - mRowHeight * (*aRow - mTopRowIndex);
|
||||
|
||||
PRBool isContainer = PR_FALSE;
|
||||
mView->IsContainer ( *outRow, &isContainer );
|
||||
if ( isContainer ) {
|
||||
mView->IsContainer (*aRow, &isContainer);
|
||||
if (isContainer) {
|
||||
// for a container, use a 25%/50%/25% breakdown
|
||||
if ( yOffset < mRowHeight / 4 )
|
||||
*outOrient = kBeforeRow;
|
||||
else if ( yOffset > mRowHeight - (mRowHeight / 4) )
|
||||
*outOrient = kAfterRow;
|
||||
if (yOffset < mRowHeight / 4)
|
||||
*aOrient = nsIOutlinerView::inDropBefore;
|
||||
else if (yOffset > mRowHeight - (mRowHeight / 4))
|
||||
*aOrient = nsIOutlinerView::inDropAfter;
|
||||
else
|
||||
*outOrient = kOnRow;
|
||||
*aOrient = nsIOutlinerView::inDropOn;
|
||||
}
|
||||
else {
|
||||
// for a non-container use a 50%/50% breakdown
|
||||
if ( yOffset < mRowHeight / 2 )
|
||||
*outOrient = kBeforeRow;
|
||||
if (yOffset < mRowHeight / 2)
|
||||
*aOrient = nsIOutlinerView::inDropBefore;
|
||||
else
|
||||
*outOrient = kAfterRow;
|
||||
*aOrient = nsIOutlinerView::inDropAfter;
|
||||
}
|
||||
}
|
||||
|
||||
} // ComputeDropPosition
|
||||
|
||||
|
||||
//
|
||||
// IsInDragScrollRegion
|
||||
//
|
||||
// Determine if we're w/in a margin of the top/bottom of the outliner during a drag.
|
||||
// This will ultimately cause us to scroll, but that's done elsewhere.
|
||||
//
|
||||
PRBool
|
||||
nsOutlinerBodyFrame :: IsInDragScrollRegion ( nsIDOMEvent* inEvent, PRBool* outScrollUp )
|
||||
nsOutlinerBodyFrame::IsInDragScrollRegion(nsIDOMEvent* aEvent, PRBool* aScrollUp)
|
||||
{
|
||||
PRBool isInRegion = PR_FALSE;
|
||||
|
||||
float pixelsToTwips = 0.0;
|
||||
mPresContext->GetPixelsToTwips ( &pixelsToTwips );
|
||||
const int kMarginHeight = NSToIntRound ( 12 * pixelsToTwips );
|
||||
mPresContext->GetPixelsToTwips (&pixelsToTwips);
|
||||
const int kMarginHeight = NSToIntRound(12 * pixelsToTwips);
|
||||
|
||||
nsCOMPtr<nsIDOMMouseEvent> mouseEvent ( do_QueryInterface(inEvent) );
|
||||
if ( mouseEvent ) {
|
||||
nsCOMPtr<nsIDOMMouseEvent> mouseEvent (do_QueryInterface(aEvent));
|
||||
if (mouseEvent) {
|
||||
PRInt32 x = 0, y = 0;
|
||||
mouseEvent->GetClientX(&x); mouseEvent->GetClientY(&y);
|
||||
|
||||
PRInt32 yTwips, xTwips;
|
||||
AdjustEventCoordsToBoxCoordSpace ( x, y, &xTwips, &yTwips );
|
||||
AdjustEventCoordsToBoxCoordSpace (x, y, &xTwips, &yTwips);
|
||||
|
||||
if ( yTwips < kMarginHeight ) {
|
||||
if (yTwips < kMarginHeight) {
|
||||
isInRegion = PR_TRUE;
|
||||
if ( outScrollUp )
|
||||
*outScrollUp = PR_TRUE; // scroll up
|
||||
if (aScrollUp)
|
||||
*aScrollUp = PR_TRUE; // scroll up
|
||||
}
|
||||
else if ( yTwips > mRect.height - kMarginHeight ) {
|
||||
else if (yTwips > mRect.height - kMarginHeight) {
|
||||
isInRegion = PR_TRUE;
|
||||
if ( outScrollUp )
|
||||
*outScrollUp = PR_FALSE; // scroll down
|
||||
if (aScrollUp )
|
||||
*aScrollUp = PR_FALSE; // scroll down
|
||||
}
|
||||
}
|
||||
|
||||
return isInRegion;
|
||||
|
||||
} // IsInDragScrollRegion
|
||||
|
||||
|
||||
//
|
||||
// OnDragEnter
|
||||
//
|
||||
// Cache several things we'll need throughout the course of our work. These
|
||||
// will all get released on a drag exit
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerBodyFrame :: OnDragEnter ( nsIDOMEvent* inEvent )
|
||||
nsOutlinerBodyFrame::OnDragEnter(nsIDOMEvent* aEvent)
|
||||
{
|
||||
// create a rendering context for our drawing needs
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
mPresContext->GetShell(getter_AddRefs(presShell));
|
||||
nsCOMPtr<nsIRenderingContext> rendContext;
|
||||
presShell->CreateRenderingContext ( this, getter_AddRefs(mRenderingContext) );
|
||||
|
||||
// cache the drag session
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIDragService> dragService =
|
||||
do_GetService("@mozilla.org/widget/dragservice;1", &rv);
|
||||
nsCOMPtr<nsIDragSession> dragSession;
|
||||
dragService->GetCurrentSession(getter_AddRefs(mDragSession));
|
||||
NS_ASSERTION ( mDragSession, "can't get drag session" );
|
||||
NS_ASSERTION(mDragSession, "can't get drag session");
|
||||
|
||||
return NS_OK;
|
||||
|
||||
} // OnDragEnter
|
||||
|
||||
|
||||
|
||||
#ifdef XP_MAC
|
||||
#pragma mark -
|
||||
#endif
|
||||
|
|
|
@ -184,6 +184,7 @@ public:
|
|||
PRBool IsCycler() { return mIsCyclerCol; };
|
||||
|
||||
PRInt32 GetCropStyle() { return mCropStyle; };
|
||||
PRInt32 GetTextAlignment() { return mTextAlignment; };
|
||||
|
||||
PRInt32 GetColIndex() { return mColIndex; };
|
||||
};
|
||||
|
@ -387,8 +388,8 @@ protected:
|
|||
// Our internal scroll method, used by all the public scroll methods.
|
||||
nsresult ScrollInternal(PRInt32 aRow);
|
||||
|
||||
// convert pixels, probably from an event, into twips in our coordinate space
|
||||
void AdjustEventCoordsToBoxCoordSpace ( PRInt32 inX, PRInt32 inY, PRInt32* outX, PRInt32* outY ) ;
|
||||
// Convert pixels, probably from an event, into twips in our coordinate space.
|
||||
void AdjustEventCoordsToBoxCoordSpace (PRInt32 aX, PRInt32 aY, PRInt32* aResultX, PRInt32* aResultY);
|
||||
|
||||
// Convert a border style into line style.
|
||||
nsLineStyle ConvertBorderStyleToLineStyle(PRUint8 aBorderStyle);
|
||||
|
@ -403,6 +404,12 @@ protected:
|
|||
nscoord& aCurrentSize);
|
||||
nscoord CalcMaxRowWidth(nsBoxLayoutState& aState);
|
||||
|
||||
// Calc the row and above/below/on status given where the mouse currently is hovering.
|
||||
void ComputeDropPosition(nsIDOMEvent* aEvent, PRInt32* aRow, PRInt16* aOrient);
|
||||
|
||||
// Calculate if we're in the region in which we want to auto-scroll the outliner.
|
||||
PRBool IsInDragScrollRegion (nsIDOMEvent* aEvent, PRBool* aScrollUp);
|
||||
|
||||
protected: // Data Members
|
||||
// Our cached pres context.
|
||||
nsIPresContext* mPresContext;
|
||||
|
@ -448,41 +455,29 @@ protected: // Data Members
|
|||
|
||||
// A scratch array used when looking up cached style contexts.
|
||||
nsCOMPtr<nsISupportsArray> mScratchArray;
|
||||
|
||||
enum { kIllegalRow = -1 } ;
|
||||
enum { kDrawFeedback = PR_TRUE, kUndrawFeedback = PR_FALSE } ;
|
||||
enum DropOrientation { kNoOrientation, kBeforeRow = 1, kOnRow = 2, kAfterRow = 3 } ;
|
||||
|
||||
// draw (or undraw) feedback at the given location with the given orientation
|
||||
void DrawDropFeedback ( PRInt32 inDropRow, DropOrientation inDropOrient, PRBool inDrawFeedback ) ;
|
||||
|
||||
// calc the row and above/below/on status given where the mouse currently is hovering
|
||||
void ComputeDropPosition ( nsIDOMEvent* inEvent, PRInt32* outRow, DropOrientation* outOrient ) ;
|
||||
|
||||
// calculate if we're in the region in which we want to auto-scroll the outliner
|
||||
PRBool IsInDragScrollRegion ( nsIDOMEvent* inEvent, PRBool* outScrollUp ) ;
|
||||
|
||||
PRInt32 mDropRow; // the row the mouse is hovering over during a drop
|
||||
DropOrientation mDropOrient; // where we want to draw feedback (above/below/on this row) if allowed
|
||||
// Whether or not we're currently focused.
|
||||
PRPackedBool mFocused;
|
||||
|
||||
// An indicator that columns have changed and need to be rebuilt
|
||||
PRPackedBool mColumnsDirty;
|
||||
|
||||
PRPackedBool mDropAllowed; // if the drop is actually allowed here or not. we draw if this is true
|
||||
PRPackedBool mAlreadyUndrewDueToScroll; // we undraw early during auto-scroll; did we do this already?
|
||||
// If the drop is actually allowed here or not.
|
||||
PRPackedBool mDropAllowed;
|
||||
|
||||
// Do we have a fixed number of onscreen rows?
|
||||
PRPackedBool mHasFixedRowCount;
|
||||
|
||||
PRPackedBool mVerticalOverflow;
|
||||
|
||||
// timer for opening spring-loaded folders
|
||||
// The row the mouse is hovering over during a drop.
|
||||
PRInt32 mDropRow;
|
||||
// Where we want to draw feedback (above/on this row/below) if allowed.
|
||||
PRInt16 mDropOrient;
|
||||
nsCOMPtr<nsIDragSession> mDragSession;
|
||||
|
||||
// Timer for opening spring-loaded folders.
|
||||
nsCOMPtr<nsITimer> mOpenTimer;
|
||||
PRInt32 mOpenTimerRow;
|
||||
|
||||
nsCOMPtr<nsIDragSession> mDragSession;
|
||||
nsCOMPtr<nsIRenderingContext> mRenderingContext;
|
||||
|
||||
}; // class nsOutlinerBodyFrame
|
||||
|
|
|
@ -110,16 +110,18 @@ NS_IMETHODIMP nsOutlinerBoxObject::Init(nsIContent* aContent, nsIPresShell* aPre
|
|||
|
||||
static void FindBodyElement(nsIContent* aParent, nsIContent** aResult)
|
||||
{
|
||||
*aResult = nsnull;
|
||||
ChildIterator iter, last;
|
||||
for (ChildIterator::Init(aParent, &iter, &last); iter != last; ++iter) {
|
||||
nsCOMPtr<nsIContent> content = *iter;
|
||||
nsCOMPtr<nsIAtom> tag;
|
||||
content->GetTag(*getter_AddRefs(tag));
|
||||
if (tag.get() == nsXULAtoms::outlinerbody) {
|
||||
if (tag.get() == nsXULAtoms::outlinerchildren) {
|
||||
*aResult = content;
|
||||
NS_ADDREF(*aResult);
|
||||
break;
|
||||
} else {
|
||||
}
|
||||
else if (tag != nsXULAtoms::templateAtom) {
|
||||
FindBodyElement(content, aResult);
|
||||
if (*aResult)
|
||||
break;
|
||||
|
@ -332,6 +334,14 @@ NS_IMETHODIMP nsOutlinerBoxObject::InvalidateCell(PRInt32 aRow, const PRUnichar
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsOutlinerBoxObject::InvalidatePrimaryCell(PRInt32 aIndex)
|
||||
{
|
||||
nsIOutlinerBoxObject* body = GetOutlinerBody();
|
||||
if (body)
|
||||
return body->InvalidatePrimaryCell(aIndex);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsOutlinerBoxObject::InvalidateRange(PRInt32 aStart, PRInt32 aEnd)
|
||||
{
|
||||
nsIOutlinerBoxObject* body = GetOutlinerBody();
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "nsXULAtoms.h"
|
||||
#include "nsLayoutAtoms.h"
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsIBoxObject.h"
|
||||
#include "nsOutlinerUtils.h"
|
||||
#include "nsOutlinerContentView.h"
|
||||
#include "nsChildIterator.h"
|
||||
|
@ -154,7 +155,7 @@ class Row
|
|||
|
||||
nsOutlinerContentView::nsOutlinerContentView(void) :
|
||||
mBoxObject(nsnull), mSelection(nsnull), mRoot(nsnull), mDocument(nsnull),
|
||||
mHasCheckedSelect(PR_FALSE), mUpdateSelection(PR_FALSE), mIgnoreOptionSelected(PR_FALSE)
|
||||
mUpdateSelection(PR_FALSE)
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
|
||||
|
@ -167,7 +168,7 @@ nsOutlinerContentView::nsOutlinerContentView(void) :
|
|||
mAllocator.Init("nsOutlinerContentView", kBucketSizes, kNumBuckets, kInitialSize);
|
||||
}
|
||||
|
||||
nsOutlinerContentView::~nsOutlinerContentView (void)
|
||||
nsOutlinerContentView::~nsOutlinerContentView(void)
|
||||
{
|
||||
// Remove ourselfs from document's observers.
|
||||
if (mDocument)
|
||||
|
@ -470,7 +471,32 @@ NS_IMETHODIMP
|
|||
nsOutlinerContentView::SetOutliner(nsIOutlinerBoxObject* aOutliner)
|
||||
{
|
||||
mBoxObject = aOutliner;
|
||||
|
||||
|
||||
if (!mRoot) {
|
||||
// Get our root element
|
||||
nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mBoxObject);
|
||||
nsCOMPtr<nsIDOMElement> element;
|
||||
boxObject->GetElement(getter_AddRefs(element));
|
||||
|
||||
mRoot = do_QueryInterface(element);
|
||||
|
||||
// Add ourselfs to document's observers.
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
mRoot->GetDocument(*getter_AddRefs(document));
|
||||
if (document) {
|
||||
document->AddObserver(this);
|
||||
mDocument = document;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDOMElement> bodyElement;
|
||||
mBoxObject->GetOutlinerBody(getter_AddRefs(bodyElement));
|
||||
if (bodyElement) {
|
||||
nsCOMPtr<nsIContent> bodyContent = do_QueryInterface(bodyElement);
|
||||
PRInt32 index = 0;
|
||||
Serialize(bodyContent, -1, &index, mRows);
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -554,42 +580,6 @@ nsOutlinerContentView::GetRoot(nsIDOMElement** aRoot)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerContentView::SetRoot(nsIDOMElement* aRoot)
|
||||
{
|
||||
if (mRoot) {
|
||||
// Remove ourselfs from document's observers.
|
||||
if (mDocument) {
|
||||
mDocument->RemoveObserver(this);
|
||||
mDocument = nsnull;
|
||||
}
|
||||
|
||||
ClearRows();
|
||||
}
|
||||
|
||||
if (aRoot)
|
||||
mRoot = do_QueryInterface(aRoot);
|
||||
|
||||
if (mRoot) {
|
||||
// Add ourselfs to document's observers.
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
mRoot->GetDocument(*getter_AddRefs(document));
|
||||
if (document) {
|
||||
document->AddObserver(this);
|
||||
mDocument = document;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIContent> child;
|
||||
nsOutlinerUtils::GetImmediateChild(mRoot, nsXULAtoms::outlinerchildren, getter_AddRefs(child));
|
||||
if (child) {
|
||||
PRInt32 index = 0;
|
||||
Serialize(child, -1, &index, mRows);
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerContentView::GetItemAtIndex(PRInt32 aIndex, nsIDOMElement** _retval)
|
||||
{
|
||||
|
@ -720,8 +710,11 @@ nsOutlinerContentView::AttributeChanged(nsIDocument *aDocument,
|
|||
aContent->GetTag(*getter_AddRefs(tag));
|
||||
|
||||
if (tag == nsXULAtoms::outlinercol) {
|
||||
if (aAttribute == nsXULAtoms::properties)
|
||||
mBoxObject->Invalidate();
|
||||
if (aAttribute == nsXULAtoms::properties) {
|
||||
nsAutoString id;
|
||||
aContent->GetAttr(kNameSpaceID_None, nsHTMLAtoms::id, id);
|
||||
mBoxObject->InvalidateColumn(id.get());
|
||||
}
|
||||
}
|
||||
else if (tag == nsXULAtoms::outlineritem) {
|
||||
if (aAttribute == nsXULAtoms::open) {
|
||||
|
@ -785,14 +778,13 @@ nsOutlinerContentView::AttributeChanged(nsIDocument *aDocument,
|
|||
}
|
||||
}
|
||||
else if (tag == nsHTMLAtoms::option) {
|
||||
if (aAttribute == nsLayoutAtoms::optionSelectedPseudo && !mIgnoreOptionSelected) {
|
||||
if (aAttribute == nsLayoutAtoms::optionSelectedPseudo) {
|
||||
PRInt32 index = FindContent(aContent);
|
||||
if (index == -1)
|
||||
return NS_OK;
|
||||
|
||||
NS_ASSERTION(mSelection, "Need to handle optionSelected change with no OutlinerSelection");
|
||||
if (mSelection)
|
||||
if (index >= 0) {
|
||||
NS_ASSERTION(mSelection, "Need to handle optionSelected change with no OutlinerSelection");
|
||||
if (mSelection)
|
||||
mSelection->ToggleSelect(index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -823,11 +815,13 @@ nsOutlinerContentView::ContentInserted(nsIDocument *aDocument,
|
|||
if (childTag == nsXULAtoms::outlineritem ||
|
||||
childTag == nsXULAtoms::outlinerseparator) {
|
||||
PRInt32 parentIndex = -1;
|
||||
if (aContainer != mRoot) {
|
||||
nsCOMPtr<nsIContent> parent;
|
||||
aContainer->GetParent(*getter_AddRefs(parent));
|
||||
|
||||
nsCOMPtr<nsIContent> parent;
|
||||
aContainer->GetParent(*getter_AddRefs(parent));
|
||||
nsCOMPtr<nsIAtom> parentTag;
|
||||
parent->GetTag(*getter_AddRefs(parentTag));
|
||||
if (parentTag != nsXULAtoms::outliner)
|
||||
parentIndex = FindContent(parent);
|
||||
}
|
||||
|
||||
PRInt32 index = 0;
|
||||
GetIndexInSubtree(aContainer, aChild, &index);
|
||||
|
@ -1329,21 +1323,3 @@ nsOutlinerContentView::ParseProperties(nsIContent* aContent, Property** aPropert
|
|||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsOutlinerContentView::GetSelectElement()
|
||||
{
|
||||
nsCOMPtr<nsIContent> parent = mRoot;
|
||||
nsCOMPtr<nsIAtom> tag;
|
||||
nsCOMPtr<nsIContent> temp;
|
||||
|
||||
while (parent && NS_SUCCEEDED(parent->GetTag(*getter_AddRefs(tag)))
|
||||
&& tag != nsXULAtoms::outliner && tag != nsHTMLAtoms::select) {
|
||||
temp = parent;
|
||||
temp->GetParent(*getter_AddRefs(parent));
|
||||
}
|
||||
|
||||
if (parent && tag == nsHTMLAtoms::select)
|
||||
mSelectElement = do_QueryInterface(parent);
|
||||
}
|
||||
|
||||
|
|
|
@ -185,22 +185,17 @@ class nsOutlinerContentView : public nsIOutlinerView,
|
|||
|
||||
nsresult ParseProperties(nsIContent* aContent, Property** aProperty);
|
||||
|
||||
void GetSelectElement();
|
||||
|
||||
inline nsresult SetOptionsSelected(PRInt32 aStart, PRInt32 aEnd,
|
||||
PRBool aSelect, PRBool aClear)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
if (!mHasCheckedSelect)
|
||||
GetSelectElement();
|
||||
|
||||
if (mSelectElement) {
|
||||
mIgnoreOptionSelected = PR_TRUE;
|
||||
rv = mSelectElement->SetOptionsSelectedByIndex(aStart, aEnd, aSelect,
|
||||
aClear, PR_FALSE, nsnull);
|
||||
if (mRoot) {
|
||||
nsCOMPtr<nsISelectElement> selectElement = do_QueryInterface(mRoot);
|
||||
if (selectElement)
|
||||
rv = selectElement->SetOptionsSelectedByIndex(aStart, aEnd, aSelect,
|
||||
aClear, PR_FALSE, nsnull);
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -208,14 +203,11 @@ class nsOutlinerContentView : public nsIOutlinerView,
|
|||
nsCOMPtr<nsIOutlinerBoxObject> mBoxObject;
|
||||
nsCOMPtr<nsIOutlinerSelection> mSelection;
|
||||
nsCOMPtr<nsIContent> mRoot;
|
||||
nsCOMPtr<nsISelectElement> mSelectElement;
|
||||
nsIDocument* mDocument; // WEAK
|
||||
nsFixedSizeAllocator mAllocator;
|
||||
nsVoidArray mRows;
|
||||
|
||||
PRPackedBool mHasCheckedSelect;
|
||||
PRPackedBool mUpdateSelection;
|
||||
PRPackedBool mIgnoreOptionSelected;
|
||||
};
|
||||
|
||||
#endif // nsOutlinerContentView_h__
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsOutlinerSelection.h"
|
||||
#include "nsIBoxObject.h"
|
||||
#include "nsIOutlinerBoxObject.h"
|
||||
#include "nsIOutlinerView.h"
|
||||
#include "nsString.h"
|
||||
|
@ -716,8 +717,9 @@ nsOutlinerSelection::FireOnSelectHandler()
|
|||
if (mSuppressed)
|
||||
return NS_OK;
|
||||
|
||||
nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mOutliner);
|
||||
nsCOMPtr<nsIDOMElement> elt;
|
||||
mOutliner->GetOutlinerBody(getter_AddRefs(elt));
|
||||
boxObject->GetElement(getter_AddRefs(elt));
|
||||
|
||||
nsCOMPtr<nsIContent> content(do_QueryInterface(elt));
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
|
@ -747,14 +749,13 @@ nsOutlinerSelection::FireOnSelectHandler()
|
|||
|
||||
PRBool nsOutlinerSelection::SingleSelection()
|
||||
{
|
||||
nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mOutliner);
|
||||
nsCOMPtr<nsIDOMElement> element;
|
||||
mOutliner->GetOutlinerBody(getter_AddRefs(element));
|
||||
nsCOMPtr<nsIContent> content(do_QueryInterface(element));
|
||||
nsCOMPtr<nsIContent> parent;
|
||||
content->GetParent(*getter_AddRefs(parent));
|
||||
boxObject->GetElement(getter_AddRefs(element));
|
||||
nsCOMPtr<nsIContent> content = do_QueryInterface(element);
|
||||
nsAutoString seltype;
|
||||
parent->GetAttr(kNameSpaceID_None, nsXULAtoms::seltype, seltype);
|
||||
if (seltype.EqualsIgnoreCase("single"))
|
||||
content->GetAttr(kNameSpaceID_None, nsXULAtoms::seltype, seltype);
|
||||
if (seltype.Equals(NS_LITERAL_STRING("single")))
|
||||
return PR_TRUE;
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
|
|
@ -126,6 +126,7 @@ interface nsIOutlinerBoxObject : nsISupports
|
|||
void invalidateColumn(in wstring colID);
|
||||
void invalidateRow(in long index);
|
||||
void invalidateCell(in long row, in wstring colID);
|
||||
void invalidatePrimaryCell(in long row);
|
||||
void invalidateRange(in long startIndex, in long endIndex);
|
||||
void invalidateScrollbar();
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ interface nsIOutlinerContentView : nsISupports
|
|||
/**
|
||||
* The element in the DOM which this view uses as root content.
|
||||
*/
|
||||
attribute nsIDOMElement root;
|
||||
readonly attribute nsIDOMElement root;
|
||||
|
||||
/**
|
||||
* Retrieve the content item associated with the specified index.
|
||||
|
|
|
@ -95,24 +95,24 @@ interface nsIOutlinerView : nsISupports
|
|||
* Specifies if there is currently a sort on any column. Used mostly by dragdrop
|
||||
* to affect drop feedback.
|
||||
*/
|
||||
boolean isSorted ( ) ;
|
||||
boolean isSorted();
|
||||
|
||||
/**
|
||||
* Methods used by the drag feedback code to determine if a drag is allowable at
|
||||
* the current location. To get the behavior where drops are only allowed on
|
||||
* items, such as the mailNews folder pane, always return false from |canDropBeforeAfter()|.
|
||||
*/
|
||||
boolean canDropOn ( in long index );
|
||||
boolean canDropBeforeAfter ( in long index, in boolean before );
|
||||
boolean canDropOn (in long index);
|
||||
boolean canDropBeforeAfter (in long index, in boolean before);
|
||||
|
||||
/**
|
||||
* Called when the user drops something on this view. The |orientation| param
|
||||
* specifies before/on/after the given |row|.
|
||||
*/
|
||||
const long inDropBefore = 1;
|
||||
const long inDropOn = 2;
|
||||
const long inDropAfter = 3;
|
||||
void drop ( in long row, in long orientation ) ;
|
||||
const short inDropBefore = 0;
|
||||
const short inDropOn = 1;
|
||||
const short inDropAfter = 2;
|
||||
void drop (in long row, in long orientation);
|
||||
|
||||
/**
|
||||
* Methods used by the outliner to draw vertical lines in the tree.
|
||||
|
|
|
@ -189,6 +189,9 @@ nsOutlinerColumn::nsOutlinerColumn(nsIContent* aColElement, nsIFrame* aFrame)
|
|||
nsCOMPtr<nsIStyleContext> styleContext;
|
||||
aFrame->GetStyleContext(getter_AddRefs(styleContext));
|
||||
|
||||
const nsStyleVisibility* vis =
|
||||
(const nsStyleVisibility*)styleContext->GetStyleData(eStyleStruct_Visibility);
|
||||
|
||||
// Fetch the crop style.
|
||||
mCropStyle = 0;
|
||||
nsAutoString crop;
|
||||
|
@ -199,8 +202,6 @@ nsOutlinerColumn::nsOutlinerColumn(nsIContent* aColElement, nsIFrame* aFrame)
|
|||
mCropStyle = 2;
|
||||
|
||||
if (mCropStyle == 0 || mCropStyle == 2) { // Left or Right
|
||||
const nsStyleVisibility* vis =
|
||||
(const nsStyleVisibility*)styleContext->GetStyleData(eStyleStruct_Visibility);
|
||||
if (vis->mDirection == NS_STYLE_DIRECTION_RTL)
|
||||
mCropStyle = 2 - mCropStyle; // Right becomes left, left becomes right.
|
||||
}
|
||||
|
@ -210,6 +211,10 @@ nsOutlinerColumn::nsOutlinerColumn(nsIContent* aColElement, nsIFrame* aFrame)
|
|||
(const nsStyleText*)styleContext->GetStyleData(eStyleStruct_Text);
|
||||
|
||||
mTextAlignment = textStyle->mTextAlign;
|
||||
if (mTextAlignment == 0 || mTextAlignment == 2) { // Left or Right
|
||||
if (vis->mDirection == NS_STYLE_DIRECTION_RTL)
|
||||
mTextAlignment = 2 - mTextAlignment; // Right becomes left, left becomes right.
|
||||
}
|
||||
|
||||
// Figure out if we're the primary column (that has to have indentation
|
||||
// and twisties drawn.
|
||||
|
@ -297,9 +302,8 @@ NS_INTERFACE_MAP_END_INHERITING(nsLeafFrame)
|
|||
nsOutlinerBodyFrame::nsOutlinerBodyFrame(nsIPresShell* aPresShell)
|
||||
:nsLeafBoxFrame(aPresShell), mPresContext(nsnull), mOutlinerBoxObject(nsnull), mImageCache(nsnull),
|
||||
mColumns(nsnull), mScrollbar(nsnull), mTopRowIndex(0), mRowHeight(0), mIndentation(0), mStringWidth(-1),
|
||||
mDropRow(kIllegalRow), mDropOrient(kNoOrientation), mFocused(PR_FALSE), mColumnsDirty(PR_TRUE), mDropAllowed(PR_FALSE),
|
||||
mAlreadyUndrewDueToScroll(PR_FALSE), mHasFixedRowCount(PR_FALSE), mVerticalOverflow(PR_FALSE),
|
||||
mOpenTimer(nsnull), mOpenTimerRow(-1)
|
||||
mFocused(PR_FALSE), mColumnsDirty(PR_TRUE), mDropAllowed(PR_FALSE), mHasFixedRowCount(PR_FALSE),
|
||||
mVerticalOverflow(PR_FALSE), mDropRow(-1), mDropOrient(-1), mOpenTimer(nsnull), mOpenTimerRow(-1)
|
||||
{
|
||||
NS_NewISupportsArray(getter_AddRefs(mScratchArray));
|
||||
}
|
||||
|
@ -540,25 +544,25 @@ NS_IMETHODIMP nsOutlinerBodyFrame::Reflow(nsIPresContext* aPresContext,
|
|||
// A content model view is always created and hooked up,
|
||||
// unless there is a XULOutlinerBuilder view.
|
||||
|
||||
nsCOMPtr<nsIDOMXULElement> xulele = do_QueryInterface(mContent);
|
||||
nsCOMPtr<nsIContent> parent;
|
||||
mContent->GetParent(*getter_AddRefs(parent));
|
||||
nsCOMPtr<nsIDOMXULElement> xulele = do_QueryInterface(parent);
|
||||
if (xulele) {
|
||||
nsCOMPtr<nsIOutlinerView> view;
|
||||
|
||||
// First, see if there is a XUL outliner builder
|
||||
// associated with the element.
|
||||
// associated with the parent element.
|
||||
nsCOMPtr<nsIXULTemplateBuilder> builder;
|
||||
xulele->GetBuilder(getter_AddRefs(builder));
|
||||
if (builder)
|
||||
view = do_QueryInterface(builder);
|
||||
|
||||
if (!view) {
|
||||
// No outliner builder, create a outliner content view.
|
||||
// No outliner builder, create an outliner content view.
|
||||
nsCOMPtr<nsIOutlinerContentView> contentView;
|
||||
NS_NewOutlinerContentView(getter_AddRefs(contentView));
|
||||
if (contentView) {
|
||||
contentView->SetRoot(xulele);
|
||||
if (contentView)
|
||||
view = do_QueryInterface(contentView);
|
||||
}
|
||||
}
|
||||
|
||||
// Hook up the view.
|
||||
|
@ -639,7 +643,7 @@ NS_IMETHODIMP nsOutlinerBodyFrame::SetView(nsIOutlinerView * aView)
|
|||
nsCOMPtr<nsIOutlinerSelection> sel;
|
||||
mView->GetSelection(getter_AddRefs(sel));
|
||||
if (!sel) {
|
||||
NS_NewOutlinerSelection(this, getter_AddRefs(sel));
|
||||
NS_NewOutlinerSelection(mOutlinerBoxObject, getter_AddRefs(sel));
|
||||
mView->SetSelection(sel);
|
||||
}
|
||||
|
||||
|
@ -742,7 +746,7 @@ NS_IMETHODIMP nsOutlinerBodyFrame::GetPageCount(PRInt32 *_retval)
|
|||
NS_IMETHODIMP nsOutlinerBodyFrame::Invalidate()
|
||||
{
|
||||
if (!mRect.IsEmpty()) {
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, mRect, PR_FALSE);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, mRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -754,7 +758,7 @@ NS_IMETHODIMP nsOutlinerBodyFrame::InvalidateColumn(const PRUnichar *aColID)
|
|||
currCol = currCol->GetNext()) {
|
||||
if (currCol->GetID().Equals(aColID)) {
|
||||
nsRect columnRect(currX, mInnerBox.y, currCol->GetWidth(), mInnerBox.height);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, columnRect, PR_FALSE);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, columnRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
break;
|
||||
}
|
||||
currX += currCol->GetWidth();
|
||||
|
@ -769,9 +773,8 @@ NS_IMETHODIMP nsOutlinerBodyFrame::InvalidateRow(PRInt32 aIndex)
|
|||
return NS_OK;
|
||||
|
||||
nsRect rowRect(mInnerBox.x, mInnerBox.y+mRowHeight*(aIndex-mTopRowIndex), mInnerBox.width, mRowHeight);
|
||||
if (!rowRect.IsEmpty()) {
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, rowRect, PR_FALSE);
|
||||
}
|
||||
if (!rowRect.IsEmpty())
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, rowRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -787,7 +790,27 @@ NS_IMETHODIMP nsOutlinerBodyFrame::InvalidateCell(PRInt32 aIndex, const PRUnicha
|
|||
|
||||
if (currCol->GetID().Equals(aColID)) {
|
||||
nsRect cellRect(currX, yPos, currCol->GetWidth(), mRowHeight);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, cellRect, PR_FALSE);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, cellRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
break;
|
||||
}
|
||||
currX += currCol->GetWidth();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsOutlinerBodyFrame::InvalidatePrimaryCell(PRInt32 aIndex)
|
||||
{
|
||||
if (aIndex < mTopRowIndex || aIndex > mTopRowIndex + mPageCount + 1)
|
||||
return NS_OK;
|
||||
|
||||
nscoord currX = mInnerBox.x;
|
||||
nscoord yPos = mInnerBox.y+mRowHeight*(aIndex-mTopRowIndex);
|
||||
for (nsOutlinerColumn* currCol = mColumns; currCol && currX < mInnerBox.x+mInnerBox.width;
|
||||
currCol = currCol->GetNext()) {
|
||||
|
||||
if (currCol->IsPrimary()) {
|
||||
nsRect cellRect(currX, yPos, currCol->GetWidth(), mRowHeight);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, cellRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
break;
|
||||
}
|
||||
currX += currCol->GetWidth();
|
||||
|
@ -812,7 +835,7 @@ NS_IMETHODIMP nsOutlinerBodyFrame::InvalidateRange(PRInt32 aStart, PRInt32 aEnd)
|
|||
aEnd = last;
|
||||
|
||||
nsRect rangeRect(mInnerBox.x, mInnerBox.y+mRowHeight*(aStart-mTopRowIndex), mInnerBox.width, mRowHeight*(aEnd-aStart+1));
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, rangeRect, PR_FALSE);
|
||||
nsLeafBoxFrame::Invalidate(mPresContext, rangeRect, mDragSession ? PR_TRUE : PR_FALSE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -858,9 +881,16 @@ nsresult nsOutlinerBodyFrame::CheckVerticalOverflow()
|
|||
event->nativeMsg = nsnull;
|
||||
event->message = mVerticalOverflow ? NS_SCROLLPORT_OVERFLOW : NS_SCROLLPORT_UNDERFLOW;
|
||||
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
mPresContext->GetShell(getter_AddRefs(shell));
|
||||
shell->PostDOMEvent(mContent, event);
|
||||
if (mState & NS_FRAME_IN_REFLOW) {
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
mPresContext->GetShell(getter_AddRefs(shell));
|
||||
shell->PostDOMEvent(mContent, event);
|
||||
}
|
||||
else {
|
||||
nsEventStatus status = nsEventStatus_eIgnore;
|
||||
mContent->HandleDOMEvent(mPresContext, event, nsnull, NS_EVENT_FLAG_INIT, &status);
|
||||
delete event;
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -910,20 +940,16 @@ NS_IMETHODIMP nsOutlinerBodyFrame::InvalidateScrollbar()
|
|||
}
|
||||
|
||||
|
||||
//
|
||||
// AdjustEventCoordsToBoxCoordSpace
|
||||
//
|
||||
// Takes client x/y in pixels, converts them to twips, and massages them to be
|
||||
// in our coordinate system.
|
||||
//
|
||||
void
|
||||
nsOutlinerBodyFrame :: AdjustEventCoordsToBoxCoordSpace ( PRInt32 inX, PRInt32 inY, PRInt32* outX, PRInt32* outY )
|
||||
nsOutlinerBodyFrame::AdjustEventCoordsToBoxCoordSpace (PRInt32 aX, PRInt32 aY, PRInt32* aResultX, PRInt32* aResultY)
|
||||
{
|
||||
// Convert our x and y coords to twips.
|
||||
float pixelsToTwips = 0.0;
|
||||
mPresContext->GetPixelsToTwips(&pixelsToTwips);
|
||||
inX = NSToIntRound(inX * pixelsToTwips);
|
||||
inY = NSToIntRound(inY * pixelsToTwips);
|
||||
aX = NSToIntRound(aX * pixelsToTwips);
|
||||
aY = NSToIntRound(aY * pixelsToTwips);
|
||||
|
||||
// Get our box object.
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
|
@ -962,16 +988,15 @@ nsOutlinerBodyFrame :: AdjustEventCoordsToBoxCoordSpace ( PRInt32 inX, PRInt32 i
|
|||
}
|
||||
|
||||
// Adjust into our coordinate space.
|
||||
x = inX-x;
|
||||
y = inY-y;
|
||||
x = aX-x;
|
||||
y = aY-y;
|
||||
|
||||
// Adjust y by the inner box y, so that we're in the inner box's
|
||||
// coordinate space.
|
||||
y += mInnerBox.y;
|
||||
|
||||
*outX = x;
|
||||
*outY = y;
|
||||
|
||||
*aResultX = x;
|
||||
*aResultY = y;
|
||||
} // AdjustEventCoordsToBoxCoordSpace
|
||||
|
||||
|
||||
|
@ -1516,6 +1541,12 @@ nsOutlinerBodyFrame::PrefillPropertyArray(PRInt32 aRowIndex, nsOutlinerColumn* a
|
|||
if (mFocused)
|
||||
mScratchArray->AppendElement(nsXULAtoms::focus);
|
||||
|
||||
// sort
|
||||
PRBool sorted = PR_FALSE;
|
||||
mView->IsSorted(&sorted);
|
||||
if (sorted)
|
||||
mScratchArray->AppendElement(nsXULAtoms::sorted);
|
||||
|
||||
if (aRowIndex != -1) {
|
||||
nsCOMPtr<nsIOutlinerSelection> selection;
|
||||
mView->GetSelection(getter_AddRefs(selection));
|
||||
|
@ -1551,12 +1582,25 @@ nsOutlinerBodyFrame::PrefillPropertyArray(PRInt32 aRowIndex, nsOutlinerColumn* a
|
|||
else {
|
||||
mScratchArray->AppendElement(nsXULAtoms::leaf);
|
||||
}
|
||||
|
||||
// drop feedback
|
||||
if (mDropAllowed && mDropRow == aRowIndex) {
|
||||
if (mDropOrient == nsIOutlinerView::inDropBefore)
|
||||
mScratchArray->AppendElement(nsXULAtoms::dropBefore);
|
||||
else if (mDropOrient == nsIOutlinerView::inDropOn)
|
||||
mScratchArray->AppendElement(nsXULAtoms::drop);
|
||||
else if (mDropOrient == nsIOutlinerView::inDropAfter)
|
||||
mScratchArray->AppendElement(nsXULAtoms::dropAfter);
|
||||
}
|
||||
}
|
||||
|
||||
if (aCol) {
|
||||
nsCOMPtr<nsIAtom> colID;
|
||||
aCol->GetIDAtom(getter_AddRefs(colID));
|
||||
mScratchArray->AppendElement(colID);
|
||||
|
||||
if (aCol->IsPrimary())
|
||||
mScratchArray->AppendElement(nsXULAtoms::primary);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1655,10 +1699,18 @@ nsRect nsOutlinerBodyFrame::GetImageSize(PRInt32 aRowIndex, const PRUnichar* aCo
|
|||
|
||||
const nsStylePosition* myPosition = (const nsStylePosition*)
|
||||
aStyleContext->GetStyleData(eStyleStruct_Position);
|
||||
const nsStyleList* myList = (const nsStyleList*)
|
||||
aStyleContext->GetStyleData(eStyleStruct_List);
|
||||
|
||||
r.x += myList->mImageRegion.x;
|
||||
r.y += myList->mImageRegion.y;
|
||||
|
||||
if (myPosition->mWidth.GetUnit() == eStyleUnit_Coord) {
|
||||
PRInt32 val = myPosition->mWidth.GetCoordValue();
|
||||
r.width += val;
|
||||
}
|
||||
else if (myList->mImageRegion.width > 0)
|
||||
r.width += myList->mImageRegion.width;
|
||||
else
|
||||
needWidth = PR_TRUE;
|
||||
|
||||
|
@ -1666,15 +1718,19 @@ nsRect nsOutlinerBodyFrame::GetImageSize(PRInt32 aRowIndex, const PRUnichar* aCo
|
|||
PRInt32 val = myPosition->mHeight.GetCoordValue();
|
||||
r.height += val;
|
||||
}
|
||||
else if (myList->mImageRegion.height > 0)
|
||||
r.height += myList->mImageRegion.height;
|
||||
else
|
||||
needHeight = PR_TRUE;
|
||||
|
||||
if (needWidth || needHeight) {
|
||||
#ifdef USE_IMG2
|
||||
nsCOMPtr<imgIContainer> image;
|
||||
GetImage(aRowIndex, aColID, aStyleContext, getter_AddRefs(image));
|
||||
// Get the natural image size.
|
||||
if (image) {
|
||||
// We have to load image even though we already have a size.
|
||||
// Don't change this, otherwise things start to go crazy.
|
||||
nsCOMPtr<imgIContainer> image;
|
||||
GetImage(aRowIndex, aColID, aStyleContext, getter_AddRefs(image));
|
||||
if (image) {
|
||||
if (needWidth || needHeight) {
|
||||
// Get the natural image size.
|
||||
float p2t;
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
|
||||
|
@ -2375,6 +2431,134 @@ NS_IMETHODIMP nsOutlinerBodyFrame::PaintText(int aRowIndex,
|
|||
textMarginData->GetMargin(textMargin);
|
||||
textRect.Deflate(textMargin);
|
||||
|
||||
// Compute our text size.
|
||||
const nsStyleFont* fontStyle = (const nsStyleFont*)textContext->GetStyleData(eStyleStruct_Font);
|
||||
|
||||
nsCOMPtr<nsIDeviceContext> deviceContext;
|
||||
aPresContext->GetDeviceContext(getter_AddRefs(deviceContext));
|
||||
|
||||
nsCOMPtr<nsIFontMetrics> fontMet;
|
||||
deviceContext->GetMetricsFor(fontStyle->mFont, *getter_AddRefs(fontMet));
|
||||
nscoord height, baseline;
|
||||
fontMet->GetHeight(height);
|
||||
fontMet->GetMaxAscent(baseline);
|
||||
|
||||
// Center the text. XXX Obey vertical-align style prop?
|
||||
if (height < textRect.height) {
|
||||
textRect.y += (textRect.height - height)/2;
|
||||
textRect.height = height;
|
||||
}
|
||||
|
||||
// Set our font.
|
||||
aRenderingContext.SetFont(fontMet);
|
||||
|
||||
nscoord width;
|
||||
aRenderingContext.GetWidth(text, width);
|
||||
|
||||
if (width > textRect.width) {
|
||||
// See if the width is even smaller than the ellipsis
|
||||
// If so, clear the text completely.
|
||||
nscoord ellipsisWidth;
|
||||
aRenderingContext.GetWidth(ELLIPSIS, ellipsisWidth);
|
||||
|
||||
nscoord width = textRect.width;
|
||||
if (ellipsisWidth > width)
|
||||
text.SetLength(0);
|
||||
else if (ellipsisWidth == width)
|
||||
text.Assign(NS_LITERAL_STRING(ELLIPSIS));
|
||||
else {
|
||||
// We will be drawing an ellipsis, thank you very much.
|
||||
// Subtract out the required width of the ellipsis.
|
||||
// This is the total remaining width we have to play with.
|
||||
width -= ellipsisWidth;
|
||||
|
||||
// Now we crop.
|
||||
switch (aColumn->GetCropStyle()) {
|
||||
default:
|
||||
case 0: {
|
||||
// Crop right.
|
||||
nscoord cwidth;
|
||||
nscoord twidth = 0;
|
||||
int length = text.Length();
|
||||
int i;
|
||||
for (i = 0; i < length; ++i) {
|
||||
PRUnichar ch = text[i];
|
||||
aRenderingContext.GetWidth(ch,cwidth);
|
||||
if (twidth + cwidth > width)
|
||||
break;
|
||||
twidth += cwidth;
|
||||
}
|
||||
text.Truncate(i);
|
||||
text += NS_LITERAL_STRING(ELLIPSIS);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: {
|
||||
// Crop left.
|
||||
nscoord cwidth;
|
||||
nscoord twidth = 0;
|
||||
int length = text.Length();
|
||||
int i;
|
||||
for (i=length-1; i >= 0; --i) {
|
||||
PRUnichar ch = text[i];
|
||||
aRenderingContext.GetWidth(ch,cwidth);
|
||||
if (twidth + cwidth > width)
|
||||
break;
|
||||
twidth += cwidth;
|
||||
}
|
||||
|
||||
nsAutoString copy;
|
||||
text.Right(copy, length-1-i);
|
||||
text.Assign(NS_LITERAL_STRING(ELLIPSIS));
|
||||
text += copy;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
{
|
||||
// Crop center.
|
||||
nsAutoString leftStr, rightStr;
|
||||
nscoord cwidth, twidth = 0;
|
||||
int length = text.Length();
|
||||
int rightPos = length - 1;
|
||||
for (int leftPos = 0; leftPos < rightPos; ++leftPos) {
|
||||
PRUnichar ch = text[leftPos];
|
||||
aRenderingContext.GetWidth(ch, cwidth);
|
||||
twidth += cwidth;
|
||||
if (twidth > width)
|
||||
break;
|
||||
leftStr.Append(ch);
|
||||
|
||||
ch = text[rightPos];
|
||||
aRenderingContext.GetWidth(ch, cwidth);
|
||||
twidth += cwidth;
|
||||
if (twidth > width)
|
||||
break;
|
||||
rightStr.Insert(ch, 0);
|
||||
--rightPos;
|
||||
}
|
||||
text = leftStr + NS_LITERAL_STRING(ELLIPSIS) + rightStr;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
switch (aColumn->GetTextAlignment()) {
|
||||
case NS_STYLE_TEXT_ALIGN_RIGHT: {
|
||||
textRect.x += textRect.width - width;
|
||||
}
|
||||
break;
|
||||
case NS_STYLE_TEXT_ALIGN_CENTER: {
|
||||
textRect.x += (textRect.width - width) / 2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
aRenderingContext.GetWidth(text, width);
|
||||
textRect.width = width;
|
||||
|
||||
// If the layer is the background layer, we must paint our borders and background for our
|
||||
// text rect.
|
||||
if (NS_FRAME_PAINT_LAYER_BACKGROUND == aWhichLayer)
|
||||
|
@ -2384,125 +2568,28 @@ NS_IMETHODIMP nsOutlinerBodyFrame::PaintText(int aRowIndex,
|
|||
// Adjust the rect for its border and padding.
|
||||
AdjustForBorderPadding(textContext, textRect);
|
||||
|
||||
// Compute our text size.
|
||||
const nsStyleFont* fontStyle = (const nsStyleFont*)textContext->GetStyleData(eStyleStruct_Font);
|
||||
|
||||
nsCOMPtr<nsIDeviceContext> deviceContext;
|
||||
aPresContext->GetDeviceContext(getter_AddRefs(deviceContext));
|
||||
|
||||
nsCOMPtr<nsIFontMetrics> fontMet;
|
||||
deviceContext->GetMetricsFor(fontStyle->mFont, *getter_AddRefs(fontMet));
|
||||
nscoord height, baseline;
|
||||
fontMet->GetHeight(height);
|
||||
fontMet->GetMaxAscent(baseline);
|
||||
|
||||
// Center the text. XXX Obey vertical-align style prop?
|
||||
if (height < textRect.height) {
|
||||
textRect.y += (textRect.height - height)/2;
|
||||
textRect.height = height;
|
||||
}
|
||||
|
||||
// Set our font.
|
||||
aRenderingContext.SetFont(fontMet);
|
||||
|
||||
nscoord width;
|
||||
aRenderingContext.GetWidth(text, width);
|
||||
|
||||
if (width > textRect.width) {
|
||||
// See if the width is even smaller than the ellipsis
|
||||
// If so, clear the text completely.
|
||||
nscoord ellipsisWidth;
|
||||
aRenderingContext.GetWidth(ELLIPSIS, ellipsisWidth);
|
||||
|
||||
nscoord width = textRect.width;
|
||||
if (ellipsisWidth > width)
|
||||
text.SetLength(0);
|
||||
else if (ellipsisWidth == width)
|
||||
text.Assign(NS_LITERAL_STRING(ELLIPSIS));
|
||||
else {
|
||||
// We will be drawing an ellipsis, thank you very much.
|
||||
// Subtract out the required width of the ellipsis.
|
||||
// This is the total remaining width we have to play with.
|
||||
width -= ellipsisWidth;
|
||||
|
||||
// Now we crop.
|
||||
switch (aColumn->GetCropStyle()) {
|
||||
default:
|
||||
case 0: {
|
||||
// Crop right.
|
||||
nscoord cwidth;
|
||||
nscoord twidth = 0;
|
||||
int length = text.Length();
|
||||
int i;
|
||||
for (i = 0; i < length; ++i) {
|
||||
PRUnichar ch = text[i];
|
||||
aRenderingContext.GetWidth(ch,cwidth);
|
||||
if (twidth + cwidth > width)
|
||||
break;
|
||||
twidth += cwidth;
|
||||
}
|
||||
|
||||
text.Truncate(i);
|
||||
text += NS_LITERAL_STRING(ELLIPSIS);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: {
|
||||
// Crop left.
|
||||
nscoord cwidth;
|
||||
nscoord twidth = 0;
|
||||
int length = text.Length();
|
||||
int i;
|
||||
for (i=length-1; i >= 0; --i) {
|
||||
PRUnichar ch = text[i];
|
||||
aRenderingContext.GetWidth(ch,cwidth);
|
||||
if (twidth + cwidth > width)
|
||||
break;
|
||||
|
||||
twidth += cwidth;
|
||||
}
|
||||
|
||||
nsAutoString copy;
|
||||
text.Right(copy, length-1-i);
|
||||
text.Assign(NS_LITERAL_STRING(ELLIPSIS));
|
||||
text += copy;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
{
|
||||
// Crop center.
|
||||
nsAutoString leftStr, rightStr;
|
||||
nscoord cwidth, twidth = 0;
|
||||
int length = text.Length();
|
||||
int rightPos = length - 1;
|
||||
for (int leftPos = 0; leftPos < rightPos; ++leftPos) {
|
||||
PRUnichar ch = text[leftPos];
|
||||
aRenderingContext.GetWidth(ch, cwidth);
|
||||
twidth += cwidth;
|
||||
if (twidth > width)
|
||||
break;
|
||||
leftStr.Append(ch);
|
||||
|
||||
ch = text[rightPos];
|
||||
aRenderingContext.GetWidth(ch, cwidth);
|
||||
twidth += cwidth;
|
||||
if (twidth > width)
|
||||
break;
|
||||
rightStr.Insert(ch, 0);
|
||||
--rightPos;
|
||||
}
|
||||
text = leftStr + NS_LITERAL_STRING(ELLIPSIS) + rightStr;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set our color.
|
||||
const nsStyleColor* colorStyle = (const nsStyleColor*)textContext->GetStyleData(eStyleStruct_Color);
|
||||
aRenderingContext.SetColor(colorStyle->mColor);
|
||||
|
||||
// Draw decorations.
|
||||
const nsStyleTextReset* textStyle = (const nsStyleTextReset*)textContext->GetStyleData(eStyleStruct_TextReset);
|
||||
PRUint8 decorations = textStyle->mTextDecoration;
|
||||
|
||||
nscoord offset;
|
||||
nscoord size;
|
||||
if (decorations & (NS_FONT_DECORATION_OVERLINE | NS_FONT_DECORATION_UNDERLINE)) {
|
||||
fontMet->GetUnderline(offset, size);
|
||||
if (decorations & NS_FONT_DECORATION_OVERLINE)
|
||||
aRenderingContext.FillRect(textRect.x, textRect.y, width, size);
|
||||
if (decorations & NS_FONT_DECORATION_UNDERLINE)
|
||||
aRenderingContext.FillRect(textRect.x, textRect.y + baseline - offset, width, size);
|
||||
}
|
||||
if (decorations & NS_FONT_DECORATION_LINE_THROUGH) {
|
||||
fontMet->GetStrikeout(offset, size);
|
||||
aRenderingContext.FillRect(textRect.x, textRect.y + baseline - offset, width, size);
|
||||
}
|
||||
|
||||
aRenderingContext.DrawString(text, textRect.x, textRect.y + baseline);
|
||||
}
|
||||
|
||||
|
@ -2561,18 +2648,6 @@ NS_IMETHODIMP nsOutlinerBodyFrame::ScrollToRow(PRInt32 aRow)
|
|||
ScrollInternal(aRow);
|
||||
UpdateScrollbar();
|
||||
|
||||
#ifdef XP_MAC
|
||||
// mac can't process the event loop during a drag, so if we're dragging,
|
||||
// grab the scroll widget and make it paint synchronously. This is
|
||||
// sorta slow (having to paint the entire tree), but it works.
|
||||
if ( mDragSession ) {
|
||||
nsCOMPtr<nsIWidget> scrollWidget;
|
||||
mScrollbar->GetWindow(mPresContext, getter_AddRefs(scrollWidget));
|
||||
if ( scrollWidget )
|
||||
scrollWidget->Invalidate(PR_TRUE);
|
||||
}
|
||||
#endif
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -2650,9 +2725,16 @@ nsOutlinerBodyFrame::ScrollInternal(PRInt32 aRow)
|
|||
PRInt32 absDelta = delta > 0 ? delta : -delta;
|
||||
if (hasBackground || absDelta*mRowHeight >= mRect.height)
|
||||
Invalidate();
|
||||
else if (mOutlinerWidget)
|
||||
else if (mOutlinerWidget) {
|
||||
mOutlinerWidget->Scroll(0, -delta*rowHeightAsPixels, nsnull);
|
||||
|
||||
#ifdef XP_MAC || defined(XP_MACOSX)
|
||||
// mac can't process the event loop during a drag, so if we're dragging,
|
||||
// update outliner widget synchronously.
|
||||
if (mDragSession)
|
||||
mOutlinerWidget->Update();
|
||||
#endif
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -2834,39 +2916,27 @@ NS_IMETHODIMP nsOutlinerBodyFrame::ClearStyleAndImageCaches()
|
|||
#pragma mark -
|
||||
#endif
|
||||
|
||||
|
||||
//
|
||||
// OnDragDrop
|
||||
//
|
||||
// Tell the view where the drop happened
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerBodyFrame :: OnDragDrop ( nsIDOMEvent* inEvent )
|
||||
nsOutlinerBodyFrame::OnDragDrop (nsIDOMEvent* aEvent)
|
||||
{
|
||||
mView->Drop ( mDropRow, mDropOrient );
|
||||
mView->Drop (mDropRow, mDropOrient);
|
||||
return NS_OK;
|
||||
|
||||
} // OnDragDrop
|
||||
|
||||
|
||||
//
|
||||
// OnDragExit
|
||||
//
|
||||
// Clear out all our tracking vars. If we were drawing feedback, undraw it
|
||||
//
|
||||
// Clear out all our tracking vars.
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerBodyFrame :: OnDragExit ( nsIDOMEvent* inEvent )
|
||||
nsOutlinerBodyFrame::OnDragExit(nsIDOMEvent* aEvent)
|
||||
{
|
||||
if ( mDropAllowed && !mAlreadyUndrewDueToScroll )
|
||||
DrawDropFeedback ( mDropRow, mDropOrient, kUndrawFeedback ) ;
|
||||
|
||||
mDropRow = kIllegalRow;
|
||||
mDropOrient = kNoOrientation;
|
||||
mDropAllowed = PR_FALSE;
|
||||
mAlreadyUndrewDueToScroll = PR_FALSE;
|
||||
|
||||
if (mDropAllowed) {
|
||||
mDropAllowed = PR_FALSE;
|
||||
InvalidatePrimaryCell(mDropRow);
|
||||
}
|
||||
else
|
||||
mDropAllowed = PR_FALSE;
|
||||
mDropRow = -1;
|
||||
mDropOrient = -1;
|
||||
mDragSession = nsnull;
|
||||
mRenderingContext = nsnull;
|
||||
|
||||
if (mOpenTimer) {
|
||||
mOpenTimer->Cancel();
|
||||
|
@ -2875,55 +2945,43 @@ nsOutlinerBodyFrame :: OnDragExit ( nsIDOMEvent* inEvent )
|
|||
}
|
||||
|
||||
return NS_OK;
|
||||
|
||||
} // OnDragExit
|
||||
|
||||
|
||||
//
|
||||
// OnDragOver
|
||||
//
|
||||
// The mouse is hovering over this outliner. If we determine things are different from the
|
||||
// last time, undraw feedback at the old position, query the view to see if the current location is
|
||||
// droppable, and then draw feedback at the new location if it is. The mouse may or may
|
||||
// last time, invalidate primary cell at the old position, query the view to see if the current location is
|
||||
// droppable, and then invalidate primary cell at the new location if it is. The mouse may or may
|
||||
// not have changed position from the last time we were called, so optimize out a lot of
|
||||
// the extra notifications by checking if anything changed first.
|
||||
//
|
||||
// For drop feedback we use drop, dropBefore and dropAfter property.
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerBodyFrame :: OnDragOver ( nsIDOMEvent* inEvent )
|
||||
nsOutlinerBodyFrame::OnDragOver(nsIDOMEvent* aEvent)
|
||||
{
|
||||
// while we're here, handle tracking of scrolling during a drag. There is a little craziness
|
||||
// here as we turn off tracking of feedback during the scroll. When we first start scrolling,
|
||||
// we explicitly undraw the previous feedback, then set |mAlreadyUndrewDueToScroll| to
|
||||
// alert other places not to undraw again later (we're using XOR, so undrawing twice
|
||||
// is bad). Below, we'll clear this member the next time we try to undraw the regular feedback.
|
||||
// while we're here, handle tracking of scrolling during a drag.
|
||||
PRBool scrollUp = PR_FALSE;
|
||||
if ( IsInDragScrollRegion(inEvent, &scrollUp) ) {
|
||||
if ( mDropAllowed && !mAlreadyUndrewDueToScroll )
|
||||
DrawDropFeedback ( mDropRow, mDropOrient, kUndrawFeedback ); // undraw it at old loc, if we were drawing
|
||||
mAlreadyUndrewDueToScroll = PR_TRUE;
|
||||
ScrollByLines ( scrollUp ? -1 : 1);
|
||||
if (IsInDragScrollRegion(aEvent, &scrollUp)) {
|
||||
if (mDropAllowed) {
|
||||
// invalidate primary cell at old location.
|
||||
mDropAllowed = PR_FALSE;
|
||||
InvalidatePrimaryCell(mDropRow);
|
||||
}
|
||||
ScrollByLines(scrollUp ? -1 : 1);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// compute the row mouse is over and the above/below/on state. Below we'll use this
|
||||
// to see if anything changed.
|
||||
PRInt32 newRow = kIllegalRow;
|
||||
DropOrientation newOrient = kNoOrientation;
|
||||
ComputeDropPosition ( inEvent, &newRow, &newOrient );
|
||||
PRInt32 newRow = -1;
|
||||
PRInt16 newOrient = -1;
|
||||
ComputeDropPosition(aEvent, &newRow, &newOrient);
|
||||
|
||||
// if changed from last time, undraw it at the old location and if allowed,
|
||||
// draw it at the new location. If nothing changed, just bail.
|
||||
if ( newRow != mDropRow || newOrient != mDropOrient ) {
|
||||
|
||||
// undraw feedback at old loc. If we are coming off a scroll,
|
||||
// don't undraw the old (we already did that), but reset us so that
|
||||
// we're back in the normal case.
|
||||
if ( !mAlreadyUndrewDueToScroll ) {
|
||||
if ( mDropAllowed )
|
||||
DrawDropFeedback ( mDropRow, mDropOrient, kUndrawFeedback );
|
||||
// if changed from last time, invalidate primary cell at the old location and if allowed,
|
||||
// invalidate primary cell at the new location. If nothing changed, just bail.
|
||||
if (newRow != mDropRow || newOrient != mDropOrient) {
|
||||
// Invalidate row at the old location.
|
||||
if (mDropAllowed) {
|
||||
mDropAllowed = PR_FALSE;
|
||||
InvalidatePrimaryCell(mDropRow);
|
||||
}
|
||||
else
|
||||
mAlreadyUndrewDueToScroll = PR_FALSE;
|
||||
|
||||
if (mOpenTimer && newRow != mOpenTimerRow) {
|
||||
// timer is active but for a different row than the current one - kill it
|
||||
|
@ -2936,10 +2994,8 @@ nsOutlinerBodyFrame :: OnDragOver ( nsIDOMEvent* inEvent )
|
|||
// for next time.
|
||||
mDropRow = newRow;
|
||||
mDropOrient = newOrient;
|
||||
|
||||
mDropAllowed = PR_FALSE;
|
||||
|
||||
|
||||
if (mDropRow >= 0) {
|
||||
if (!mOpenTimer) {
|
||||
// either there wasn't a timer running or it was just killed above.
|
||||
|
@ -2959,14 +3015,15 @@ nsOutlinerBodyFrame :: OnDragOver ( nsIDOMEvent* inEvent )
|
|||
}
|
||||
|
||||
PRBool canDropAtNewLocation = PR_FALSE;
|
||||
if ( mDropOrient == kOnRow )
|
||||
mView->CanDropOn ( mDropRow, &canDropAtNewLocation );
|
||||
if (mDropOrient == nsIOutlinerView::inDropOn)
|
||||
mView->CanDropOn(mDropRow, &canDropAtNewLocation);
|
||||
else
|
||||
mView->CanDropBeforeAfter ( mDropRow, mDropOrient == kBeforeRow ? PR_TRUE : PR_FALSE, &canDropAtNewLocation );
|
||||
mView->CanDropBeforeAfter (mDropRow, mDropOrient == nsIOutlinerView::inDropBefore ? PR_TRUE : PR_FALSE, &canDropAtNewLocation);
|
||||
|
||||
if ( canDropAtNewLocation ) {
|
||||
DrawDropFeedback ( mDropRow, mDropOrient, kDrawFeedback ); // draw it at old loc, if we are allowed
|
||||
if (canDropAtNewLocation) {
|
||||
// Invalidate row at the new location/
|
||||
mDropAllowed = canDropAtNewLocation;
|
||||
InvalidatePrimaryCell(mDropRow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2977,86 +3034,8 @@ nsOutlinerBodyFrame :: OnDragOver ( nsIDOMEvent* inEvent )
|
|||
mDragSession->SetCanDrop(PR_TRUE);
|
||||
|
||||
return NS_OK;
|
||||
|
||||
} // OnDragOver
|
||||
|
||||
|
||||
//
|
||||
// DrawDropFeedback
|
||||
//
|
||||
// Takes care of actually drawing the correct feedback. |inDrawFeedback| tells us whether
|
||||
// we're drawing or undrawing (removing/clearing) the feedback for the given row.
|
||||
//
|
||||
// XXX Need to be able to make line color respect style
|
||||
//
|
||||
void
|
||||
nsOutlinerBodyFrame :: DrawDropFeedback ( PRInt32 inDropRow, DropOrientation inDropOrient, PRBool inDrawFeedback )
|
||||
{
|
||||
// call appropriate routine (insert, container, etc) based on |inDropOrient| and pass in |inDrawFeedback|
|
||||
float pixelsToTwips = 0.0;
|
||||
mPresContext->GetPixelsToTwips ( &pixelsToTwips );
|
||||
|
||||
#if NOT_YET_WORKING
|
||||
// feedback will differ depending on if we're sorted or not -- leaving this around
|
||||
// for later.
|
||||
if ( viewSorted ) {
|
||||
PRInt32 penSize = NSToIntRound(1*pixelsToTwips); // use a 1 pixel wide pen
|
||||
|
||||
// draw outline rectangle made of 4 rects (gfx can't just frame a rectangle). The
|
||||
// rects can't overlap because we're XORing.
|
||||
mRenderingContext->InvertRect ( 0, 0, mRect.width, penSize ); // top
|
||||
mRenderingContext->InvertRect ( 0, penSize, penSize, mRect.height ); // left
|
||||
mRenderingContext->InvertRect ( mRect.width - penSize, penSize, penSize, mRect.height ); // right
|
||||
mRenderingContext->InvertRect ( penSize, mRect.height - penSize,
|
||||
mRect.width - 2*penSize, penSize ); // bottom
|
||||
}
|
||||
#endif
|
||||
|
||||
nsOutlinerColumn* primaryCol = nsnull;
|
||||
for (nsOutlinerColumn* currCol = mColumns; currCol; currCol = currCol->GetNext()) {
|
||||
if ( currCol->IsPrimary() ) {
|
||||
primaryCol = currCol;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( !primaryCol )
|
||||
return;
|
||||
|
||||
if ( inDropOrient == kOnRow ) {
|
||||
// drawing "on" a row. Invert the image and text in the primary column.
|
||||
PRInt32 x, y, width, height;
|
||||
GetCoordsForCellItem ( inDropRow, primaryCol->GetID().get(), NS_LITERAL_STRING("image").get(),
|
||||
&x, &y, &width, &height );
|
||||
mRenderingContext->InvertRect ( NSToIntRound(x*pixelsToTwips), NSToIntRound(y*pixelsToTwips),
|
||||
NSToIntRound(width*pixelsToTwips), NSToIntRound(height*pixelsToTwips) );
|
||||
GetCoordsForCellItem ( inDropRow, primaryCol->GetID().get(), NS_LITERAL_STRING("text").get(),
|
||||
&x, &y, &width, &height );
|
||||
mRenderingContext->InvertRect ( NSToIntRound(x*pixelsToTwips), NSToIntRound(y*pixelsToTwips),
|
||||
NSToIntRound(width*pixelsToTwips), NSToIntRound(height*pixelsToTwips) );
|
||||
}
|
||||
else {
|
||||
// drawing between rows, find the X/Y to draw a 2 pixel line indented 5 pixels
|
||||
// from the left of the image in the primary column.
|
||||
PRInt32 whereToDrawY = mRowHeight * (inDropRow - mTopRowIndex);
|
||||
if ( inDropOrient == kAfterRow )
|
||||
whereToDrawY += mRowHeight;
|
||||
|
||||
PRInt32 whereToDrawX = 0;
|
||||
PRInt32 y, width, height;
|
||||
GetCoordsForCellItem ( inDropRow, primaryCol->GetID().get(), NS_LITERAL_STRING("image").get(),
|
||||
&whereToDrawX, &y, &width, &height );
|
||||
whereToDrawX += 5; // indent 5 pixels from left of image
|
||||
|
||||
mRenderingContext->InvertRect ( NSToIntRound(whereToDrawX*pixelsToTwips),
|
||||
whereToDrawY, NSToIntRound(25*pixelsToTwips), NSToIntRound(2*pixelsToTwips) );
|
||||
}
|
||||
|
||||
} // DrawDropFeedback
|
||||
|
||||
|
||||
//
|
||||
// ComputeDropPosition
|
||||
//
|
||||
// Given a dom event, figure out which row in the tree the mouse is over
|
||||
// and if we should drop before/after/on that row. Doesn't query the content
|
||||
// about if the drag is allowable, that's done elsewhere.
|
||||
|
@ -3067,121 +3046,99 @@ nsOutlinerBodyFrame :: DrawDropFeedback ( PRInt32 inDropRow, DropOrientation inD
|
|||
//
|
||||
// For non-containers, if the mouse is in the top 50% of the row, the drop is
|
||||
// _before_ and the bottom 50% _after_
|
||||
//
|
||||
void
|
||||
nsOutlinerBodyFrame :: ComputeDropPosition ( nsIDOMEvent* inEvent, PRInt32* outRow, DropOrientation* outOrient )
|
||||
nsOutlinerBodyFrame::ComputeDropPosition(nsIDOMEvent* aEvent, PRInt32* aRow, PRInt16* aOrient)
|
||||
{
|
||||
nsCOMPtr<nsIDOMMouseEvent> mouseEvent ( do_QueryInterface(inEvent) );
|
||||
if ( mouseEvent ) {
|
||||
nsCOMPtr<nsIDOMMouseEvent> mouseEvent (do_QueryInterface(aEvent));
|
||||
if (mouseEvent) {
|
||||
PRInt32 x = 0, y = 0;
|
||||
mouseEvent->GetClientX(&x); mouseEvent->GetClientY(&y);
|
||||
|
||||
nsXPIDLString colID, child;
|
||||
GetCellAt ( x, y, outRow, getter_Copies(colID), getter_Copies(child) );
|
||||
if (*outRow == -1) {
|
||||
*outOrient = kNoOrientation;
|
||||
GetCellAt (x, y, aRow, getter_Copies(colID), getter_Copies(child));
|
||||
if (*aRow == -1) {
|
||||
*aOrient = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
// Compute the top/bottom of the row in question. We need to convert
|
||||
// our y coord to twips since |mRowHeight| is in twips.
|
||||
PRInt32 yTwips, xTwips;
|
||||
AdjustEventCoordsToBoxCoordSpace ( x, y, &xTwips, &yTwips );
|
||||
PRInt32 rowTop = mRowHeight * (*outRow - mTopRowIndex);
|
||||
PRInt32 yOffset = yTwips - rowTop;
|
||||
AdjustEventCoordsToBoxCoordSpace (x, y, &xTwips, &yTwips);
|
||||
PRInt32 yOffset = yTwips - mRowHeight * (*aRow - mTopRowIndex);
|
||||
|
||||
PRBool isContainer = PR_FALSE;
|
||||
mView->IsContainer ( *outRow, &isContainer );
|
||||
if ( isContainer ) {
|
||||
mView->IsContainer (*aRow, &isContainer);
|
||||
if (isContainer) {
|
||||
// for a container, use a 25%/50%/25% breakdown
|
||||
if ( yOffset < mRowHeight / 4 )
|
||||
*outOrient = kBeforeRow;
|
||||
else if ( yOffset > mRowHeight - (mRowHeight / 4) )
|
||||
*outOrient = kAfterRow;
|
||||
if (yOffset < mRowHeight / 4)
|
||||
*aOrient = nsIOutlinerView::inDropBefore;
|
||||
else if (yOffset > mRowHeight - (mRowHeight / 4))
|
||||
*aOrient = nsIOutlinerView::inDropAfter;
|
||||
else
|
||||
*outOrient = kOnRow;
|
||||
*aOrient = nsIOutlinerView::inDropOn;
|
||||
}
|
||||
else {
|
||||
// for a non-container use a 50%/50% breakdown
|
||||
if ( yOffset < mRowHeight / 2 )
|
||||
*outOrient = kBeforeRow;
|
||||
if (yOffset < mRowHeight / 2)
|
||||
*aOrient = nsIOutlinerView::inDropBefore;
|
||||
else
|
||||
*outOrient = kAfterRow;
|
||||
*aOrient = nsIOutlinerView::inDropAfter;
|
||||
}
|
||||
}
|
||||
|
||||
} // ComputeDropPosition
|
||||
|
||||
|
||||
//
|
||||
// IsInDragScrollRegion
|
||||
//
|
||||
// Determine if we're w/in a margin of the top/bottom of the outliner during a drag.
|
||||
// This will ultimately cause us to scroll, but that's done elsewhere.
|
||||
//
|
||||
PRBool
|
||||
nsOutlinerBodyFrame :: IsInDragScrollRegion ( nsIDOMEvent* inEvent, PRBool* outScrollUp )
|
||||
nsOutlinerBodyFrame::IsInDragScrollRegion(nsIDOMEvent* aEvent, PRBool* aScrollUp)
|
||||
{
|
||||
PRBool isInRegion = PR_FALSE;
|
||||
|
||||
float pixelsToTwips = 0.0;
|
||||
mPresContext->GetPixelsToTwips ( &pixelsToTwips );
|
||||
const int kMarginHeight = NSToIntRound ( 12 * pixelsToTwips );
|
||||
mPresContext->GetPixelsToTwips (&pixelsToTwips);
|
||||
const int kMarginHeight = NSToIntRound(12 * pixelsToTwips);
|
||||
|
||||
nsCOMPtr<nsIDOMMouseEvent> mouseEvent ( do_QueryInterface(inEvent) );
|
||||
if ( mouseEvent ) {
|
||||
nsCOMPtr<nsIDOMMouseEvent> mouseEvent (do_QueryInterface(aEvent));
|
||||
if (mouseEvent) {
|
||||
PRInt32 x = 0, y = 0;
|
||||
mouseEvent->GetClientX(&x); mouseEvent->GetClientY(&y);
|
||||
|
||||
PRInt32 yTwips, xTwips;
|
||||
AdjustEventCoordsToBoxCoordSpace ( x, y, &xTwips, &yTwips );
|
||||
AdjustEventCoordsToBoxCoordSpace (x, y, &xTwips, &yTwips);
|
||||
|
||||
if ( yTwips < kMarginHeight ) {
|
||||
if (yTwips < kMarginHeight) {
|
||||
isInRegion = PR_TRUE;
|
||||
if ( outScrollUp )
|
||||
*outScrollUp = PR_TRUE; // scroll up
|
||||
if (aScrollUp)
|
||||
*aScrollUp = PR_TRUE; // scroll up
|
||||
}
|
||||
else if ( yTwips > mRect.height - kMarginHeight ) {
|
||||
else if (yTwips > mRect.height - kMarginHeight) {
|
||||
isInRegion = PR_TRUE;
|
||||
if ( outScrollUp )
|
||||
*outScrollUp = PR_FALSE; // scroll down
|
||||
if (aScrollUp )
|
||||
*aScrollUp = PR_FALSE; // scroll down
|
||||
}
|
||||
}
|
||||
|
||||
return isInRegion;
|
||||
|
||||
} // IsInDragScrollRegion
|
||||
|
||||
|
||||
//
|
||||
// OnDragEnter
|
||||
//
|
||||
// Cache several things we'll need throughout the course of our work. These
|
||||
// will all get released on a drag exit
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerBodyFrame :: OnDragEnter ( nsIDOMEvent* inEvent )
|
||||
nsOutlinerBodyFrame::OnDragEnter(nsIDOMEvent* aEvent)
|
||||
{
|
||||
// create a rendering context for our drawing needs
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
mPresContext->GetShell(getter_AddRefs(presShell));
|
||||
nsCOMPtr<nsIRenderingContext> rendContext;
|
||||
presShell->CreateRenderingContext ( this, getter_AddRefs(mRenderingContext) );
|
||||
|
||||
// cache the drag session
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIDragService> dragService =
|
||||
do_GetService("@mozilla.org/widget/dragservice;1", &rv);
|
||||
nsCOMPtr<nsIDragSession> dragSession;
|
||||
dragService->GetCurrentSession(getter_AddRefs(mDragSession));
|
||||
NS_ASSERTION ( mDragSession, "can't get drag session" );
|
||||
NS_ASSERTION(mDragSession, "can't get drag session");
|
||||
|
||||
return NS_OK;
|
||||
|
||||
} // OnDragEnter
|
||||
|
||||
|
||||
|
||||
#ifdef XP_MAC
|
||||
#pragma mark -
|
||||
#endif
|
||||
|
|
|
@ -184,6 +184,7 @@ public:
|
|||
PRBool IsCycler() { return mIsCyclerCol; };
|
||||
|
||||
PRInt32 GetCropStyle() { return mCropStyle; };
|
||||
PRInt32 GetTextAlignment() { return mTextAlignment; };
|
||||
|
||||
PRInt32 GetColIndex() { return mColIndex; };
|
||||
};
|
||||
|
@ -387,8 +388,8 @@ protected:
|
|||
// Our internal scroll method, used by all the public scroll methods.
|
||||
nsresult ScrollInternal(PRInt32 aRow);
|
||||
|
||||
// convert pixels, probably from an event, into twips in our coordinate space
|
||||
void AdjustEventCoordsToBoxCoordSpace ( PRInt32 inX, PRInt32 inY, PRInt32* outX, PRInt32* outY ) ;
|
||||
// Convert pixels, probably from an event, into twips in our coordinate space.
|
||||
void AdjustEventCoordsToBoxCoordSpace (PRInt32 aX, PRInt32 aY, PRInt32* aResultX, PRInt32* aResultY);
|
||||
|
||||
// Convert a border style into line style.
|
||||
nsLineStyle ConvertBorderStyleToLineStyle(PRUint8 aBorderStyle);
|
||||
|
@ -403,6 +404,12 @@ protected:
|
|||
nscoord& aCurrentSize);
|
||||
nscoord CalcMaxRowWidth(nsBoxLayoutState& aState);
|
||||
|
||||
// Calc the row and above/below/on status given where the mouse currently is hovering.
|
||||
void ComputeDropPosition(nsIDOMEvent* aEvent, PRInt32* aRow, PRInt16* aOrient);
|
||||
|
||||
// Calculate if we're in the region in which we want to auto-scroll the outliner.
|
||||
PRBool IsInDragScrollRegion (nsIDOMEvent* aEvent, PRBool* aScrollUp);
|
||||
|
||||
protected: // Data Members
|
||||
// Our cached pres context.
|
||||
nsIPresContext* mPresContext;
|
||||
|
@ -448,41 +455,29 @@ protected: // Data Members
|
|||
|
||||
// A scratch array used when looking up cached style contexts.
|
||||
nsCOMPtr<nsISupportsArray> mScratchArray;
|
||||
|
||||
enum { kIllegalRow = -1 } ;
|
||||
enum { kDrawFeedback = PR_TRUE, kUndrawFeedback = PR_FALSE } ;
|
||||
enum DropOrientation { kNoOrientation, kBeforeRow = 1, kOnRow = 2, kAfterRow = 3 } ;
|
||||
|
||||
// draw (or undraw) feedback at the given location with the given orientation
|
||||
void DrawDropFeedback ( PRInt32 inDropRow, DropOrientation inDropOrient, PRBool inDrawFeedback ) ;
|
||||
|
||||
// calc the row and above/below/on status given where the mouse currently is hovering
|
||||
void ComputeDropPosition ( nsIDOMEvent* inEvent, PRInt32* outRow, DropOrientation* outOrient ) ;
|
||||
|
||||
// calculate if we're in the region in which we want to auto-scroll the outliner
|
||||
PRBool IsInDragScrollRegion ( nsIDOMEvent* inEvent, PRBool* outScrollUp ) ;
|
||||
|
||||
PRInt32 mDropRow; // the row the mouse is hovering over during a drop
|
||||
DropOrientation mDropOrient; // where we want to draw feedback (above/below/on this row) if allowed
|
||||
// Whether or not we're currently focused.
|
||||
PRPackedBool mFocused;
|
||||
|
||||
// An indicator that columns have changed and need to be rebuilt
|
||||
PRPackedBool mColumnsDirty;
|
||||
|
||||
PRPackedBool mDropAllowed; // if the drop is actually allowed here or not. we draw if this is true
|
||||
PRPackedBool mAlreadyUndrewDueToScroll; // we undraw early during auto-scroll; did we do this already?
|
||||
// If the drop is actually allowed here or not.
|
||||
PRPackedBool mDropAllowed;
|
||||
|
||||
// Do we have a fixed number of onscreen rows?
|
||||
PRPackedBool mHasFixedRowCount;
|
||||
|
||||
PRPackedBool mVerticalOverflow;
|
||||
|
||||
// timer for opening spring-loaded folders
|
||||
// The row the mouse is hovering over during a drop.
|
||||
PRInt32 mDropRow;
|
||||
// Where we want to draw feedback (above/on this row/below) if allowed.
|
||||
PRInt16 mDropOrient;
|
||||
nsCOMPtr<nsIDragSession> mDragSession;
|
||||
|
||||
// Timer for opening spring-loaded folders.
|
||||
nsCOMPtr<nsITimer> mOpenTimer;
|
||||
PRInt32 mOpenTimerRow;
|
||||
|
||||
nsCOMPtr<nsIDragSession> mDragSession;
|
||||
nsCOMPtr<nsIRenderingContext> mRenderingContext;
|
||||
|
||||
}; // class nsOutlinerBodyFrame
|
||||
|
|
|
@ -110,16 +110,18 @@ NS_IMETHODIMP nsOutlinerBoxObject::Init(nsIContent* aContent, nsIPresShell* aPre
|
|||
|
||||
static void FindBodyElement(nsIContent* aParent, nsIContent** aResult)
|
||||
{
|
||||
*aResult = nsnull;
|
||||
ChildIterator iter, last;
|
||||
for (ChildIterator::Init(aParent, &iter, &last); iter != last; ++iter) {
|
||||
nsCOMPtr<nsIContent> content = *iter;
|
||||
nsCOMPtr<nsIAtom> tag;
|
||||
content->GetTag(*getter_AddRefs(tag));
|
||||
if (tag.get() == nsXULAtoms::outlinerbody) {
|
||||
if (tag.get() == nsXULAtoms::outlinerchildren) {
|
||||
*aResult = content;
|
||||
NS_ADDREF(*aResult);
|
||||
break;
|
||||
} else {
|
||||
}
|
||||
else if (tag != nsXULAtoms::templateAtom) {
|
||||
FindBodyElement(content, aResult);
|
||||
if (*aResult)
|
||||
break;
|
||||
|
@ -332,6 +334,14 @@ NS_IMETHODIMP nsOutlinerBoxObject::InvalidateCell(PRInt32 aRow, const PRUnichar
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsOutlinerBoxObject::InvalidatePrimaryCell(PRInt32 aIndex)
|
||||
{
|
||||
nsIOutlinerBoxObject* body = GetOutlinerBody();
|
||||
if (body)
|
||||
return body->InvalidatePrimaryCell(aIndex);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsOutlinerBoxObject::InvalidateRange(PRInt32 aStart, PRInt32 aEnd)
|
||||
{
|
||||
nsIOutlinerBoxObject* body = GetOutlinerBody();
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "nsXULAtoms.h"
|
||||
#include "nsLayoutAtoms.h"
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsIBoxObject.h"
|
||||
#include "nsOutlinerUtils.h"
|
||||
#include "nsOutlinerContentView.h"
|
||||
#include "nsChildIterator.h"
|
||||
|
@ -154,7 +155,7 @@ class Row
|
|||
|
||||
nsOutlinerContentView::nsOutlinerContentView(void) :
|
||||
mBoxObject(nsnull), mSelection(nsnull), mRoot(nsnull), mDocument(nsnull),
|
||||
mHasCheckedSelect(PR_FALSE), mUpdateSelection(PR_FALSE), mIgnoreOptionSelected(PR_FALSE)
|
||||
mUpdateSelection(PR_FALSE)
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
|
||||
|
@ -167,7 +168,7 @@ nsOutlinerContentView::nsOutlinerContentView(void) :
|
|||
mAllocator.Init("nsOutlinerContentView", kBucketSizes, kNumBuckets, kInitialSize);
|
||||
}
|
||||
|
||||
nsOutlinerContentView::~nsOutlinerContentView (void)
|
||||
nsOutlinerContentView::~nsOutlinerContentView(void)
|
||||
{
|
||||
// Remove ourselfs from document's observers.
|
||||
if (mDocument)
|
||||
|
@ -470,7 +471,32 @@ NS_IMETHODIMP
|
|||
nsOutlinerContentView::SetOutliner(nsIOutlinerBoxObject* aOutliner)
|
||||
{
|
||||
mBoxObject = aOutliner;
|
||||
|
||||
|
||||
if (!mRoot) {
|
||||
// Get our root element
|
||||
nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mBoxObject);
|
||||
nsCOMPtr<nsIDOMElement> element;
|
||||
boxObject->GetElement(getter_AddRefs(element));
|
||||
|
||||
mRoot = do_QueryInterface(element);
|
||||
|
||||
// Add ourselfs to document's observers.
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
mRoot->GetDocument(*getter_AddRefs(document));
|
||||
if (document) {
|
||||
document->AddObserver(this);
|
||||
mDocument = document;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDOMElement> bodyElement;
|
||||
mBoxObject->GetOutlinerBody(getter_AddRefs(bodyElement));
|
||||
if (bodyElement) {
|
||||
nsCOMPtr<nsIContent> bodyContent = do_QueryInterface(bodyElement);
|
||||
PRInt32 index = 0;
|
||||
Serialize(bodyContent, -1, &index, mRows);
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -554,42 +580,6 @@ nsOutlinerContentView::GetRoot(nsIDOMElement** aRoot)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerContentView::SetRoot(nsIDOMElement* aRoot)
|
||||
{
|
||||
if (mRoot) {
|
||||
// Remove ourselfs from document's observers.
|
||||
if (mDocument) {
|
||||
mDocument->RemoveObserver(this);
|
||||
mDocument = nsnull;
|
||||
}
|
||||
|
||||
ClearRows();
|
||||
}
|
||||
|
||||
if (aRoot)
|
||||
mRoot = do_QueryInterface(aRoot);
|
||||
|
||||
if (mRoot) {
|
||||
// Add ourselfs to document's observers.
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
mRoot->GetDocument(*getter_AddRefs(document));
|
||||
if (document) {
|
||||
document->AddObserver(this);
|
||||
mDocument = document;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIContent> child;
|
||||
nsOutlinerUtils::GetImmediateChild(mRoot, nsXULAtoms::outlinerchildren, getter_AddRefs(child));
|
||||
if (child) {
|
||||
PRInt32 index = 0;
|
||||
Serialize(child, -1, &index, mRows);
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsOutlinerContentView::GetItemAtIndex(PRInt32 aIndex, nsIDOMElement** _retval)
|
||||
{
|
||||
|
@ -720,8 +710,11 @@ nsOutlinerContentView::AttributeChanged(nsIDocument *aDocument,
|
|||
aContent->GetTag(*getter_AddRefs(tag));
|
||||
|
||||
if (tag == nsXULAtoms::outlinercol) {
|
||||
if (aAttribute == nsXULAtoms::properties)
|
||||
mBoxObject->Invalidate();
|
||||
if (aAttribute == nsXULAtoms::properties) {
|
||||
nsAutoString id;
|
||||
aContent->GetAttr(kNameSpaceID_None, nsHTMLAtoms::id, id);
|
||||
mBoxObject->InvalidateColumn(id.get());
|
||||
}
|
||||
}
|
||||
else if (tag == nsXULAtoms::outlineritem) {
|
||||
if (aAttribute == nsXULAtoms::open) {
|
||||
|
@ -785,14 +778,13 @@ nsOutlinerContentView::AttributeChanged(nsIDocument *aDocument,
|
|||
}
|
||||
}
|
||||
else if (tag == nsHTMLAtoms::option) {
|
||||
if (aAttribute == nsLayoutAtoms::optionSelectedPseudo && !mIgnoreOptionSelected) {
|
||||
if (aAttribute == nsLayoutAtoms::optionSelectedPseudo) {
|
||||
PRInt32 index = FindContent(aContent);
|
||||
if (index == -1)
|
||||
return NS_OK;
|
||||
|
||||
NS_ASSERTION(mSelection, "Need to handle optionSelected change with no OutlinerSelection");
|
||||
if (mSelection)
|
||||
if (index >= 0) {
|
||||
NS_ASSERTION(mSelection, "Need to handle optionSelected change with no OutlinerSelection");
|
||||
if (mSelection)
|
||||
mSelection->ToggleSelect(index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -823,11 +815,13 @@ nsOutlinerContentView::ContentInserted(nsIDocument *aDocument,
|
|||
if (childTag == nsXULAtoms::outlineritem ||
|
||||
childTag == nsXULAtoms::outlinerseparator) {
|
||||
PRInt32 parentIndex = -1;
|
||||
if (aContainer != mRoot) {
|
||||
nsCOMPtr<nsIContent> parent;
|
||||
aContainer->GetParent(*getter_AddRefs(parent));
|
||||
|
||||
nsCOMPtr<nsIContent> parent;
|
||||
aContainer->GetParent(*getter_AddRefs(parent));
|
||||
nsCOMPtr<nsIAtom> parentTag;
|
||||
parent->GetTag(*getter_AddRefs(parentTag));
|
||||
if (parentTag != nsXULAtoms::outliner)
|
||||
parentIndex = FindContent(parent);
|
||||
}
|
||||
|
||||
PRInt32 index = 0;
|
||||
GetIndexInSubtree(aContainer, aChild, &index);
|
||||
|
@ -1329,21 +1323,3 @@ nsOutlinerContentView::ParseProperties(nsIContent* aContent, Property** aPropert
|
|||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsOutlinerContentView::GetSelectElement()
|
||||
{
|
||||
nsCOMPtr<nsIContent> parent = mRoot;
|
||||
nsCOMPtr<nsIAtom> tag;
|
||||
nsCOMPtr<nsIContent> temp;
|
||||
|
||||
while (parent && NS_SUCCEEDED(parent->GetTag(*getter_AddRefs(tag)))
|
||||
&& tag != nsXULAtoms::outliner && tag != nsHTMLAtoms::select) {
|
||||
temp = parent;
|
||||
temp->GetParent(*getter_AddRefs(parent));
|
||||
}
|
||||
|
||||
if (parent && tag == nsHTMLAtoms::select)
|
||||
mSelectElement = do_QueryInterface(parent);
|
||||
}
|
||||
|
||||
|
|
|
@ -185,22 +185,17 @@ class nsOutlinerContentView : public nsIOutlinerView,
|
|||
|
||||
nsresult ParseProperties(nsIContent* aContent, Property** aProperty);
|
||||
|
||||
void GetSelectElement();
|
||||
|
||||
inline nsresult SetOptionsSelected(PRInt32 aStart, PRInt32 aEnd,
|
||||
PRBool aSelect, PRBool aClear)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
if (!mHasCheckedSelect)
|
||||
GetSelectElement();
|
||||
|
||||
if (mSelectElement) {
|
||||
mIgnoreOptionSelected = PR_TRUE;
|
||||
rv = mSelectElement->SetOptionsSelectedByIndex(aStart, aEnd, aSelect,
|
||||
aClear, PR_FALSE, nsnull);
|
||||
if (mRoot) {
|
||||
nsCOMPtr<nsISelectElement> selectElement = do_QueryInterface(mRoot);
|
||||
if (selectElement)
|
||||
rv = selectElement->SetOptionsSelectedByIndex(aStart, aEnd, aSelect,
|
||||
aClear, PR_FALSE, nsnull);
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -208,14 +203,11 @@ class nsOutlinerContentView : public nsIOutlinerView,
|
|||
nsCOMPtr<nsIOutlinerBoxObject> mBoxObject;
|
||||
nsCOMPtr<nsIOutlinerSelection> mSelection;
|
||||
nsCOMPtr<nsIContent> mRoot;
|
||||
nsCOMPtr<nsISelectElement> mSelectElement;
|
||||
nsIDocument* mDocument; // WEAK
|
||||
nsFixedSizeAllocator mAllocator;
|
||||
nsVoidArray mRows;
|
||||
|
||||
PRPackedBool mHasCheckedSelect;
|
||||
PRPackedBool mUpdateSelection;
|
||||
PRPackedBool mIgnoreOptionSelected;
|
||||
};
|
||||
|
||||
#endif // nsOutlinerContentView_h__
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsOutlinerSelection.h"
|
||||
#include "nsIBoxObject.h"
|
||||
#include "nsIOutlinerBoxObject.h"
|
||||
#include "nsIOutlinerView.h"
|
||||
#include "nsString.h"
|
||||
|
@ -716,8 +717,9 @@ nsOutlinerSelection::FireOnSelectHandler()
|
|||
if (mSuppressed)
|
||||
return NS_OK;
|
||||
|
||||
nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mOutliner);
|
||||
nsCOMPtr<nsIDOMElement> elt;
|
||||
mOutliner->GetOutlinerBody(getter_AddRefs(elt));
|
||||
boxObject->GetElement(getter_AddRefs(elt));
|
||||
|
||||
nsCOMPtr<nsIContent> content(do_QueryInterface(elt));
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
|
@ -747,14 +749,13 @@ nsOutlinerSelection::FireOnSelectHandler()
|
|||
|
||||
PRBool nsOutlinerSelection::SingleSelection()
|
||||
{
|
||||
nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mOutliner);
|
||||
nsCOMPtr<nsIDOMElement> element;
|
||||
mOutliner->GetOutlinerBody(getter_AddRefs(element));
|
||||
nsCOMPtr<nsIContent> content(do_QueryInterface(element));
|
||||
nsCOMPtr<nsIContent> parent;
|
||||
content->GetParent(*getter_AddRefs(parent));
|
||||
boxObject->GetElement(getter_AddRefs(element));
|
||||
nsCOMPtr<nsIContent> content = do_QueryInterface(element);
|
||||
nsAutoString seltype;
|
||||
parent->GetAttr(kNameSpaceID_None, nsXULAtoms::seltype, seltype);
|
||||
if (seltype.EqualsIgnoreCase("single"))
|
||||
content->GetAttr(kNameSpaceID_None, nsXULAtoms::seltype, seltype);
|
||||
if (seltype.Equals(NS_LITERAL_STRING("single")))
|
||||
return PR_TRUE;
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ function AbResultsPaneOnClick(event)
|
|||
}
|
||||
SortAndUpdateIndicators(t.id, sortDirection);
|
||||
}
|
||||
else if (t.localName == "outlinerbody") {
|
||||
else if (t.localName == "outlinerchildren") {
|
||||
var row = new Object;
|
||||
var colID = new Object;
|
||||
var childElt = new Object;
|
||||
|
|
|
@ -50,7 +50,8 @@
|
|||
<script type="application/x-javascript" src="chrome://messenger/content/addressbook/abDragDrop.js"/>
|
||||
|
||||
<outliner id="abResultsOutliner" flex="1" enableColumnDrag="true" class="plain"
|
||||
onclick="AbResultsPaneOnClick(event);">
|
||||
onclick="AbResultsPaneOnClick(event);"
|
||||
onselect="this.view.selectionChanged();">
|
||||
|
||||
<outlinercols id="abResultsOutlinerCols">
|
||||
<!-- these column ids must match up to the mork column names, except for GeneratedName, see nsIAddrDatabase.idl -->
|
||||
|
@ -106,9 +107,7 @@
|
|||
hiddenbydefault="true"
|
||||
flex="1" label="&Department.label;"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1"
|
||||
onselect="this.parentNode.outlinerBoxObject.view.selectionChanged();"
|
||||
ondraggesture="nsDragAndDrop.startDrag(event, abResultsPaneObserver);" />
|
||||
<outlinerchildren ondraggesture="nsDragAndDrop.startDrag(event, abResultsPaneObserver);"/>
|
||||
</outliner>
|
||||
|
||||
</overlay>
|
||||
|
|
|
@ -79,7 +79,7 @@
|
|||
hiddenbydefault="true"
|
||||
flex="1" label="&PrimaryEmail.label;"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" />
|
||||
<outlinerchildren/>
|
||||
</outliner>
|
||||
|
||||
</vbox>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
|
||||
<!-- category tree entries for mail/news -->
|
||||
<outlinerchildren id="panelChildren">
|
||||
<outlineritem container="true" open="true" id="mailnews" position="3">
|
||||
<outlineritem container="true" id="mailnews" position="3">
|
||||
<outlinerrow>
|
||||
<outlinercell url="chrome://messenger/content/pref-mailnews.xul" label="&mail.label;"/>
|
||||
</outlinerrow>
|
||||
|
|
|
@ -31,83 +31,81 @@
|
|||
<overlay xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
|
||||
<outliner id="folderOutliner" class="plain" flex="1" seltype="single">
|
||||
<outlinerbody flex="1"
|
||||
datasources="rdf:null"
|
||||
statedatasource="rdf:mailnewsfolders"
|
||||
flags="dont-build-content"
|
||||
ondraggesture="BeginDragFolderOutliner(event);"
|
||||
onselect="FolderPaneSelectionChange();">
|
||||
<template>
|
||||
<rule>
|
||||
<conditions>
|
||||
<outlineritem uri="?container"/>
|
||||
<member container="?container" child="?member" />
|
||||
</conditions>
|
||||
<outliner id="folderOutliner" class="plain" flex="1" seltype="single"
|
||||
datasources="rdf:null"
|
||||
statedatasource="rdf:mailnewsfolders"
|
||||
flags="dont-build-content"
|
||||
ondraggesture="BeginDragFolderOutliner(event);"
|
||||
onselect="FolderPaneSelectionChange();">
|
||||
<template>
|
||||
<rule>
|
||||
<conditions>
|
||||
<outlineritem uri="?container"/>
|
||||
<member container="?container" child="?member" />
|
||||
</conditions>
|
||||
|
||||
<bindings>
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeName"
|
||||
object="?folderTreeName" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeName?sort=true"
|
||||
object="?folderTreeNameSort" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeSimpleName"
|
||||
object="?folderTreeSimpleName" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
object="?specialFolder" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#BiffState"
|
||||
object="?biffState" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#IsServer"
|
||||
object="?isServer" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#NewMessages"
|
||||
object="?newMessages" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#HasUnreadMessages"
|
||||
object="?hasUnreadMessages" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#SubfoldersHaveUnreadMessages"
|
||||
object="?subfoldersHaveUnreadMessages" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#IsSecure"
|
||||
object="?isSecure" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#ServerType"
|
||||
object="?serverType" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#NoSelect"
|
||||
object="?noSelect" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#TotalUnreadMessages"
|
||||
object="?unreadCount" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#TotalMessages"
|
||||
object="?totalCount" />
|
||||
</bindings>
|
||||
<bindings>
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeName"
|
||||
object="?folderTreeName" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeName?sort=true"
|
||||
object="?folderTreeNameSort" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeSimpleName"
|
||||
object="?folderTreeSimpleName" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
object="?specialFolder" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#BiffState"
|
||||
object="?biffState" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#IsServer"
|
||||
object="?isServer" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#NewMessages"
|
||||
object="?newMessages" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#HasUnreadMessages"
|
||||
object="?hasUnreadMessages" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#SubfoldersHaveUnreadMessages"
|
||||
object="?subfoldersHaveUnreadMessages" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#IsSecure"
|
||||
object="?isSecure" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#ServerType"
|
||||
object="?serverType" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#NoSelect"
|
||||
object="?noSelect" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#TotalUnreadMessages"
|
||||
object="?unreadCount" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#TotalMessages"
|
||||
object="?totalCount" />
|
||||
</bindings>
|
||||
|
||||
<action>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="?member">
|
||||
<outlinerrow>
|
||||
<outlinercell id="folderNameCell"
|
||||
label="?folderTreeName"
|
||||
properties="specialFolder-?specialFolder biffState-?biffState isServer-?isServer newMessages-?newMessages hasUnreadMessages-?hasUnreadMessages subfoldersHaveUnreadMessages-?subfoldersHaveUnreadMessages isSecure-?isSecure serverType-?serverType noSelect-?noSelect"/>
|
||||
<outlinercell label="?unreadCount"
|
||||
properties="hasUnreadMessages-?hasUnreadMessages subfoldersHaveUnreadMessages-?subfoldersHaveUnreadMessages"/>
|
||||
<outlinercell label="?totalCount"
|
||||
properties="hasUnreadMessages-?hasUnreadMessages subfoldersHaveUnreadMessages-?subfoldersHaveUnreadMessages"/>
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</action>
|
||||
</rule>
|
||||
</template>
|
||||
</outlinerbody>
|
||||
<action>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="?member">
|
||||
<outlinerrow>
|
||||
<outlinercell id="folderNameCell"
|
||||
label="?folderTreeName"
|
||||
properties="specialFolder-?specialFolder biffState-?biffState isServer-?isServer newMessages-?newMessages hasUnreadMessages-?hasUnreadMessages subfoldersHaveUnreadMessages-?subfoldersHaveUnreadMessages isSecure-?isSecure serverType-?serverType noSelect-?noSelect"/>
|
||||
<outlinercell label="?unreadCount"
|
||||
properties="hasUnreadMessages-?hasUnreadMessages subfoldersHaveUnreadMessages-?subfoldersHaveUnreadMessages"/>
|
||||
<outlinercell label="?totalCount"
|
||||
properties="hasUnreadMessages-?hasUnreadMessages subfoldersHaveUnreadMessages-?subfoldersHaveUnreadMessages"/>
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</action>
|
||||
</rule>
|
||||
</template>
|
||||
<outlinercols>
|
||||
<outlinercol id="folderNameCol"
|
||||
flex="5"
|
||||
|
|
|
@ -1000,7 +1000,7 @@ function GetFolderNameFromUri(uri, outliner)
|
|||
{
|
||||
var folderResource = RDF.GetResource(uri);
|
||||
|
||||
var db = outliner.outlinerBoxObject.outlinerBody.database;
|
||||
var db = outliner.database;
|
||||
|
||||
var nameProperty = RDF.GetResource('http://home.netscape.com/NC-rdf#Name');
|
||||
|
||||
|
|
|
@ -339,6 +339,9 @@ function BeginDragFolderOutliner(event)
|
|||
{
|
||||
debugDump("BeginDragFolderOutliner\n");
|
||||
|
||||
if (event.originalTarget.localName != "outlinerchildren")
|
||||
return;
|
||||
|
||||
var folderOutliner = GetFolderOutliner();
|
||||
var row = {};
|
||||
var col = {};
|
||||
|
|
|
@ -685,9 +685,9 @@ function OnLoadFolderPane()
|
|||
database.AddDataSource(accountManagerDataSource);
|
||||
database.AddDataSource(folderDataSource);
|
||||
var folderOutliner = GetFolderOutliner();
|
||||
folderOutliner.outlinerBoxObject.outlinerBody.setAttribute("ref", "msgaccounts:/");
|
||||
folderOutliner.setAttribute("ref", "msgaccounts:/");
|
||||
|
||||
var folderOutlinerBuilder = folderOutliner.outlinerBoxObject.outlinerBody.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
var folderOutlinerBuilder = folderOutliner.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
folderOutlinerBuilder.addObserver(folderObserver);
|
||||
folderOutliner.addEventListener("click",FolderPaneOnClick,true);
|
||||
}
|
||||
|
@ -724,7 +724,7 @@ function OnLoadThreadPane()
|
|||
function GetFolderDatasource()
|
||||
{
|
||||
var folderOutliner = GetFolderOutliner();
|
||||
return folderOutliner.outlinerBoxObject.outlinerBody.database;
|
||||
return folderOutliner.database;
|
||||
}
|
||||
|
||||
/* Functions for accessing particular parts of the window*/
|
||||
|
@ -1140,20 +1140,20 @@ function GetDBView()
|
|||
|
||||
function GetFolderResource(outliner, index)
|
||||
{
|
||||
var outlinerBuilder = outliner.outlinerBoxObject.outlinerBody.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
var outlinerBuilder = outliner.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
return outlinerBuilder.getResourceAtIndex(index);
|
||||
}
|
||||
|
||||
function GetFolderIndex(outliner, resource)
|
||||
{
|
||||
var outlinerBuilder = outliner.outlinerBoxObject.outlinerBody.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
var outlinerBuilder = outliner.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
return outlinerBuilder.getIndexOfResource(resource);
|
||||
}
|
||||
|
||||
function GetFolderAttribute(outliner, source, attribute)
|
||||
{
|
||||
var property = RDF.GetResource("http://home.netscape.com/NC-rdf#" + attribute);
|
||||
var target = outliner.outlinerBoxObject.outlinerBody.database.GetTarget(source, property, true);
|
||||
var target = outliner.database.GetTarget(source, property, true);
|
||||
if (target)
|
||||
target = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
|
||||
return target;
|
||||
|
|
|
@ -51,54 +51,54 @@ Contributors:
|
|||
<keyset id="keyset"/>
|
||||
<description class="desc">&MsgSelectDesc.label;</description>
|
||||
|
||||
<outliner flex="1" id="synchronizeOutliner">
|
||||
<outlinerbody flex="1" datasources="rdf:msgaccountmanager rdf:mailnewsfolders" ref="msgaccounts:/" flags="dont-build-content" onclick="onSynchronizeClick(event);">
|
||||
<template>
|
||||
<rule>
|
||||
<conditions>
|
||||
<outlineritem uri="?container"/>
|
||||
<member container="?container" child="?member"/>
|
||||
<triple subject="?member" predicate="http://home.netscape.com/NC-rdf#SupportsOffline" object="true"/>
|
||||
</conditions>
|
||||
<outliner id="synchronizeOutliner" flex="1"
|
||||
datasources="rdf:msgaccountmanager rdf:mailnewsfolders" ref="msgaccounts:/" flags="dont-build-content"
|
||||
onclick="onSynchronizeClick(event);">
|
||||
<template>
|
||||
<rule>
|
||||
<conditions>
|
||||
<outlineritem uri="?container"/>
|
||||
<member container="?container" child="?member"/>
|
||||
<triple subject="?member" predicate="http://home.netscape.com/NC-rdf#SupportsOffline" object="true"/>
|
||||
</conditions>
|
||||
|
||||
<bindings>
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeName"
|
||||
object="?folderTreeName" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeName?sort=true"
|
||||
object="?folderTreeNameSort" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
object="?specialFolder" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#IsServer"
|
||||
object="?isServer" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#IsSecure"
|
||||
object="?isSecure" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#ServerType"
|
||||
object="?serverType" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#Synchronize"
|
||||
object="?synchronize" />
|
||||
</bindings>
|
||||
<bindings>
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeName"
|
||||
object="?folderTreeName" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#FolderTreeName?sort=true"
|
||||
object="?folderTreeNameSort" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
object="?specialFolder" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#IsServer"
|
||||
object="?isServer" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#IsSecure"
|
||||
object="?isSecure" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#ServerType"
|
||||
object="?serverType" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#Synchronize"
|
||||
object="?synchronize" />
|
||||
</bindings>
|
||||
|
||||
<action>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="?member">
|
||||
<outlinerrow>
|
||||
<outlinercell label="?folderTreeName"
|
||||
properties="specialFolder-?specialFolder isServer-?isServer isSecure-?isSecure serverType-?serverType"/>
|
||||
<outlinercell properties="synchronize-?synchronize isServer-?isServer"/>
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</action>
|
||||
</rule>
|
||||
</template>
|
||||
</outlinerbody>
|
||||
<action>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="?member">
|
||||
<outlinerrow>
|
||||
<outlinercell label="?folderTreeName"
|
||||
properties="specialFolder-?specialFolder isServer-?isServer isSecure-?isSecure serverType-?serverType"/>
|
||||
<outlinercell properties="synchronize-?synchronize isServer-?isServer"/>
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</action>
|
||||
</rule>
|
||||
</template>
|
||||
<outlinercols>
|
||||
<outlinercol id="folderNameCol" flex="5" persist="hidden width" label="&MsgSelectItems.label;" primary="true" />
|
||||
<splitter class="tree-splitter"/>
|
||||
|
|
|
@ -307,7 +307,7 @@ function SearchOnClick(event)
|
|||
|
||||
var t = event.originalTarget;
|
||||
|
||||
if (t.localName == "outlinerbody") {
|
||||
if (t.localName == "outlinerchildren") {
|
||||
var row = new Object;
|
||||
var colID = new Object;
|
||||
var childElt = new Object;
|
||||
|
|
|
@ -138,7 +138,7 @@ Rights Reserved.
|
|||
<splitter class="tree-splitter" />
|
||||
<outlinercol id="messagesCol" label="&messagesHeader.label;" flex="1" width="0" persist="hidden width" />
|
||||
</outlinercols>
|
||||
<outlinerbody id="searchOutlinerBody" flex="1" />
|
||||
<outlinerchildren id="searchOutlinerBody"/>
|
||||
</outliner>
|
||||
</hbox>
|
||||
</deck>
|
||||
|
|
|
@ -40,7 +40,7 @@ function ThreadPaneOnClick(event)
|
|||
if (t.localName == "outlinercol") {
|
||||
HandleColumnClick(t.id);
|
||||
}
|
||||
else if (event.detail == 2 && t.localName == "outlinerbody") {
|
||||
else if (event.detail == 2 && t.localName == "outlinerchildren") {
|
||||
var row = new Object;
|
||||
var colID = new Object;
|
||||
var childElt = new Object;
|
||||
|
|
|
@ -31,7 +31,8 @@ Rights Reserved.
|
|||
<script src="chrome://messenger/content/threadPane.js"/>
|
||||
|
||||
<outliner id="threadOutliner" flex="1" enableColumnDrag="true" class="plain"
|
||||
onkeypress="ThreadPaneKeyPress(event);">
|
||||
onkeypress="ThreadPaneKeyPress(event);"
|
||||
onselect="this.outlinerBoxObject.view.selectionChanged();">
|
||||
<outlinercols>
|
||||
<outlinercol id="threadCol" display="&threadColumn.label;" class="outlinercol-image threadColumnHeader" currentView="unthreaded" cycler="true" persist="hidden ordinal" fixed="true" />
|
||||
<outlinercol id="subjectCol" class="sortDirectionIndicator" persist="hidden ordinal width" flex="7" label="&subjectColumn.label;" primary="true"/>
|
||||
|
@ -57,9 +58,7 @@ Rights Reserved.
|
|||
<outlinercol id="totalCol" class="sortDirectionIndicator" persist="hidden ordinal width" flex="1" label="&totalColumn.label;"/>
|
||||
<outlinercol id="locationCol" class="sortDirectionIndicator" persist="width" flex="1" hidden="true" ignoreincolumnpicker="true" label="&locationColumn.label;"/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1"
|
||||
onselect="this.parentNode.outlinerBoxObject.view.selectionChanged();"
|
||||
ondraggesture="BeginDragThreadPane(event);"/>
|
||||
<outlinerchildren ondraggesture="BeginDragThreadPane(event);"/>
|
||||
</outliner>
|
||||
|
||||
</overlay>
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
persist="hidden width ordinal" flex="1"/>
|
||||
<!-- <outlinercol id="certdbkeycol" collapsed="true" flex="1"/> -->
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" ondblclick="viewCerts();"/>
|
||||
<outlinerchildren ondblclick="viewCerts();"/>
|
||||
</outliner>
|
||||
<hbox>
|
||||
<button id="ca_viewButton"
|
||||
|
|
|
@ -34,8 +34,8 @@
|
|||
<vbox id="myCerts">
|
||||
<description>&certmgr.mine;</description>
|
||||
<separator class="thin"/>
|
||||
<outliner id="user-outliner" seltype="multiple" enableColumnDrag="true"
|
||||
onselect="mine_enableButtons()" flex="1">
|
||||
<outliner id="user-outliner" flex="1" enableColumnDrag="true"
|
||||
onselect="mine_enableButtons()">
|
||||
<outlinercols>
|
||||
<outlinercol id="certcol" label="&certmgr.certname;" primary="true"
|
||||
persist="hidden width ordinal" flex="1"/>
|
||||
|
@ -59,8 +59,7 @@
|
|||
persist="hidden width ordinal" flex="1"/>
|
||||
<!-- <outlinercol id="certdbkeycol" collapsed="true" flex="1"/> -->
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" ondblclick="viewCerts();"/>
|
||||
</outliner>
|
||||
<outlinerchildren ondblclick="viewCerts();"/>
|
||||
<hbox>
|
||||
<button id="mine_viewButton" class="normal"
|
||||
label="&certmgr.view.label;"
|
||||
|
|
|
@ -47,8 +47,8 @@
|
|||
<vbox id="othersCerts">
|
||||
<description>&certmgr.others;</description>
|
||||
<separator class="thin"/>
|
||||
<outliner id="email-outliner" seltype="multiple"
|
||||
onselect="email_enableButtons()" flex="1">
|
||||
<outliner id="email-outliner" flex="1"
|
||||
onselect="email_enableButtons()">
|
||||
<outlinercols>
|
||||
<outlinercol id="certcol" label="&certmgr.certname;" primary="true"
|
||||
flex="1"/>
|
||||
|
@ -60,7 +60,7 @@
|
|||
flex="1"/>
|
||||
<!-- <outlinercol id="certdbkeycol" collapsed="true" flex="1"/> -->
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" ondblclick="viewCerts();"/>
|
||||
<outlinerchildren flex="1" ondblclick="viewCerts();"/>
|
||||
</outliner>
|
||||
<hbox>
|
||||
<button id="email_viewButton"
|
||||
|
|
|
@ -34,8 +34,8 @@
|
|||
<vbox id="webCerts">
|
||||
<description>&certmgr.websites;</description>
|
||||
<separator class="thin"/>
|
||||
<outliner id="server-outliner" seltype="multiple" enableColumnDrag="true"
|
||||
onselect="websites_enableButtons()" flex="1">
|
||||
<outliner id="server-outliner" flex="1" enableColumnDrag="true"
|
||||
onselect="websites_enableButtons()">
|
||||
<outlinercols>
|
||||
<outlinercol id="certcol" label="&certmgr.certname;" primary="true"
|
||||
persist="hidden width ordinal" flex="1"/>
|
||||
|
@ -44,7 +44,7 @@
|
|||
persist="hidden width ordinal" flex="1"/>
|
||||
<!-- <outlinercol id="certdbkeycol" collapsed="true" flex="1"/> -->
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" ondblclick="viewCerts();"/>
|
||||
<outlinerchildren ondblclick="viewCerts();"/>
|
||||
</outliner>
|
||||
<hbox>
|
||||
<button id="websites_viewButton"
|
||||
|
|
|
@ -38,13 +38,14 @@
|
|||
</treecolgroup>
|
||||
<treechildren id="chainDump"/>
|
||||
</tree>
|
||||
<outliner class="inset" id="prettyDumpOutliner" style="height:150px">
|
||||
<outliner id="prettyDumpOutliner" class="inset" style="height:150px"
|
||||
onselect="displaySelected();">
|
||||
<outlinercols>
|
||||
<outlinercol flex ="1" id="certDataCol" label="&certmgr.details.label;"
|
||||
ignoreincolumnpicker="true" class="header" primary="true"/>
|
||||
<splitter/>
|
||||
</outlinercols>
|
||||
<outlinerbody flex="1" onselect="displaySelected();"/>
|
||||
<outlinerchildren/>
|
||||
</outliner>
|
||||
<label class="header" value="&certmgr.fields.label;"/>
|
||||
<textbox class="inset" id="certDumpVal" multiline="true" rows="8"
|
||||
|
|
|
@ -43,19 +43,19 @@
|
|||
* Style rules for generic bookmarks items.
|
||||
*/
|
||||
|
||||
outlinerbody:-moz-outliner-image(Name) {
|
||||
outlinerchildren:-moz-outliner-image(Name) {
|
||||
padding-right: 2px;
|
||||
}
|
||||
|
||||
.bookmark-item, outlinerbody:-moz-outliner-image(Name) {
|
||||
.bookmark-item, outlinerchildren:-moz-outliner-image(Name) {
|
||||
list-style-image: url("chrome://communicator/skin/bookmarks/bookmark-item.gif");
|
||||
}
|
||||
|
||||
.bookmark-item[container="true"], outlinerbody:-moz-outliner-image(Name, container) {
|
||||
.bookmark-item[container="true"], outlinerchildren:-moz-outliner-image(Name, container) {
|
||||
list-style-image: url("chrome://communicator/skin/bookmarks/bookmark-folder-closed.gif");
|
||||
}
|
||||
|
||||
.bookmark-item[container="true"][open="true"], outlinerbody:-moz-outliner-image(Name, open) {
|
||||
.bookmark-item[container="true"][open="true"], outlinerchildren:-moz-outliner-image(Name, open) {
|
||||
list-style-image: url("chrome://communicator/skin/bookmarks/bookmark-folder-open.gif");
|
||||
}
|
||||
|
||||
|
|
|
@ -40,11 +40,11 @@
|
|||
|
||||
/* ::::: file/directory items ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-image(FilenameColumn, directory) {
|
||||
outlinerchildren:-moz-outliner-image(FilenameColumn, directory) {
|
||||
list-style-image: url("chrome://global/skin/filepicker/dir-closed.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(FilenameColumn, file) {
|
||||
outlinerchildren:-moz-outliner-image(FilenameColumn, file) {
|
||||
list-style-image: url("chrome://global/skin/filepicker/blank.gif");
|
||||
}
|
||||
|
||||
|
|
|
@ -37,47 +37,74 @@ outliner {
|
|||
-moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
|
||||
background-color: #EEEEEE;
|
||||
color: -moz-DialogText;
|
||||
margin: 0px 4px 0px 4px;
|
||||
}
|
||||
|
||||
/* ::::: outliner rows ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-row {
|
||||
outlinerchildren:-moz-outliner-row {
|
||||
border-top: 1px solid -moz-Field;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(selected, focus) {
|
||||
outlinerchildren:-moz-outliner-row(selected, focus) {
|
||||
background-color: Highlight;
|
||||
}
|
||||
|
||||
/* ::::: outliner cells ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell {
|
||||
padding: 0px 0px 0px 2px;
|
||||
outlinerchildren:-moz-outliner-cell {
|
||||
padding: 0px 2px 0px 2px;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text {
|
||||
outlinerchildren:-moz-outliner-cell-text {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(selected) {
|
||||
outlinerchildren:-moz-outliner-cell-text(selected) {
|
||||
color: -moz-DialogText;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(selected, focus) {
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, focus) {
|
||||
color: HighlightText;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(primary) {
|
||||
border: 2px solid transparent;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(primary, drop) {
|
||||
background-color: Highlight;
|
||||
color: HighlightText;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(primary, dropBefore) {
|
||||
border-top: 2px solid Highlight;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, primary, dropBefore) {
|
||||
border-top: 2px solid HighlightText;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(primary, dropAfter) {
|
||||
border-bottom: 2px solid Highlight;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, primary, dropAfter) {
|
||||
border-bottom: 2px solid HighlightText;
|
||||
}
|
||||
|
||||
|
||||
/* ::::: lines connecting cells ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-line {
|
||||
outlinerchildren:-moz-outliner-line {
|
||||
/* XXX there should be no border on Mac, but outliners currently
|
||||
paint the line black by default, so I'll just leave this
|
||||
for now. */
|
||||
border: 1px dotted grey;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-separator {
|
||||
outlinerchildren:-moz-outliner-separator {
|
||||
border-top: 1px solid ThreeDShadow;
|
||||
border-bottom: 1px solid ThreeDHighlight;
|
||||
}
|
||||
|
@ -147,11 +174,11 @@ outlinercol[insertbefore="true"] {
|
|||
-moz-border-left-colors: ThreeDDarkShadow ThreeDShadow;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-column(insertbefore) {
|
||||
outlinerchildren:-moz-outliner-column(insertbefore) {
|
||||
border-left: 1px solid ThreeDShadow;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-column(insertafter) {
|
||||
outlinerchildren:-moz-outliner-column(insertafter) {
|
||||
border-right: 1px solid ThreeDShadow;
|
||||
}
|
||||
|
||||
|
@ -177,19 +204,19 @@ outlinerbody:-moz-outliner-column(insertafter) {
|
|||
|
||||
/* ::::: twisty ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-twisty {
|
||||
outlinerchildren:-moz-outliner-twisty {
|
||||
-moz-appearance: treetwisty;
|
||||
padding-right: 2px;
|
||||
width: 10px; /* The image's width is 10 pixels */
|
||||
list-style-image: url("chrome://global/skin/tree/twisty-clsd.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-twisty(open) {
|
||||
outlinerchildren:-moz-outliner-twisty(open) {
|
||||
-moz-appearance: treetwisty;
|
||||
width: 10px; /* The image's width is 10 pixels */
|
||||
list-style-image: url("chrome://global/skin/tree/twisty-open.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-indentation {
|
||||
outlinerchildren:-moz-outliner-indentation {
|
||||
width: 16px;
|
||||
}
|
||||
|
|
|
@ -40,11 +40,11 @@
|
|||
|
||||
/* ::::: file/directory items ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-image(FilenameColumn, directory) {
|
||||
outlinerchildren:-moz-outliner-image(FilenameColumn, directory) {
|
||||
list-style-image: url("chrome://global/skin/filepicker/dir-closed.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(FilenameColumn, file) {
|
||||
outlinerchildren:-moz-outliner-image(FilenameColumn, file) {
|
||||
list-style-image: url("chrome://global/skin/filepicker/blank.gif");
|
||||
}
|
||||
|
||||
|
|
|
@ -37,56 +37,83 @@ outliner {
|
|||
-moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
|
||||
background-color: -moz-Field;
|
||||
color: -moz-FieldText;
|
||||
margin: 0px 4px 0px 4px;
|
||||
}
|
||||
|
||||
/* ::::: outliner rows ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-row {
|
||||
outlinerchildren:-moz-outliner-row {
|
||||
border: 1px solid transparent;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(selected) {
|
||||
outlinerchildren:-moz-outliner-row(selected) {
|
||||
background-color: -moz-Dialog;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(selected, focus) {
|
||||
outlinerchildren:-moz-outliner-row(selected, focus) {
|
||||
background-color: Highlight;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(current, focus) {
|
||||
outlinerchildren:-moz-outliner-row(current, focus) {
|
||||
border: 1px dotted #F5DB95;
|
||||
}
|
||||
|
||||
/* ::::: outliner cells ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell {
|
||||
padding: 0px 0px 0px 2px;
|
||||
outlinerchildren:-moz-outliner-cell {
|
||||
padding: 0px 2px 0px 2px;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text {
|
||||
outlinerchildren:-moz-outliner-cell-text {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(selected) {
|
||||
outlinerchildren:-moz-outliner-cell-text(selected) {
|
||||
color: -moz-DialogText;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(selected, focus) {
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, focus) {
|
||||
color: HighlightText;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(primary) {
|
||||
border: 2px solid transparent;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(primary, drop) {
|
||||
background-color: Highlight;
|
||||
color: HighlightText;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(primary, dropBefore) {
|
||||
border-top: 2px solid Highlight;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, primary, dropBefore) {
|
||||
border-top: 2px solid HighlightText;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(primary, dropAfter) {
|
||||
border-bottom: 2px solid Highlight;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, primary, dropAfter) {
|
||||
border-bottom: 2px solid HighlightText;
|
||||
}
|
||||
|
||||
|
||||
/* ::::: lines connecting cells ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-line {
|
||||
outlinerchildren:-moz-outliner-line {
|
||||
border: 1px dotted ThreeDShadow;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-line(selected, focus) {
|
||||
outlinerchildren:-moz-outliner-line(selected, focus) {
|
||||
border: 1px dotted HighlightText;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-separator {
|
||||
outlinerchildren:-moz-outliner-separator {
|
||||
border-top: 1px solid ThreeDShadow;
|
||||
border-bottom: 1px solid ThreeDHighlight;
|
||||
}
|
||||
|
@ -153,11 +180,11 @@ outlinercol[insertbefore="true"] {
|
|||
-moz-border-left-colors: ThreeDDarkShadow ThreeDShadow;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-column(insertbefore) {
|
||||
outlinerchildren:-moz-outliner-column(insertbefore) {
|
||||
border-left: 1px solid ThreeDShadow;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-column(insertafter) {
|
||||
outlinerchildren:-moz-outliner-column(insertafter) {
|
||||
border-right: 1px solid ThreeDShadow;
|
||||
}
|
||||
|
||||
|
@ -183,17 +210,17 @@ outlinerbody:-moz-outliner-column(insertafter) {
|
|||
|
||||
/* ::::: twisty ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-twisty {
|
||||
outlinerchildren:-moz-outliner-twisty {
|
||||
padding-right: 2px;
|
||||
width: 10px; /* The image's width is 10 pixels */
|
||||
list-style-image: url("chrome://global/skin/tree/twisty-clsd.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-twisty(open) {
|
||||
outlinerchildren:-moz-outliner-twisty(open) {
|
||||
width: 10px; /* The image's width is 10 pixels */
|
||||
list-style-image: url("chrome://global/skin/tree/twisty-open.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-indentation {
|
||||
outlinerchildren:-moz-outliner-indentation {
|
||||
width: 16px;
|
||||
}
|
||||
|
|
|
@ -37,12 +37,12 @@
|
|||
|
||||
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
|
||||
|
||||
outlinerbody:-moz-outliner-image(GeneratedName) {
|
||||
outlinerchildren:-moz-outliner-image(GeneratedName) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/addressbook/icons/abcard.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(GeneratedName, MailList) {
|
||||
outlinerchildren:-moz-outliner-image(GeneratedName, MailList) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/addressbook/icons/ablist.gif");
|
||||
}
|
||||
|
|
|
@ -31,150 +31,147 @@
|
|||
|
||||
/* ::::: mail folder ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-closed.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, newMessages-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, newMessages-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-new-closed.gif");
|
||||
}
|
||||
|
||||
/* ..... Inbox ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Inbox) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Inbox) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-inbox.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Inbox, newMessages-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Inbox, newMessages-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-inbox-new.gif");
|
||||
}
|
||||
|
||||
/* ..... Sent ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Sent) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Sent) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-sent.gif");
|
||||
}
|
||||
|
||||
/* ..... Unsent ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Unsent Messages) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Unsent Messages) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-outbox.gif");
|
||||
}
|
||||
|
||||
/* ..... Drafts ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Drafts) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Drafts) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-draft.gif");
|
||||
}
|
||||
|
||||
/* ..... Templates ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Templates) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Templates) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-template.gif");
|
||||
}
|
||||
|
||||
/* ..... Trash ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Trash) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Trash) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-trash.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-mail.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, biffState-NewMail, isServer-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, biffState-NewMail, isServer-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-mail-new.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(folderNameCol, newMessages-true),
|
||||
outlinerbody:-moz-outliner-cell-text(folderNameCol, specialFolder-Inbox, newMessages-true) {
|
||||
outlinerchildren:-moz-outliner-cell-text(folderNameCol, newMessages-true),
|
||||
outlinerchildren:-moz-outliner-cell-text(folderNameCol, specialFolder-Inbox, newMessages-true) {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* ..... Server Folders ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true, serverType-pop3, isSecure-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true, serverType-pop3, isSecure-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-remote-lock.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true, serverType-imap, isSecure-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true, serverType-imap, isSecure-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-remote-lock.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true, serverType-none) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true, serverType-none) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-local.gif");
|
||||
}
|
||||
|
||||
/* ..... News Folders ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, serverType-nntp) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, serverType-nntp) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-newsgroup.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true, serverType-nntp) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true, serverType-nntp) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-news.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true, serverType-nntp, isSecure-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true, serverType-nntp, isSecure-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-news-lock.gif");
|
||||
}
|
||||
|
||||
/* ::::: All Servers ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(closed, subfoldersHaveUnreadMessages-true)
|
||||
outlinerchildren:-moz-outliner-cell-text(closed, subfoldersHaveUnreadMessages-true)
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(folderNameCol, isServer-true),
|
||||
outlinerbody:-moz-outliner-cell-text(hasUnreadMessages-true) {
|
||||
outlinerchildren:-moz-outliner-cell-text(folderNameCol, isServer-true),
|
||||
outlinerchildren:-moz-outliner-cell-text(hasUnreadMessages-true) {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(folderNameCol, noSelect-true) {
|
||||
outlinerchildren:-moz-outliner-cell-text(folderNameCol, noSelect-true) {
|
||||
color: gray;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
#folder-panel {
|
||||
min-width: 10px;
|
||||
}
|
||||
|
||||
#folderTree {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.tree-folder-checkbox {
|
||||
list-style-image: none;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(syncCol) {
|
||||
outlinerchildren:-moz-outliner-image(syncCol) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/dot.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(syncCol, synchronize-true) {
|
||||
outlinerchildren:-moz-outliner-image(syncCol, synchronize-true) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/check.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(syncCol, isServer-true) {
|
||||
outlinerchildren:-moz-outliner-image(syncCol, isServer-true) {
|
||||
list-style-image: none;
|
||||
}
|
||||
|
||||
#folderUnreadCol,
|
||||
#folderTotalCol {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
|
|
@ -194,24 +194,24 @@
|
|||
|
||||
/* ::::: autocomplete icons ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(default-match) {
|
||||
outlinerchildren:-moz-outliner-cell-text(default-match) {
|
||||
margin: 2px -3px 2px 15px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(local-abook) {
|
||||
outlinerchildren:-moz-outliner-image(local-abook) {
|
||||
margin: 2px -1px 2px 4px;
|
||||
border: none;
|
||||
list-style-image: url("chrome://messenger/skin/addressbook/icons/addrbook.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(remote-abook) {
|
||||
outlinerchildren:-moz-outliner-image(remote-abook) {
|
||||
margin: 2px -3px 2px 2px;
|
||||
border: none;
|
||||
list-style-image: url("chrome://messenger/skin/addressbook/icons/remote-addrbook.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(remote-err) {
|
||||
outlinerchildren:-moz-outliner-image(remote-err) {
|
||||
margin: 2px -3px 2px 2px;
|
||||
border: none;
|
||||
list-style-image: url("chrome://messenger/skin/addressbook/icons/remote-addrbook-error.gif");
|
||||
|
|
|
@ -75,16 +75,16 @@
|
|||
|
||||
/* ::::: for search in subscribe ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-image(nameCol, nntp) {
|
||||
outlinerchildren:-moz-outliner-image(nameCol, nntp) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-newsgroup.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subscribedCol) {
|
||||
outlinerchildren:-moz-outliner-image(subscribedCol) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/dot.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subscribedCol, subscribed) {
|
||||
outlinerchildren:-moz-outliner-image(subscribedCol, subscribed) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/check.gif");
|
||||
}
|
||||
|
||||
|
|
|
@ -30,18 +30,18 @@
|
|||
|
||||
/* ::::: thread decoration ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(read) {
|
||||
outlinerchildren:-moz-outliner-cell-text(read) {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(unread) {
|
||||
outlinerchildren:-moz-outliner-cell-text(unread) {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* on a collapsed thread, if the top level message is read, but the thread has
|
||||
* unread children, underline the text. 4.x mac did this, very slick
|
||||
*/
|
||||
outlinerbody:-moz-outliner-cell-text(container, closed, hasUnread, read) {
|
||||
outlinerchildren:-moz-outliner-cell-text(container, closed, hasUnread, read) {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
@ -50,27 +50,27 @@ outlinerbody:-moz-outliner-cell-text(container, closed, hasUnread, read) {
|
|||
**** Priority colors currently not being used at the moment. It has been
|
||||
**** disabled so as to not conflict with the labels color feature.
|
||||
****
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-highest) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, priority-highest) {
|
||||
color: red;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-high) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, priority-high) {
|
||||
color: rgb(128, 0, 0);
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-lowest) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, priority-lowest) {
|
||||
color: rgb(170, 170, 170);
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-low) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, priority-low) {
|
||||
color: rgb(85, 85, 85);
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, selected) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, selected) {
|
||||
color: -moz-DialogText;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, selected, focus) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, selected, focus) {
|
||||
color: HighlightText;
|
||||
}
|
||||
****/
|
||||
|
@ -93,19 +93,19 @@ outlinercol.threadColumnHeader[sortDirection="descending"] {
|
|||
list-style-image: url("chrome://messenger/skin/icons/threadcol.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(threadCol, container) {
|
||||
outlinerchildren:-moz-outliner-image(threadCol, container) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/thread-closed.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(threadCol, container, open) {
|
||||
outlinerchildren:-moz-outliner-image(threadCol, container, open) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/thread-open.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(threadCol, container, hasUnread) {
|
||||
outlinerchildren:-moz-outliner-image(threadCol, container, hasUnread) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/thread-new-closed.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(threadCol, container, hasUnread, open) {
|
||||
outlinerchildren:-moz-outliner-image(threadCol, container, hasUnread, open) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/thread-new-open.gif");
|
||||
}
|
||||
|
||||
|
@ -115,11 +115,11 @@ outlinercol.readColumnHeader {
|
|||
list-style-image: url("chrome://messenger/skin/icons/readcol.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(unreadButtonColHeader) {
|
||||
outlinerchildren:-moz-outliner-image(unreadButtonColHeader) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/readmail.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(unreadButtonColHeader, unread) {
|
||||
outlinerchildren:-moz-outliner-image(unreadButtonColHeader, unread) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/unreadmail.gif");
|
||||
}
|
||||
|
||||
|
@ -129,68 +129,74 @@ outlinercol.flagColumnHeader {
|
|||
list-style-image: url("chrome://messenger/skin/icons/flagcol.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(flaggedCol) {
|
||||
outlinerchildren:-moz-outliner-image(flaggedCol) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/readmail.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(flaggedCol, flagged) {
|
||||
outlinerchildren:-moz-outliner-image(flaggedCol, flagged) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/flaggedmail.gif");
|
||||
}
|
||||
|
||||
/* ..... subject column ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, new) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, new) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-new.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, attach) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, attach) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-attach.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, imapdeleted) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, imapdeleted) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-imapdelete.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-offl.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, new, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, new, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-new-offl.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, attach, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, attach, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-attach-offl.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, imapdeleted, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, imapdeleted, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-imapdel-offl.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, news) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, news) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-news.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, news, new) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, news, new) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-news-new.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, news, attach) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, news, attach) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-news-attach.gif");
|
||||
}
|
||||
|
||||
#sizeCol,
|
||||
#unreadCol,
|
||||
#totalCol {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,510 +53,510 @@
|
|||
color: #FF0000;
|
||||
color: rgb(128, 0, 0);
|
||||
*/
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFFFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFFFF) {
|
||||
color: #FFFFFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFFFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFFFF, selected) {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CCCCCC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CCCCCC) {
|
||||
color: #CCCCCC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CCCCCC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CCCCCC, selected) {
|
||||
background-color: #CCCCCC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-C0C0C0) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-C0C0C0) {
|
||||
color: #C0C0C0
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-C0C0C0, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-C0C0C0, selected) {
|
||||
background-color: #C0C0C0;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-999999) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-999999) {
|
||||
color: #999999
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-999999, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-999999, selected) {
|
||||
background-color: #999999;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-666666) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-666666) {
|
||||
color: #666666
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-666666, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-666666, selected) {
|
||||
background-color: #666666;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-333333) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-333333) {
|
||||
color: #333333
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-333333, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-333333, selected) {
|
||||
background-color: #333333;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-000000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-000000) {
|
||||
color: #000000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-000000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-000000, selected) {
|
||||
background-color: #000000;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCCCC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCCCC) {
|
||||
color: #FFCCCC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCCCC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCCCC, selected) {
|
||||
background-color: #FFCCCC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF6666) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF6666) {
|
||||
color: #FF6666
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF6666, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF6666, selected) {
|
||||
background-color: #FF6666;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF0000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF0000) {
|
||||
color: #FF0000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF0000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF0000, selected) {
|
||||
background-color: #FF0000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CC0000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CC0000) {
|
||||
color: #CC0000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CC0000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CC0000, selected) {
|
||||
background-color: #CC0000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-990000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-990000) {
|
||||
color: #990000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-990000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-990000, selected) {
|
||||
background-color: #990000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-660000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-660000) {
|
||||
color: #660000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-660000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-660000, selected) {
|
||||
background-color: #660000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-330000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-330000) {
|
||||
color: #330000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-330000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-330000, selected) {
|
||||
background-color: #330000;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCC99) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCC99) {
|
||||
color: #FFCC99
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCC99, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCC99, selected) {
|
||||
background-color: #FFCC99;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF9966) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF9966) {
|
||||
color: #FF9966
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF9966, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF9966, selected) {
|
||||
background-color: #FF9966;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF9900) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF9900) {
|
||||
color: #FF9900
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF9900, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF9900, selected) {
|
||||
background-color: #FF9900;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF6600) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF6600) {
|
||||
color: #FF6600
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF6600, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF6600, selected) {
|
||||
background-color: #FF6600;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CC6600) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CC6600) {
|
||||
color: #CC6600
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CC6600, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CC6600, selected) {
|
||||
background-color: #CC6600;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-993300) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-993300) {
|
||||
color: #993300
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-993300, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-993300, selected) {
|
||||
background-color: #993300;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-663300) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-663300) {
|
||||
color: #663300
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-663300, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-663300, selected) {
|
||||
background-color: #663300;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFF99) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFF99) {
|
||||
color: #FFFF99
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFF99, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFF99, selected) {
|
||||
background-color: #FFFF99;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFF66) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFF66) {
|
||||
color: #FFFF66
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFF66, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFF66, selected) {
|
||||
background-color: #FFFF66;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCC66) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCC66) {
|
||||
color: #FFCC66
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCC66, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCC66, selected) {
|
||||
background-color: #FFCC66;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCC33) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCC33) {
|
||||
color: #FFCC33
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCC33, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCC33, selected) {
|
||||
background-color: #FFCC33;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CC9933) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CC9933) {
|
||||
color: #CC9933
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CC9933, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CC9933, selected) {
|
||||
background-color: #CC9933;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-996633) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-996633) {
|
||||
color: #996633
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-996633, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-996633, selected) {
|
||||
background-color: #996633;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-663333) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-663333) {
|
||||
color: #663333
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-663333, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-663333, selected) {
|
||||
background-color: #663333;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFFCC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFFCC) {
|
||||
color: #FFFFCC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFFCC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFFCC, selected) {
|
||||
background-color: #FFFFCC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFF33) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFF33) {
|
||||
color: #FFFF33
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFF33, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFF33, selected) {
|
||||
background-color: #FFFF33;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFF00) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFF00) {
|
||||
color: #FFFF00
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFF00, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFF00, selected) {
|
||||
background-color: #FFFF00;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCC00) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCC00) {
|
||||
color: #FFCC00
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCC00, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCC00, selected) {
|
||||
background-color: #FFCC00;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-999900) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-999900) {
|
||||
color: #999900
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-999900, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-999900, selected) {
|
||||
background-color: #999900;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-666600) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-666600) {
|
||||
color: #666600
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-666600, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-666600, selected) {
|
||||
background-color: #666600;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-333300) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-333300) {
|
||||
color: #333300
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-333300, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-333300, selected) {
|
||||
background-color: #333300;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-99FF99) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-99FF99) {
|
||||
color: #99FF99
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-99FF99, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-99FF99, selected) {
|
||||
background-color: #99FF99;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-66FF99) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-66FF99) {
|
||||
color: #66FF99
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-66FF99, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-66FF99, selected) {
|
||||
background-color: #66FF99;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-33FF33) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-33FF33) {
|
||||
color: #33FF33
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-33FF33, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-33FF33, selected) {
|
||||
background-color: #33FF33;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-33CC00) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-33CC00) {
|
||||
color: #33CC00
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-33CC00, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-33CC00, selected) {
|
||||
background-color: #33CC00;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-009900) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-009900) {
|
||||
color: #009900
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-009900, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-009900, selected) {
|
||||
background-color: #009900;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-006600) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-006600) {
|
||||
color: #006600
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-006600, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-006600, selected) {
|
||||
background-color: #006600;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-003300) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-003300) {
|
||||
color: #003300
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-003300, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-003300, selected) {
|
||||
background-color: #003300;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-99FFFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-99FFFF) {
|
||||
color: #99FFFF
|
||||
}
|
||||
outlinerbody:-moz-outlinerrow(lc-99FFFF, selected) {
|
||||
outlinerchildren:-moz-outlinerrow(lc-99FFFF, selected) {
|
||||
background-color: #99FFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-33FFFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-33FFFF) {
|
||||
color: #33FFFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-33FFFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-33FFFF, selected) {
|
||||
background-color: #33FFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-66CCCC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-66CCCC) {
|
||||
color: #66CCCC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-66CCCC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-66CCCC, selected) {
|
||||
background-color: #66CCCC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-00CCCC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-00CCCC) {
|
||||
color: #00CCCC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-00CCCC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-00CCCC, selected) {
|
||||
background-color: #00CCCC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-339999) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-339999) {
|
||||
color: #339999
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-339999, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-339999, selected) {
|
||||
background-color: #339999;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-336666) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-336666) {
|
||||
color: #336666
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-336666, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-336666, selected) {
|
||||
background-color: #336666;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-003333) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-003333) {
|
||||
color: #003333
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-003333, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-003333, selected) {
|
||||
background-color: #003333;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CCFFFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CCFFFF) {
|
||||
color: #CCFFFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CCFFFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CCFFFF, selected) {
|
||||
background-color: #CCFFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-66FFFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-66FFFF) {
|
||||
color: #66FFFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-66FFFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-66FFFF, selected) {
|
||||
background-color: #66FFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-33CCFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-33CCFF) {
|
||||
color: #33CCFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-33CCFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-33CCFF, selected) {
|
||||
background-color: #33CCFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-3366FF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-3366FF) {
|
||||
color: #3366FF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-3366FF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-3366FF, selected) {
|
||||
background-color: #3366FF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-3333FF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-3333FF) {
|
||||
color: #3333FF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-3333FF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-3333FF, selected) {
|
||||
background-color: #3333FF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-000099) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-000099) {
|
||||
color: #000099
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-000099, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-000099, selected) {
|
||||
background-color: #000099;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-000066) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-000066) {
|
||||
color: #000066
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-000066, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-000066, selected) {
|
||||
background-color: #000066;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CCCCFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CCCCFF) {
|
||||
color: #CCCCFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CCCCFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CCCCFF, selected) {
|
||||
background-color: #CCCCFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-9999FF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-9999FF) {
|
||||
color: #9999FF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-9999FF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-9999FF, selected) {
|
||||
background-color: #9999FF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-6666CC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-6666CC) {
|
||||
color: #6666CC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-6666CC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-6666CC, selected) {
|
||||
background-color: #6666CC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-6633FF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-6633FF) {
|
||||
color: #6633FF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-6633FF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-6633FF, selected) {
|
||||
background-color: #6633FF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-6600CC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-6600CC) {
|
||||
color: #6600CC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-6600CC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-6600CC, selected) {
|
||||
background-color: #6600CC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-333399) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-333399) {
|
||||
color: #333399
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-333399, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-333399, selected) {
|
||||
background-color: #333399;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-330099) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-330099) {
|
||||
color: #330099
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-330099, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-330099, selected) {
|
||||
background-color: #330099;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCCFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCCFF) {
|
||||
color: #FFCCFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCCFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCCFF, selected) {
|
||||
background-color: #FFCCFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF99FF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF99FF) {
|
||||
color: #FF99FF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF99FF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF99FF, selected) {
|
||||
background-color: #FF99FF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CC66CC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CC66CC) {
|
||||
color: #CC66CC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CC66CC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CC66CC, selected) {
|
||||
background-color: #CC66CC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CC33CC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CC33CC) {
|
||||
color: #CC33CC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CC33CC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CC33CC, selected) {
|
||||
background-color: #CC33CC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-993399) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-993399) {
|
||||
color: #993399
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-993399, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-993399, selected) {
|
||||
background-color: #993399;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-663366) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-663366) {
|
||||
color: #663366
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-663366, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-663366, selected) {
|
||||
background-color: #663366;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-330033) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-330033) {
|
||||
color: #330033
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-330033, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-330033, selected) {
|
||||
background-color: #330033;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-white, selected) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-white, selected) {
|
||||
color: #FFFFFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-cell-text(lc-black, selected) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-black, selected) {
|
||||
color: #000000
|
||||
}
|
||||
|
||||
|
|
|
@ -46,20 +46,20 @@
|
|||
/* ::::: bookmark items ::::: */
|
||||
|
||||
.bookmark-item,
|
||||
outlinerbody:-moz-outliner-image(Name) {
|
||||
outlinerchildren:-moz-outliner-image(Name) {
|
||||
list-style-image: url("chrome://communicator/skin/bookmarks/bookmark-item.gif");
|
||||
}
|
||||
|
||||
.bookmark-item[container="true"],
|
||||
outlinerbody:-moz-outliner-image(Name, container) {
|
||||
outlinerchildren:-moz-outliner-image(Name, container) {
|
||||
list-style-image: url("chrome://communicator/skin/bookmarks/bookmark-folder-closed.gif");
|
||||
}
|
||||
|
||||
.bookmark-item[open="true"],
|
||||
outlinerbody:-moz-outliner-image(Name, open) {
|
||||
outlinerchildren:-moz-outliner-image(Name, open) {
|
||||
list-style-image: url("chrome://communicator/skin/bookmarks/bookmark-folder-open.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(Name) {
|
||||
outlinerchildren:-moz-outliner-image(Name) {
|
||||
padding-right: 2px;
|
||||
}
|
||||
|
|
|
@ -54,11 +54,11 @@
|
|||
|
||||
/* ::::: file/directory items ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-image(FilenameColumn, directory) {
|
||||
outlinerchildren:-moz-outliner-image(FilenameColumn, directory) {
|
||||
list-style-image: url("chrome://global/skin/filepicker/dir-closed.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(FilenameColumn, file) {
|
||||
outlinerchildren:-moz-outliner-image(FilenameColumn, file) {
|
||||
list-style-image: url("chrome://global/skin/filepicker/blank.gif");
|
||||
}
|
||||
|
||||
|
|
|
@ -51,61 +51,88 @@ outliner {
|
|||
-moz-border-left-colors: #BEC3D3 #5D616E;
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
margin: 0px 4px 0px 4px;
|
||||
}
|
||||
|
||||
outlinerbody {
|
||||
outlinerchildren {
|
||||
-moz-user-select: none;
|
||||
}
|
||||
|
||||
/* ::::: outliner rows ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-row {
|
||||
outlinerchildren:-moz-outliner-row {
|
||||
border: 1px solid transparent;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(selected) {
|
||||
outlinerchildren:-moz-outliner-row(selected) {
|
||||
background-color: #C7D0D9;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(selected, focus) {
|
||||
outlinerchildren:-moz-outliner-row(selected, focus) {
|
||||
background-color: #424F63;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-row(current, focus) {
|
||||
outlinerchildren:-moz-outliner-row(current, focus) {
|
||||
border-top-color: #000000;
|
||||
border-bottom-color: #000000;
|
||||
}
|
||||
|
||||
/* ::::: outliner cells ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell {
|
||||
padding: 0px 0px 0px 2px;
|
||||
outlinerchildren:-moz-outliner-cell {
|
||||
padding: 0px 2px 0px 2px;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text {
|
||||
outlinerchildren:-moz-outliner-cell-text {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(selected) {
|
||||
outlinerchildren:-moz-outliner-cell-text(selected) {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(selected, focus) {
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, focus) {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(primary) {
|
||||
border: 2px solid transparent;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(primary, drop) {
|
||||
background-color: #424F63;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(primary, dropBefore) {
|
||||
border-top: 2px solid #424F63;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, primary, dropBefore) {
|
||||
border-top: 2px solid #FFFFFF;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(primary, dropAfter) {
|
||||
border-bottom: 2px solid #424F63;
|
||||
}
|
||||
|
||||
outlinerchildren:-moz-outliner-cell-text(selected, primary, dropAfter) {
|
||||
border-bottom: 2px solid #FFFFFF;
|
||||
}
|
||||
|
||||
|
||||
/* ::::: lines connecting cells ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-line {
|
||||
outlinerchildren:-moz-outliner-line {
|
||||
border: 1px dotted #808080;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-line(selected, focus) {
|
||||
outlinerchildren:-moz-outliner-line(selected, focus) {
|
||||
border: 1px dotted #FFFFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-separator {
|
||||
outlinerchildren:-moz-outliner-separator {
|
||||
border-top: 1px solid #7A8490;
|
||||
border-bottom: 1px solid #FEFEFE;
|
||||
}
|
||||
|
@ -172,11 +199,11 @@ outlinercol[insertbefore="true"] {
|
|||
-moz-border-left-colors: #000000 #666666;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-column(insertbefore) {
|
||||
outlinerchildren:-moz-outliner-column(insertbefore) {
|
||||
border-left: 1px solid #AAAAAA;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-column(insertafter) {
|
||||
outlinerchildren:-moz-outliner-column(insertafter) {
|
||||
border-right: 1px solid #AAAAAA;
|
||||
}
|
||||
|
||||
|
@ -202,17 +229,17 @@ outlinerbody:-moz-outliner-column(insertafter) {
|
|||
|
||||
/* ::::: twisty ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-twisty {
|
||||
outlinerchildren:-moz-outliner-twisty {
|
||||
padding-right: 2px;
|
||||
width: 10px; /* The image's width is 10 pixels */
|
||||
list-style-image: url("chrome://global/skin/tree/twisty-clsd.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-twisty(open) {
|
||||
outlinerchildren:-moz-outliner-twisty(open) {
|
||||
width: 10px; /* The image's width is 10 pixels */
|
||||
list-style-image: url("chrome://global/skin/tree/twisty-open.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-indentation {
|
||||
outlinerchildren:-moz-outliner-indentation {
|
||||
width: 16px;
|
||||
}
|
||||
|
|
|
@ -37,12 +37,12 @@
|
|||
|
||||
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
|
||||
|
||||
outlinerbody:-moz-outliner-image(GeneratedName) {
|
||||
outlinerchildren:-moz-outliner-image(GeneratedName) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/addressbook/icons/person.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(GeneratedName, MailList) {
|
||||
outlinerchildren:-moz-outliner-image(GeneratedName, MailList) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/addressbook/icons/list.gif");
|
||||
}
|
||||
|
|
|
@ -45,122 +45,122 @@
|
|||
|
||||
/* ::::: mail folder ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-closed.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, newMessages-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, newMessages-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-new.gif");
|
||||
}
|
||||
|
||||
/* ..... Inbox ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Inbox) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Inbox) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-inbox.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Inbox, newMessages-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Inbox, newMessages-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-inbox-new.gif");
|
||||
}
|
||||
|
||||
/* ..... Sent ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Sent) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Sent) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-sent.gif");
|
||||
}
|
||||
|
||||
/* ..... Drafts ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Drafts) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Drafts) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-draft.gif");
|
||||
}
|
||||
|
||||
/* ..... Templates ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Templates) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Templates) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-template.gif");
|
||||
}
|
||||
|
||||
/* ..... Unsent Messages ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Unsent Messages) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Unsent Messages) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-outbox.gif");
|
||||
}
|
||||
|
||||
/* ..... Trash ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, specialFolder-Trash) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, specialFolder-Trash) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-trash.gif");
|
||||
}
|
||||
|
||||
/* ..... Server Folders ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-mail.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, biffState-NewMail, isServer-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, biffState-NewMail, isServer-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-mail-new.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true, serverType-pop3, isSecure-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true, serverType-pop3, isSecure-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-remote-lock.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true, serverType-imap, isSecure-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true, serverType-imap, isSecure-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-remote-lock.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true, serverType-none) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true, serverType-none) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-local.gif");
|
||||
}
|
||||
|
||||
/* ..... News Folders ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, serverType-nntp) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, serverType-nntp) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-newsgroup.gif");
|
||||
}
|
||||
|
||||
/* ..... News Servers ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true, serverType-nntp) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true, serverType-nntp) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-news.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(folderNameCol, isServer-true, serverType-nntp, isSecure-true) {
|
||||
outlinerchildren:-moz-outliner-image(folderNameCol, isServer-true, serverType-nntp, isSecure-true) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/server-news-lock.gif");
|
||||
}
|
||||
|
||||
/* ::::: All Servers ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(closed, subfoldersHaveUnreadMessages-true)
|
||||
outlinerchildren:-moz-outliner-cell-text(closed, subfoldersHaveUnreadMessages-true)
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(folderNameCol, isServer-true),
|
||||
outlinerbody:-moz-outliner-cell-text(hasUnreadMessages-true) {
|
||||
outlinerchildren:-moz-outliner-cell-text(folderNameCol, isServer-true),
|
||||
outlinerchildren:-moz-outliner-cell-text(hasUnreadMessages-true) {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(folderNameCol, noSelect-true) {
|
||||
outlinerchildren:-moz-outliner-cell-text(folderNameCol, noSelect-true) {
|
||||
color: gray;
|
||||
font-style: italic;
|
||||
}
|
||||
|
@ -169,17 +169,20 @@ outlinerbody:-moz-outliner-cell-text(folderNameCol, noSelect-true) {
|
|||
list-style-image: none;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(syncCol) {
|
||||
outlinerchildren:-moz-outliner-image(syncCol) {
|
||||
list-style-image: url("chrome://global/skin/checkbox/cbox.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(syncCol, synchronize-true) {
|
||||
outlinerchildren:-moz-outliner-image(syncCol, synchronize-true) {
|
||||
list-style-image: url("chrome://global/skin/checkbox/cbox-check.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(syncCol, isServer-true) {
|
||||
outlinerchildren:-moz-outliner-image(syncCol, isServer-true) {
|
||||
list-style-image: none;
|
||||
}
|
||||
|
||||
|
||||
#folderUnreadCol,
|
||||
#folderTotalCol {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
|
|
@ -226,24 +226,24 @@
|
|||
|
||||
/* ::::: autocomplete icons ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(default-match) {
|
||||
outlinerchildren:-moz-outliner-cell-text(default-match) {
|
||||
margin: 2px -3px 2px 15px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(local-abook) {
|
||||
outlinerchildren:-moz-outliner-image(local-abook) {
|
||||
margin: 2px -3px 2px 4px;
|
||||
border: none;
|
||||
list-style-image: url("chrome://messenger/skin/addressbook/icons/myaddrbk.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(remote-abook) {
|
||||
outlinerchildren:-moz-outliner-image(remote-abook) {
|
||||
margin: 2px -4px 2px 3px;
|
||||
border: none;
|
||||
list-style-image: url("chrome://messenger/skin/addressbook/icons/directory.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(remote-err) {
|
||||
outlinerchildren:-moz-outliner-image(remote-err) {
|
||||
margin: 2px -4px 2px 3px;
|
||||
border: none;
|
||||
list-style-image: url("chrome://messenger/skin/addressbook/icons/directory-down.gif");
|
||||
|
|
|
@ -96,16 +96,16 @@ statusbarpanel,
|
|||
|
||||
/* ::::: for search in subscribe ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-image(nameCol, nntp) {
|
||||
outlinerchildren:-moz-outliner-image(nameCol, nntp) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/folder-newsgroup.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subscribedCol) {
|
||||
outlinerchildren:-moz-outliner-image(subscribedCol) {
|
||||
list-style-image: url("chrome://global/skin/checkbox/cbox.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subscribedCol, subscribed) {
|
||||
outlinerchildren:-moz-outliner-image(subscribedCol, subscribed) {
|
||||
list-style-image: url("chrome://global/skin/checkbox/cbox-check.gif");
|
||||
}
|
||||
|
||||
|
|
|
@ -44,18 +44,18 @@
|
|||
|
||||
/* ::::: thread decoration ::::: */
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(read) {
|
||||
outlinerchildren:-moz-outliner-cell-text(read) {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(unread) {
|
||||
outlinerchildren:-moz-outliner-cell-text(unread) {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* on a collapsed thread, if the top level message is read, but the thread has
|
||||
* unread children, underline the text. 4.x mac did this, very slick
|
||||
*/
|
||||
outlinerbody:-moz-outliner-cell-text(container, closed, hasUnread, read) {
|
||||
outlinerchildren:-moz-outliner-cell-text(container, closed, hasUnread, read) {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
@ -64,27 +64,27 @@ outlinerbody:-moz-outliner-cell-text(container, closed, hasUnread, read) {
|
|||
**** Priority colors currently not being used at the moment. It has been
|
||||
**** disabled so as to not conflict with the labels color feature.
|
||||
****
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-highest) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, priority-highest) {
|
||||
color: red;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-high) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, priority-high) {
|
||||
color: rgb(128, 0, 0);
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-lowest) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, priority-lowest) {
|
||||
color: rgb(170, 170, 170);
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-low) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, priority-low) {
|
||||
color: rgb(85, 85, 85);
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, selected, focus) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, selected, focus) {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(priorityCol, selected, focus) {
|
||||
outlinerchildren:-moz-outliner-cell-text(priorityCol, selected, focus) {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
****/
|
||||
|
@ -107,19 +107,19 @@ outlinercol.threadColumnHeader[sortDirection="descending"] {
|
|||
list-style-image: url("chrome://messenger/skin/icons/threadcol-threaded.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(threadCol, container) {
|
||||
outlinerchildren:-moz-outliner-image(threadCol, container) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/thread-closed.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(threadCol, container, open) {
|
||||
outlinerchildren:-moz-outliner-image(threadCol, container, open) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/thread-open.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(threadCol, container, hasUnread) {
|
||||
outlinerchildren:-moz-outliner-image(threadCol, container, hasUnread) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/thread-new-closed.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(threadCol, container, hasUnread, open) {
|
||||
outlinerchildren:-moz-outliner-image(threadCol, container, hasUnread, open) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/thread-new-open.gif");
|
||||
}
|
||||
|
||||
|
@ -129,13 +129,13 @@ outlinercol.readColumnHeader {
|
|||
list-style-image: url("chrome://messenger/skin/icons/readcol-unread.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(unreadButtonColHeader) {
|
||||
outlinerchildren:-moz-outliner-image(unreadButtonColHeader) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/readcol-read.gif");
|
||||
padding-left: 0px;
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(unreadButtonColHeader, unread) {
|
||||
outlinerchildren:-moz-outliner-image(unreadButtonColHeader, unread) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/readcol-unread.gif");
|
||||
}
|
||||
|
||||
|
@ -145,86 +145,90 @@ outlinercol.flagColumnHeader {
|
|||
list-style-image: url("chrome://messenger/skin/icons/flagcol-flagged.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(flaggedCol) {
|
||||
outlinerchildren:-moz-outliner-image(flaggedCol) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/readcol-read.gif");
|
||||
padding-left: 0px;
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(flaggedCol, flagged) {
|
||||
outlinerchildren:-moz-outliner-image(flaggedCol, flagged) {
|
||||
list-style-image: url("chrome://messenger/skin/icons/flagcol-flagged.gif");
|
||||
}
|
||||
|
||||
/* ..... subject column ..... */
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, new) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, new) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-new.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, attach) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, attach) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-attach.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, imapdeleted) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, imapdeleted) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-imapdelete.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-offl.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, new, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, new, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-new-offl.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, attach, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, attach, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-attach-offl.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, imapdeleted, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, imapdeleted, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-mail-delete-offl.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, news) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, news) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-news.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, news, new) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, news, new) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-news-new.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, news, attach) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, news, attach) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-news-attach.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, news, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, news, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-news-offl.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, news, new, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, news, new, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-news-new-offl.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(subjectCol, news, attach, offline) {
|
||||
outlinerchildren:-moz-outliner-image(subjectCol, news, attach, offline) {
|
||||
padding-right: 2px;
|
||||
list-style-image: url("chrome://messenger/skin/icons/message-news-attach-offl.gif");
|
||||
}
|
||||
|
||||
|
||||
#sizeCol,
|
||||
#unreadCol,
|
||||
#totalCol {
|
||||
text-align: right;
|
||||
}
|
||||
|
|
|
@ -53,510 +53,510 @@
|
|||
color: #FF0000;
|
||||
color: rgb(128, 0, 0);
|
||||
*/
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFFFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFFFF) {
|
||||
color: #FFFFFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFFFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFFFF, selected) {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CCCCCC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CCCCCC) {
|
||||
color: #CCCCCC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CCCCCC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CCCCCC, selected) {
|
||||
background-color: #CCCCCC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-C0C0C0) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-C0C0C0) {
|
||||
color: #C0C0C0
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-C0C0C0, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-C0C0C0, selected) {
|
||||
background-color: #C0C0C0;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-999999) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-999999) {
|
||||
color: #999999
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-999999, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-999999, selected) {
|
||||
background-color: #999999;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-666666) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-666666) {
|
||||
color: #666666
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-666666, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-666666, selected) {
|
||||
background-color: #666666;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-333333) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-333333) {
|
||||
color: #333333
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-333333, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-333333, selected) {
|
||||
background-color: #333333;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-000000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-000000) {
|
||||
color: #000000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-000000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-000000, selected) {
|
||||
background-color: #000000;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCCCC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCCCC) {
|
||||
color: #FFCCCC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCCCC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCCCC, selected) {
|
||||
background-color: #FFCCCC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF6666) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF6666) {
|
||||
color: #FF6666
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF6666, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF6666, selected) {
|
||||
background-color: #FF6666;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF0000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF0000) {
|
||||
color: #FF0000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF0000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF0000, selected) {
|
||||
background-color: #FF0000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CC0000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CC0000) {
|
||||
color: #CC0000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CC0000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CC0000, selected) {
|
||||
background-color: #CC0000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-990000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-990000) {
|
||||
color: #990000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-990000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-990000, selected) {
|
||||
background-color: #990000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-660000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-660000) {
|
||||
color: #660000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-660000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-660000, selected) {
|
||||
background-color: #660000;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-330000) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-330000) {
|
||||
color: #330000
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-330000, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-330000, selected) {
|
||||
background-color: #330000;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCC99) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCC99) {
|
||||
color: #FFCC99
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCC99, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCC99, selected) {
|
||||
background-color: #FFCC99;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF9966) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF9966) {
|
||||
color: #FF9966
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF9966, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF9966, selected) {
|
||||
background-color: #FF9966;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF9900) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF9900) {
|
||||
color: #FF9900
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF9900, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF9900, selected) {
|
||||
background-color: #FF9900;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF6600) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF6600) {
|
||||
color: #FF6600
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF6600, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF6600, selected) {
|
||||
background-color: #FF6600;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CC6600) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CC6600) {
|
||||
color: #CC6600
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CC6600, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CC6600, selected) {
|
||||
background-color: #CC6600;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-993300) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-993300) {
|
||||
color: #993300
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-993300, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-993300, selected) {
|
||||
background-color: #993300;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-663300) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-663300) {
|
||||
color: #663300
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-663300, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-663300, selected) {
|
||||
background-color: #663300;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFF99) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFF99) {
|
||||
color: #FFFF99
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFF99, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFF99, selected) {
|
||||
background-color: #FFFF99;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFF66) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFF66) {
|
||||
color: #FFFF66
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFF66, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFF66, selected) {
|
||||
background-color: #FFFF66;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCC66) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCC66) {
|
||||
color: #FFCC66
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCC66, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCC66, selected) {
|
||||
background-color: #FFCC66;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCC33) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCC33) {
|
||||
color: #FFCC33
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCC33, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCC33, selected) {
|
||||
background-color: #FFCC33;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CC9933) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CC9933) {
|
||||
color: #CC9933
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CC9933, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CC9933, selected) {
|
||||
background-color: #CC9933;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-996633) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-996633) {
|
||||
color: #996633
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-996633, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-996633, selected) {
|
||||
background-color: #996633;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-663333) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-663333) {
|
||||
color: #663333
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-663333, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-663333, selected) {
|
||||
background-color: #663333;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFFCC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFFCC) {
|
||||
color: #FFFFCC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFFCC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFFCC, selected) {
|
||||
background-color: #FFFFCC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFF33) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFF33) {
|
||||
color: #FFFF33
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFF33, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFF33, selected) {
|
||||
background-color: #FFFF33;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFFF00) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFFF00) {
|
||||
color: #FFFF00
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFFF00, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFFF00, selected) {
|
||||
background-color: #FFFF00;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCC00) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCC00) {
|
||||
color: #FFCC00
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCC00, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCC00, selected) {
|
||||
background-color: #FFCC00;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-999900) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-999900) {
|
||||
color: #999900
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-999900, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-999900, selected) {
|
||||
background-color: #999900;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-666600) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-666600) {
|
||||
color: #666600
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-666600, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-666600, selected) {
|
||||
background-color: #666600;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-333300) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-333300) {
|
||||
color: #333300
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-333300, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-333300, selected) {
|
||||
background-color: #333300;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-99FF99) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-99FF99) {
|
||||
color: #99FF99
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-99FF99, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-99FF99, selected) {
|
||||
background-color: #99FF99;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-66FF99) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-66FF99) {
|
||||
color: #66FF99
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-66FF99, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-66FF99, selected) {
|
||||
background-color: #66FF99;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-33FF33) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-33FF33) {
|
||||
color: #33FF33
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-33FF33, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-33FF33, selected) {
|
||||
background-color: #33FF33;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-33CC00) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-33CC00) {
|
||||
color: #33CC00
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-33CC00, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-33CC00, selected) {
|
||||
background-color: #33CC00;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-009900) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-009900) {
|
||||
color: #009900
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-009900, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-009900, selected) {
|
||||
background-color: #009900;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-006600) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-006600) {
|
||||
color: #006600
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-006600, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-006600, selected) {
|
||||
background-color: #006600;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-003300) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-003300) {
|
||||
color: #003300
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-003300, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-003300, selected) {
|
||||
background-color: #003300;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-99FFFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-99FFFF) {
|
||||
color: #99FFFF
|
||||
}
|
||||
outlinerbody:-moz-outlinerrow(lc-99FFFF, selected) {
|
||||
outlinerchildren:-moz-outlinerrow(lc-99FFFF, selected) {
|
||||
background-color: #99FFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-33FFFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-33FFFF) {
|
||||
color: #33FFFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-33FFFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-33FFFF, selected) {
|
||||
background-color: #33FFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-66CCCC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-66CCCC) {
|
||||
color: #66CCCC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-66CCCC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-66CCCC, selected) {
|
||||
background-color: #66CCCC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-00CCCC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-00CCCC) {
|
||||
color: #00CCCC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-00CCCC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-00CCCC, selected) {
|
||||
background-color: #00CCCC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-339999) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-339999) {
|
||||
color: #339999
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-339999, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-339999, selected) {
|
||||
background-color: #339999;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-336666) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-336666) {
|
||||
color: #336666
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-336666, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-336666, selected) {
|
||||
background-color: #336666;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-003333) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-003333) {
|
||||
color: #003333
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-003333, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-003333, selected) {
|
||||
background-color: #003333;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CCFFFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CCFFFF) {
|
||||
color: #CCFFFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CCFFFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CCFFFF, selected) {
|
||||
background-color: #CCFFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-66FFFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-66FFFF) {
|
||||
color: #66FFFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-66FFFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-66FFFF, selected) {
|
||||
background-color: #66FFFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-33CCFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-33CCFF) {
|
||||
color: #33CCFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-33CCFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-33CCFF, selected) {
|
||||
background-color: #33CCFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-3366FF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-3366FF) {
|
||||
color: #3366FF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-3366FF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-3366FF, selected) {
|
||||
background-color: #3366FF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-3333FF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-3333FF) {
|
||||
color: #3333FF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-3333FF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-3333FF, selected) {
|
||||
background-color: #3333FF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-000099) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-000099) {
|
||||
color: #000099
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-000099, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-000099, selected) {
|
||||
background-color: #000099;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-000066) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-000066) {
|
||||
color: #000066
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-000066, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-000066, selected) {
|
||||
background-color: #000066;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CCCCFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CCCCFF) {
|
||||
color: #CCCCFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CCCCFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CCCCFF, selected) {
|
||||
background-color: #CCCCFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-9999FF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-9999FF) {
|
||||
color: #9999FF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-9999FF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-9999FF, selected) {
|
||||
background-color: #9999FF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-6666CC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-6666CC) {
|
||||
color: #6666CC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-6666CC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-6666CC, selected) {
|
||||
background-color: #6666CC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-6633FF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-6633FF) {
|
||||
color: #6633FF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-6633FF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-6633FF, selected) {
|
||||
background-color: #6633FF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-6600CC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-6600CC) {
|
||||
color: #6600CC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-6600CC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-6600CC, selected) {
|
||||
background-color: #6600CC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-333399) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-333399) {
|
||||
color: #333399
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-333399, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-333399, selected) {
|
||||
background-color: #333399;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-330099) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-330099) {
|
||||
color: #330099
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-330099, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-330099, selected) {
|
||||
background-color: #330099;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FFCCFF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FFCCFF) {
|
||||
color: #FFCCFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FFCCFF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FFCCFF, selected) {
|
||||
background-color: #FFCCFF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-FF99FF) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-FF99FF) {
|
||||
color: #FF99FF
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-FF99FF, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-FF99FF, selected) {
|
||||
background-color: #FF99FF;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CC66CC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CC66CC) {
|
||||
color: #CC66CC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CC66CC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CC66CC, selected) {
|
||||
background-color: #CC66CC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-CC33CC) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-CC33CC) {
|
||||
color: #CC33CC
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-CC33CC, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-CC33CC, selected) {
|
||||
background-color: #CC33CC;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-993399) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-993399) {
|
||||
color: #993399
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-993399, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-993399, selected) {
|
||||
background-color: #993399;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-663366) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-663366) {
|
||||
color: #663366
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-663366, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-663366, selected) {
|
||||
background-color: #663366;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-330033) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-330033) {
|
||||
color: #330033
|
||||
}
|
||||
outlinerbody:-moz-outliner-row(lc-330033, selected) {
|
||||
outlinerchildren:-moz-outliner-row(lc-330033, selected) {
|
||||
background-color: #330033;
|
||||
}
|
||||
|
||||
|
||||
outlinerbody:-moz-outliner-cell-text(lc-white, selected) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-white, selected) {
|
||||
color: #FFFFFF
|
||||
}
|
||||
outlinerbody:-moz-outliner-cell-text(lc-black, selected) {
|
||||
outlinerchildren:-moz-outliner-cell-text(lc-black, selected) {
|
||||
color: #000000
|
||||
}
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
<content>
|
||||
<xul:outliner anonid="outliner" class="autocomplete-outliner" flex="1">
|
||||
<xul:outlinercols anonid="outlinercols"/>
|
||||
<xul:outlinerbody anonid="outlinerbody" class="autocomplete-outlinerbody" flex="1"/>
|
||||
<xul:outlinerchildren anonid="outlinerbody" class="autocomplete-outlinerbody" flex="1"/>
|
||||
</xul:outliner>
|
||||
<xul:box role="search-box" class="autocomplete-search-box"/>
|
||||
</content>
|
||||
|
|
|
@ -1202,7 +1202,7 @@
|
|||
<content>
|
||||
<xul:outliner anonid="outliner" class="autocomplete-outliner" flex="1">
|
||||
<xul:outlinercols anonid="outlinercols"/>
|
||||
<xul:outlinerbody anonid="outlinerbody" class="autocomplete-outlinerbody" flex="1"/>
|
||||
<xul:outlinerchildren anonid="outlinerbody" class="autocomplete-outlinerbody"/>
|
||||
</xul:outliner>
|
||||
</content>
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
|
||||
// We implement nsIController
|
||||
this.outliner.controllers.appendController(this.controller);
|
||||
var olb = document.getAnonymousElementByAttribute(this, "anonid", "bookmarks-outlinerbody");
|
||||
var olb = document.getAnonymousElementByAttribute(this, "anonid", "bookmarks-outliner");
|
||||
olb = olb.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
olb.addObserver(this.builderObserver);
|
||||
// need to create string bundle manually instead of using <xul:stringbundle/>
|
||||
|
@ -97,7 +97,6 @@
|
|||
var stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
|
||||
var bundleURL = "chrome://communicator/locale/bookmarks/bookmark.properties";
|
||||
this._bundle = stringBundleService.createBundle(bundleURL, localeService.GetApplicationLocale());
|
||||
setTimeout(this.refreshSort, 0, this);
|
||||
]]></constructor>
|
||||
<destructor><![CDATA[
|
||||
this.outlinerBuilder.removeObserver(this.builderObserver);
|
||||
|
@ -112,7 +111,7 @@
|
|||
|
||||
<property name="outlinerBuilder">
|
||||
<getter><![CDATA[
|
||||
return this.outlinerBoxObject.outlinerBody.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
return this.outliner.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder);
|
||||
]]></getter>
|
||||
</property>
|
||||
|
||||
|
@ -122,12 +121,6 @@
|
|||
]]></getter>
|
||||
</property>
|
||||
|
||||
<property name="outlinerBody">
|
||||
<getter><![CDATA[
|
||||
return document.getAnonymousElementByAttribute(this, "anonid", "bookmarks-outlinerbody");
|
||||
]]></getter>
|
||||
</property>
|
||||
|
||||
<property name="currentIndex">
|
||||
<getter><![CDATA[
|
||||
return this.outlinerBoxObject.selection.currentIndex;
|
||||
|
@ -282,7 +275,7 @@
|
|||
mOuter: this,
|
||||
onDragStart: function (aEvent, aXferData, aDragAction)
|
||||
{
|
||||
if (this.mOuter.outlinerBody.getAttribute("sortActive") == "true")
|
||||
if (this.mOuter.outliner.getAttribute("sortActive") == "true")
|
||||
throw Components.results.NS_OK;
|
||||
aXferData.data = new TransferDataSet();
|
||||
var rangeCount = this.mOuter.outlinerBoxObject.selection.getRangeCount();
|
||||
|
@ -550,9 +543,6 @@
|
|||
<field name="builderObserver"><![CDATA[
|
||||
({
|
||||
mOuter: this,
|
||||
inDropBefore: 1,
|
||||
inDropOn: 2,
|
||||
inDropAfter: 3,
|
||||
canDropOn: function(index)
|
||||
{
|
||||
return true;
|
||||
|
@ -672,10 +662,11 @@
|
|||
if (dragSession.dragAction & kCopyAction)
|
||||
rSource = BookmarksUtils.cloneFolder(rSource, rContainer, rTarget);
|
||||
}
|
||||
if (orientation == this.inDropBefore || orientation == this.inDropAfter) {
|
||||
if (orientation == Components.interfaces.nsIOutlinerView.inDropBefore ||
|
||||
orientation == Components.interfaces.nsIOutlinerView.inDropAfter) {
|
||||
if (dropIx == -1) break;
|
||||
RDFC.Init(kBMDS, rContainer);
|
||||
RDFC.InsertElementAt(rSource, rParent ? dropIx : (orientation == this.inDropAfter ? ++dropIx : dropIx), true);
|
||||
RDFC.InsertElementAt(rSource, rParent ? dropIx : (orientation == Components.interfaces.nsIOutlinerView.inDropAfter ? ++dropIx : dropIx), true);
|
||||
}
|
||||
else {
|
||||
var cont = this.mOuter.outlinerBuilder.getResourceAtIndex(row);
|
||||
|
@ -780,7 +771,7 @@
|
|||
<!-- RDF utility functions required by base binding -->
|
||||
<property name="db">
|
||||
<getter><![CDATA[
|
||||
return this.outlinerBody.database;
|
||||
return this.outliner.database;
|
||||
]]></getter>
|
||||
</property>
|
||||
|
||||
|
@ -816,16 +807,6 @@
|
|||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="refreshSort">
|
||||
<parameter name="aContext"/>
|
||||
<body><![CDATA[
|
||||
var column = document.getAnonymousElementByAttribute(aContext, "sortDirection", "*");
|
||||
if (column)
|
||||
aContext.outlinerBoxObject.view.cycleHeader(column.id, column);
|
||||
aContext = null;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="selectAll">
|
||||
<body><![CDATA[
|
||||
this.outlinerBoxObject.selection.selectAll();
|
||||
|
@ -1660,41 +1641,39 @@
|
|||
<menupopup id="bmContext"
|
||||
onpopupshowing="this.parentNode.createContextMenu(event);"/>
|
||||
<vbox flex="1">
|
||||
<outliner flex="1" flags="dont-test-empty" anonid="bookmarks-outliner"
|
||||
class="plain" enableColumnDrag="true"
|
||||
onkeypress="if (event.keyCode == 13) this.parentNode.parentNode.openItem(event, true);">
|
||||
<outlinerbody anonid="bookmarks-outlinerbody" datasources="rdf:bookmarks rdf:internetsearch rdf:files rdf:localsearch" flex="1" ref="NC:BookmarksRoot" flags="dont-build-content"
|
||||
ondblclick="this.parentNode.parentNode.parentNode.openItem(event, false);"
|
||||
ondraggesture="nsDragAndDrop.startDrag(event, this.parentNode.parentNode.parentNode.DNDObserver);"
|
||||
onselect="this.parentNode.parentNode.parentNode.outlinerBoxObject.view.selectionChanged();">
|
||||
<template>
|
||||
<rule rdf:type="http://home.netscape.com/NC-rdf#BookmarkSeparator">
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:*">
|
||||
<outlinerrow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type separator"/>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</rule>
|
||||
<rule>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:*">
|
||||
<outlinerrow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type rdf:http://home.netscape.com/NC-rdf#loading rdf:http://home.netscape.com/WEB-rdf#status">
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#Name" />
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#URL" />
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#ShortcutURL" />
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#Description" />
|
||||
<outlinercell label="rdf:http://home.netscape.com/WEB-rdf#LastVisitDate"/>
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#BookmarkAddDate" />
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#LastModifiedDate" />
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</rule>
|
||||
</template>
|
||||
</outlinerbody>
|
||||
<outliner anonid="bookmarks-outliner" flex="1" class="plain" enableColumnDrag="true"
|
||||
datasources="rdf:bookmarks rdf:internetsearch rdf:files rdf:localsearch" ref="NC:BookmarksRoot" flags="dont-build-content"
|
||||
onkeypress="if (event.keyCode == 13) this.parentNode.parentNode.openItem(event, true);"
|
||||
ondblclick="if (event.originalTarget.localName == 'outlinerchildren') this.parentNode.parentNode.openItem(event, false);"
|
||||
ondraggesture="if (event.originalTarget.localName == 'outlinerchildren') nsDragAndDrop.startDrag(event, this.parentNode.parentNode.DNDObserver);"
|
||||
onselect="this.parentNode.parentNode.view.selectionChanged();">
|
||||
<template>
|
||||
<rule rdf:type="http://home.netscape.com/NC-rdf#BookmarkSeparator">
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:*">
|
||||
<outlinerrow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type separator"/>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</rule>
|
||||
<rule>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:*">
|
||||
<outlinerrow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type rdf:http://home.netscape.com/NC-rdf#loading rdf:http://home.netscape.com/WEB-rdf#status">
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#Name" />
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#URL" />
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#ShortcutURL" />
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#Description" />
|
||||
<outlinercell label="rdf:http://home.netscape.com/WEB-rdf#LastVisitDate"/>
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#BookmarkAddDate" />
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#LastModifiedDate" />
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</rule>
|
||||
</template>
|
||||
<outlinercols>
|
||||
<outlinercol id="Name" label="&outlinercol.name.label;" flex="1" primary="true" class="sortDirectionIndicator" persist="width hidden sortActive sortDirection ordinal" sort="rdf:http://home.netscape.com/NC-rdf#Name"
|
||||
sortActive="true" sortDirection="descending"/>
|
||||
sortActive="true" sortDirection="none"/>
|
||||
<splitter class="tree-splitter" />
|
||||
<outlinercol id="URL" label="&outlinercol.url.label;" flex="1" class="sortDirectionIndicator" sort="rdf:http://home.netscape.com/NC-rdf#URL" persist="width hidden sortActive sortDirection ordinal" />
|
||||
<splitter class="tree-splitter" />
|
||||
|
@ -1721,34 +1700,33 @@
|
|||
contextmenu="_child">
|
||||
<menupopup id="bmContext"
|
||||
onpopupshowing="this.parentNode.createContextMenu(event);"/>
|
||||
<outliner flex="1" flags="dont-test-empty" anonid="bookmarks-outliner" enableColumnDrag="true"
|
||||
onkeypress="if (event.keyCode == 13) this.parentNode.openItem(event, false);">
|
||||
<outlinerbody anonid="bookmarks-outlinerbody" datasources="rdf:bookmarks rdf:internetsearch rdf:files rdf:localsearch" flex="1" ref="NC:BookmarksRoot" flags="dont-build-content"
|
||||
ondraggesture="nsDragAndDrop.startDrag(event, this.parentNode.parentNode.DNDObserver);"
|
||||
onclick="if (this.parentNode.parentNode.validOpenClickConditions(event)) this.parentNode.parentNode.openItem(event, false);"
|
||||
onselect="this.parentNode.parentNode.outlinerBoxObject.view.selectionChanged();">
|
||||
<template>
|
||||
<rule rdf:type="http://home.netscape.com/NC-rdf#BookmarkSeparator">
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:*">
|
||||
<outlinerrow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type separator" />
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</rule>
|
||||
<rule>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:*">
|
||||
<outlinerrow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type rdf:http://home.netscape.com/NC-rdf#loading rdf:http://home.netscape.com/WEB-rdf#status">
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#Name" />
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</rule>
|
||||
</template>
|
||||
</outlinerbody>
|
||||
<outliner anonid="bookmarks-outliner" flex="1" hidecolumnpicker="true"
|
||||
datasources="rdf:bookmarks rdf:internetsearch rdf:files rdf:localsearch" ref="NC:BookmarksRoot" flags="dont-build-content"
|
||||
onkeypress="if (event.keyCode == 13) this.parentNode.openItem(event, false);"
|
||||
ondraggesture="if (event.originalTarget.localName == 'outlinerchildren') nsDragAndDrop.startDrag(event, this.parentNode.DNDObserver);"
|
||||
onclick="if (this.parentNode.validOpenClickConditions(event)) this.parentNode.openItem(event, false);"
|
||||
onselect="this.parentNode.outlinerBoxObject.view.selectionChanged();">
|
||||
<template>
|
||||
<rule rdf:type="http://home.netscape.com/NC-rdf#BookmarkSeparator">
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:*">
|
||||
<outlinerrow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type separator" />
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</rule>
|
||||
<rule>
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:*">
|
||||
<outlinerrow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type rdf:http://home.netscape.com/NC-rdf#loading rdf:http://home.netscape.com/WEB-rdf#status">
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#Name" />
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</rule>
|
||||
</template>
|
||||
<outlinercols>
|
||||
<outlinercol id="Name" label="&outlinercol.name.label;" flex="1" primary="true" class="sortDirectionIndicator" persist="width hidden sortActive sortDirection" sort="rdf:http://home.netscape.com/NC-rdf#Name"
|
||||
sortActive="true" sortDirection="descending"/>
|
||||
sortActive="true" sortDirection="none"/>
|
||||
</outlinercols>
|
||||
</outliner>
|
||||
</xbl:content>
|
||||
|
@ -1756,26 +1734,25 @@
|
|||
<!-- Outliner with folders only -->
|
||||
<binding id="bookmarks-outliner-folders" extends="chrome://communicator/content/bookmarks/bookmarks.xml#bookmarks-outliner">
|
||||
<xbl:content xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xbl="http://www.mozilla.org/xbl">
|
||||
<outliner flex="1" flags="dont-test-empty" anonid="bookmarks-outliner">
|
||||
<outlinerbody anonid="bookmarks-outlinerbody" datasources="rdf:bookmarks rdf:internetsearch rdf:files rdf:localsearch" flex="1" ref="NC:BookmarksRoot" flags="dont-build-content"
|
||||
onselect="this.parentNode.parentNode.outlinerBoxObject.view.selectionChanged();">
|
||||
<template>
|
||||
<rule iscontainer="true">
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:*">
|
||||
<outlinerrow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type rdf:http://home.netscape.com/NC-rdf#loading rdf:http://home.netscape.com/WEB-rdf#status">
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#Name" />
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</rule>
|
||||
</template>
|
||||
</outlinerbody>
|
||||
<outliner anonid="bookmarks-outliner" flex="1" hidecolumnpicker="true"
|
||||
datasources="rdf:bookmarks rdf:internetsearch rdf:files rdf:localsearch" ref="NC:BookmarksRoot" flags="dont-build-content"
|
||||
onselect="this.parentNode.outlinerBoxObject.view.selectionChanged();">
|
||||
<template>
|
||||
<rule iscontainer="true">
|
||||
<outlinerchildren>
|
||||
<outlineritem uri="rdf:*">
|
||||
<outlinerrow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type rdf:http://home.netscape.com/NC-rdf#loading rdf:http://home.netscape.com/WEB-rdf#status">
|
||||
<outlinercell label="rdf:http://home.netscape.com/NC-rdf#Name" />
|
||||
</outlinerrow>
|
||||
</outlineritem>
|
||||
</outlinerchildren>
|
||||
</rule>
|
||||
</template>
|
||||
<outlinercols>
|
||||
<outlinercol id="Name" label="&outlinercol.name.label;" flex="1" primary="true"
|
||||
class="sortDirectionIndicator" persist="width hidden sortActive sortDirection"
|
||||
sort="rdf:http://home.netscape.com/NC-rdf#Name"
|
||||
sortActive="true" sortDirection="descending"/>
|
||||
sortActive="true" sortDirection="none"/>
|
||||
</outlinercols>
|
||||
</outliner>
|
||||
</xbl:content>
|
||||
|
|
|
@ -316,7 +316,7 @@ function onCancel()
|
|||
|
||||
function onDblClick(e) {
|
||||
var t = e.originalTarget;
|
||||
if (t.localName != "outlinerbody")
|
||||
if (t.localName != "outlinerchildren")
|
||||
return;
|
||||
|
||||
openSelectedFile();
|
||||
|
@ -454,7 +454,7 @@ function onFileSelected(file) {
|
|||
}
|
||||
}
|
||||
|
||||
okButton.disabled = (textField.value != "");
|
||||
okButton.disabled = (textInput.value != "");
|
||||
}
|
||||
|
||||
function onTextFieldFocus() {
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче