[webkit-changes] cvs commit: WebCore/kwq WebCoreBridge.mm

Vicki vicki at opensource.apple.com
Sun Nov 13 22:46:46 PST 2005


vicki       05/11/13 22:46:46

  Modified:    .        ChangeLog
               kwq      WebCoreBridge.mm
  Log:
          Reviewed by Adele.
  
  	- fix <rdar://problem/4341389> crash in elementAtPoint code quitting Safari, and make this code slightly more readable
  
          * kwq/WebCoreBridge.mm:
          (-[WebCoreBridge elementAtPoint:]): add a nil check
  
  Revision  Changes    Path
  1.362     +9 -0      WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.361
  retrieving revision 1.362
  diff -u -r1.361 -r1.362
  --- ChangeLog	14 Nov 2005 03:49:50 -0000	1.361
  +++ ChangeLog	14 Nov 2005 06:46:41 -0000	1.362
  @@ -1,5 +1,14 @@
   2005-11-13  Vicki Murley  <vicki at apple.com>
   
  +        Reviewed by Adele.
  + 
  +	- fix <rdar://problem/4341389> crash in elementAtPoint code quitting Safari, and make this code slightly more readable
  +
  +        * kwq/WebCoreBridge.mm:
  +        (-[WebCoreBridge elementAtPoint:]): add a nil check
  +
  +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)
  
  
  
  1.428     +20 -17    WebCore/kwq/WebCoreBridge.mm
  
  Index: WebCoreBridge.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/WebCoreBridge.mm,v
  retrieving revision 1.427
  retrieving revision 1.428
  diff -u -r1.427 -r1.428
  --- WebCoreBridge.mm	14 Nov 2005 03:49:54 -0000	1.427
  +++ WebCoreBridge.mm	14 Nov 2005 06:46:45 -0000	1.428
  @@ -1030,25 +1030,28 @@
       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();
  +    NodeImpl *n;
  +    QWidget *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();
  +    do {
  +        n = nodeInfo.innerNode();
  +        if (n && n->renderer() && n->renderer()->isWidget()) {
  +            widget = static_cast<RenderWidget *>(n->renderer())->widget();
  +            if (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;
  +                }
  +            }
           }
  -    }  
  -        
  +    } while (n && n->renderer() && n->renderer()->isWidget() && widget && widget->inherits("KHTMLView"));
  +
       NSMutableDictionary *element = [NSMutableDictionary dictionary];
       [element setObject:[NSNumber numberWithBool:_part->isPointInsideSelection((int)point.x, (int)point.y)]
                   forKey:WebCoreElementIsSelectedKey];
  
  
  



More information about the webkit-changes mailing list