Closed Bug 63240 Opened 24 years ago Closed 24 years ago

can drag and drop into readonly input text field

Categories

(Core :: Layout: Form Controls, defect)

defect
Not set
normal

Tracking

()

VERIFIED FIXED
mozilla0.8

People

(Reporter: twisti, Assigned: Brade)

Details

(Whiteboard: FIX IN HAND)

Attachments

(2 files)

select a text somewhere and drag it into a readonly input text field. if there
are any spaces in the field, the selected text is inserted as long as there is
space for it.
Looks like text can be dragged from chrome or from other windows but not from
within the content area....  Setting status to new
Status: UNCONFIRMED → NEW
Ever confirmed: true
I think this is an editor bug
Assignee: rods → beppe
the reason it rejects from the content area is the code in the content area that
rejects the drop if the src and dest documents are the same. if you let the
mouse drift outside of the window then back in before you dropped, it would
probably work (another bug, but demonstrates the problem).
Mike -- if the text area is read-only, then nothing should be allowed to be 
dropped into it, so the problem is that the external drag is permitted to be 
dropped into it -- but it shouldn't.
it is the logic in the text field that determines its read-onlyness. nothing
about the toolkit makes this policy.
assigning to brade, the easist way to repro this one kathy is to drag from the 
url bar -- it happens on linux, win98 and mac.
Assignee: beppe → brade
Status: NEW → ASSIGNED
OS: Linux → All
Hardware: PC → All
Target Milestone: --- → mozilla0.8
Something in JS is calling nsBaseDragService::SetCanDrop() with a PR_TRUE after 
the editor has set it to false. My guess is the dragOver method in 
nsDragAndDrop.js.

Here's the stack trace where SetCanDrop() is called with a PR_TRUE, after the 
editor has already set it to PR_FALSE:

nsBaseDragService::SetCanDrop(nsBaseDragService * const 0x0363aa64, int 1) line 
75
XPTC_InvokeByIndex(nsISupports * 0x0363aa64, unsigned int 4, unsigned int 1, 
nsXPTCVariant * 0x0012bacc) line 139
nsXPCWrappedNativeClass::CallWrappedMethod(JSContext * 0x03672d00, 
nsXPCWrappedNative * 0x047654f0, const XPCNativeMemberDescriptor * 0x04763f04, 
nsXPCWrappedNativeClass::CallMode CALL_SETTER, unsigned int 1, long * 
0x0012c734, long * 0x00000000) line 920 + 42 bytes
nsXPCWrappedNativeClass::SetAttributeFromJSVal(JSContext * 0x03672d00, 
nsXPCWrappedNative * 0x047654f0, const XPCNativeMemberDescriptor * 0x04763f04, 
long * 0x0012c734) line 944
WrappedNative_SetProperty(JSContext * 0x03672d00, JSObject * 0x01234960, long 
47292800, long * 0x0012c734) line 365 + 24 bytes
js_Interpret(JSContext * 0x03672d00, long * 0x0012c8ec) line 2473 + 1897 bytes
js_Invoke(JSContext * 0x03672d00, unsigned int 1, unsigned int 2) line 801 + 13 
bytes
js_InternalInvoke(JSContext * 0x03672d00, JSObject * 0x00dc3a20, long 19091704, 
unsigned int 0, unsigned int 1, long * 0x0012ca84, long * 0x0012ca14) line 873 + 
20 bytes
JS_CallFunctionValue(JSContext * 0x03672d00, JSObject * 0x00dc3a20, long 
19091704, unsigned int 1, long * 0x0012ca84, long * 0x0012ca14) line 3268 + 31 
bytes
nsJSContext::CallEventHandler(nsJSContext * const 0x03674050, void * 0x00dc3a20, 
void * 0x012350f8, unsigned int 1, void * 0x0012ca84, int * 0x0012ca80, int 0) 
line 931 + 33 bytes
nsJSEventListener::HandleEvent(nsIDOMEvent * 0x04791574) line 154 + 64 bytes
nsEventListenerManager::HandleEventSubType(nsListenerStruct * 0x02e1e4f0, 
nsIDOMEvent * 0x04791574, nsIDOMEventTarget * 0x02e1e648, unsigned int 2, 
unsigned int 2) line 839 + 19 bytes
nsEventListenerManager::HandleEvent(nsIPresContext * 0x0574a090, nsEvent * 
0x0012e5a0, nsIDOMEvent * * 0x0012e100, nsIDOMEventTarget * 0x02e1e648, unsigned 
int 2, nsEventStatus * 0x0012e51c) line 1562 + 39 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x02e1e640, nsIPresContext * 
0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, unsigned int 2, 
nsEventStatus * 0x0012e51c) line 3455
nsXULElement::HandleDOMEvent(nsXULElement * const 0x02e1e390, nsIPresContext * 
0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, unsigned int 2, 
nsEventStatus * 0x0012e51c) line 3472 + 39 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x02e1e240, nsIPresContext * 
0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, unsigned int 2, 
nsEventStatus * 0x0012e51c) line 3472 + 39 bytes
nsXULElement::HandleChromeEvent(nsXULElement * const 0x02e1e254, nsIPresContext 
* 0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, unsigned int 2, 
nsEventStatus * 0x0012e51c) line 4377 + 39 bytes
GlobalWindowImpl::HandleDOMEvent(GlobalWindowImpl * const 0x0475be70, 
nsIPresContext * 0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, 
unsigned int 2, nsEventStatus * 0x0012e51c) line 584
nsDocument::HandleDOMEvent(nsDocument * const 0x0572e7a0, nsIPresContext * 
0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, unsigned int 2, 
nsEventStatus * 0x0012e51c) line 3108
nsGenericElement::HandleDOMEvent(nsGenericElement * const 0x05731040, 
nsIPresContext * 0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, 
unsigned int 2, nsEventStatus * 0x0012e51c) line 1452 + 39 bytes
nsGenericElement::HandleDOMEvent(nsGenericElement * const 0x057c65d0, 
nsIPresContext * 0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, 
unsigned int 2, nsEventStatus * 0x0012e51c) line 1445 + 39 bytes
nsGenericElement::HandleDOMEvent(nsGenericElement * const 0x0580b680, 
nsIPresContext * 0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, 
unsigned int 2, nsEventStatus * 0x0012e51c) line 1445 + 39 bytes
nsHTMLFormElement::HandleDOMEvent(nsHTMLFormElement * const 0x0580b680, 
nsIPresContext * 0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, 
unsigned int 2, nsEventStatus * 0x0012e51c) line 412 + 29 bytes
nsGenericElement::HandleDOMEvent(nsGenericElement * const 0x0580b270, 
nsIPresContext * 0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x0012e100, 
unsigned int 1, nsEventStatus * 0x0012e51c) line 1445 + 39 bytes
nsHTMLInputElement::HandleDOMEvent(nsHTMLInputElement * const 0x0580b270, 
nsIPresContext * 0x0574a090, nsEvent * 0x0012e5a0, nsIDOMEvent * * 0x00000000, 
unsigned int 1, nsEventStatus * 0x0012e51c) line 1021 + 29 bytes
PresShell::HandleEventInternal(nsEvent * 0x0012e5a0, nsIView * 0x05803f20, 
unsigned int 1, nsEventStatus * 0x0012e51c) line 4921 + 41 bytes
PresShell::HandleEvent(PresShell * const 0x057bf5b4, nsIView * 0x05803f20, 
nsGUIEvent * 0x0012e5a0, nsEventStatus * 0x0012e51c, int 0, int & 1) line 4850 + 
25 bytes
nsView::HandleEvent(nsView * const 0x05803f20, nsGUIEvent * 0x0012e5a0, unsigned 
int 8, nsEventStatus * 0x0012e51c, int 0, int & 1) line 379
nsView::HandleEvent(nsView * const 0x05802670, nsGUIEvent * 0x0012e5a0, unsigned 
int 8, nsEventStatus * 0x0012e51c, int 0, int & 1) line 352
nsView::HandleEvent(nsView * const 0x057bcf80, nsGUIEvent * 0x0012e5a0, unsigned 
int 28, nsEventStatus * 0x0012e51c, int 1, int & 1) line 352
nsViewManager2::DispatchEvent(nsViewManager2 * const 0x057b9310, nsGUIEvent * 
0x0012e5a0, nsEventStatus * 0x0012e51c) line 1537
HandleEvent(nsGUIEvent * 0x0012e5a0) line 68
nsWindow::DispatchEvent(nsWindow * const 0x05802534, nsGUIEvent * 0x0012e5a0, 
nsEventStatus & nsEventStatus_eIgnore) line 687 + 10 bytes
nsNativeDragTarget::DispatchDragDropEvent(unsigned int 1401, _POINTL {...}) line 
184
nsNativeDragTarget::ProcessDrag(IDataObject * 0x00000000, unsigned int 1401, 
unsigned long 1, _POINTL {...}, unsigned long * 0x0012e794) line 209
nsNativeDragTarget::DragOver(nsNativeDragTarget * const 0x05802490, unsigned 
long 1, _POINTL {...}, unsigned long * 0x0012e794) line 263
OLE32! 77ba90ab()
OLE32! 77ba9265()
OLE32! 77b8fac6()
OLE32! 77b8f60a()
nsDragService::StartInvokingDragSession(nsDragService * const 0x0363aa60, 
IDataObject * 0x05738440, unsigned int 3) line 144 + 25 bytes
nsDragService::InvokeDragSession(nsDragService * const 0x0363aa60, nsIDOMNode * 
0x04f2a6a0, nsISupportsArray * 0x0573ea90, nsIScriptableRegion * 0x00000000, 
unsigned int 3) line 113
nsHTMLEditor::DoDrag(nsHTMLEditor * const 0x04f67c8c, nsIDOMEvent * 0x0573eb74) 
line 5733 + 59 bytes
nsTextEditorDragListener::DragGesture(nsIDOMEvent * 0x0573eb74) line 622 + 27 
bytes
nsEventListenerManager::HandleEvent(nsIPresContext * 0x0369fb90, nsEvent * 
0x0012f230, nsIDOMEvent * * 0x0012f1b4, nsIDOMEventTarget * 0x04f326f4, unsigned 
int 2, nsEventStatus * 0x0012f274) line 1525 + 40 bytes
nsGenericElement::HandleDOMEvent(nsGenericElement * const 0x04f2a670, 
nsIPresContext * 0x0369fb90, nsEvent * 0x0012f230, nsIDOMEvent * * 0x0012f1b4, 
unsigned int 2, nsEventStatus * 0x0012f274) line 1426
nsHTMLInputElement::HandleDOMEvent(nsHTMLInputElement * const 0x04f2a670, 
nsIPresContext * 0x0369fb90, nsEvent * 0x0012f230, nsIDOMEvent * * 0x0012f1b4, 
unsigned int 2, nsEventStatus * 0x0012f274) line 1021 + 29 bytes
nsGenericElement::HandleDOMEvent(nsGenericElement * const 0x04f66170, 
nsIPresContext * 0x0369fb90, nsEvent * 0x0012f230, nsIDOMEvent * * 0x0012f1b4, 
unsigned int 2, nsEventStatus * 0x0012f274) line 1445 + 39 bytes
nsGenericDOMDataNode::HandleDOMEvent(nsIPresContext * 0x0369fb90, nsEvent * 
0x0012f230, nsIDOMEvent * * 0x0012f1b4, unsigned int 1, nsEventStatus * 
0x0012f274) line 691 + 39 bytes
nsTextNode::HandleDOMEvent(nsTextNode * const 0x05745638, nsIPresContext * 
0x0369fb90, nsEvent * 0x0012f230, nsIDOMEvent * * 0x00000000, unsigned int 1, 
nsEventStatus * 0x0012f274) line 252
nsEventStateManager::GenerateDragGesture(nsIPresContext * 0x0369fb90, nsGUIEvent 
* 0x0012f894) line 747
nsEventStateManager::PreHandleEvent(nsEventStateManager * const 0x047305f8, 
nsIPresContext * 0x0369fb90, nsEvent * 0x0012f894, nsIFrame * 0x00d685b4, 
nsEventStatus * 0x0012f788, nsIView * 0x04f6dc70) line 302
PresShell::HandleEventInternal(nsEvent * 0x0012f894, nsIView * 0x04f6dc70, 
unsigned int 1, nsEventStatus * 0x0012f788) line 4909 + 43 bytes
PresShell::HandleEvent(PresShell * const 0x036cdd64, nsIView * 0x04f6dc70, 
nsGUIEvent * 0x0012f894, nsEventStatus * 0x0012f788, int 1, int & 1) line 4850 + 
25 bytes
nsView::HandleEvent(nsView * const 0x04f6dc70, nsGUIEvent * 0x0012f894, unsigned 
int 28, nsEventStatus * 0x0012f788, int 1, int & 1) line 379
nsViewManager2::DispatchEvent(nsViewManager2 * const 0x0369ded0, nsGUIEvent * 
0x0012f894, nsEventStatus * 0x0012f788) line 1537
HandleEvent(nsGUIEvent * 0x0012f894) line 68
nsWindow::DispatchEvent(nsWindow * const 0x0369fe44, nsGUIEvent * 0x0012f894, 
nsEventStatus & nsEventStatus_eIgnore) line 687 + 10 bytes
nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012f894) line 708
nsWindow::DispatchMouseEvent(unsigned int 300, nsPoint * 0x00000000) line 3948 + 
21 bytes
ChildWindow::DispatchMouseEvent(unsigned int 300, nsPoint * 0x00000000) line 
4158
nsWindow::ProcessMessage(unsigned int 512, unsigned int 1, long 3342678, long * 
0x0012fc48) line 2942 + 24 bytes
nsWindow::WindowProc(HWND__ * 0x00460430, unsigned int 512, unsigned int 1, long 
3342678) line 922 + 27 bytes
USER32! 77e7124c()
JS3250! 00330156()
Adding myself to Cc list.
when you determine you can't drop, you don't want to let the event bubble.
brade's patch is the right thing.
update whiteboard
Whiteboard: FIX IN HAND
this will not be landing today, moving to mozilla0.9
Target Milestone: mozilla0.8 → mozilla0.9
fix is in
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Target Milestone: mozilla0.9 → mozilla0.8
Verified on build 20010724&20010730 os:win98/mac8.6/linux7
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: