[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:20:25 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit aa81b2bb2b4fed0d663e90cb6477fbce35aae2e6
Author: mjs <mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Jan 21 02:33:35 2003 +0000

    WebCore:
    
            Reviewed by Trey.
    
    	- fixed 3132120 - onchange handler not firing on mac.com webmail
    
            * khtml/rendering/render_form.h:
            * khtml/rendering/render_replaced.cpp:
            (RenderWidget::handleFocusOut): Moved empty virtual method here from render_form.
            (RenderWidget::eventFilter): Uncomment call to handleFocusOut - we
    	need it to send onChange properly.
    	* khtml/rendering/render_replaced.h:
            * kwq/KWQObject.h: Add empty eventFilter virtual method.
            * kwq/KWQComboBox.h: Remove no longer needed empty eventFilter.
            * kwq/KWQEvent.h: Implement a bit more of QFocusEvent.
            * kwq/KWQTextArea.mm:
            (-[KWQTextArea _createTextView]): Tell the text view its widget.
            (-[KWQTextAreaTextView setWidget:]): New method to set widget.
            (-[KWQTextAreaTextView becomeFirstResponder]): In addition to the usual stuff,
    	call the widget's event filter with a focus in event.
            (-[KWQTextAreaTextView resignFirstResponder]): In addition to the usual stuff,
    	call the widget's event filter with a focus out event.
            * kwq/KWQTextField.mm:
            (-[KWQTextField becomeFirstResponder]): Cleaned up a bit.
            (-[KWQTextField fieldWillBecomeFirstResponder]): Call the widget's event filter with a focus in event.
            (-[KWQTextField fieldWillResignFirstResponder]): Call the widget's event filter with a focus out event.
            * kwq/KWQView.mm:
    
    WebKit:
    
            Reviewed by Trey.
    
    	- fixed 3132120 - onchange handler not firing on mac.com webmail
    
            * WebView.subproj/WebHTMLViewPrivate.m:
            (-[WebNSTextView resignFirstResponder]): If we really resign first responder, and
    	our delegate responds to filedWillBecomeFirstResponder, then call that method.
            (-[WebNSTextView becomeFirstResponder]): If we really become first responder, and
    	our delegate responds to filedWillBecomeFirstResponder, then call that method.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3361 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index eedd7f0..7899cd0 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,31 @@
+2003-01-20  Maciej Stachowiak  <mjs at apple.com>
+
+        Reviewed by Trey.
+
+	- fixed 3132120 - onchange handler not firing on mac.com webmail
+
+        * khtml/rendering/render_form.h:
+        * khtml/rendering/render_replaced.cpp:
+        (RenderWidget::handleFocusOut): Moved empty virtual method here from render_form.
+        (RenderWidget::eventFilter): Uncomment call to handleFocusOut - we
+	need it to send onChange properly.
+	* khtml/rendering/render_replaced.h:
+        * kwq/KWQObject.h: Add empty eventFilter virtual method.
+        * kwq/KWQComboBox.h: Remove no longer needed empty eventFilter.
+        * kwq/KWQEvent.h: Implement a bit more of QFocusEvent.
+        * kwq/KWQTextArea.mm:
+        (-[KWQTextArea _createTextView]): Tell the text view its widget.
+        (-[KWQTextAreaTextView setWidget:]): New method to set widget.
+        (-[KWQTextAreaTextView becomeFirstResponder]): In addition to the usual stuff,
+	call the widget's event filter with a focus in event.
+        (-[KWQTextAreaTextView resignFirstResponder]): In addition to the usual stuff,
+	call the widget's event filter with a focus out event.
+        * kwq/KWQTextField.mm:
+        (-[KWQTextField becomeFirstResponder]): Cleaned up a bit.
+        (-[KWQTextField fieldWillBecomeFirstResponder]): Call the widget's event filter with a focus in event.
+        (-[KWQTextField fieldWillResignFirstResponder]): Call the widget's event filter with a focus out event.
+        * kwq/KWQView.mm:
+
 2003-01-20  David Hyatt  <hyatt at apple.com>
 
 	Fix for 3147213.  <nobr> is treated like other inlines now,
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index eedd7f0..7899cd0 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,31 @@
+2003-01-20  Maciej Stachowiak  <mjs at apple.com>
+
+        Reviewed by Trey.
+
+	- fixed 3132120 - onchange handler not firing on mac.com webmail
+
+        * khtml/rendering/render_form.h:
+        * khtml/rendering/render_replaced.cpp:
+        (RenderWidget::handleFocusOut): Moved empty virtual method here from render_form.
+        (RenderWidget::eventFilter): Uncomment call to handleFocusOut - we
+	need it to send onChange properly.
+	* khtml/rendering/render_replaced.h:
+        * kwq/KWQObject.h: Add empty eventFilter virtual method.
+        * kwq/KWQComboBox.h: Remove no longer needed empty eventFilter.
+        * kwq/KWQEvent.h: Implement a bit more of QFocusEvent.
+        * kwq/KWQTextArea.mm:
+        (-[KWQTextArea _createTextView]): Tell the text view its widget.
+        (-[KWQTextAreaTextView setWidget:]): New method to set widget.
+        (-[KWQTextAreaTextView becomeFirstResponder]): In addition to the usual stuff,
+	call the widget's event filter with a focus in event.
+        (-[KWQTextAreaTextView resignFirstResponder]): In addition to the usual stuff,
+	call the widget's event filter with a focus out event.
+        * kwq/KWQTextField.mm:
+        (-[KWQTextField becomeFirstResponder]): Cleaned up a bit.
+        (-[KWQTextField fieldWillBecomeFirstResponder]): Call the widget's event filter with a focus in event.
+        (-[KWQTextField fieldWillResignFirstResponder]): Call the widget's event filter with a focus out event.
+        * kwq/KWQView.mm:
+
 2003-01-20  David Hyatt  <hyatt at apple.com>
 
 	Fix for 3147213.  <nobr> is treated like other inlines now,
diff --git a/WebCore/WebCore.pbproj/project.pbxproj b/WebCore/WebCore.pbproj/project.pbxproj
index 6149695..ea6a62e 100644
--- a/WebCore/WebCore.pbproj/project.pbxproj
+++ b/WebCore/WebCore.pbproj/project.pbxproj
@@ -175,7 +175,6 @@
 </dict>
 </plist>
 ";
-			shouldUseHeadermap = 0;
 		};
 		0867D69DFE84028FC02AAC07 = {
 			buildActionMask = 2147483647;
@@ -484,6 +483,7 @@
 				931BFCD403D4AEE5008635CE,
 				931BFCD803D4AEFD008635CE,
 				93955A4303D72932008635CE,
+				6504A7BF03DCE19800000124,
 			);
 			isa = PBXHeadersBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -876,6 +876,21 @@
 //652
 //653
 //654
+		6504A7BE03DCE19800000124 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = WebCoreFirstResponderChanges.h;
+			refType = 4;
+		};
+		6504A7BF03DCE19800000124 = {
+			fileRef = 6504A7BE03DCE19800000124;
+			isa = PBXBuildFile;
+			settings = {
+				ATTRIBUTES = (
+					Private,
+				);
+			};
+		};
 		6573C63B03A0BE5700FCA39F = {
 			buildActionMask = 8;
 			files = (
@@ -6283,6 +6298,7 @@
 		F58785E902DE378A01EA4122 = {
 			children = (
 				F587854702DE375901EA4122,
+				6504A7BE03DCE19800000124,
 				F587854802DE375901EA4122,
 				F5B2A4FC02E2220F018635CB,
 				F5B2A4FD02E2220F018635CB,
diff --git a/WebCore/khtml/rendering/render_form.h b/WebCore/khtml/rendering/render_form.h
index ec0a48b..8728883 100644
--- a/WebCore/khtml/rendering/render_form.h
+++ b/WebCore/khtml/rendering/render_form.h
@@ -100,8 +100,6 @@ protected:
     virtual bool isRenderButton() const { return false; }
     virtual bool isEditable() const { return false; }
 
-    virtual void handleFocusOut() {};
-
     QPoint m_mousePos;
     int m_state;
     int m_button;
diff --git a/WebCore/khtml/rendering/render_replaced.cpp b/WebCore/khtml/rendering/render_replaced.cpp
index 85c9f4d..3a07307 100644
--- a/WebCore/khtml/rendering/render_replaced.cpp
+++ b/WebCore/khtml/rendering/render_replaced.cpp
@@ -291,6 +291,10 @@ void RenderWidget::paintObject(QPainter* /*p*/, int, int, int, int, int _tx, int
 #endif
 }
 
+void RenderWidget::handleFocusOut()
+{
+}
+
 bool RenderWidget::eventFilter(QObject* /*o*/, QEvent* e)
 {
     if ( !element() ) return true;
@@ -315,7 +319,7 @@ bool RenderWidget::eventFilter(QObject* /*o*/, QEvent* e)
 //                 KHTMLPartBrowserExtension *ext = static_cast<KHTMLPartBrowserExtension *>( element()->view->part()->browserExtension() );
 //                 if ( ext )  ext->editableWidgetBlurred( m_widget );
 //             }
-//             handleFocusOut();
+	    handleFocusOut();
         }
         break;
     case QEvent::FocusIn:
diff --git a/WebCore/khtml/rendering/render_replaced.h b/WebCore/khtml/rendering/render_replaced.h
index 51c85ed..1c876df 100644
--- a/WebCore/khtml/rendering/render_replaced.h
+++ b/WebCore/khtml/rendering/render_replaced.h
@@ -92,6 +92,7 @@ protected:
     bool eventFilter(QObject* /*o*/, QEvent* e);
     void setQWidget(QWidget *widget);
     void resizeWidget( QWidget *widget, int w, int h );
+    virtual void handleFocusOut();
 
     QWidget *m_widget;
     KHTMLView* m_view;
diff --git a/WebCore/kwq/KWQComboBox.h b/WebCore/kwq/KWQComboBox.h
index 03d3ae4..3dc21f6 100644
--- a/WebCore/kwq/KWQComboBox.h
+++ b/WebCore/kwq/KWQComboBox.h
@@ -54,8 +54,6 @@ public:
     void setFrameGeometry(const QRect &);
     int baselinePosition() const;
 
-    bool eventFilter(QObject *object, QEvent *event) { return false; }
-
     void activated() { _activated.call(currentItem()); }
 
 private:
diff --git a/WebCore/kwq/KWQEvent.h b/WebCore/kwq/KWQEvent.h
index 60d82d9..3a8c7d8 100644
--- a/WebCore/kwq/KWQEvent.h
+++ b/WebCore/kwq/KWQEvent.h
@@ -119,10 +119,11 @@ public:
     bool _isAccepted;
 };
 
-class QFocusEvent {
+class QFocusEvent : public QEvent {
 public:
     enum Reason { Popup, Other };
     static Reason reason() { return Other; }
+    QFocusEvent (Type type) : QEvent (type) {}
 };
 
 class QHideEvent;
diff --git a/WebCore/kwq/KWQObject.h b/WebCore/kwq/KWQObject.h
index ff4874d..0963207 100644
--- a/WebCore/kwq/KWQObject.h
+++ b/WebCore/kwq/KWQObject.h
@@ -88,6 +88,8 @@ public:
     void removeEventFilter(const QObject *) { _eventFilterObject = 0; }
     const QObject *eventFilterObject() const { return _eventFilterObject; }
 
+    virtual bool eventFilter(QObject *object, QEvent *event) { return false; }
+
     void blockSignals(bool b) { _signalsBlocked = b; }
 
     virtual bool event(QEvent *);
diff --git a/WebCore/kwq/KWQTextArea.mm b/WebCore/kwq/KWQTextArea.mm
index 7679516..d56db96 100644
--- a/WebCore/kwq/KWQTextArea.mm
+++ b/WebCore/kwq/KWQTextArea.mm
@@ -55,7 +55,9 @@
 
 @interface KWQTextAreaTextView : NSTextView
 {
+    QTextEdit *widget;
 }
+- (void)setWidget:(QTextEdit *)widget;
 @end
 
 @implementation KWQTextArea
@@ -81,7 +83,8 @@ const float LargeNumberForText = 1.0e7;
     textView = [[KWQTextAreaTextView alloc] initWithFrame:textFrame];
     [[textView textContainer] setWidthTracksTextView:YES];
     [textView setRichText:NO];
-    
+    [textView setWidget:widget];
+
     // Setup attributes for default cases WRAP=SOFT|VIRTUAL and WRAP=HARD|PHYSICAL.
     // If WRAP=OFF we reset many of these attributes.
     [style setLineBreakMode:NSLineBreakByWordWrapping];
@@ -473,6 +476,11 @@ static NSRange RangeOfParagraph(NSString *text, int paragraph)
 
 @implementation KWQTextAreaTextView
 
+- (void)setWidget:(QTextEdit *)w
+{
+    widget = w;
+}
+
 - (void)insertTab:(id)sender
 {
     NSView *view = [[self delegate] nextValidKeyView];
@@ -489,19 +497,32 @@ static NSRange RangeOfParagraph(NSString *text, int paragraph)
     }
 }
 
+
 - (BOOL)becomeFirstResponder
 {
-    [super becomeFirstResponder];
-    [self selectAll:nil];
-    [self _KWQ_setKeyboardFocusRingNeedsDisplay];
-    return YES;
+    BOOL become = [super becomeFirstResponder];
+
+    if (become) {
+	[self selectAll:nil];
+	[self _KWQ_setKeyboardFocusRingNeedsDisplay];
+	QFocusEvent event(QEvent::FocusIn);
+	(const_cast<QObject *>(widget->eventFilterObject()))->eventFilter(widget, &event);
+    }
+       
+    return become;
 }
 
 - (BOOL)resignFirstResponder
 {
-    [super resignFirstResponder];
-    [self _KWQ_setKeyboardFocusRingNeedsDisplay];
-    return YES;
+    BOOL resign = [super resignFirstResponder];
+
+    if (resign) {
+	[self _KWQ_setKeyboardFocusRingNeedsDisplay];
+	QFocusEvent event(QEvent::FocusOut);
+	(const_cast<QObject *>(widget->eventFilterObject()))->eventFilter(widget, &event);
+    }
+
+    return resign;
 }
 
 - (BOOL)shouldDrawInsertionPoint
diff --git a/WebCore/kwq/KWQTextField.mm b/WebCore/kwq/KWQTextField.mm
index 0e5764d..6566bd8 100644
--- a/WebCore/kwq/KWQTextField.mm
+++ b/WebCore/kwq/KWQTextField.mm
@@ -28,6 +28,7 @@
 #import "KWQLineEdit.h"
 #import "KWQKHTMLPart.h"
 #import "KWQNSViewExtras.h"
+#import "WebCoreFirstResponderChanges.h"
 
 // KWQTextFieldFormatter enforces a maximum length.
 
@@ -243,9 +244,26 @@
 
 - (BOOL)becomeFirstResponder
 {
-    KWQKHTMLPart::setDocumentFocus(widget);
-    [self _KWQ_scrollFrameToVisible];
-    return [super becomeFirstResponder];
+    BOOL become = [super becomeFirstResponder];
+
+    if (become) {
+	KWQKHTMLPart::setDocumentFocus(widget);
+	[self _KWQ_scrollFrameToVisible];
+    }
+       
+    return become;
+}
+
+- (void)fieldWillBecomeFirstResponder
+{
+    QFocusEvent event(QEvent::FocusIn);
+    (const_cast<QObject *>(widget->eventFilterObject()))->eventFilter(widget, &event);
+}
+
+- (void)fieldWillResignFirstResponder
+{
+    QFocusEvent event(QEvent::FocusOut);
+    (const_cast<QObject *>(widget->eventFilterObject()))->eventFilter(widget, &event);
 }
 
 - (void)display
diff --git a/WebCore/kwq/WebCoreHistory.h b/WebCore/kwq/WebCoreFirstResponderChanges.h
similarity index 79%
copy from WebCore/kwq/WebCoreHistory.h
copy to WebCore/kwq/WebCoreFirstResponderChanges.h
index d181e6c..62c7862 100644
--- a/WebCore/kwq/WebCoreHistory.h
+++ b/WebCore/kwq/WebCoreFirstResponderChanges.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2002 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2002, 2003 Apple Computer, Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -25,14 +25,10 @@
 
 #import <Foundation/Foundation.h>
 
- at interface WebCoreHistory : NSObject
-{
-}
-
-+ (void)setSharedHistory: (WebCoreHistory *)h;
-+ (WebCoreHistory *)sharedHistory;
-
-- (void)addEntryForURLString: (NSString *)urlString;
-- (BOOL)containsEntryForURLString: (NSString *)urlString;
+// The WebCore client must arrange to call these methods when a text
+// field's field editor becomes or resigns first responder.
 
+ at interface NSObject (WebCoreFirstResponderChanges)
+- (void)fieldEditorWillBecomeFirstResponder;
+- (void)fieldEditorWillResignFirstResponder;
 @end
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index ce39cd0..23bd78e 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,15 @@
+2003-01-20  Maciej Stachowiak  <mjs at apple.com>
+
+        Reviewed by Trey.
+
+	- fixed 3132120 - onchange handler not firing on mac.com webmail
+	
+        * WebView.subproj/WebHTMLViewPrivate.m:
+        (-[WebNSTextView resignFirstResponder]): If we really resign first responder, and
+	our delegate responds to filedWillBecomeFirstResponder, then call that method.
+        (-[WebNSTextView becomeFirstResponder]): If we really become first responder, and
+	our delegate responds to filedWillBecomeFirstResponder, then call that method.
+
 2003-01-20  Trey Matteson  <trey at apple.com>
 
 	Nit fix to remove a dead "cursor" ivar found while grepping.
diff --git a/WebKit/WebView.subproj/WebHTMLViewPrivate.m b/WebKit/WebView.subproj/WebHTMLViewPrivate.m
index 9f1de24..ba43e04 100644
--- a/WebKit/WebView.subproj/WebHTMLViewPrivate.m
+++ b/WebKit/WebView.subproj/WebHTMLViewPrivate.m
@@ -11,6 +11,8 @@
 #import <WebFoundation/WebAssertions.h>
 #import <WebFoundation/WebNSURLExtras.h>
 
+#import <WebCore/WebCoreFirstResponderChanges.h>
+
 #import <WebKit/WebBridge.h>
 #import <WebKit/WebContextMenuDelegate.h>
 #import <WebKit/WebController.h>
@@ -627,6 +629,40 @@ static BOOL inNSTextViewDrawRect;
     inNSTextViewDrawRect = NO;
 }
 
+- (BOOL)resignFirstResponder
+{
+    bool resign = [super resignFirstResponder];
+
+    if (![self _web_inHTMLView]) {
+	return resign;
+    }
+
+    NSView *possibleContainingField = [self delegate];
+
+    if (resign && [possibleContainingField respondsToSelector:@selector(fieldEditorWillResignFirstResponder)]) {
+	[possibleContainingField fieldEditorWillResignFirstResponder];
+    }
+
+    return resign;
+}
+
+- (BOOL)becomeFirstResponder
+{
+    bool become = [super becomeFirstResponder];
+
+    if (![self _web_inHTMLView]) {
+	return become;
+    }
+
+    NSView *possibleContainingField = [self delegate];
+
+    if (become && [possibleContainingField respondsToSelector:@selector(fieldEditorWillBecomeFirstResponder)]) {
+	[possibleContainingField fieldEditorWillBecomeFirstResponder];
+    }
+
+    return become;
+}
+
 @end
 
 @implementation WebNSView

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list