[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
rjw
rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:55:35 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit dd2eaaca8834c7381b94c073405ca580dd2aedc3
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Feb 13 02:16:38 2002 +0000
Made basic forms work.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@615 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 837c55b..93abb61 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,24 @@
+2002-02-12 Richard Williamson <rjw at apple.com>
+
+ Made basic forms work.
+
+ * src/kdelibs/khtml/rendering/render_form.cpp:
+ (RenderFormElement::performAction), (RenderLineEdit::RenderLineEdit),
+ (RenderLineEdit::performAction):
+ * src/kdelibs/khtml/rendering/render_form.h:
+ * src/kwq/KWQKHTMLPart.mm: (KHTMLPart::khtmlMouseReleaseEvent),
+ (KHTMLPart::submitForm):
+ * src/kwq/KWQLineEdit.mm: (QLineEdit::text):
+ * src/kwq/KWQNSTextField.mm: (-[KWQNSTextField initWithFrame:widget:]),
+ (-[KWQNSTextField action:]), (-[KWQNSTextField controlTextDidEndEditing:]),
+ (-[KWQNSTextField setMaximumLength:]), (-[KWQNSTextField maximumLength]):
+ * src/kwq/KWQObject.mm: (QObject::emitAction), (QObject::performAction):
+ * src/kwq/KWQWidget.mm: (QWidget::setView), (QWidget::endEditing):
+ * src/kwq/kwqdebug.mm: (KWQGetLogLevel):
+ * src/kwq/qt/qlineedit.h:
+ * src/kwq/qt/qobject.h:
+ * src/kwq/qt/qwidget.h:
+
2002-02-12 Maciej Stachowiak <mjs at apple.com>
Make some tweaks to glue together KDE's and CF's concepts of URLs
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 837c55b..93abb61 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,24 @@
+2002-02-12 Richard Williamson <rjw at apple.com>
+
+ Made basic forms work.
+
+ * src/kdelibs/khtml/rendering/render_form.cpp:
+ (RenderFormElement::performAction), (RenderLineEdit::RenderLineEdit),
+ (RenderLineEdit::performAction):
+ * src/kdelibs/khtml/rendering/render_form.h:
+ * src/kwq/KWQKHTMLPart.mm: (KHTMLPart::khtmlMouseReleaseEvent),
+ (KHTMLPart::submitForm):
+ * src/kwq/KWQLineEdit.mm: (QLineEdit::text):
+ * src/kwq/KWQNSTextField.mm: (-[KWQNSTextField initWithFrame:widget:]),
+ (-[KWQNSTextField action:]), (-[KWQNSTextField controlTextDidEndEditing:]),
+ (-[KWQNSTextField setMaximumLength:]), (-[KWQNSTextField maximumLength]):
+ * src/kwq/KWQObject.mm: (QObject::emitAction), (QObject::performAction):
+ * src/kwq/KWQWidget.mm: (QWidget::setView), (QWidget::endEditing):
+ * src/kwq/kwqdebug.mm: (KWQGetLogLevel):
+ * src/kwq/qt/qlineedit.h:
+ * src/kwq/qt/qobject.h:
+ * src/kwq/qt/qwidget.h:
+
2002-02-12 Maciej Stachowiak <mjs at apple.com>
Make some tweaks to glue together KDE's and CF's concepts of URLs
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 837c55b..93abb61 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,24 @@
+2002-02-12 Richard Williamson <rjw at apple.com>
+
+ Made basic forms work.
+
+ * src/kdelibs/khtml/rendering/render_form.cpp:
+ (RenderFormElement::performAction), (RenderLineEdit::RenderLineEdit),
+ (RenderLineEdit::performAction):
+ * src/kdelibs/khtml/rendering/render_form.h:
+ * src/kwq/KWQKHTMLPart.mm: (KHTMLPart::khtmlMouseReleaseEvent),
+ (KHTMLPart::submitForm):
+ * src/kwq/KWQLineEdit.mm: (QLineEdit::text):
+ * src/kwq/KWQNSTextField.mm: (-[KWQNSTextField initWithFrame:widget:]),
+ (-[KWQNSTextField action:]), (-[KWQNSTextField controlTextDidEndEditing:]),
+ (-[KWQNSTextField setMaximumLength:]), (-[KWQNSTextField maximumLength]):
+ * src/kwq/KWQObject.mm: (QObject::emitAction), (QObject::performAction):
+ * src/kwq/KWQWidget.mm: (QWidget::setView), (QWidget::endEditing):
+ * src/kwq/kwqdebug.mm: (KWQGetLogLevel):
+ * src/kwq/qt/qlineedit.h:
+ * src/kwq/qt/qobject.h:
+ * src/kwq/qt/qwidget.h:
+
2002-02-12 Maciej Stachowiak <mjs at apple.com>
Make some tweaks to glue together KDE's and CF's concepts of URLs
diff --git a/WebCore/khtml/rendering/render_form.cpp b/WebCore/khtml/rendering/render_form.cpp
index 5db6ed1..f62fe9d 100644
--- a/WebCore/khtml/rendering/render_form.cpp
+++ b/WebCore/khtml/rendering/render_form.cpp
@@ -260,7 +260,11 @@ bool RenderFormElement::eventFilter(QObject* /*o*/, QEvent* e)
void RenderFormElement::performAction(QObject::Actions action)
{
- fprintf (stdout, "RenderFormElement::performAction(): %d\n", action);
+ //fprintf (stdout, "RenderFormElement::performAction(): %d\n", action);
+
+ if (m_widget)
+ m_widget->endEditing();
+
if (action == QObject::ACTION_BUTTON_CLICKED)
slotClicked();
}
@@ -531,8 +535,11 @@ RenderLineEdit::RenderLineEdit(QScrollView *view, HTMLInputElementImpl *element)
{
LineEditWidget *edit = new LineEditWidget(view->viewport());
edit->installEventFilter(this);
+
+#ifdef _KWQ_
connect(edit,"SIGNAL(returnPressed())", this, "SLOT(slotReturnPressed())");
connect(edit,"SIGNAL(textChanged(const QString &))", this, "SLOT(slotTextChanged(const QString &))");
+#endif
if(element->inputType() == HTMLInputElementImpl::PASSWORD)
edit->setEchoMode( QLineEdit::Password );
@@ -546,9 +553,14 @@ RenderLineEdit::RenderLineEdit(QScrollView *view, HTMLInputElementImpl *element)
}
}
+#ifdef _KWQ_
setQWidget(edit);
+
+ edit->setTarget (this);
+#endif
}
+
void RenderLineEdit::slotReturnPressed()
{
// don't submit the form when return was pressed in a completion-popup
@@ -618,6 +630,19 @@ void RenderLineEdit::layout()
RenderFormElement::layout();
}
+#ifdef _KWQ_
+void RenderLineEdit::performAction(QObject::Actions action)
+{
+ KLineEdit *edit = static_cast<KLineEdit*>(m_widget);
+
+ //fprintf (stdout, "RenderLineEdit::performAction(): %d text value = %s\n", action, edit->text().latin1());
+ if (action == QObject::ACTION_TEXT_FIELD_END_EDITING)
+ slotTextChanged(edit->text());
+ else if (action == QObject::ACTION_TEXT_FIELD)
+ slotReturnPressed();
+}
+#endif
+
void RenderLineEdit::slotTextChanged(const QString &string)
{
// don't use setValue here!
diff --git a/WebCore/khtml/rendering/render_form.h b/WebCore/khtml/rendering/render_form.h
index 45aef16..669932f 100644
--- a/WebCore/khtml/rendering/render_form.h
+++ b/WebCore/khtml/rendering/render_form.h
@@ -84,7 +84,9 @@ public:
virtual bool eventFilter(QObject*, QEvent*);
+#ifdef _KWQ_
void performAction(QObject::Actions action);
+#endif
public slots:
virtual void slotClicked();
@@ -220,6 +222,10 @@ public:
virtual const char *renderName() const { return "RenderLineEdit"; }
void select();
+#ifdef _KWQ_
+ void performAction(QObject::Actions action);
+#endif
+
public slots:
void slotReturnPressed();
void slotTextChanged(const QString &string);
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index 8f6ca21..9c06b95 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -79,7 +79,7 @@
- (IFWebFrame *)frame;
- (id <IFWebController>)controller;
- (void)startLoading: (BOOL)forceRefresh;
-- (void)_startLoading: (BOOL)forceRefresh initiatedByMouseEvent: (BOOL)byMouseEvent;
+- (void)_startLoading: (BOOL)forceRefresh initiatedByUserEvent: (BOOL)byUserEvent;
- frameNamed: (NSString *)f;
- (void)_setParent: (IFWebDataSource *)p;
- (IFWebDataSource *)parent;
@@ -1314,7 +1314,7 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
controller = [dataSource controller];
if ([controller _changeLocationTo: url forFrame: frame parent: [[frame dataSource] parent]]){
- [[frame dataSource] _startLoading: YES initiatedByMouseEvent: YES];
+ [[frame dataSource] _startLoading: YES initiatedByUserEvent: YES];
}
/*
@@ -1544,10 +1544,104 @@ void KHTMLPart::emitUnloadEvent()
void KHTMLPart::submitForm( const char *action, const QString &url, const QByteArray &formData,
- const QString &target, const QString& contentType,
+ const QString &_target, const QString& contentType,
const QString& boundary )
{
- _logNeverImplemented();
+ QString target = _target;
+
+ //if ( target.isEmpty() )
+ // target = d->m_baseTarget;
+
+ KURL u = completeURL( url, target );
+
+ if ( !u.isValid() )
+ {
+ // ### ERROR HANDLING!
+ return;
+ }
+
+ QString urlstring = u.url();
+
+ if ( urlstring.find( QString::fromLatin1( "javascript:" ), 0, false ) == 0 ) {
+ urlstring = KURL::decode_string(urlstring);
+ executeScript( urlstring.right( urlstring.length() - 11) );
+ return;
+ }
+
+#ifdef NEED_THIS
+ if (!checkLinkSecurity(u,
+ i18n( "<qt>The form will be submitted to <BR><B>%1</B><BR>on your local filesystem.<BR>Do you want to submit the form?" ),
+ i18n( "Submit" )))
+ return;
+#endif
+
+#ifdef NEED_THIS
+ KParts::URLArgs args;
+
+ if (!d->m_referrer.isEmpty())
+ args.metaData()["referrer"] = d->m_referrer;
+
+ args.metaData().insert("main_frame_request",
+ parentPart() == 0 ? "TRUE":"FALSE");
+ args.metaData().insert("ssl_was_in_use", d->m_ssl_in_use ? "TRUE":"FALSE");
+ args.metaData().insert("ssl_activate_warnings", "TRUE");
+#endif
+
+ if ( strcmp( action, "get" ) == 0 )
+ {
+ u.setQuery( QString( formData.data(), formData.size() ) );
+
+#ifdef NEED_THIS
+ args.frameName = target;
+ args.setDoPost( false );
+#endif
+ }
+ else
+ {
+#ifdef NEED_THIS
+ args.postData = formData;
+ args.frameName = target;
+ args.setDoPost( true );
+
+ // construct some user headers if necessary
+ if (contentType.isNull() || contentType == "application/x-www-form-urlencoded")
+ args.setContentType( "Content-Type: application/x-www-form-urlencoded" );
+ else // contentType must be "multipart/form-data"
+ args.setContentType( "Content-Type: " + contentType + "; boundary=" + boundary );
+#endif
+ }
+
+#ifdef NEED_THIS
+ if ( d->m_bParsing || d->m_runningScripts > 0 ) {
+ if( d->m_submitForm ) {
+ return;
+ }
+ d->m_submitForm = new KHTMLPartPrivate::SubmitForm;
+ d->m_submitForm->submitAction = action;
+ d->m_submitForm->submitUrl = url;
+ d->m_submitForm->submitFormData = formData;
+ d->m_submitForm->target = _target;
+ d->m_submitForm->submitContentType = contentType;
+ d->m_submitForm->submitBoundary = boundary;
+ connect(this, SIGNAL(completed()), this, SLOT(submitFormAgain()));
+ }
+ else
+ emit d->m_extension->openURLRequest( u, args );
+#endif
+
+ NSString *urlString = [NSString stringWithCString:u.url().latin1()];
+ NSURL *qurl = [NSURL URLWithString: urlString];
+ IFWebFrame *frame;
+ id <IFWebController>controller;
+
+ dataSource = getDataSource();
+ frame = [dataSource frame];
+ controller = [dataSource controller];
+
+ if ([controller _changeLocationTo: qurl forFrame: frame parent: [[frame dataSource] parent]]){
+ [[frame dataSource] _startLoading: YES initiatedByUserEvent: YES];
+ }
+
}
void KHTMLPart::urlSelected( const QString &url, int button, int state, const QString &_target )
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.mm b/WebCore/kwq/KWQKHTMLPartImpl.mm
index 8f6ca21..9c06b95 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.mm
+++ b/WebCore/kwq/KWQKHTMLPartImpl.mm
@@ -79,7 +79,7 @@
- (IFWebFrame *)frame;
- (id <IFWebController>)controller;
- (void)startLoading: (BOOL)forceRefresh;
-- (void)_startLoading: (BOOL)forceRefresh initiatedByMouseEvent: (BOOL)byMouseEvent;
+- (void)_startLoading: (BOOL)forceRefresh initiatedByUserEvent: (BOOL)byUserEvent;
- frameNamed: (NSString *)f;
- (void)_setParent: (IFWebDataSource *)p;
- (IFWebDataSource *)parent;
@@ -1314,7 +1314,7 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
controller = [dataSource controller];
if ([controller _changeLocationTo: url forFrame: frame parent: [[frame dataSource] parent]]){
- [[frame dataSource] _startLoading: YES initiatedByMouseEvent: YES];
+ [[frame dataSource] _startLoading: YES initiatedByUserEvent: YES];
}
/*
@@ -1544,10 +1544,104 @@ void KHTMLPart::emitUnloadEvent()
void KHTMLPart::submitForm( const char *action, const QString &url, const QByteArray &formData,
- const QString &target, const QString& contentType,
+ const QString &_target, const QString& contentType,
const QString& boundary )
{
- _logNeverImplemented();
+ QString target = _target;
+
+ //if ( target.isEmpty() )
+ // target = d->m_baseTarget;
+
+ KURL u = completeURL( url, target );
+
+ if ( !u.isValid() )
+ {
+ // ### ERROR HANDLING!
+ return;
+ }
+
+ QString urlstring = u.url();
+
+ if ( urlstring.find( QString::fromLatin1( "javascript:" ), 0, false ) == 0 ) {
+ urlstring = KURL::decode_string(urlstring);
+ executeScript( urlstring.right( urlstring.length() - 11) );
+ return;
+ }
+
+#ifdef NEED_THIS
+ if (!checkLinkSecurity(u,
+ i18n( "<qt>The form will be submitted to <BR><B>%1</B><BR>on your local filesystem.<BR>Do you want to submit the form?" ),
+ i18n( "Submit" )))
+ return;
+#endif
+
+#ifdef NEED_THIS
+ KParts::URLArgs args;
+
+ if (!d->m_referrer.isEmpty())
+ args.metaData()["referrer"] = d->m_referrer;
+
+ args.metaData().insert("main_frame_request",
+ parentPart() == 0 ? "TRUE":"FALSE");
+ args.metaData().insert("ssl_was_in_use", d->m_ssl_in_use ? "TRUE":"FALSE");
+ args.metaData().insert("ssl_activate_warnings", "TRUE");
+#endif
+
+ if ( strcmp( action, "get" ) == 0 )
+ {
+ u.setQuery( QString( formData.data(), formData.size() ) );
+
+#ifdef NEED_THIS
+ args.frameName = target;
+ args.setDoPost( false );
+#endif
+ }
+ else
+ {
+#ifdef NEED_THIS
+ args.postData = formData;
+ args.frameName = target;
+ args.setDoPost( true );
+
+ // construct some user headers if necessary
+ if (contentType.isNull() || contentType == "application/x-www-form-urlencoded")
+ args.setContentType( "Content-Type: application/x-www-form-urlencoded" );
+ else // contentType must be "multipart/form-data"
+ args.setContentType( "Content-Type: " + contentType + "; boundary=" + boundary );
+#endif
+ }
+
+#ifdef NEED_THIS
+ if ( d->m_bParsing || d->m_runningScripts > 0 ) {
+ if( d->m_submitForm ) {
+ return;
+ }
+ d->m_submitForm = new KHTMLPartPrivate::SubmitForm;
+ d->m_submitForm->submitAction = action;
+ d->m_submitForm->submitUrl = url;
+ d->m_submitForm->submitFormData = formData;
+ d->m_submitForm->target = _target;
+ d->m_submitForm->submitContentType = contentType;
+ d->m_submitForm->submitBoundary = boundary;
+ connect(this, SIGNAL(completed()), this, SLOT(submitFormAgain()));
+ }
+ else
+ emit d->m_extension->openURLRequest( u, args );
+#endif
+
+ NSString *urlString = [NSString stringWithCString:u.url().latin1()];
+ NSURL *qurl = [NSURL URLWithString: urlString];
+ IFWebFrame *frame;
+ id <IFWebController>controller;
+
+ dataSource = getDataSource();
+ frame = [dataSource frame];
+ controller = [dataSource controller];
+
+ if ([controller _changeLocationTo: qurl forFrame: frame parent: [[frame dataSource] parent]]){
+ [[frame dataSource] _startLoading: YES initiatedByUserEvent: YES];
+ }
+
}
void KHTMLPart::urlSelected( const QString &url, int button, int state, const QString &_target )
diff --git a/WebCore/kwq/KWQLineEdit.h b/WebCore/kwq/KWQLineEdit.h
index 32dcf75..1a0a05a 100644
--- a/WebCore/kwq/KWQLineEdit.h
+++ b/WebCore/kwq/KWQLineEdit.h
@@ -58,6 +58,7 @@ public:
virtual void setEchoMode(EchoMode);
virtual void setCursorPosition(int);
virtual void setText(const QString &);
+ virtual QString text();
virtual void setMaxLength(int);
bool isReadOnly() const;
diff --git a/WebCore/kwq/KWQLineEdit.mm b/WebCore/kwq/KWQLineEdit.mm
index ed5b219..5338dc7 100644
--- a/WebCore/kwq/KWQLineEdit.mm
+++ b/WebCore/kwq/KWQLineEdit.mm
@@ -68,6 +68,14 @@ void QLineEdit::setText(const QString &s)
}
+QString QLineEdit::text()
+{
+ KWQNSTextField *textView = (KWQNSTextField *)getView();
+
+ return NSSTRING_TO_QSTRING ([textView stringValue]);
+}
+
+
void QLineEdit::setMaxLength(int len)
{
KWQNSTextField *field = (KWQNSTextField *)getView();
diff --git a/WebCore/kwq/KWQNSTextField.mm b/WebCore/kwq/KWQNSTextField.mm
index 0d736de..63b56aa 100644
--- a/WebCore/kwq/KWQNSTextField.mm
+++ b/WebCore/kwq/KWQNSTextField.mm
@@ -35,9 +35,25 @@
formatter = [[KWQNSTextFieldFormatter alloc] init];
[self setFormatter: formatter];
widget = w;
+
+ [self setTarget: self];
+ [self setAction: @selector(action:)];
+
+ [self setDelegate: self];
+
return self;
}
+- (void)action: sender
+{
+ widget->emitAction(QObject::ACTION_TEXT_FIELD);
+}
+
+- (void)controlTextDidEndEditing:(NSNotification *)aNotification
+{
+ widget->emitAction(QObject::ACTION_TEXT_FIELD_END_EDITING);
+}
+
- (void)dealloc
{
[formatter release];
@@ -102,9 +118,14 @@
- (void)setMaximumLength: (int)len
{
- [self setStringValue: @""];
- if (secureField != nil)
- [secureField setStringValue: @""];
+ NSString *oldValue, *truncatedValue;
+
+ oldValue = [self stringValue];
+ if ((int)[oldValue length] > len){
+ truncatedValue = [oldValue substringToIndex: len];
+ [self setStringValue: truncatedValue];
+ [secureField setStringValue: truncatedValue];
+ }
[formatter setMaximumLength: len];
}
@@ -115,7 +136,6 @@
}
-
@end
diff --git a/WebCore/kwq/KWQObject.h b/WebCore/kwq/KWQObject.h
index 4d4c1d6..3f9e051 100644
--- a/WebCore/kwq/KWQObject.h
+++ b/WebCore/kwq/KWQObject.h
@@ -71,9 +71,14 @@ class QVariant;
class QObject : public Qt {
public:
+
+#ifdef _KWQ_
enum Actions {
- ACTION_BUTTON_CLICKED = 1
+ ACTION_BUTTON_CLICKED = 1,
+ ACTION_TEXT_FIELD = 2, // corresponds to [NSTextField action]
+ ACTION_TEXT_FIELD_END_EDITING = 3 // corresponds to NSTextField's delegate textDidEndEditing:
};
+#endif
// typedefs ----------------------------------------------------------------
// enums -------------------------------------------------------------------
diff --git a/WebCore/kwq/KWQObject.mm b/WebCore/kwq/KWQObject.mm
index d056381..4dbe812 100644
--- a/WebCore/kwq/KWQObject.mm
+++ b/WebCore/kwq/KWQObject.mm
@@ -50,12 +50,14 @@ bool QObject::connect(const QObject *sender, const char *signal, const char *slo
void QObject::emitAction(QObject::Actions action)
{
- target->performAction (action);
+ if (target != nil)
+ target->performAction (action);
}
void QObject::performAction(QObject::Actions action)
{
+ KWQDEBUG1 ("action = %d\n", action);
}
diff --git a/WebCore/kwq/KWQTextField.mm b/WebCore/kwq/KWQTextField.mm
index 0d736de..63b56aa 100644
--- a/WebCore/kwq/KWQTextField.mm
+++ b/WebCore/kwq/KWQTextField.mm
@@ -35,9 +35,25 @@
formatter = [[KWQNSTextFieldFormatter alloc] init];
[self setFormatter: formatter];
widget = w;
+
+ [self setTarget: self];
+ [self setAction: @selector(action:)];
+
+ [self setDelegate: self];
+
return self;
}
+- (void)action: sender
+{
+ widget->emitAction(QObject::ACTION_TEXT_FIELD);
+}
+
+- (void)controlTextDidEndEditing:(NSNotification *)aNotification
+{
+ widget->emitAction(QObject::ACTION_TEXT_FIELD_END_EDITING);
+}
+
- (void)dealloc
{
[formatter release];
@@ -102,9 +118,14 @@
- (void)setMaximumLength: (int)len
{
- [self setStringValue: @""];
- if (secureField != nil)
- [secureField setStringValue: @""];
+ NSString *oldValue, *truncatedValue;
+
+ oldValue = [self stringValue];
+ if ((int)[oldValue length] > len){
+ truncatedValue = [oldValue substringToIndex: len];
+ [self setStringValue: truncatedValue];
+ [secureField setStringValue: truncatedValue];
+ }
[formatter setMaximumLength: len];
}
@@ -115,7 +136,6 @@
}
-
@end
diff --git a/WebCore/kwq/KWQWidget.h b/WebCore/kwq/KWQWidget.h
index 0b883fe..d589859 100644
--- a/WebCore/kwq/KWQWidget.h
+++ b/WebCore/kwq/KWQWidget.h
@@ -158,9 +158,11 @@ public:
#if (defined(__APPLE__) && defined(__OBJC__) && defined(__cplusplus))
NSView *getView() const;
void setView(NSView *aView);
+ void endEditing();
#else
void *getView() const;
void setView(void *aView);
+ void endEditing();
#endif
#endif _KWQ_
diff --git a/WebCore/kwq/KWQWidget.mm b/WebCore/kwq/KWQWidget.mm
index 9e9bc21..92ac452 100644
--- a/WebCore/kwq/KWQWidget.mm
+++ b/WebCore/kwq/KWQWidget.mm
@@ -487,7 +487,6 @@ void QWidget::paint (void *)
_logNotYetImplemented();
}
-#if (defined(__APPLE__) && defined(__OBJC__) && defined(__cplusplus))
NSView *QWidget::getView() const
{
return data->view;
@@ -502,21 +501,11 @@ void QWidget::setView(NSView *view)
NSRect frame = [data->view frame];
}
-#else
-void *QWidget::getView() const
-{
- return data->view;
-}
-void QWidget::setView(void *view)
+void QWidget::endEditing()
{
- if (data->view)
- [data->view release];
- data->view = [view retain];
-
- NSRect frame = [data->view frame];
+ [[getView() window] endEditingFor: nil];
}
-#endif
#endif _KWQ_
diff --git a/WebCore/kwq/kwqdebug.mm b/WebCore/kwq/kwqdebug.mm
index 5434462..70691c2 100644
--- a/WebCore/kwq/kwqdebug.mm
+++ b/WebCore/kwq/kwqdebug.mm
@@ -31,17 +31,17 @@ void KWQSetLogLevel(int mask) {
KWQ_LOG_LEVEL = mask;
}
-bool checkedDefault = 0;
+bool kwq_checkedDefault = 0;
unsigned int KWQGetLogLevel(){
- if (!checkedDefault){
+ if (!kwq_checkedDefault){
NSString *logLevelString = [[NSUserDefaults standardUserDefaults] objectForKey:@"WebKitLogLevel"];
if (logLevelString != nil){
if (![[NSScanner scannerWithString: logLevelString] scanHexInt: &KWQ_LOG_LEVEL]){
NSLog (@"Unable to scan hex value for WebKitLogLevel, default to value of %d", KWQ_LOG_LEVEL);
}
}
- checkedDefault = 1;
+ kwq_checkedDefault = 1;
}
return KWQ_LOG_LEVEL;
}
diff --git a/WebCore/kwq/qt/qlineedit.h b/WebCore/kwq/qt/qlineedit.h
index 32dcf75..1a0a05a 100644
--- a/WebCore/kwq/qt/qlineedit.h
+++ b/WebCore/kwq/qt/qlineedit.h
@@ -58,6 +58,7 @@ public:
virtual void setEchoMode(EchoMode);
virtual void setCursorPosition(int);
virtual void setText(const QString &);
+ virtual QString text();
virtual void setMaxLength(int);
bool isReadOnly() const;
diff --git a/WebCore/kwq/qt/qobject.h b/WebCore/kwq/qt/qobject.h
index 4d4c1d6..3f9e051 100644
--- a/WebCore/kwq/qt/qobject.h
+++ b/WebCore/kwq/qt/qobject.h
@@ -71,9 +71,14 @@ class QVariant;
class QObject : public Qt {
public:
+
+#ifdef _KWQ_
enum Actions {
- ACTION_BUTTON_CLICKED = 1
+ ACTION_BUTTON_CLICKED = 1,
+ ACTION_TEXT_FIELD = 2, // corresponds to [NSTextField action]
+ ACTION_TEXT_FIELD_END_EDITING = 3 // corresponds to NSTextField's delegate textDidEndEditing:
};
+#endif
// typedefs ----------------------------------------------------------------
// enums -------------------------------------------------------------------
diff --git a/WebCore/kwq/qt/qwidget.h b/WebCore/kwq/qt/qwidget.h
index 0b883fe..d589859 100644
--- a/WebCore/kwq/qt/qwidget.h
+++ b/WebCore/kwq/qt/qwidget.h
@@ -158,9 +158,11 @@ public:
#if (defined(__APPLE__) && defined(__OBJC__) && defined(__cplusplus))
NSView *getView() const;
void setView(NSView *aView);
+ void endEditing();
#else
void *getView() const;
void setView(void *aView);
+ void endEditing();
#endif
#endif _KWQ_
diff --git a/WebCore/src/kdelibs/khtml/rendering/render_form.cpp b/WebCore/src/kdelibs/khtml/rendering/render_form.cpp
index 5db6ed1..f62fe9d 100644
--- a/WebCore/src/kdelibs/khtml/rendering/render_form.cpp
+++ b/WebCore/src/kdelibs/khtml/rendering/render_form.cpp
@@ -260,7 +260,11 @@ bool RenderFormElement::eventFilter(QObject* /*o*/, QEvent* e)
void RenderFormElement::performAction(QObject::Actions action)
{
- fprintf (stdout, "RenderFormElement::performAction(): %d\n", action);
+ //fprintf (stdout, "RenderFormElement::performAction(): %d\n", action);
+
+ if (m_widget)
+ m_widget->endEditing();
+
if (action == QObject::ACTION_BUTTON_CLICKED)
slotClicked();
}
@@ -531,8 +535,11 @@ RenderLineEdit::RenderLineEdit(QScrollView *view, HTMLInputElementImpl *element)
{
LineEditWidget *edit = new LineEditWidget(view->viewport());
edit->installEventFilter(this);
+
+#ifdef _KWQ_
connect(edit,"SIGNAL(returnPressed())", this, "SLOT(slotReturnPressed())");
connect(edit,"SIGNAL(textChanged(const QString &))", this, "SLOT(slotTextChanged(const QString &))");
+#endif
if(element->inputType() == HTMLInputElementImpl::PASSWORD)
edit->setEchoMode( QLineEdit::Password );
@@ -546,9 +553,14 @@ RenderLineEdit::RenderLineEdit(QScrollView *view, HTMLInputElementImpl *element)
}
}
+#ifdef _KWQ_
setQWidget(edit);
+
+ edit->setTarget (this);
+#endif
}
+
void RenderLineEdit::slotReturnPressed()
{
// don't submit the form when return was pressed in a completion-popup
@@ -618,6 +630,19 @@ void RenderLineEdit::layout()
RenderFormElement::layout();
}
+#ifdef _KWQ_
+void RenderLineEdit::performAction(QObject::Actions action)
+{
+ KLineEdit *edit = static_cast<KLineEdit*>(m_widget);
+
+ //fprintf (stdout, "RenderLineEdit::performAction(): %d text value = %s\n", action, edit->text().latin1());
+ if (action == QObject::ACTION_TEXT_FIELD_END_EDITING)
+ slotTextChanged(edit->text());
+ else if (action == QObject::ACTION_TEXT_FIELD)
+ slotReturnPressed();
+}
+#endif
+
void RenderLineEdit::slotTextChanged(const QString &string)
{
// don't use setValue here!
diff --git a/WebCore/src/kdelibs/khtml/rendering/render_form.h b/WebCore/src/kdelibs/khtml/rendering/render_form.h
index 45aef16..669932f 100644
--- a/WebCore/src/kdelibs/khtml/rendering/render_form.h
+++ b/WebCore/src/kdelibs/khtml/rendering/render_form.h
@@ -84,7 +84,9 @@ public:
virtual bool eventFilter(QObject*, QEvent*);
+#ifdef _KWQ_
void performAction(QObject::Actions action);
+#endif
public slots:
virtual void slotClicked();
@@ -220,6 +222,10 @@ public:
virtual const char *renderName() const { return "RenderLineEdit"; }
void select();
+#ifdef _KWQ_
+ void performAction(QObject::Actions action);
+#endif
+
public slots:
void slotReturnPressed();
void slotTextChanged(const QString &string);
diff --git a/WebCore/src/kwq/KWQKHTMLPart.mm b/WebCore/src/kwq/KWQKHTMLPart.mm
index 8f6ca21..9c06b95 100644
--- a/WebCore/src/kwq/KWQKHTMLPart.mm
+++ b/WebCore/src/kwq/KWQKHTMLPart.mm
@@ -79,7 +79,7 @@
- (IFWebFrame *)frame;
- (id <IFWebController>)controller;
- (void)startLoading: (BOOL)forceRefresh;
-- (void)_startLoading: (BOOL)forceRefresh initiatedByMouseEvent: (BOOL)byMouseEvent;
+- (void)_startLoading: (BOOL)forceRefresh initiatedByUserEvent: (BOOL)byUserEvent;
- frameNamed: (NSString *)f;
- (void)_setParent: (IFWebDataSource *)p;
- (IFWebDataSource *)parent;
@@ -1314,7 +1314,7 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
controller = [dataSource controller];
if ([controller _changeLocationTo: url forFrame: frame parent: [[frame dataSource] parent]]){
- [[frame dataSource] _startLoading: YES initiatedByMouseEvent: YES];
+ [[frame dataSource] _startLoading: YES initiatedByUserEvent: YES];
}
/*
@@ -1544,10 +1544,104 @@ void KHTMLPart::emitUnloadEvent()
void KHTMLPart::submitForm( const char *action, const QString &url, const QByteArray &formData,
- const QString &target, const QString& contentType,
+ const QString &_target, const QString& contentType,
const QString& boundary )
{
- _logNeverImplemented();
+ QString target = _target;
+
+ //if ( target.isEmpty() )
+ // target = d->m_baseTarget;
+
+ KURL u = completeURL( url, target );
+
+ if ( !u.isValid() )
+ {
+ // ### ERROR HANDLING!
+ return;
+ }
+
+ QString urlstring = u.url();
+
+ if ( urlstring.find( QString::fromLatin1( "javascript:" ), 0, false ) == 0 ) {
+ urlstring = KURL::decode_string(urlstring);
+ executeScript( urlstring.right( urlstring.length() - 11) );
+ return;
+ }
+
+#ifdef NEED_THIS
+ if (!checkLinkSecurity(u,
+ i18n( "<qt>The form will be submitted to <BR><B>%1</B><BR>on your local filesystem.<BR>Do you want to submit the form?" ),
+ i18n( "Submit" )))
+ return;
+#endif
+
+#ifdef NEED_THIS
+ KParts::URLArgs args;
+
+ if (!d->m_referrer.isEmpty())
+ args.metaData()["referrer"] = d->m_referrer;
+
+ args.metaData().insert("main_frame_request",
+ parentPart() == 0 ? "TRUE":"FALSE");
+ args.metaData().insert("ssl_was_in_use", d->m_ssl_in_use ? "TRUE":"FALSE");
+ args.metaData().insert("ssl_activate_warnings", "TRUE");
+#endif
+
+ if ( strcmp( action, "get" ) == 0 )
+ {
+ u.setQuery( QString( formData.data(), formData.size() ) );
+
+#ifdef NEED_THIS
+ args.frameName = target;
+ args.setDoPost( false );
+#endif
+ }
+ else
+ {
+#ifdef NEED_THIS
+ args.postData = formData;
+ args.frameName = target;
+ args.setDoPost( true );
+
+ // construct some user headers if necessary
+ if (contentType.isNull() || contentType == "application/x-www-form-urlencoded")
+ args.setContentType( "Content-Type: application/x-www-form-urlencoded" );
+ else // contentType must be "multipart/form-data"
+ args.setContentType( "Content-Type: " + contentType + "; boundary=" + boundary );
+#endif
+ }
+
+#ifdef NEED_THIS
+ if ( d->m_bParsing || d->m_runningScripts > 0 ) {
+ if( d->m_submitForm ) {
+ return;
+ }
+ d->m_submitForm = new KHTMLPartPrivate::SubmitForm;
+ d->m_submitForm->submitAction = action;
+ d->m_submitForm->submitUrl = url;
+ d->m_submitForm->submitFormData = formData;
+ d->m_submitForm->target = _target;
+ d->m_submitForm->submitContentType = contentType;
+ d->m_submitForm->submitBoundary = boundary;
+ connect(this, SIGNAL(completed()), this, SLOT(submitFormAgain()));
+ }
+ else
+ emit d->m_extension->openURLRequest( u, args );
+#endif
+
+ NSString *urlString = [NSString stringWithCString:u.url().latin1()];
+ NSURL *qurl = [NSURL URLWithString: urlString];
+ IFWebFrame *frame;
+ id <IFWebController>controller;
+
+ dataSource = getDataSource();
+ frame = [dataSource frame];
+ controller = [dataSource controller];
+
+ if ([controller _changeLocationTo: qurl forFrame: frame parent: [[frame dataSource] parent]]){
+ [[frame dataSource] _startLoading: YES initiatedByUserEvent: YES];
+ }
+
}
void KHTMLPart::urlSelected( const QString &url, int button, int state, const QString &_target )
diff --git a/WebCore/src/kwq/KWQLineEdit.mm b/WebCore/src/kwq/KWQLineEdit.mm
index ed5b219..5338dc7 100644
--- a/WebCore/src/kwq/KWQLineEdit.mm
+++ b/WebCore/src/kwq/KWQLineEdit.mm
@@ -68,6 +68,14 @@ void QLineEdit::setText(const QString &s)
}
+QString QLineEdit::text()
+{
+ KWQNSTextField *textView = (KWQNSTextField *)getView();
+
+ return NSSTRING_TO_QSTRING ([textView stringValue]);
+}
+
+
void QLineEdit::setMaxLength(int len)
{
KWQNSTextField *field = (KWQNSTextField *)getView();
diff --git a/WebCore/src/kwq/KWQNSTextField.mm b/WebCore/src/kwq/KWQNSTextField.mm
index 0d736de..63b56aa 100644
--- a/WebCore/src/kwq/KWQNSTextField.mm
+++ b/WebCore/src/kwq/KWQNSTextField.mm
@@ -35,9 +35,25 @@
formatter = [[KWQNSTextFieldFormatter alloc] init];
[self setFormatter: formatter];
widget = w;
+
+ [self setTarget: self];
+ [self setAction: @selector(action:)];
+
+ [self setDelegate: self];
+
return self;
}
+- (void)action: sender
+{
+ widget->emitAction(QObject::ACTION_TEXT_FIELD);
+}
+
+- (void)controlTextDidEndEditing:(NSNotification *)aNotification
+{
+ widget->emitAction(QObject::ACTION_TEXT_FIELD_END_EDITING);
+}
+
- (void)dealloc
{
[formatter release];
@@ -102,9 +118,14 @@
- (void)setMaximumLength: (int)len
{
- [self setStringValue: @""];
- if (secureField != nil)
- [secureField setStringValue: @""];
+ NSString *oldValue, *truncatedValue;
+
+ oldValue = [self stringValue];
+ if ((int)[oldValue length] > len){
+ truncatedValue = [oldValue substringToIndex: len];
+ [self setStringValue: truncatedValue];
+ [secureField setStringValue: truncatedValue];
+ }
[formatter setMaximumLength: len];
}
@@ -115,7 +136,6 @@
}
-
@end
diff --git a/WebCore/src/kwq/KWQObject.mm b/WebCore/src/kwq/KWQObject.mm
index d056381..4dbe812 100644
--- a/WebCore/src/kwq/KWQObject.mm
+++ b/WebCore/src/kwq/KWQObject.mm
@@ -50,12 +50,14 @@ bool QObject::connect(const QObject *sender, const char *signal, const char *slo
void QObject::emitAction(QObject::Actions action)
{
- target->performAction (action);
+ if (target != nil)
+ target->performAction (action);
}
void QObject::performAction(QObject::Actions action)
{
+ KWQDEBUG1 ("action = %d\n", action);
}
diff --git a/WebCore/src/kwq/KWQWidget.mm b/WebCore/src/kwq/KWQWidget.mm
index 9e9bc21..92ac452 100644
--- a/WebCore/src/kwq/KWQWidget.mm
+++ b/WebCore/src/kwq/KWQWidget.mm
@@ -487,7 +487,6 @@ void QWidget::paint (void *)
_logNotYetImplemented();
}
-#if (defined(__APPLE__) && defined(__OBJC__) && defined(__cplusplus))
NSView *QWidget::getView() const
{
return data->view;
@@ -502,21 +501,11 @@ void QWidget::setView(NSView *view)
NSRect frame = [data->view frame];
}
-#else
-void *QWidget::getView() const
-{
- return data->view;
-}
-void QWidget::setView(void *view)
+void QWidget::endEditing()
{
- if (data->view)
- [data->view release];
- data->view = [view retain];
-
- NSRect frame = [data->view frame];
+ [[getView() window] endEditingFor: nil];
}
-#endif
#endif _KWQ_
diff --git a/WebCore/src/kwq/kwqdebug.mm b/WebCore/src/kwq/kwqdebug.mm
index 5434462..70691c2 100644
--- a/WebCore/src/kwq/kwqdebug.mm
+++ b/WebCore/src/kwq/kwqdebug.mm
@@ -31,17 +31,17 @@ void KWQSetLogLevel(int mask) {
KWQ_LOG_LEVEL = mask;
}
-bool checkedDefault = 0;
+bool kwq_checkedDefault = 0;
unsigned int KWQGetLogLevel(){
- if (!checkedDefault){
+ if (!kwq_checkedDefault){
NSString *logLevelString = [[NSUserDefaults standardUserDefaults] objectForKey:@"WebKitLogLevel"];
if (logLevelString != nil){
if (![[NSScanner scannerWithString: logLevelString] scanHexInt: &KWQ_LOG_LEVEL]){
NSLog (@"Unable to scan hex value for WebKitLogLevel, default to value of %d", KWQ_LOG_LEVEL);
}
}
- checkedDefault = 1;
+ kwq_checkedDefault = 1;
}
return KWQ_LOG_LEVEL;
}
diff --git a/WebCore/src/kwq/qt/qlineedit.h b/WebCore/src/kwq/qt/qlineedit.h
index 32dcf75..1a0a05a 100644
--- a/WebCore/src/kwq/qt/qlineedit.h
+++ b/WebCore/src/kwq/qt/qlineedit.h
@@ -58,6 +58,7 @@ public:
virtual void setEchoMode(EchoMode);
virtual void setCursorPosition(int);
virtual void setText(const QString &);
+ virtual QString text();
virtual void setMaxLength(int);
bool isReadOnly() const;
diff --git a/WebCore/src/kwq/qt/qobject.h b/WebCore/src/kwq/qt/qobject.h
index 4d4c1d6..3f9e051 100644
--- a/WebCore/src/kwq/qt/qobject.h
+++ b/WebCore/src/kwq/qt/qobject.h
@@ -71,9 +71,14 @@ class QVariant;
class QObject : public Qt {
public:
+
+#ifdef _KWQ_
enum Actions {
- ACTION_BUTTON_CLICKED = 1
+ ACTION_BUTTON_CLICKED = 1,
+ ACTION_TEXT_FIELD = 2, // corresponds to [NSTextField action]
+ ACTION_TEXT_FIELD_END_EDITING = 3 // corresponds to NSTextField's delegate textDidEndEditing:
};
+#endif
// typedefs ----------------------------------------------------------------
// enums -------------------------------------------------------------------
diff --git a/WebCore/src/kwq/qt/qwidget.h b/WebCore/src/kwq/qt/qwidget.h
index 0b883fe..d589859 100644
--- a/WebCore/src/kwq/qt/qwidget.h
+++ b/WebCore/src/kwq/qt/qwidget.h
@@ -158,9 +158,11 @@ public:
#if (defined(__APPLE__) && defined(__OBJC__) && defined(__cplusplus))
NSView *getView() const;
void setView(NSView *aView);
+ void endEditing();
#else
void *getView() const;
void setView(void *aView);
+ void endEditing();
#endif
#endif _KWQ_
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list