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

Timothy thatcher at opensource.apple.com
Tue Nov 15 17:36:18 PST 2005


thatcher    05/11/15 17:36:18

  Modified:    .        Tag: Safari-2-0-branch ChangeLog
               kwq      Tag: Safari-2-0-branch WebCoreBridge.mm
  Log:
          Merged fix from TOT to Safari-2-0-branch
  
      2005-11-15  Vicki Murley  <vicki at apple.com>
  
          Reviewed by Tim O.
  
          Improve this loop.  We'd get an infinite loop in the old code if we came across a part with no renderer, such as a frame whose src is an image.
  
          * kwq/WebCoreBridge.mm:
          (-[WebCoreBridge elementAtPoint:]):
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.65  +13 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.1.2.64
  retrieving revision 1.1.2.65
  diff -u -r1.1.2.64 -r1.1.2.65
  --- ChangeLog	16 Nov 2005 00:23:16 -0000	1.1.2.64
  +++ ChangeLog	16 Nov 2005 01:36:11 -0000	1.1.2.65
  @@ -2,6 +2,19 @@
   
           Merged fix from TOT to Safari-2-0-branch
   
  +    2005-11-15  Vicki Murley  <vicki at apple.com>
  +
  +        Reviewed by Tim O.
  + 
  +        Improve this loop.  We'd get an infinite loop in the old code if we came across a part with no renderer, such as a frame whose src is an image.
  +
  +        * kwq/WebCoreBridge.mm:
  +        (-[WebCoreBridge elementAtPoint:]):
  +
  +2005-11-15  Timothy Hatcher  <timothy at apple.com>
  +
  +        Merged fix from TOT to Safari-2-0-branch
  +
       2005-11-13  Vicki Murley  <vicki at apple.com>
   
           Reviewed by Maciej.
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.382.2.14 +19 -16    WebCore/kwq/WebCoreBridge.mm
  
  Index: WebCoreBridge.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/WebCoreBridge.mm,v
  retrieving revision 1.382.2.13
  retrieving revision 1.382.2.14
  diff -u -r1.382.2.13 -r1.382.2.14
  --- WebCoreBridge.mm	16 Nov 2005 00:23:19 -0000	1.382.2.13
  +++ WebCoreBridge.mm	16 Nov 2005 01:36:17 -0000	1.382.2.14
  @@ -1033,24 +1033,27 @@
       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 = 0;
       
  -    while (n && n->renderer() && n->renderer()->isWidget() && widget && widget->inherits("KHTMLView")) {
  +    while (true) {
  +        n = nodeInfo.innerNode();
  +        if (!n || !n->renderer() || !n->renderer()->isWidget())
  +            break;
  +        widget = static_cast<RenderWidget *>(n->renderer())->widget();
  +        if (!widget || !widget->inherits("KHTMLView"))
  +            break;
           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();
  -        }
  -    }  
  +        if (!kpart || !static_cast<KWQKHTMLPart *>(kpart)->renderer())
  +            break;
  +        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;
  +    }
           
       NSMutableDictionary *element = [NSMutableDictionary dictionary];
       [element setObject:[NSNumber numberWithBool:_part->isPointInsideSelection((int)point.x, (int)point.y)]
  
  
  



More information about the webkit-changes mailing list