From 797cd22ff42f1a6bbc04f2663a409b2c20050564 Mon Sep 17 00:00:00 2001 From: "hyatt%netscape.com" <hyatt%netscape.com> Date: Sat, 15 Jan 2000 05:31:45 +0000 Subject: [PATCH] Landing XBL scrollbars. --- content/xbl/src/nsXBLService.cpp | 6 ++++- content/xml/content/src/nsXMLElement.cpp | 22 +++++++++++++++++++ content/xml/content/src/nsXMLElement.h | 8 +++++++ layout/xbl/src/nsXBLService.cpp | 6 ++++- .../xml/content/src/nsGenericXMLElement.cpp | 5 +++++ layout/xml/content/src/nsXMLElement.cpp | 22 +++++++++++++++++++ layout/xml/content/src/nsXMLElement.h | 8 +++++++ xpfe/global/resources/skin/MANIFEST_CHROME | 1 + xpfe/global/resources/skin/Makefile.in | 4 +++- xpfe/global/resources/skin/makefile.win | 1 + xpfe/global/resources/skin/xul.css | 4 ++++ 11 files changed, 84 insertions(+), 3 deletions(-) diff --git a/content/xbl/src/nsXBLService.cpp b/content/xbl/src/nsXBLService.cpp index 0677d432cdb1..053b47c4e394 100644 --- a/content/xbl/src/nsXBLService.cpp +++ b/content/xbl/src/nsXBLService.cpp @@ -12,6 +12,7 @@ #include "nsNetUtil.h" #include "plstr.h" #include "nsIContent.h" +#include "nsIDOMElement.h" #include "nsIBindableContent.h" #include "nsIDocument.h" #include "nsIXMLContentSink.h" @@ -270,7 +271,10 @@ nsXBLService::GetContentList(nsIContent* aContent, nsISupportsArray** aResult) content->ChildAt(i, *getter_AddRefs(anonymousChild)); if (!(*aResult)) NS_NewISupportsArray(aResult); // This call addrefs the array. - (*aResult)->AppendElement(anonymousChild); + + nsCOMPtr<nsIDOMElement> element = do_QueryInterface(anonymousChild); + if (element) // Don't let the extra text frames get generated. + (*aResult)->AppendElement(anonymousChild); } } diff --git a/content/xml/content/src/nsXMLElement.cpp b/content/xml/content/src/nsXMLElement.cpp index a47be193dfe5..7d7fd85f1ece 100644 --- a/content/xml/content/src/nsXMLElement.cpp +++ b/content/xml/content/src/nsXMLElement.cpp @@ -32,6 +32,8 @@ #include "nsINameSpaceManager.h" #include "nsIURL.h" +#include "nsIXBLBinding.h" + //static NS_DEFINE_IID(kIDOMElementIID, NS_IDOMELEMENT_IID); static NS_DEFINE_IID(kIXMLContentIID, NS_IXMLCONTENT_IID); @@ -88,6 +90,12 @@ nsXMLElement::QueryInterface(REFNSIID aIID, NS_ADDREF_THIS(); return NS_OK; } + else if (aIID.Equals(nsIBindableContent::GetIID())) { + nsIBindableContent* tmp = this; + *aInstancePtr = (void*) tmp; + NS_ADDREF_THIS(); + return NS_OK; + } return NS_NOINTERFACE; } @@ -213,3 +221,17 @@ nsXMLElement::CloneNode(PRBool aDeep, nsIDOMNode** aReturn) return it->QueryInterface(kIDOMNodeIID, (void**) aReturn); } +NS_IMETHODIMP +nsXMLElement::SetBinding(nsIXBLBinding* aBinding) +{ + mBinding = aBinding; // nsCOMPtr handles addrefing. + return NS_OK; +} + +NS_IMETHODIMP +nsXMLElement::GetBinding(nsIXBLBinding** aResult) +{ + *aResult = mBinding; + NS_IF_ADDREF(*aResult); + return NS_OK; +} \ No newline at end of file diff --git a/content/xml/content/src/nsXMLElement.h b/content/xml/content/src/nsXMLElement.h index f8ffe196bf18..474e7cc1a167 100644 --- a/content/xml/content/src/nsXMLElement.h +++ b/content/xml/content/src/nsXMLElement.h @@ -23,12 +23,14 @@ #ifndef nsXMLElement_h___ #define nsXMLElement_h___ +#include "nsCOMPtr.h" #include "nsIDOMElement.h" #include "nsIScriptObjectOwner.h" #include "nsIDOMEventReceiver.h" #include "nsIXMLContent.h" #include "nsIJSScriptObject.h" #include "nsGenericXMLElement.h" +#include "nsIBindableContent.h" class nsIDocument; class nsIAtom; @@ -39,6 +41,7 @@ class nsXMLElement : public nsIDOMElement, public nsIScriptObjectOwner, public nsIDOMEventReceiver, public nsIXMLContent, + public nsIBindableContent, public nsIJSScriptObject { public: @@ -196,6 +199,10 @@ public: return mInner.SetNameSpaceID(aNameSpaceId); } + // nsIBindableContent + NS_IMETHOD SetBinding(nsIXBLBinding* aBinding); + NS_IMETHOD GetBinding(nsIXBLBinding** aResult); + // nsIDOMEventReceiver NS_IMPL_IDOMEVENTRECEIVER_USING_GENERIC(mInner) @@ -229,6 +236,7 @@ protected: nsGenericXMLElement mInner; PRBool mIsLink; PRUint32 mContentID; + nsCOMPtr<nsIXBLBinding> mBinding; }; #endif // nsXMLElement_h___ diff --git a/layout/xbl/src/nsXBLService.cpp b/layout/xbl/src/nsXBLService.cpp index 0677d432cdb1..053b47c4e394 100644 --- a/layout/xbl/src/nsXBLService.cpp +++ b/layout/xbl/src/nsXBLService.cpp @@ -12,6 +12,7 @@ #include "nsNetUtil.h" #include "plstr.h" #include "nsIContent.h" +#include "nsIDOMElement.h" #include "nsIBindableContent.h" #include "nsIDocument.h" #include "nsIXMLContentSink.h" @@ -270,7 +271,10 @@ nsXBLService::GetContentList(nsIContent* aContent, nsISupportsArray** aResult) content->ChildAt(i, *getter_AddRefs(anonymousChild)); if (!(*aResult)) NS_NewISupportsArray(aResult); // This call addrefs the array. - (*aResult)->AppendElement(anonymousChild); + + nsCOMPtr<nsIDOMElement> element = do_QueryInterface(anonymousChild); + if (element) // Don't let the extra text frames get generated. + (*aResult)->AppendElement(anonymousChild); } } diff --git a/layout/xml/content/src/nsGenericXMLElement.cpp b/layout/xml/content/src/nsGenericXMLElement.cpp index 18777d128aa7..1658518ce6cd 100644 --- a/layout/xml/content/src/nsGenericXMLElement.cpp +++ b/layout/xml/content/src/nsGenericXMLElement.cpp @@ -76,6 +76,11 @@ nsGenericXMLElement::CopyInnerTo(nsIContent* aSrcContent, if (NS_OK == result) { aDst->mNameSpacePrefix = mNameSpacePrefix; NS_IF_ADDREF(mNameSpacePrefix); + + aDst->mNameSpace = mNameSpace; + NS_IF_ADDREF(mNameSpace); + + aDst->mNameSpaceID = mNameSpaceID; } return NS_OK; } diff --git a/layout/xml/content/src/nsXMLElement.cpp b/layout/xml/content/src/nsXMLElement.cpp index a47be193dfe5..7d7fd85f1ece 100644 --- a/layout/xml/content/src/nsXMLElement.cpp +++ b/layout/xml/content/src/nsXMLElement.cpp @@ -32,6 +32,8 @@ #include "nsINameSpaceManager.h" #include "nsIURL.h" +#include "nsIXBLBinding.h" + //static NS_DEFINE_IID(kIDOMElementIID, NS_IDOMELEMENT_IID); static NS_DEFINE_IID(kIXMLContentIID, NS_IXMLCONTENT_IID); @@ -88,6 +90,12 @@ nsXMLElement::QueryInterface(REFNSIID aIID, NS_ADDREF_THIS(); return NS_OK; } + else if (aIID.Equals(nsIBindableContent::GetIID())) { + nsIBindableContent* tmp = this; + *aInstancePtr = (void*) tmp; + NS_ADDREF_THIS(); + return NS_OK; + } return NS_NOINTERFACE; } @@ -213,3 +221,17 @@ nsXMLElement::CloneNode(PRBool aDeep, nsIDOMNode** aReturn) return it->QueryInterface(kIDOMNodeIID, (void**) aReturn); } +NS_IMETHODIMP +nsXMLElement::SetBinding(nsIXBLBinding* aBinding) +{ + mBinding = aBinding; // nsCOMPtr handles addrefing. + return NS_OK; +} + +NS_IMETHODIMP +nsXMLElement::GetBinding(nsIXBLBinding** aResult) +{ + *aResult = mBinding; + NS_IF_ADDREF(*aResult); + return NS_OK; +} \ No newline at end of file diff --git a/layout/xml/content/src/nsXMLElement.h b/layout/xml/content/src/nsXMLElement.h index f8ffe196bf18..474e7cc1a167 100644 --- a/layout/xml/content/src/nsXMLElement.h +++ b/layout/xml/content/src/nsXMLElement.h @@ -23,12 +23,14 @@ #ifndef nsXMLElement_h___ #define nsXMLElement_h___ +#include "nsCOMPtr.h" #include "nsIDOMElement.h" #include "nsIScriptObjectOwner.h" #include "nsIDOMEventReceiver.h" #include "nsIXMLContent.h" #include "nsIJSScriptObject.h" #include "nsGenericXMLElement.h" +#include "nsIBindableContent.h" class nsIDocument; class nsIAtom; @@ -39,6 +41,7 @@ class nsXMLElement : public nsIDOMElement, public nsIScriptObjectOwner, public nsIDOMEventReceiver, public nsIXMLContent, + public nsIBindableContent, public nsIJSScriptObject { public: @@ -196,6 +199,10 @@ public: return mInner.SetNameSpaceID(aNameSpaceId); } + // nsIBindableContent + NS_IMETHOD SetBinding(nsIXBLBinding* aBinding); + NS_IMETHOD GetBinding(nsIXBLBinding** aResult); + // nsIDOMEventReceiver NS_IMPL_IDOMEVENTRECEIVER_USING_GENERIC(mInner) @@ -229,6 +236,7 @@ protected: nsGenericXMLElement mInner; PRBool mIsLink; PRUint32 mContentID; + nsCOMPtr<nsIXBLBinding> mBinding; }; #endif // nsXMLElement_h___ diff --git a/xpfe/global/resources/skin/MANIFEST_CHROME b/xpfe/global/resources/skin/MANIFEST_CHROME index 176a637a885f..363a5dae6c6f 100644 --- a/xpfe/global/resources/skin/MANIFEST_CHROME +++ b/xpfe/global/resources/skin/MANIFEST_CHROME @@ -1 +1,2 @@ xul.css +xulBindings.xml diff --git a/xpfe/global/resources/skin/Makefile.in b/xpfe/global/resources/skin/Makefile.in index e05563d73946..324435fe64f1 100644 --- a/xpfe/global/resources/skin/Makefile.in +++ b/xpfe/global/resources/skin/Makefile.in @@ -107,7 +107,9 @@ EXPORT_RESOURCE_CONTENT = \ $(srcdir)/wizardOverlay.css \ $(NULL) -EXPORT_CHROME = $(srcdir)/xul.css +EXPORT_CHROME = $(srcdir)/xul.css \ + $(srcdir)/xulBindings.xml \ + $(NULL) include $(topsrcdir)/config/rules.mk diff --git a/xpfe/global/resources/skin/makefile.win b/xpfe/global/resources/skin/makefile.win index 198e7661b103..785c71d68d2e 100644 --- a/xpfe/global/resources/skin/makefile.win +++ b/xpfe/global/resources/skin/makefile.win @@ -29,6 +29,7 @@ DISTXUL=$(DIST)\bin\chrome install:: $(MAKE_INSTALL) tasksOverlay.css $(DISTBROWSER) $(MAKE_INSTALL) xul.css $(DISTXUL) + $(MAKE_INSTALL) xulBindings.xml $(DISTXUL) $(MAKE_INSTALL) global.css $(DISTBROWSER) $(MAKE_INSTALL) lessCols.gif $(DISTBROWSER) $(MAKE_INSTALL) lessCols_mo.gif $(DISTBROWSER) diff --git a/xpfe/global/resources/skin/xul.css b/xpfe/global/resources/skin/xul.css index acdf95ac2efa..e77a1dbac86d 100644 --- a/xpfe/global/resources/skin/xul.css +++ b/xpfe/global/resources/skin/xul.css @@ -233,6 +233,10 @@ tabcontrol { /********* XP Scrollbar *********/ +scrollbar { + behavior: url("resource:/chrome/xulBindings.xml#scrollbar"); +} + thumb { display: block; user-focus: ignore;