Closed
Bug 45605
Opened 25 years ago
Closed 23 years ago
Embedding Drag + Drop support
Categories
(Core Graveyard :: Embedding: APIs, defect, P1)
Core Graveyard
Embedding: APIs
Tracking
(Not tracked)
VERIFIED
FIXED
mozilla0.9.9
People
(Reporter: jud, Assigned: mikepinkerton)
References
(Blocks 1 open bug)
Details
(Keywords: topembed+, Whiteboard: SWAG: 4 weeks)
Attachments
(1 file, 5 obsolete files)
72.57 KB,
patch
|
Brade
:
review+
bugs
:
superreview+
|
Details | Diff | Splinter Review |
Embedded gecko needs to define and implement support for Drag + Drop.
Assignee | ||
Comment 1•24 years ago
|
||
in theory (heh), the embedding window only needs to make sure that the native d&d
events are funnelled into the event sink just like other native events.
Everything else should be handled internally by gecko.
Note that xul is not required to use the drag&drop services of XPTookit, though
DOM event handlers (in JS or C++) will need to be registered in order to process
the events.
Reporter | ||
Updated•24 years ago
|
Target Milestone: --- → M19
Comment 3•24 years ago
|
||
->Pinkerton/M0.9, cc blizzard
Assignee: valeski → pinkerton
Target Milestone: M19 → mozilla0.9
Comment 4•24 years ago
|
||
please add swag to status whiteboard
Reporter | ||
Comment 5•24 years ago
|
||
an embedding app needs ability to drag a "URL" from outside our content area,
onto it and have it load the URL. an embedding app also needs the reverse. The
ability to drag a "URL" from the content area outside the content area, and drop it.
Assignee | ||
Comment 6•24 years ago
|
||
this depends on if there is a xul wrapper around the embedded document, or not.
The code to handle all this is 90% there and can just be copied from navigator,
but it's all in JS. If we have to re-write it in C++, it will take longer.
Is there a place to hang event listeners at the top of the embedded document?
Where is this outer document constructed? Is it different from the non-embedded
(nscp6) case?
Whiteboard: [nsbeta3-] → [nsbeta3-] SWAG: 1 week
Reporter | ||
Comment 7•24 years ago
|
||
cc'ing adam lock who utilized a xul doc layer to handle context menu
notification. We have to decide whether or not we're going to support the xul
doc layer. Currently, we're exposing c++ versions of all notifications. Most
embedders haven't bought into XUL, therefore asking them to play w/ JS isn't
well received.
Listener registration occurs here:
http://lxr.mozilla.org/seamonkey/source/embedding/browser/webBrowser/nsIWebBrowser.idl#53
window construction is done by the embedding app (see
http://www.mozilla.org/projects/embedding/webbrowser.html#_Toc485633589 )
Adam, can you address the last question?
Assignee | ||
Comment 8•24 years ago
|
||
just spoke to hyatt:
what about using XBL in the same way that we do key-bindings? That allows us to
re-use the existing navigator JS and use XBL to hookup the event handlers.
Reporter | ||
Comment 9•24 years ago
|
||
please ellaborate: "hookup event handlers" (in cpp)? If we can leverage XBL to
accomplish this, great!
Assignee | ||
Comment 10•24 years ago
|
||
either hook them up (use |addEventListener()|) in c++ or, preferably, via XBL
using the same mechanism we're using to hook up the keybindings.
cc'ing hyatt, since we seem to be talking about a lot of overlap with bugs he
has for keybinding tasks.
OS: Linux → All
Hardware: PC → All
Comment 11•24 years ago
|
||
What you are describing here is what the gtk embedding widget does except it
does it with XUL. I hang the event listeners off an otherwise empty ( except
for the content area ) XUL document.
Assignee | ||
Comment 12•24 years ago
|
||
working on this now, leveraging hyatt's XBL keybinding work.
Status: NEW → ASSIGNED
Priority: P3 → P1
Assignee | ||
Comment 13•24 years ago
|
||
cc'ing blake and alecf since they have already started work on separating the
content area's DnD JS (woohoo).
There are a couple of tasks we see:
- hooking up the XBL to hyatt's window root (2 days)
- extracting the content area JS so that it no longer references browser window
elements (like the url bar) Alec suggested something like a
"contentAreaContainer" that wraps the dragObserver and can provide it with
different info depending on the context. This would be good for both embedding
and things like mail (2 days)
- changing the install of the content area JS (it can't live in the navigator
package for embedding reasons) and installing the XBL into the same place (1 day).
Did I miss anything?
Assignee | ||
Comment 14•24 years ago
|
||
ok, I have most of the code written, problem is that we can't yet put <script>
tags into XBL files, so we can't include all the nice XPApps content area DnD
files (bug 58757).
I'll try to get the c++ part landed soon.
Assignee | ||
Comment 15•24 years ago
|
||
Assignee | ||
Comment 16•24 years ago
|
||
Assignee | ||
Comment 17•24 years ago
|
||
Assignee | ||
Comment 18•24 years ago
|
||
hyatt, can you a=? who would be qualified to do an r=?
Comment 19•24 years ago
|
||
Ok, so here's where we stand. From the meeting today, I got the impression we
may not have to do the XBL drag and drop thing.
My big concern about this is that if we don't rewrite the JavaScript code in
C++, then we are pretty far away from making this work (given all of the nasty
issues related to avoiding recompilation of included
<script> and resolving trust issues with principals for the handlers and
for included <script>). We'd probably have to do something to enable JS to be
compiled on the window root, and then do something to give the window root a
principal that was trusted. I don't really even know how to do this, and I'm
not sure how the ownership model would work in script-land.
While I think it's ok to check this in, we should have the window drag handler
not be compiled (so get nsXBLWindowDragHandler out of the projects and
makefiles) and have the hookup be disabled until we know for sure that we want
to continue developing an XBL-based drag and drop solution. That way we don't
bloat the code until we're sure we're turning this on.
I don't see any code in the patch that does the transition over to the new
htmlBindings and platformHTMLBindings files. It looks like the new ones are
being checked in without the old ones being removed. Are you planning on doing
that in a later checkin, or did you want to tackle that now?
a=hyatt.
Comment 20•24 years ago
|
||
If we want to continue along this path, I'm going to need some serious help from
brendan, since I think the nsWindowRoot would need to evolve into a full-blown
script object with a trusted principal.
cc'ing him.
Also, you aren't really dependent on the XBL <script> bug as it turns out.
We'll have to hack this up differently from the way normal XBL <script> tags are
going to work.
(This is a crack baby pseudo-XBL we're playing with, and it unfortunately
doesn't work the same way as real XBL.)
Comment 21•24 years ago
|
||
There's no problem compiling a script against an object other than the one you
pass to scope the execution(s) of that script. Also, the principal is a compile
time parameter, so you can provide a trusted one when compiling and the trust
will apply when executing.
Ask me questions in terms of the JS API if you can, I think that will move
things along fastest.
/be
Assignee | ||
Comment 22•24 years ago
|
||
we're in a holding pattern here. it will be pretty easy if we can rely on a thin
xul layer (no need for script tags in xbl, and a few other things), but if we
can't, this will be a lot of work.
raising estimate to two weeks until we can get some answers.
Whiteboard: [nsbeta3-] SWAG: 1 week → [nsbeta3-] SWAG: 2 weeks
Assignee | ||
Comment 24•24 years ago
|
||
for now, i think we're going with the idea that if an embedding app wants dnd,
they can use the thin xul layer. i really don't think we want to be duplicating
all the dnd code in c++.
pushing off.
Target Milestone: mozilla0.9 → Future
Comment 25•24 years ago
|
||
Correction: Changing QA contact for the Embed API bugs to David Epstein.
QA Contact: mdunn → depstein
Assignee | ||
Comment 26•23 years ago
|
||
ok, this is needed sooner rather than later so i'm pulling it back in.
my new plan (since the script tag just isn't gonna happen) is to migrate the
content area's JS to c++ and share it between embedding and seamonkey. I figure
i'll hang the dnd listeners off the same node where we hang the tooltip and
context menu listeners.
objections?
Severity: normal → major
Whiteboard: [nsbeta3-] SWAG: 2 weeks → SWAG: 4 weeks
Target Milestone: Future → mozilla0.9.9
Comment 27•23 years ago
|
||
*** Bug 79513 has been marked as a duplicate of this bug. ***
Reporter | ||
Updated•23 years ago
|
Assignee | ||
Comment 28•23 years ago
|
||
patches seamonkey and embedding to use this new service. a new bug will cover
additional client APIs for being able to override individual stages. this gets
basic "black box" functionality in (and uses PPEmbed as a testbed).
Attachment #19779 -
Attachment is obsolete: true
Attachment #19780 -
Attachment is obsolete: true
Attachment #19781 -
Attachment is obsolete: true
Assignee | ||
Comment 29•23 years ago
|
||
Attachment #69501 -
Attachment is obsolete: true
Assignee | ||
Comment 30•23 years ago
|
||
Attachment #69533 -
Attachment is obsolete: true
Comment 31•23 years ago
|
||
Comment on attachment 69542 [details] [diff] [review]
this one actually builds
r=brade
Attachment #69542 -
Flags: review+
Comment 32•23 years ago
|
||
Attachment #69542 -
Flags: superreview+
Comment 33•23 years ago
|
||
looks like there are a couple stray printfs in the patch that you might want to
kill.
Otherwise, cool!
Assignee | ||
Comment 34•23 years ago
|
||
landed.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Comment 35•23 years ago
|
||
verified patch against Mozilla 0.9.8 Gecko 20020218. All OK except I noticed the
following:
* In /mozilla/embedding/browser/webBrowser/makefile.win and makefile.in, what
happened to .\nsIDragDropHandler.idl in the script pathway?
* In /mozilla/content/macbuild/contentIDL.xml, why isn't nsDragDropHandler.idl
in the paths? (<PATH> </PATH> tags)
Comment 36•23 years ago
|
||
Mozilla build 0.9.8 Gecko 20020222. nsIDragDropHandler.idl located in XPIDLSRCS
section of makefile.win & makefile.in in /mozilla/content/base/public. D&D works
fine in MfcEmbed's Editor window & Composer, but not to the desktop.
Assignee | ||
Comment 37•23 years ago
|
||
fwiw, the not being able to drag to the desktop is 127703, just waiting on a=.
Updated•6 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•