[webkit-changes] cvs commit: WebCore/kwq WebCoreBridge.mm
KWQKHTMLPart.mm
Vicki
vicki at opensource.apple.com
Sun Nov 13 19:49:56 PST 2005
vicki 05/11/13 19:49:56
Modified: . ChangeLog
kwq WebCoreBridge.mm KWQKHTMLPart.mm
Log:
Reviewed by Maciej.
- fix <rdar://problem/4316201> REGRESSION: cursor and text in status bar is not updated when mousing over links in a frame (5509)
* kwq/KWQKHTMLPart.mm:
(KWQKHTMLPart::passSubframeEventToSubframe): add a case to handle NSMouseMoved, to fix the problem with the hand cursor
(KWQKHTMLPart::mouseMoved): return if we're already sending an event to the subview
* kwq/WebCoreBridge.mm:
(-[WebCoreBridge elementAtPoint:]): if we're over a frame, return the element within the frame, to fix the problem with
status bar text
Revision Changes Path
1.361 +14 -1 WebCore/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/WebCore/ChangeLog,v
retrieving revision 1.360
retrieving revision 1.361
diff -u -r1.360 -r1.361
--- ChangeLog 13 Nov 2005 23:52:50 -0000 1.360
+++ ChangeLog 14 Nov 2005 03:49:50 -0000 1.361
@@ -1,4 +1,17 @@
-2005-11-14 Anders Carlsson <andersca at mac.com>
+2005-11-13 Vicki Murley <vicki at apple.com>
+
+ Reviewed by Maciej.
+
+ - fix <rdar://problem/4316201> REGRESSION: cursor and text in status bar is not updated when mousing over links in a frame (5509)
+
+ * kwq/KWQKHTMLPart.mm:
+ (KWQKHTMLPart::passSubframeEventToSubframe): add a case to handle NSMouseMoved, to fix the problem with the hand cursor
+ (KWQKHTMLPart::mouseMoved): return if we're already sending an event to the subview
+ * kwq/WebCoreBridge.mm:
+ (-[WebCoreBridge elementAtPoint:]): if we're over a frame, return the element within the frame, to fix the problem with
+ status bar text
+
+2005-11-13 Anders Carlsson <andersca at mac.com>
Reviewed by Eric.
1.427 +22 -3 WebCore/kwq/WebCoreBridge.mm
Index: WebCoreBridge.mm
===================================================================
RCS file: /cvs/root/WebCore/kwq/WebCoreBridge.mm,v
retrieving revision 1.426
retrieving revision 1.427
diff -u -r1.426 -r1.427
--- WebCoreBridge.mm 9 Nov 2005 02:46:29 -0000 1.426
+++ WebCoreBridge.mm 14 Nov 2005 03:49:54 -0000 1.427
@@ -1024,16 +1024,35 @@
- (NSDictionary *)elementAtPoint:(NSPoint)point
{
RenderObject *renderer = _part->renderer();
- if (!renderer) {
+ if (!renderer)
return nil;
- }
+
RenderObject::NodeInfo nodeInfo(true, true);
renderer->layer()->hitTest(nodeInfo, (int)point.x, (int)point.y);
+
+ NodeImpl *n = nodeInfo.innerNode();
+ QWidget *widget = static_cast<RenderWidget *>(n->renderer())->widget();
+ while (n && n->renderer() && n->renderer()->isWidget() && widget && widget->inherits("KHTMLView")) {
+ KHTMLPart *kpart = static_cast<DOM::HTMLFrameElementImpl *>(n)->contentPart();
+ if (kpart && static_cast<KWQKHTMLPart *>(kpart)->renderer()) {
+ int _x, _y;
+ n->renderer()->absolutePosition(_x, _y, true);
+ _x = (int)point.x - _x;
+ _y = (int)point.y - _y;
+ RenderObject::NodeInfo widgetNodeInfo(true, true);
+ static_cast<KWQKHTMLPart *>(kpart)->renderer()->layer()->hitTest(widgetNodeInfo, _x, _y);
+ nodeInfo = widgetNodeInfo;
+ n = nodeInfo.innerNode();
+ if (n && n->renderer())
+ widget = static_cast<RenderWidget *>(n->renderer())->widget();
+ }
+ }
+
NSMutableDictionary *element = [NSMutableDictionary dictionary];
[element setObject:[NSNumber numberWithBool:_part->isPointInsideSelection((int)point.x, (int)point.y)]
forKey:WebCoreElementIsSelectedKey];
-
+
// Find the title in the nearest enclosing DOM node.
// For <area> tags in image maps, walk the tree for the <area>, not the <img> using it.
for (NodeImpl *titleNode = nodeInfo.innerNode(); titleNode; titleNode = titleNode->parentNode()) {
1.687 +18 -2 WebCore/kwq/KWQKHTMLPart.mm
Index: KWQKHTMLPart.mm
===================================================================
RCS file: /cvs/root/WebCore/kwq/KWQKHTMLPart.mm,v
retrieving revision 1.686
retrieving revision 1.687
diff -u -r1.686 -r1.687
--- KWQKHTMLPart.mm 9 Nov 2005 02:46:28 -0000 1.686
+++ KWQKHTMLPart.mm 14 Nov 2005 03:49:54 -0000 1.687
@@ -2164,7 +2164,6 @@
if (!wasDeferringTimers) {
QObject::setDefersTimers(true);
}
-
ASSERT(!_sendingEventToSubview);
_sendingEventToSubview = true;
[view mouseDown:_currentEvent];
@@ -2590,6 +2589,23 @@
KWQ_BLOCK_EXCEPTIONS;
switch ([_currentEvent type]) {
+ case NSMouseMoved: {
+ NodeImpl *node = event.innerNode.get();
+ if (!node)
+ return false;
+ RenderObject *renderer = node->renderer();
+ if (!renderer || !renderer->isWidget())
+ return false;
+ QWidget *widget = static_cast<RenderWidget *>(renderer)->widget();
+ if (!widget || !widget->inherits("KHTMLView"))
+ return false;
+ KHTMLPart *subframePart = static_cast<KHTMLView *>(widget)->part();
+ if (!subframePart)
+ return false;
+ [KWQ(subframePart)->bridge() mouseMoved:_currentEvent];
+ return true;
+ }
+
case NSLeftMouseDown: {
NodeImpl *node = event.innerNode.get();
if (!node) {
@@ -2826,7 +2842,7 @@
KHTMLView *v = d->m_view;
// Reject a mouse moved if the button is down - screws up tracking during autoscroll
// These happen because WebKit sometimes has to fake up moved events.
- if (!v || d->m_bMousePressed) {
+ if (!v || d->m_bMousePressed || _sendingEventToSubview) {
return;
}
More information about the webkit-changes
mailing list