зеркало из https://github.com/mozilla/pjs.git
Adding RemoveStyleSheet to nsIDocument (needed for skins). r=waterson
This commit is contained in:
Родитель
5781ae85d3
Коммит
c07e825ba9
|
@ -203,6 +203,7 @@ public:
|
|||
virtual nsIStyleSheet* GetStyleSheetAt(PRInt32 aIndex) = 0;
|
||||
virtual PRInt32 GetIndexOfStyleSheet(nsIStyleSheet* aSheet) = 0;
|
||||
virtual void AddStyleSheet(nsIStyleSheet* aSheet) = 0;
|
||||
virtual void RemoveStyleSheet(nsIStyleSheet* aSheet) = 0;
|
||||
NS_IMETHOD InsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex, PRBool aNotify) = 0;
|
||||
virtual void SetStyleSheetDisabledState(nsIStyleSheet* aSheet,
|
||||
PRBool mDisabled) = 0;
|
||||
|
|
|
@ -1286,6 +1286,39 @@ void nsDocument::AddStyleSheet(nsIStyleSheet* aSheet)
|
|||
}
|
||||
}
|
||||
|
||||
void nsDocument::RemoveStyleSheet(nsIStyleSheet* aSheet)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aSheet, "null arg");
|
||||
mStyleSheets.RemoveElement(aSheet);
|
||||
NS_RELEASE(aSheet);
|
||||
|
||||
PRBool enabled = PR_TRUE;
|
||||
aSheet->GetEnabled(enabled);
|
||||
|
||||
if (enabled) {
|
||||
PRInt32 count = mPresShells.Count();
|
||||
PRInt32 index;
|
||||
for (index = 0; index < count; index++) {
|
||||
nsIPresShell* shell = (nsIPresShell*)mPresShells.ElementAt(index);
|
||||
nsCOMPtr<nsIStyleSet> set;
|
||||
if (NS_SUCCEEDED(shell->GetStyleSet(getter_AddRefs(set)))) {
|
||||
if (set) {
|
||||
set->RemoveDocStyleSheet(aSheet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// XXX should observers be notified for disabled sheets??? I think not, but I could be wrong
|
||||
for (index = 0; index < mObservers.Count(); index++) {
|
||||
nsIDocumentObserver* observer = (nsIDocumentObserver*)mObservers.ElementAt(index);
|
||||
observer->StyleSheetRemoved(this, aSheet);
|
||||
if (observer != (nsIDocumentObserver*)mObservers.ElementAt(index)) {
|
||||
index--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsDocument::InternalInsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex)
|
||||
{ // subclass hook for sheet ordering
|
||||
|
|
|
@ -234,6 +234,7 @@ public:
|
|||
virtual nsIStyleSheet* GetStyleSheetAt(PRInt32 aIndex);
|
||||
virtual PRInt32 GetIndexOfStyleSheet(nsIStyleSheet* aSheet);
|
||||
virtual void AddStyleSheet(nsIStyleSheet* aSheet);
|
||||
virtual void RemoveStyleSheet(nsIStyleSheet* aSheet);
|
||||
NS_IMETHOD InsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex, PRBool aNotify);
|
||||
virtual void SetStyleSheetDisabledState(nsIStyleSheet* aSheet,
|
||||
PRBool mDisabled);
|
||||
|
|
|
@ -1007,6 +1007,40 @@ nsXULDocument::AddStyleSheet(nsIStyleSheet* aSheet)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsXULDocument::RemoveStyleSheet(nsIStyleSheet* aSheet)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aSheet, "null arg");
|
||||
mStyleSheets.RemoveElement(aSheet);
|
||||
NS_RELEASE(aSheet);
|
||||
|
||||
PRBool enabled = PR_TRUE;
|
||||
aSheet->GetEnabled(enabled);
|
||||
|
||||
if (enabled) {
|
||||
PRInt32 count = mPresShells.Count();
|
||||
PRInt32 index;
|
||||
for (index = 0; index < count; index++) {
|
||||
nsIPresShell* shell = (nsIPresShell*)mPresShells.ElementAt(index);
|
||||
nsCOMPtr<nsIStyleSet> set;
|
||||
if (NS_SUCCEEDED(shell->GetStyleSet(getter_AddRefs(set)))) {
|
||||
if (set) {
|
||||
set->RemoveDocStyleSheet(aSheet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// XXX should observers be notified for disabled sheets??? I think not, but I could be wrong
|
||||
for (index = 0; index < mObservers.Count(); index++) {
|
||||
nsIDocumentObserver* observer = (nsIDocumentObserver*)mObservers.ElementAt(index);
|
||||
observer->StyleSheetRemoved(this, aSheet);
|
||||
if (observer != (nsIDocumentObserver*)mObservers.ElementAt(index)) {
|
||||
index--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXULDocument::InsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex, PRBool aNotify)
|
||||
{
|
||||
|
|
|
@ -174,6 +174,7 @@ public:
|
|||
virtual PRInt32 GetIndexOfStyleSheet(nsIStyleSheet* aSheet);
|
||||
|
||||
virtual void AddStyleSheet(nsIStyleSheet* aSheet);
|
||||
virtual void RemoveStyleSheet(nsIStyleSheet* aSheet);
|
||||
NS_IMETHOD InsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex, PRBool aNotify);
|
||||
|
||||
virtual void SetStyleSheetDisabledState(nsIStyleSheet* aSheet,
|
||||
|
|
|
@ -203,6 +203,7 @@ public:
|
|||
virtual nsIStyleSheet* GetStyleSheetAt(PRInt32 aIndex) = 0;
|
||||
virtual PRInt32 GetIndexOfStyleSheet(nsIStyleSheet* aSheet) = 0;
|
||||
virtual void AddStyleSheet(nsIStyleSheet* aSheet) = 0;
|
||||
virtual void RemoveStyleSheet(nsIStyleSheet* aSheet) = 0;
|
||||
NS_IMETHOD InsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex, PRBool aNotify) = 0;
|
||||
virtual void SetStyleSheetDisabledState(nsIStyleSheet* aSheet,
|
||||
PRBool mDisabled) = 0;
|
||||
|
|
|
@ -1286,6 +1286,39 @@ void nsDocument::AddStyleSheet(nsIStyleSheet* aSheet)
|
|||
}
|
||||
}
|
||||
|
||||
void nsDocument::RemoveStyleSheet(nsIStyleSheet* aSheet)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aSheet, "null arg");
|
||||
mStyleSheets.RemoveElement(aSheet);
|
||||
NS_RELEASE(aSheet);
|
||||
|
||||
PRBool enabled = PR_TRUE;
|
||||
aSheet->GetEnabled(enabled);
|
||||
|
||||
if (enabled) {
|
||||
PRInt32 count = mPresShells.Count();
|
||||
PRInt32 index;
|
||||
for (index = 0; index < count; index++) {
|
||||
nsIPresShell* shell = (nsIPresShell*)mPresShells.ElementAt(index);
|
||||
nsCOMPtr<nsIStyleSet> set;
|
||||
if (NS_SUCCEEDED(shell->GetStyleSet(getter_AddRefs(set)))) {
|
||||
if (set) {
|
||||
set->RemoveDocStyleSheet(aSheet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// XXX should observers be notified for disabled sheets??? I think not, but I could be wrong
|
||||
for (index = 0; index < mObservers.Count(); index++) {
|
||||
nsIDocumentObserver* observer = (nsIDocumentObserver*)mObservers.ElementAt(index);
|
||||
observer->StyleSheetRemoved(this, aSheet);
|
||||
if (observer != (nsIDocumentObserver*)mObservers.ElementAt(index)) {
|
||||
index--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsDocument::InternalInsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex)
|
||||
{ // subclass hook for sheet ordering
|
||||
|
|
|
@ -234,6 +234,7 @@ public:
|
|||
virtual nsIStyleSheet* GetStyleSheetAt(PRInt32 aIndex);
|
||||
virtual PRInt32 GetIndexOfStyleSheet(nsIStyleSheet* aSheet);
|
||||
virtual void AddStyleSheet(nsIStyleSheet* aSheet);
|
||||
virtual void RemoveStyleSheet(nsIStyleSheet* aSheet);
|
||||
NS_IMETHOD InsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex, PRBool aNotify);
|
||||
virtual void SetStyleSheetDisabledState(nsIStyleSheet* aSheet,
|
||||
PRBool mDisabled);
|
||||
|
|
|
@ -1007,6 +1007,40 @@ nsXULDocument::AddStyleSheet(nsIStyleSheet* aSheet)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsXULDocument::RemoveStyleSheet(nsIStyleSheet* aSheet)
|
||||
{
|
||||
NS_PRECONDITION(nsnull != aSheet, "null arg");
|
||||
mStyleSheets.RemoveElement(aSheet);
|
||||
NS_RELEASE(aSheet);
|
||||
|
||||
PRBool enabled = PR_TRUE;
|
||||
aSheet->GetEnabled(enabled);
|
||||
|
||||
if (enabled) {
|
||||
PRInt32 count = mPresShells.Count();
|
||||
PRInt32 index;
|
||||
for (index = 0; index < count; index++) {
|
||||
nsIPresShell* shell = (nsIPresShell*)mPresShells.ElementAt(index);
|
||||
nsCOMPtr<nsIStyleSet> set;
|
||||
if (NS_SUCCEEDED(shell->GetStyleSet(getter_AddRefs(set)))) {
|
||||
if (set) {
|
||||
set->RemoveDocStyleSheet(aSheet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// XXX should observers be notified for disabled sheets??? I think not, but I could be wrong
|
||||
for (index = 0; index < mObservers.Count(); index++) {
|
||||
nsIDocumentObserver* observer = (nsIDocumentObserver*)mObservers.ElementAt(index);
|
||||
observer->StyleSheetRemoved(this, aSheet);
|
||||
if (observer != (nsIDocumentObserver*)mObservers.ElementAt(index)) {
|
||||
index--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXULDocument::InsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex, PRBool aNotify)
|
||||
{
|
||||
|
|
|
@ -174,6 +174,7 @@ public:
|
|||
virtual PRInt32 GetIndexOfStyleSheet(nsIStyleSheet* aSheet);
|
||||
|
||||
virtual void AddStyleSheet(nsIStyleSheet* aSheet);
|
||||
virtual void RemoveStyleSheet(nsIStyleSheet* aSheet);
|
||||
NS_IMETHOD InsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex, PRBool aNotify);
|
||||
|
||||
virtual void SetStyleSheetDisabledState(nsIStyleSheet* aSheet,
|
||||
|
|
Загрузка…
Ссылка в новой задаче