[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