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

Vicki vicki at opensource.apple.com
Tue Nov 15 14:53:45 PST 2005


vicki       05/11/15 14:53:45

  Modified:    .        ChangeLog
               kwq      WebCoreBridge.mm
  Log:
          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
  1.371     +9 -0      WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.370
  retrieving revision 1.371
  diff -u -r1.370 -r1.371
  --- ChangeLog	15 Nov 2005 20:02:22 -0000	1.370
  +++ ChangeLog	15 Nov 2005 22:53:41 -0000	1.371
  @@ -1,3 +1,12 @@
  +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  Adele Peterson  <adele at apple.com>
   
           Reviewed by Darin.
  
  
  
  1.431     +18 -18    WebCore/kwq/WebCoreBridge.mm
  
  Index: WebCoreBridge.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/WebCoreBridge.mm,v
  retrieving revision 1.430
  retrieving revision 1.431
  diff -u -r1.430 -r1.431
  --- WebCoreBridge.mm	15 Nov 2005 19:15:20 -0000	1.430
  +++ WebCoreBridge.mm	15 Nov 2005 22:53:44 -0000	1.431
  @@ -1033,25 +1033,25 @@
       NodeImpl *n;
       QWidget *widget = 0;
       
  -    do {
  +    while (true) {
           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"));
  -
  +        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())
  +            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)]
                   forKey:WebCoreElementIsSelectedKey];
  
  
  



More information about the webkit-changes mailing list