+2007-07-04 Mitz Pettel <mitz@webkit.org>
+
+ Reviewed by Maciej.
+
+ - fix http://bugs.webkit.org/show_bug.cgi?id=14495
+ REGRESSION: Wrong cursor is displayed during drag and drop when text is selected
+ <rdar://problem/5312384>
+
+ No test possible because DumpRenderTree cannot query the current cursor.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::selectCursor): Changed into a member function and
+ added that if the last mouse down event could not have started a
+ selection, then the cursor should not change to an I-beam unconditionally.
+ (WebCore::EventHandler::handleMouseMoveEvent):
+ * page/EventHandler.h:
+
2007-07-04 Holger Hans Peter Freyther <zecke@selfish.org>
Reviewed by Rob Buis.
return frame->selectionController()->rootEditableElement() != node->rootEditableElement();
}
-// FIXME: We should consider making this a member function now that we're passing in more info about the object.
-static Cursor selectCursor(const MouseEventWithHitTestResults& event, Frame* frame, bool mousePressed, PlatformScrollbar* scrollbar, bool capturingMouseEvents)
+Cursor EventHandler::selectCursor(const MouseEventWithHitTestResults& event, PlatformScrollbar* scrollbar)
{
// During selection, use an I-beam no matter what we're over.
// If you're capturing mouse events for a particular node, don't treat this as a selection.
- if (mousePressed && frame->selectionController()->isCaretOrRange() && !capturingMouseEvents)
+ if (m_mousePressed && m_mouseDownMayStartSelect && m_frame->selectionController()->isCaretOrRange() && !m_capturingMouseEventsNode)
return iBeamCursor();
Node* node = event.targetNode();
// If the link is editable, then we need to check the settings to see whether or not the link should be followed
if (editable) {
- ASSERT(frame->settings());
- switch(frame->settings()->editableLinkBehavior()) {
+ ASSERT(m_frame->settings());
+ switch(m_frame->settings()->editableLinkBehavior()) {
default:
case EditableLinkDefaultBehavior:
case EditableLinkAlwaysLive:
break;
case EditableLinkLiveWhenNotFocused:
- editableLinkEnabled = nodeIsNotBeingEdited(node, frame) || event.event().shiftKey();
+ editableLinkEnabled = nodeIsNotBeingEdited(node, m_frame) || event.event().shiftKey();
break;
case EditableLinkOnlyLiveWithShiftKey:
return handCursor();
RenderLayer* layer = renderer ? renderer->enclosingLayer() : 0;
bool inResizer = false;
- if (frame->view() && layer && layer->isPointInResizeControl(frame->view()->windowToContents(event.event().pos())))
+ if (m_frame->view() && layer && layer->isPointInResizeControl(m_frame->view()->windowToContents(event.event().pos())))
inResizer = true;
if ((editable || (renderer && renderer->isText() && renderer->canSelect())) && !inResizer && !scrollbar)
return iBeamCursor();
if (scrollbar && !m_mousePressed)
scrollbar->handleMouseMoveEvent(mouseEvent); // Handle hover effects on platforms that support visual feedback on scrollbar hovering.
if ((!m_resizeLayer || !m_resizeLayer->inResizeMode()) && m_frame->view())
- m_frame->view()->setCursor(selectCursor(mev, m_frame, m_mousePressed, scrollbar, m_capturingMouseEventsNode));
+ m_frame->view()->setCursor(selectCursor(mev, scrollbar));
}
m_lastMouseMoveEventSubframe = newSubframe;