Closed Bug 452787 Opened 14 years ago Closed 14 years ago

Couldn't drag elements which contain text or it is difficult for empty elements

Categories

(Core :: DOM: Copy & Paste and Drag & Drop, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: laurent, Assigned: enndeakin)

References

(Regressed 1 open bug)

Details

Attachments

(2 files, 1 obsolete file)

With the new HTML5 drag and drop API, I found an issue: 

- if a div is draggable, the drag cannot start if it contains text.
- If it is empty, we should first click on it (by pushing and releasing the mouse button), and then we can begin a drag.
- If the div have the -moz-user-select:none;, all works as expected.

Look at the given html page to see this behaviors.
Flags: blocking1.9.1?
This patch checks the draggable attribute within the mouse down for selection handling.
Attachment #336138 - Flags: superreview?(roc)
Attachment #336138 - Flags: review?(Olli.Pettay)
Comment on attachment 336138 [details] [diff] [review]
allow dragging within a selection

> // static
> PRBool
>+nsContentUtils::ContentIsDraggable(nsIContent* aContent)
>+{
>+  nsCOMPtr<nsIDOMNSHTMLElement> htmlElement = do_QueryInterface(aContent);
>+  if (htmlElement) {
>+    PRBool draggable = PR_FALSE;
>+    htmlElement->GetDraggable(&draggable);
>+    if (draggable)
>+      return PR_TRUE;
>+  }
>+
>+  // special handling for content area image and link dragging
>+  return IsDraggableImage(aContent) || IsDraggableLink(aContent);
>+}
What if image or link has dragable="false", should this return PR_FALSE in that case?
nsHTMLImageElement and nsHTMLAnchorElement have their own implementation for ::GetDraggable.
> What if image or link has dragable="false", should this return PR_FALSE in that
> case?

Such as:

nsCOMPtr<nsIDOMNSHTMLElement> htmlElement = do_QueryInterface(aContent);
if (htmlElement) {
  PRBool draggable = PR_FALSE;
  htmlElement->GetDraggable(&draggable);
  if (draggable)
    return PR_TRUE;

  if (aContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::draggable,
                            nsGkAtoms::_false, eIgnoreCase)
    return PR_FALSE;
}

?
Um, I wasn't CC'd to this bug - sorry didn't notice the comment.

But yes, something like that if you can't find any better way.
Attached patch updated patchSplinter Review
Attachment #336138 - Attachment is obsolete: true
Attachment #337086 - Flags: superreview?(roc)
Attachment #337086 - Flags: review?(Olli.Pettay)
Attachment #336138 - Flags: superreview?(roc)
Attachment #336138 - Flags: review?(Olli.Pettay)
Attachment #337086 - Flags: review?(Olli.Pettay) → review+
Attachment #337086 - Flags: superreview?(roc) → superreview+
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Flags: blocking1.9.1? → in-testsuite+
Regressions: 739071
You need to log in before you can comment on or make changes to this bug.