mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-24 02:12:27 +01:00
Add dactylIUtils.createContents. Closes issue #581.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
/* Public Domain */
|
/* Public Domain */
|
||||||
|
|
||||||
#include "nsISupports.idl"
|
#include "nsISupports.idl"
|
||||||
|
#include "nsIDOMElement.idl"
|
||||||
|
|
||||||
%{C++
|
%{C++
|
||||||
#include "jsapi.h"
|
#include "jsapi.h"
|
||||||
@@ -19,6 +20,8 @@ interface dactylIUtils : nsISupports
|
|||||||
[optional] in ACString filename,
|
[optional] in ACString filename,
|
||||||
[optional] in PRInt32 lineNumber);
|
[optional] in PRInt32 lineNumber);
|
||||||
|
|
||||||
|
void createContents(in nsIDOMElement element);
|
||||||
|
|
||||||
[implicit_jscontext]
|
[implicit_jscontext]
|
||||||
jsval getGlobalForObject(in jsval object);
|
jsval getGlobalForObject(in jsval object);
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,9 @@
|
|||||||
#include "jsdbgapi.h"
|
#include "jsdbgapi.h"
|
||||||
#include "jsobj.h"
|
#include "jsobj.h"
|
||||||
|
|
||||||
|
#include "nsIContent.h"
|
||||||
|
#include "nsIDOMXULElement.h"
|
||||||
|
#include "nsIXULTemplateBuilder.h"
|
||||||
#include "nsIObserverService.h"
|
#include "nsIObserverService.h"
|
||||||
#include "nsIScriptSecurityManager.h"
|
#include "nsIScriptSecurityManager.h"
|
||||||
#include "nsIXPCScriptable.h"
|
#include "nsIXPCScriptable.h"
|
||||||
@@ -271,6 +274,28 @@ dactylUtils::EvalInContext(const nsAString &aSource,
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
dactylUtils::CreateContents(nsIDOMElement *aElement)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIContent> content = do_QueryInterface(aElement);
|
||||||
|
|
||||||
|
for (nsIContent *element = content;
|
||||||
|
element;
|
||||||
|
element = element->GetParent()) {
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMXULElement> xulelem = do_QueryInterface(element);
|
||||||
|
if (xulelem) {
|
||||||
|
nsCOMPtr<nsIXULTemplateBuilder> builder;
|
||||||
|
xulelem->GetBuilder(getter_AddRefs(builder));
|
||||||
|
if (builder) {
|
||||||
|
builder->CreateContents(content, PR_TRUE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
dactylUtils::GetGlobalForObject(const jsval &aObject,
|
dactylUtils::GetGlobalForObject(const jsval &aObject,
|
||||||
JSContext *cx,
|
JSContext *cx,
|
||||||
|
|||||||
@@ -143,6 +143,8 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function addChildren(node, parent) {
|
function addChildren(node, parent) {
|
||||||
|
DOM(node).createContents();
|
||||||
|
|
||||||
if (~["menu", "menupopup"].indexOf(node.localName) && node.children.length)
|
if (~["menu", "menupopup"].indexOf(node.localName) && node.children.length)
|
||||||
dispatch(node, "popupshowing");
|
dispatch(node, "popupshowing");
|
||||||
|
|
||||||
|
|||||||
@@ -688,6 +688,9 @@ var DOM = Class("DOM", {
|
|||||||
}, this);
|
}, this);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
createContents: function createContents()
|
||||||
|
this.each(DOM.createContents, this),
|
||||||
|
|
||||||
getSet: function getSet(args, get, set) {
|
getSet: function getSet(args, get, set) {
|
||||||
if (!args.length)
|
if (!args.length)
|
||||||
return this[0] && get.call(this, this[0]);
|
return this[0] && get.call(this, this[0]);
|
||||||
@@ -1240,6 +1243,9 @@ var DOM = Class("DOM", {
|
|||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
createContents: Class.Memoize(function () services.has("dactyl") && services.dactyl.createContents
|
||||||
|
|| function (elem) {}),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The set of input element type attribute values that mark the element as
|
* The set of input element type attribute values that mark the element as
|
||||||
* an editable field.
|
* an editable field.
|
||||||
|
|||||||
Reference in New Issue
Block a user