[webkit-changes] cvs commit: WebCore/khtml khtmlview.cpp

Vicki vicki at opensource.apple.com
Wed Nov 2 10:54:04 PST 2005


vicki       05/11/02 10:54:03

  Modified:    .        ChangeLog
               kwq      KWQKHTMLPart.h KWQKHTMLPart.mm
               khtml    khtmlview.cpp
  Log:
          Reviewed by Darin.
  
  	- fix <rdar://problem/4303587> REGRESSION (TOT): Scrollwheel doesn't work on frameset pages (5450)
  
          * kwq/KWQKHTMLPart.h:
          * kwq/KWQKHTMLPart.mm:
          (KWQKHTMLPart::wheelEvent): set _currentEvent to the wheel event
          (KWQKHTMLPart::passWheelEventToChildWidget): New.  Pass the event to the child widget, if we
  	haven't already handled the event
          * khtml/khtmlview.cpp:
          (KHTMLView::viewportWheelEvent): add passWheelEventToChildWidget check, and accept the event if
  	we're passing to the child widget
  
  Revision  Changes    Path
  1.328     +15 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.327
  retrieving revision 1.328
  diff -u -r1.327 -r1.328
  --- ChangeLog	2 Nov 2005 08:52:35 -0000	1.327
  +++ ChangeLog	2 Nov 2005 18:53:57 -0000	1.328
  @@ -1,3 +1,18 @@
  +2005-11-02  Vicki Murley  <vicki at apple.com>
  +
  +        Reviewed by Darin.
  + 
  +	- fix <rdar://problem/4303587> REGRESSION (TOT): Scrollwheel doesn't work on frameset pages (5450)
  +
  +        * kwq/KWQKHTMLPart.h:
  +        * kwq/KWQKHTMLPart.mm:
  +        (KWQKHTMLPart::wheelEvent): set _currentEvent to the wheel event
  +        (KWQKHTMLPart::passWheelEventToChildWidget): New.  Pass the event to the child widget, if we
  +	haven't already handled the event
  +        * khtml/khtmlview.cpp:
  +        (KHTMLView::viewportWheelEvent): add passWheelEventToChildWidget check, and accept the event if
  +	we're passing to the child widget
  +
   2005-11-02  David Hyatt  <hyatt at apple.com>
   
   	Fix for 5587, implement pre-wrap and pre-line white-space values.
  
  
  
  1.230     +1 -0      WebCore/kwq/KWQKHTMLPart.h
  
  Index: KWQKHTMLPart.h
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQKHTMLPart.h,v
  retrieving revision 1.229
  retrieving revision 1.230
  diff -u -r1.229 -r1.230
  --- KWQKHTMLPart.h	27 Sep 2005 22:37:28 -0000	1.229
  +++ KWQKHTMLPart.h	2 Nov 2005 18:54:01 -0000	1.230
  @@ -283,6 +283,7 @@
       static void clearTimers(KHTMLView *);
       
       bool passSubframeEventToSubframe(DOM::NodeImpl::MouseEvent &);
  +    bool passWheelEventToChildWidget(DOM::NodeImpl *);
       
       void redirectionTimerStartedOrStopped();
       
  
  
  
  1.683     +34 -0     WebCore/kwq/KWQKHTMLPart.mm
  
  Index: KWQKHTMLPart.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQKHTMLPart.mm,v
  retrieving revision 1.682
  retrieving revision 1.683
  diff -u -r1.682 -r1.683
  --- KWQKHTMLPart.mm	2 Nov 2005 08:52:50 -0000	1.682
  +++ KWQKHTMLPart.mm	2 Nov 2005 18:54:01 -0000	1.683
  @@ -1079,8 +1079,16 @@
       KHTMLView *v = d->m_view;
   
       if (v) {
  +        NSEvent *oldCurrentEvent = _currentEvent;
  +        _currentEvent = KWQRetain(event);
  +
           QWheelEvent qEvent(event);
           v->viewportWheelEvent(&qEvent);
  +
  +        ASSERT(_currentEvent == event);
  +        KWQRelease(event);
  +        _currentEvent = oldCurrentEvent;
  +
           if (qEvent.isAccepted())
               return true;
       }
  @@ -2639,6 +2647,32 @@
       return false;
   }
   
  +bool KWQKHTMLPart::passWheelEventToChildWidget(DOM::NodeImpl *node)
  +{
  +    KWQ_BLOCK_EXCEPTIONS;
  +        
  +    if ([_currentEvent type] != NSScrollWheel || _sendingEventToSubview || !node) 
  +        return false;
  +    else {
  +        RenderObject *renderer = node->renderer();
  +        if (!renderer || !renderer->isWidget())
  +            return false;
  +        QWidget *widget = static_cast<RenderWidget *>(renderer)->widget();
  +        if (!widget)
  +            return false;
  +            
  +        NSView *view = widget->getView();
  +        ASSERT(view);
  +        _sendingEventToSubview = true;
  +        [view scrollWheel:_currentEvent];
  +        _sendingEventToSubview = false;
  +        return true;
  +    }
  +            
  +    KWQ_UNBLOCK_EXCEPTIONS;
  +    return false;
  +}
  +
   void KWQKHTMLPart::mouseDown(NSEvent *event)
   {
       KHTMLView *v = d->m_view;
  
  
  
  1.151     +4 -0      WebCore/khtml/khtmlview.cpp
  
  Index: khtmlview.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/khtmlview.cpp,v
  retrieving revision 1.150
  retrieving revision 1.151
  diff -u -r1.150 -r1.151
  --- khtmlview.cpp	25 Oct 2005 21:14:36 -0000	1.150
  +++ khtmlview.cpp	2 Nov 2005 18:54:03 -0000	1.151
  @@ -1879,6 +1879,10 @@
               doc->renderer()->layer()->hitTest(hitTestResult, x, y); 
               NodeImpl *node = hitTestResult.innerNode();
   
  +           if (KWQ(m_part)->passWheelEventToChildWidget(node)) {
  +                e->accept();
  +                return;
  +            }
               if (node) {
                   node->dispatchWheelEvent(e);
                   if (e->isAccepted())
  
  
  



More information about the webkit-changes mailing list