[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

mjs mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:58:36 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 52c24507db6b8960a1106b43980b61d990cdb791
Author: mjs <mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Sep 30 21:58:07 2003 +0000

    WebCore:
    
            Reviewed by Ken.
    
    	- fixed 3375281 - Keyboard event handlers not fired if focus not in form field
    	- fixed 3242927 - KeyPressed Event in Javascript don't work
    	- fixed 3375353 - keyboard event.target not updated when blurring from form items
    	- fixed 3183754 - returning false from key press handlers does not prevent typing or form submission
    
            * khtml/xml/dom_nodeimpl.cpp:
    	(NodeImpl::dispatchKeyEvent): Force false when defaultHandled instead of
    	based on a weird rule appropriate for KDE but not for us.
            * kwq/KWQKHTMLPart.mm:
    	(KWQKHTMLPart::keyEvent): If there's no focus node, give the event
    	to the body element instead of giving up. Also, reverse
    	expectedsense of return value dispatchKeyEvent, since it returns
    	true if it *didn't* swallow the event. And finally, let the key press
    	event as well as the key down event for the initial NSKeyDown block
    	default handling.
    	* kwq/KWQListBox.mm:
            (-[KWQTableView keyDown:]): Respect return value from interceptKeyEvent:
            (-[KWQTableView keyUp:]): ditto
            * kwq/KWQTextArea.mm:
            (-[KWQTextAreaTextView keyDown:]): ditto
            (-[KWQTextAreaTextView keyUp:]): ditto
            * kwq/KWQTextField.mm:
            (-[KWQTextField textView:shouldHandleEvent:]): ditto
    
    WebKit:
    
            Reviewed by Ken.
    
    	- fixed 3375281 - Keyboard event handlers not fired if focus not in form field
    	- fixed 3242927 - KeyPressed Event in Javascript don't work
    	- fixed 3375353 - keyboard event.target not updated when blurring from form items
    	- fixed 3183754 - returning false from key press handlers does not prevent typing or form submission
    
            * WebView.subproj/WebHTMLView.m:
            (-[WebHTMLView keyDown:]): Ask the bridge before passing the event along.
            (-[WebHTMLView keyUp:]): Likewise.
            * WebView.subproj/WebHTMLViewPrivate.h:
            * WebView.subproj/WebHTMLViewPrivate.m: Remove dead code.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@5090 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 350cf72..6597648 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,31 @@
+2003-09-30  Maciej Stachowiak  <mjs at apple.com>
+
+        Reviewed by Ken.
+
+	- fixed 3375281 - Keyboard event handlers not fired if focus not in form field
+	- fixed 3242927 - KeyPressed Event in Javascript don't work
+	- fixed 3375353 - keyboard event.target not updated when blurring from form items
+	- fixed 3183754 - returning false from key press handlers does not prevent typing or form submission
+	
+        * khtml/xml/dom_nodeimpl.cpp:
+	(NodeImpl::dispatchKeyEvent): Force false when defaultHandled instead of
+	based on a weird rule appropriate for KDE but not for us.
+        * kwq/KWQKHTMLPart.mm:
+	(KWQKHTMLPart::keyEvent): If there's no focus node, give the event
+	to the body element instead of giving up. Also, reverse
+	expectedsense of return value dispatchKeyEvent, since it returns
+	true if it *didn't* swallow the event. And finally, let the key press
+	event as well as the key down event for the initial NSKeyDown block
+	default handling.
+	* kwq/KWQListBox.mm:
+        (-[KWQTableView keyDown:]): Respect return value from interceptKeyEvent:
+        (-[KWQTableView keyUp:]): ditto
+        * kwq/KWQTextArea.mm:
+        (-[KWQTextAreaTextView keyDown:]): ditto
+        (-[KWQTextAreaTextView keyUp:]): ditto
+        * kwq/KWQTextField.mm:
+        (-[KWQTextField textView:shouldHandleEvent:]): ditto
+
 2003-09-30  David Hyatt  <hyatt at apple.com>
 
 	Improvements to layout transitions and scrollbar appearance/disappearance.  
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 350cf72..6597648 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,31 @@
+2003-09-30  Maciej Stachowiak  <mjs at apple.com>
+
+        Reviewed by Ken.
+
+	- fixed 3375281 - Keyboard event handlers not fired if focus not in form field
+	- fixed 3242927 - KeyPressed Event in Javascript don't work
+	- fixed 3375353 - keyboard event.target not updated when blurring from form items
+	- fixed 3183754 - returning false from key press handlers does not prevent typing or form submission
+	
+        * khtml/xml/dom_nodeimpl.cpp:
+	(NodeImpl::dispatchKeyEvent): Force false when defaultHandled instead of
+	based on a weird rule appropriate for KDE but not for us.
+        * kwq/KWQKHTMLPart.mm:
+	(KWQKHTMLPart::keyEvent): If there's no focus node, give the event
+	to the body element instead of giving up. Also, reverse
+	expectedsense of return value dispatchKeyEvent, since it returns
+	true if it *didn't* swallow the event. And finally, let the key press
+	event as well as the key down event for the initial NSKeyDown block
+	default handling.
+	* kwq/KWQListBox.mm:
+        (-[KWQTableView keyDown:]): Respect return value from interceptKeyEvent:
+        (-[KWQTableView keyUp:]): ditto
+        * kwq/KWQTextArea.mm:
+        (-[KWQTextAreaTextView keyDown:]): ditto
+        (-[KWQTextAreaTextView keyUp:]): ditto
+        * kwq/KWQTextField.mm:
+        (-[KWQTextField textView:shouldHandleEvent:]): ditto
+
 2003-09-30  David Hyatt  <hyatt at apple.com>
 
 	Improvements to layout transitions and scrollbar appearance/disappearance.  
diff --git a/WebCore/khtml/xml/dom_nodeimpl.cpp b/WebCore/khtml/xml/dom_nodeimpl.cpp
index dc8dbd2..e395f20 100644
--- a/WebCore/khtml/xml/dom_nodeimpl.cpp
+++ b/WebCore/khtml/xml/dom_nodeimpl.cpp
@@ -740,10 +740,19 @@ bool NodeImpl::dispatchKeyEvent(QKeyEvent *key)
     KeyEventImpl *keyEventImpl = new KeyEventImpl(key, getDocument()->defaultView());
     keyEventImpl->ref();
     bool r = dispatchEvent(keyEventImpl,exceptioncode,true);
+
+#if APPLE_CHANGES
+    // we want to return false if default is prevented (already taken care of)
+    // or if the element is default-handled by the DOM. Otherwise we let it just
+    // let it get handled by AppKit 
+    if (keyEventImpl->defaultHandled())
+#else
     // the default event handler should accept() the internal QKeyEvent
     // to prevent the view from further evaluating it.
     if (!keyEventImpl->defaultPrevented() && !keyEventImpl->qKeyEvent->isAccepted())
+#endif
       r = false;
+
     keyEventImpl->deref();
     return r;
 }
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index e7f8321..b7de64e 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -1300,6 +1300,9 @@ bool KWQKHTMLPart::keyEvent(NSEvent *event)
         return false;
     }
     NodeImpl *node = doc->focusNode();
+    if (!node && docImpl()) {
+	node = docImpl()->body();
+    }
     if (!node) {
 	return false;
     }
@@ -1316,7 +1319,7 @@ bool KWQKHTMLPart::keyEvent(NSEvent *event)
 		     stateForCurrentEvent(),
 		     QString::fromNSString([event characters]),
 		     [event isARepeat]);
-    bool result = node->dispatchKeyEvent(&qEvent);
+    bool result = !node->dispatchKeyEvent(&qEvent);
 
     // We want to send both a down and a press for the initial key event.
     // This is a temporary hack; we need to do this a better way.
@@ -1327,7 +1330,9 @@ bool KWQKHTMLPart::keyEvent(NSEvent *event)
 			 stateForCurrentEvent(),
 			 QString::fromNSString([event characters]),
 			 true);
-        node->dispatchKeyEvent(&qEvent);
+        if (!node->dispatchKeyEvent(&qEvent)) {
+	    result = true;
+	}
     }
 
     ASSERT(_currentEvent == event);
diff --git a/WebCore/kwq/KWQListBox.mm b/WebCore/kwq/KWQListBox.mm
index e88464f..f8bfd05 100644
--- a/WebCore/kwq/KWQListBox.mm
+++ b/WebCore/kwq/KWQListBox.mm
@@ -295,21 +295,17 @@ QSize QListBox::sizeForNumberOfLines(int lines) const
 - (void)keyDown:(NSEvent *)event
 {
     WebCoreBridge *bridge = KWQKHTMLPart::bridgeForWidget(_box);
-    [bridge interceptKeyEvent:event toView:self];
-    // FIXME: In theory, if the bridge intercepted the event we should return not call super.
-    // But the code in the Web Kit that this replaces did not do that, so lets not do it until
-    // we can do more testing to see if it works well.
-    [super keyDown:event];
+    if (![bridge interceptKeyEvent:event toView:self]) {
+	[super keyDown:event];
+    }
 }
 
 - (void)keyUp:(NSEvent *)event
 {
     WebCoreBridge *bridge = KWQKHTMLPart::bridgeForWidget(_box);
-    [bridge interceptKeyEvent:event toView:self];
-    // FIXME: In theory, if the bridge intercepted the event we should return not call super.
-    // But the code in the Web Kit that this replaces did not do that, so lets not do it until
-    // we can do more testing to see if it works well.
-    [super keyUp:event];
+    if (![bridge interceptKeyEvent:event toView:self]) {
+	[super keyUp:event];
+    }
 }
 
 - (BOOL)becomeFirstResponder
diff --git a/WebCore/kwq/KWQTextArea.mm b/WebCore/kwq/KWQTextArea.mm
index 4c0175f..fa2e14b 100644
--- a/WebCore/kwq/KWQTextArea.mm
+++ b/WebCore/kwq/KWQTextArea.mm
@@ -635,21 +635,17 @@ static NSString *WebContinuousSpellCheckingEnabled = @"WebContinuousSpellCheckin
 - (void)keyDown:(NSEvent *)event
 {
     WebCoreBridge *bridge = KWQKHTMLPart::bridgeForWidget(widget);
-    [bridge interceptKeyEvent:event toView:self];
-    // FIXME: In theory, if the bridge intercepted the event we should return not call super.
-    // But the code in the Web Kit that this replaces did not do that, so lets not do it until
-    // we can do more testing to see if it works well.
-    [super keyDown:event];
+    if (![bridge interceptKeyEvent:event toView:self]) {
+	[super keyDown:event];
+    }
 }
 
 - (void)keyUp:(NSEvent *)event
 {
     WebCoreBridge *bridge = KWQKHTMLPart::bridgeForWidget(widget);
-    [bridge interceptKeyEvent:event toView:self];
-    // FIXME: In theory, if the bridge intercepted the event we should return not call super.
-    // But the code in the Web Kit that this replaces did not do that, so lets not do it until
-    // we can do more testing to see if it works well.
-    [super keyUp:event];
+    if (![bridge interceptKeyEvent:event toView:self]) {
+	[super keyUp:event];
+    }
 }
 
 @end
diff --git a/WebCore/kwq/KWQTextField.mm b/WebCore/kwq/KWQTextField.mm
index 3fc1685..2a78b0d 100644
--- a/WebCore/kwq/KWQTextField.mm
+++ b/WebCore/kwq/KWQTextField.mm
@@ -465,9 +465,7 @@
 
     if ([event type] == NSKeyDown || [event type] == NSKeyUp) {
         WebCoreBridge *bridge = KWQKHTMLPart::bridgeForWidget(widget);
-        [bridge interceptKeyEvent:event toView:view];
-        // FIXME: In theory, if the bridge intercepted the event we should return NO.
-        // But the code in the Web Kit that we moved in here did not do that.
+        return ![bridge interceptKeyEvent:event toView:view];
     }
     return YES;
 }
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 6f3ad6e..eb5dc88 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,18 @@
+2003-09-30  Maciej Stachowiak  <mjs at apple.com>
+
+        Reviewed by Ken.
+
+	- fixed 3375281 - Keyboard event handlers not fired if focus not in form field
+	- fixed 3242927 - KeyPressed Event in Javascript don't work
+	- fixed 3375353 - keyboard event.target not updated when blurring from form items
+	- fixed 3183754 - returning false from key press handlers does not prevent typing or form submission
+
+        * WebView.subproj/WebHTMLView.m:
+        (-[WebHTMLView keyDown:]): Ask the bridge before passing the event along.
+        (-[WebHTMLView keyUp:]): Likewise.
+        * WebView.subproj/WebHTMLViewPrivate.h:
+        * WebView.subproj/WebHTMLViewPrivate.m: Remove dead code.
+
 2003-09-30  Richard Williamson   <rjw at apple.com>
 
 	Fixed 3422138.  We weren't sending a didChange call for isLoading until the load was complete!  Also [WebView isLoading] wasn't accounting for provisional datasources.
diff --git a/WebKit/WebView.subproj/WebHTMLView.m b/WebKit/WebView.subproj/WebHTMLView.m
index 8c7fff8..cb2fa14 100644
--- a/WebKit/WebView.subproj/WebHTMLView.m
+++ b/WebKit/WebView.subproj/WebHTMLView.m
@@ -845,6 +845,20 @@
     [[self window] setAutodisplay:YES];
 }
 
+- (void)keyDown:(NSEvent *)event
+{
+    if (![[self _bridge] interceptKeyEvent:event toView:self]) {
+	[super keyDown:event];
+    }
+}
+
+- (void)keyUp:(NSEvent *)event
+{
+    if (![[self _bridge] interceptKeyEvent:event toView:self]) {
+	[super keyUp:event];
+    }
+}
+
 @end
 
 @implementation NSArray (WebHTMLView)
diff --git a/WebKit/WebView.subproj/WebHTMLViewPrivate.h b/WebKit/WebView.subproj/WebHTMLViewPrivate.h
index 58f076c..e336622 100644
--- a/WebKit/WebView.subproj/WebHTMLViewPrivate.h
+++ b/WebKit/WebView.subproj/WebHTMLViewPrivate.h
@@ -65,7 +65,6 @@
 - (BOOL)_insideAnotherHTMLView;
 - (void)_clearLastHitViewIfSelf;
 - (void)_updateMouseoverWithEvent:(NSEvent *)event;
-- (BOOL)_interceptKeyEvent:(NSEvent *)event toView:(NSView *)view;
 
 + (NSArray *)_pasteboardTypes;
 - (void)_writeSelectionToPasteboard:(NSPasteboard *)pasteboard;
diff --git a/WebKit/WebView.subproj/WebHTMLViewPrivate.m b/WebKit/WebView.subproj/WebHTMLViewPrivate.m
index 8360742..4d493c7 100644
--- a/WebKit/WebView.subproj/WebHTMLViewPrivate.m
+++ b/WebKit/WebView.subproj/WebHTMLViewPrivate.m
@@ -475,12 +475,6 @@ static WebHTMLView *lastHitView = nil;
     [self _setToolTip:[element objectForKey:WebCoreElementTitleKey]];
 }
 
-- (BOOL)_interceptKeyEvent:(NSEvent *)event toView:(NSView *)view
-{
-    return [[self _bridge] interceptKeyEvent:event toView:view];
-}
-
-
 + (NSArray *)_pasteboardTypes
 {
     return [NSArray arrayWithObjects:

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list