[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 06:49:05 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 55202b774b892d3f7dc625ef89fbc3e91812e290
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Sat Oct 12 05:49:13 2002 +0000
More implementation of snippet viewer to show converted
attributed string.
* Debug/Snippet.nib:
* Debug/SnippetController.h:
* Debug/SnippetController.m:
(-[SnippetController dealloc]):
(-[SnippetController awakeFromNib]):
(-[SnippetController load]):
(lastNode):
(-[SnippetController loadComplete]):
(-[SnippetController convert:]):
(-[SnippetController show:]):
(-[SnippetController mainDataSource]):
(-[SnippetLocationChangeDelegate initWithController:]):
(-[SnippetLocationChangeDelegate locationChangeDone:forDataSource:]):
(-[AttributedStringView dealloc]):
(-[AttributedStringView setAttributedString:]):
(-[AttributedStringView drawRect:]):
More DOM/attributed string work.
* WebView.subproj/WebHTMLRepresentation.h:
* WebView.subproj/WebHTMLRepresentation.m:
(-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]):
* WebView.subproj/WebHTMLRepresentationPrivate.h:
More DOM/attributed string work. Still need to fix more
inappropriate casting problems.
* khtml/dom/dom_node.cpp:
(Node::lastChild):
* khtml/xml/dom_nodeimpl.cpp:
(NodeImpl::lastChild):
(NodeBaseImpl::lastChild):
* khtml/xml/dom_nodeimpl.h:
* kwq/KWQKHTMLPartImpl.cpp:
(KWQKHTMLPartImpl::selectionStartOffset):
(KWQKHTMLPartImpl::selectionEndOffset):
(KWQKHTMLPartImpl::selectionStart):
(KWQKHTMLPartImpl::selectionEnd):
* kwq/KWQKHTMLPartImpl.h:
* kwq/WebCoreBridge.h:
* kwq/WebCoreBridge.mm:
(-[WebCoreBridge DOMDocument]):
(-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
(attributedString):
(-[WebCoreBridge selectedAttributedString]):
(-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]):
* kwq/WebCoreDOMDocument.mm:
(-[WebCoreDOMDocumentType DOM::]):
(-[WebCoreDOMDocumentType name]):
(-[WebCoreDOMDocumentType entities]):
(-[WebCoreDOMDocumentType notations]):
(-[WebCoreDOMDocumentType publicId]):
(-[WebCoreDOMDocumentType systemId]):
(-[WebCoreDOMDocumentType internalSubset]):
(-[WebCoreDOMImplementation DOM::]):
(-[WebCoreDOMImplementation hasFeature::]):
(-[WebCoreDOMImplementation createDocument:::]):
(+[WebCoreDOMDocument documentWithImpl:DOM::]):
(-[WebCoreDOMDocument DOM::]):
(-[WebCoreDOMDocument doctype]):
(-[WebCoreDOMDocument implementation]):
(-[WebCoreDOMDocument documentElement]):
(-[WebCoreDOMDocument createElement:]):
(-[WebCoreDOMDocument createElementNS::]):
(-[WebCoreDOMDocument createDocumentFragment]):
(-[WebCoreDOMDocument createTextNode:]):
(-[WebCoreDOMDocument createComment:]):
(-[WebCoreDOMDocument createCDATASection:]):
(-[WebCoreDOMDocument createProcessingInstruction::]):
(-[WebCoreDOMDocument createAttribute:]):
(-[WebCoreDOMDocument createAttributeNS::]):
(-[WebCoreDOMDocument createEntityReference:]):
(-[WebCoreDOMDocument getElementById:]):
(-[WebCoreDOMDocument getElementsByTagName:]):
(-[WebCoreDOMDocument getElementsByTagNameNS::]):
(-[WebCoreDOMDocument importNode::]):
* kwq/WebCoreDOMNode.mm:
(-[WebCoreDOMNode initWithImpl:DOM::]):
(-[WebCoreDOMNode firstChild]):
(-[WebCoreDOMNode lastChild]):
* kwq/WebCoreDOMPrivate.h:
* kwq/WebCoreBridge.mm:
(-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
(recursive_toHTML):
(attributedString):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2310 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 193102d..371c459 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,67 @@
+2002-10-11 Richard Williamson <rjw at apple.com>
+
+ More DOM/attributed string work. Still need to fix more
+ inappropriate casting problems.
+
+ * khtml/dom/dom_node.cpp:
+ (Node::lastChild):
+ * khtml/xml/dom_nodeimpl.cpp:
+ (NodeImpl::lastChild):
+ (NodeBaseImpl::lastChild):
+ * khtml/xml/dom_nodeimpl.h:
+ * kwq/KWQKHTMLPartImpl.cpp:
+ (KWQKHTMLPartImpl::selectionStartOffset):
+ (KWQKHTMLPartImpl::selectionEndOffset):
+ (KWQKHTMLPartImpl::selectionStart):
+ (KWQKHTMLPartImpl::selectionEnd):
+ * kwq/KWQKHTMLPartImpl.h:
+ * kwq/WebCoreBridge.h:
+ * kwq/WebCoreBridge.mm:
+ (-[WebCoreBridge DOMDocument]):
+ (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+ (attributedString):
+ (-[WebCoreBridge selectedAttributedString]):
+ (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]):
+ * kwq/WebCoreDOMDocument.mm:
+ (-[WebCoreDOMDocumentType DOM::]):
+ (-[WebCoreDOMDocumentType name]):
+ (-[WebCoreDOMDocumentType entities]):
+ (-[WebCoreDOMDocumentType notations]):
+ (-[WebCoreDOMDocumentType publicId]):
+ (-[WebCoreDOMDocumentType systemId]):
+ (-[WebCoreDOMDocumentType internalSubset]):
+ (-[WebCoreDOMImplementation DOM::]):
+ (-[WebCoreDOMImplementation hasFeature::]):
+ (-[WebCoreDOMImplementation createDocument:::]):
+ (+[WebCoreDOMDocument documentWithImpl:DOM::]):
+ (-[WebCoreDOMDocument DOM::]):
+ (-[WebCoreDOMDocument doctype]):
+ (-[WebCoreDOMDocument implementation]):
+ (-[WebCoreDOMDocument documentElement]):
+ (-[WebCoreDOMDocument createElement:]):
+ (-[WebCoreDOMDocument createElementNS::]):
+ (-[WebCoreDOMDocument createDocumentFragment]):
+ (-[WebCoreDOMDocument createTextNode:]):
+ (-[WebCoreDOMDocument createComment:]):
+ (-[WebCoreDOMDocument createCDATASection:]):
+ (-[WebCoreDOMDocument createProcessingInstruction::]):
+ (-[WebCoreDOMDocument createAttribute:]):
+ (-[WebCoreDOMDocument createAttributeNS::]):
+ (-[WebCoreDOMDocument createEntityReference:]):
+ (-[WebCoreDOMDocument getElementById:]):
+ (-[WebCoreDOMDocument getElementsByTagName:]):
+ (-[WebCoreDOMDocument getElementsByTagNameNS::]):
+ (-[WebCoreDOMDocument importNode::]):
+ * kwq/WebCoreDOMNode.mm:
+ (-[WebCoreDOMNode initWithImpl:DOM::]):
+ (-[WebCoreDOMNode firstChild]):
+ (-[WebCoreDOMNode lastChild]):
+ * kwq/WebCoreDOMPrivate.h:
+ * kwq/WebCoreBridge.mm:
+ (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+ (recursive_toHTML):
+ (attributedString):
+
2002-10-11 David Hyatt <hyatt at apple.com>
Fix for 3058829, assertion caused by table cell with
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 193102d..371c459 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,67 @@
+2002-10-11 Richard Williamson <rjw at apple.com>
+
+ More DOM/attributed string work. Still need to fix more
+ inappropriate casting problems.
+
+ * khtml/dom/dom_node.cpp:
+ (Node::lastChild):
+ * khtml/xml/dom_nodeimpl.cpp:
+ (NodeImpl::lastChild):
+ (NodeBaseImpl::lastChild):
+ * khtml/xml/dom_nodeimpl.h:
+ * kwq/KWQKHTMLPartImpl.cpp:
+ (KWQKHTMLPartImpl::selectionStartOffset):
+ (KWQKHTMLPartImpl::selectionEndOffset):
+ (KWQKHTMLPartImpl::selectionStart):
+ (KWQKHTMLPartImpl::selectionEnd):
+ * kwq/KWQKHTMLPartImpl.h:
+ * kwq/WebCoreBridge.h:
+ * kwq/WebCoreBridge.mm:
+ (-[WebCoreBridge DOMDocument]):
+ (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+ (attributedString):
+ (-[WebCoreBridge selectedAttributedString]):
+ (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]):
+ * kwq/WebCoreDOMDocument.mm:
+ (-[WebCoreDOMDocumentType DOM::]):
+ (-[WebCoreDOMDocumentType name]):
+ (-[WebCoreDOMDocumentType entities]):
+ (-[WebCoreDOMDocumentType notations]):
+ (-[WebCoreDOMDocumentType publicId]):
+ (-[WebCoreDOMDocumentType systemId]):
+ (-[WebCoreDOMDocumentType internalSubset]):
+ (-[WebCoreDOMImplementation DOM::]):
+ (-[WebCoreDOMImplementation hasFeature::]):
+ (-[WebCoreDOMImplementation createDocument:::]):
+ (+[WebCoreDOMDocument documentWithImpl:DOM::]):
+ (-[WebCoreDOMDocument DOM::]):
+ (-[WebCoreDOMDocument doctype]):
+ (-[WebCoreDOMDocument implementation]):
+ (-[WebCoreDOMDocument documentElement]):
+ (-[WebCoreDOMDocument createElement:]):
+ (-[WebCoreDOMDocument createElementNS::]):
+ (-[WebCoreDOMDocument createDocumentFragment]):
+ (-[WebCoreDOMDocument createTextNode:]):
+ (-[WebCoreDOMDocument createComment:]):
+ (-[WebCoreDOMDocument createCDATASection:]):
+ (-[WebCoreDOMDocument createProcessingInstruction::]):
+ (-[WebCoreDOMDocument createAttribute:]):
+ (-[WebCoreDOMDocument createAttributeNS::]):
+ (-[WebCoreDOMDocument createEntityReference:]):
+ (-[WebCoreDOMDocument getElementById:]):
+ (-[WebCoreDOMDocument getElementsByTagName:]):
+ (-[WebCoreDOMDocument getElementsByTagNameNS::]):
+ (-[WebCoreDOMDocument importNode::]):
+ * kwq/WebCoreDOMNode.mm:
+ (-[WebCoreDOMNode initWithImpl:DOM::]):
+ (-[WebCoreDOMNode firstChild]):
+ (-[WebCoreDOMNode lastChild]):
+ * kwq/WebCoreDOMPrivate.h:
+ * kwq/WebCoreBridge.mm:
+ (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+ (recursive_toHTML):
+ (attributedString):
+
2002-10-11 David Hyatt <hyatt at apple.com>
Fix for 3058829, assertion caused by table cell with
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 193102d..371c459 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,67 @@
+2002-10-11 Richard Williamson <rjw at apple.com>
+
+ More DOM/attributed string work. Still need to fix more
+ inappropriate casting problems.
+
+ * khtml/dom/dom_node.cpp:
+ (Node::lastChild):
+ * khtml/xml/dom_nodeimpl.cpp:
+ (NodeImpl::lastChild):
+ (NodeBaseImpl::lastChild):
+ * khtml/xml/dom_nodeimpl.h:
+ * kwq/KWQKHTMLPartImpl.cpp:
+ (KWQKHTMLPartImpl::selectionStartOffset):
+ (KWQKHTMLPartImpl::selectionEndOffset):
+ (KWQKHTMLPartImpl::selectionStart):
+ (KWQKHTMLPartImpl::selectionEnd):
+ * kwq/KWQKHTMLPartImpl.h:
+ * kwq/WebCoreBridge.h:
+ * kwq/WebCoreBridge.mm:
+ (-[WebCoreBridge DOMDocument]):
+ (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+ (attributedString):
+ (-[WebCoreBridge selectedAttributedString]):
+ (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]):
+ * kwq/WebCoreDOMDocument.mm:
+ (-[WebCoreDOMDocumentType DOM::]):
+ (-[WebCoreDOMDocumentType name]):
+ (-[WebCoreDOMDocumentType entities]):
+ (-[WebCoreDOMDocumentType notations]):
+ (-[WebCoreDOMDocumentType publicId]):
+ (-[WebCoreDOMDocumentType systemId]):
+ (-[WebCoreDOMDocumentType internalSubset]):
+ (-[WebCoreDOMImplementation DOM::]):
+ (-[WebCoreDOMImplementation hasFeature::]):
+ (-[WebCoreDOMImplementation createDocument:::]):
+ (+[WebCoreDOMDocument documentWithImpl:DOM::]):
+ (-[WebCoreDOMDocument DOM::]):
+ (-[WebCoreDOMDocument doctype]):
+ (-[WebCoreDOMDocument implementation]):
+ (-[WebCoreDOMDocument documentElement]):
+ (-[WebCoreDOMDocument createElement:]):
+ (-[WebCoreDOMDocument createElementNS::]):
+ (-[WebCoreDOMDocument createDocumentFragment]):
+ (-[WebCoreDOMDocument createTextNode:]):
+ (-[WebCoreDOMDocument createComment:]):
+ (-[WebCoreDOMDocument createCDATASection:]):
+ (-[WebCoreDOMDocument createProcessingInstruction::]):
+ (-[WebCoreDOMDocument createAttribute:]):
+ (-[WebCoreDOMDocument createAttributeNS::]):
+ (-[WebCoreDOMDocument createEntityReference:]):
+ (-[WebCoreDOMDocument getElementById:]):
+ (-[WebCoreDOMDocument getElementsByTagName:]):
+ (-[WebCoreDOMDocument getElementsByTagNameNS::]):
+ (-[WebCoreDOMDocument importNode::]):
+ * kwq/WebCoreDOMNode.mm:
+ (-[WebCoreDOMNode initWithImpl:DOM::]):
+ (-[WebCoreDOMNode firstChild]):
+ (-[WebCoreDOMNode lastChild]):
+ * kwq/WebCoreDOMPrivate.h:
+ * kwq/WebCoreBridge.mm:
+ (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+ (recursive_toHTML):
+ (attributedString):
+
2002-10-11 David Hyatt <hyatt at apple.com>
Fix for 3058829, assertion caused by table cell with
diff --git a/WebCore/khtml/xml/dom_nodeimpl.h b/WebCore/khtml/xml/dom_nodeimpl.h
index 9cd4df4..e86e426 100644
--- a/WebCore/khtml/xml/dom_nodeimpl.h
+++ b/WebCore/khtml/xml/dom_nodeimpl.h
@@ -427,7 +427,7 @@ public:
// check for being (grand-..)father:
bool checkNoOwner( NodeImpl *other, int &exceptioncode );
-protected:
+//protected:
NodeImpl *_first;
NodeImpl *_last;
diff --git a/WebCore/kwq/KWQKHTMLPart.cpp b/WebCore/kwq/KWQKHTMLPart.cpp
index de6bfa7..34c8754 100644
--- a/WebCore/kwq/KWQKHTMLPart.cpp
+++ b/WebCore/kwq/KWQKHTMLPart.cpp
@@ -42,3 +42,9 @@ bool KWQKHTMLPartImpl::isFrameSet()
NodeImpl *body = static_cast<HTMLDocumentImpl *>(document)->body();
return body && body->renderer() && body->id() == ID_FRAMESET;
}
+
+
+int KWQKHTMLPartImpl::selectionStartOffset() const { return d->m_startOffset; }
+int KWQKHTMLPartImpl::selectionEndOffset() const { return d->m_endOffset; }
+DOM::NodeImpl *KWQKHTMLPartImpl::selectionStart() const { return d->m_selectionStart.handle(); }
+DOM::NodeImpl *KWQKHTMLPartImpl::selectionEnd() const { return d->m_selectionEnd.handle(); }
diff --git a/WebCore/kwq/KWQKHTMLPart.h b/WebCore/kwq/KWQKHTMLPart.h
index 76f73b4..9a18e6b 100644
--- a/WebCore/kwq/KWQKHTMLPart.h
+++ b/WebCore/kwq/KWQKHTMLPart.h
@@ -131,6 +131,11 @@ public:
QString requestedURLString() const;
+ int selectionStartOffset() const;
+ int selectionEndOffset() const;
+ DOM::NodeImpl *selectionStart() const;
+ DOM::NodeImpl *selectionEnd() const;
+
private:
void setPolicyBaseURL(const DOM::DOMString &);
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.cpp b/WebCore/kwq/KWQKHTMLPartImpl.cpp
index de6bfa7..34c8754 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.cpp
+++ b/WebCore/kwq/KWQKHTMLPartImpl.cpp
@@ -42,3 +42,9 @@ bool KWQKHTMLPartImpl::isFrameSet()
NodeImpl *body = static_cast<HTMLDocumentImpl *>(document)->body();
return body && body->renderer() && body->id() == ID_FRAMESET;
}
+
+
+int KWQKHTMLPartImpl::selectionStartOffset() const { return d->m_startOffset; }
+int KWQKHTMLPartImpl::selectionEndOffset() const { return d->m_endOffset; }
+DOM::NodeImpl *KWQKHTMLPartImpl::selectionStart() const { return d->m_selectionStart.handle(); }
+DOM::NodeImpl *KWQKHTMLPartImpl::selectionEnd() const { return d->m_selectionEnd.handle(); }
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.h b/WebCore/kwq/KWQKHTMLPartImpl.h
index 76f73b4..9a18e6b 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.h
+++ b/WebCore/kwq/KWQKHTMLPartImpl.h
@@ -131,6 +131,11 @@ public:
QString requestedURLString() const;
+ int selectionStartOffset() const;
+ int selectionEndOffset() const;
+ DOM::NodeImpl *selectionStart() const;
+ DOM::NodeImpl *selectionEnd() const;
+
private:
void setPolicyBaseURL(const DOM::DOMString &);
diff --git a/WebCore/kwq/WebCoreBridge.h b/WebCore/kwq/WebCoreBridge.h
index 983991e..779c500 100644
--- a/WebCore/kwq/WebCoreBridge.h
+++ b/WebCore/kwq/WebCoreBridge.h
@@ -140,6 +140,8 @@ typedef khtml::RenderPart KHTMLRenderPart;
- (void)setSelectionFrom:(id<WebDOMNode>)start startOffset:(int)startOffset to:(id<WebDOMNode>)end endOffset:(int) endOffset;
+- (NSAttributedString *)attributedStringFrom: (id<WebDOMNode>)startNode startOffset: (int)startOffset to: (id<WebDOMNode>)endNode endOffset: (int)endOffset;
+
@end
// The WebCoreBridge protocol contains methods for use by the WebCore side of the bridge.
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index fa30150..beedc2a 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -25,13 +25,19 @@
#import <WebCoreBridge.h>
+#import <dom_node.h>
+#import <dom_docimpl.h>
+#import <dom_nodeimpl.h>
#import <khtml_part.h>
#import <khtmlview.h>
-#import <dom_docimpl.h>
+#import <render_frames.h>
#import <render_image.h>
#import <render_object.h>
#import <render_root.h>
-#import <render_frames.h>
+#import <render_style.h>
+
+#import <qfont.h>
+
#import <KWQAssertions.h>
#import <html/html_documentimpl.h>
#import <xml/dom_nodeimpl.h>
@@ -544,6 +550,7 @@ using khtml::RenderPart;
- (id<WebDOMDocument>)DOMDocument
{
DocumentImpl *doc = part->impl->document();
+ printf ("(id<WebDOMDocument>)DOMDocument doc = %p, lastChild = %p\n", doc, doc->lastChild());
return [WebCoreDOMDocument documentWithImpl:doc];
}
@@ -554,4 +561,169 @@ using khtml::RenderPart;
doc->setSelection ([(WebCoreDOMNode *)start impl], startOffset, [(WebCoreDOMNode *)end impl], endOffset);
}
+
+static NSAttributedString *attributedString(DOM::NodeImpl *_startNode, int startOffset, DOM::NodeImpl *endNode, int endOffset)
+{
+ bool hasNewLine = true;
+ DOM::Node n = _startNode;
+ khtml::RenderObject *renderer;
+ khtml::RenderStyle *style;
+ NSFont *font;
+ NSMutableAttributedString *result = [[[NSMutableAttributedString alloc] init] autorelease];
+ NSAttributedString *partialString;
+
+ while(!n.isNull()) {
+ if(n.nodeType() == DOM::Node::TEXT_NODE) {
+ QString text;
+ QString str = n.nodeValue().string();
+
+ renderer = n.handle()->renderer();
+ font = nil;
+ if (renderer){
+ style = renderer->style();
+ if (style)
+ font = style->font().getNSFont();
+ }
+
+ hasNewLine = false;
+ if(n == _startNode && n == endNode && startOffset >=0 && endOffset >= 0)
+ text = str.mid(startOffset, endOffset - startOffset);
+ else if(n == _startNode && startOffset >= 0)
+ text = str.mid(startOffset);
+ else if(n == endNode && endOffset >= 0)
+ text = str.left(endOffset);
+ else
+ text = str;
+
+ if (font)
+ partialString = [[NSAttributedString alloc] initWithString: text.getNSString() attributes: [NSDictionary dictionaryWithObjectsAndKeys: font, NSFontAttributeName, 0]];
+ else
+ partialString = [[NSAttributedString alloc] initWithString: text.getNSString() attributes: nil];
+
+ [result appendAttributedString: partialString];
+ [partialString release];
+ }
+ else {
+ // This is our simple HTML -> ASCII transformation:
+ QString text;
+ unsigned short _id = n.elementId();
+ switch(_id) {
+ case ID_BR:
+ text += "\n";
+ hasNewLine = true;
+ break;
+
+ case ID_TD:
+ case ID_TH:
+ case ID_HR:
+ case ID_OL:
+ case ID_UL:
+ case ID_LI:
+ case ID_DD:
+ case ID_DL:
+ case ID_DT:
+ case ID_PRE:
+ case ID_BLOCKQUOTE:
+ case ID_DIV:
+ if (!hasNewLine)
+ text += "\n";
+ hasNewLine = true;
+ break;
+ case ID_P:
+ case ID_TR:
+ case ID_H1:
+ case ID_H2:
+ case ID_H3:
+ case ID_H4:
+ case ID_H5:
+ case ID_H6:
+ if (!hasNewLine)
+ text += "\n";
+ text += "\n";
+ hasNewLine = true;
+ break;
+ }
+ partialString = [[NSAttributedString alloc] initWithString: text.getNSString() attributes: nil];
+ [result appendAttributedString: partialString];
+ [partialString release];
+ }
+
+ if(n == endNode)
+ break;
+
+ DOM::Node next = n.firstChild();
+ if(next.isNull())
+ next = n.nextSibling();
+ while( next.isNull() && !n.parentNode().isNull() ) {
+ QString text;
+ n = n.parentNode();
+ next = n.nextSibling();
+
+ unsigned short _id = n.elementId();
+ switch(_id) {
+ case ID_TD:
+ case ID_TH:
+ case ID_HR:
+ case ID_OL:
+ case ID_UL:
+ case ID_LI:
+ case ID_DD:
+ case ID_DL:
+ case ID_DT:
+ case ID_PRE:
+ case ID_BLOCKQUOTE:
+ case ID_DIV:
+ if (!hasNewLine)
+ text += "\n";
+ hasNewLine = true;
+ break;
+ case ID_P:
+ case ID_TR:
+ case ID_H1:
+ case ID_H2:
+ case ID_H3:
+ case ID_H4:
+ case ID_H5:
+ case ID_H6:
+ if (!hasNewLine)
+ text += "\n";
+ // An extra newline is needed at the start, not the end, of these types of tags,
+ // so don't add another here.
+ hasNewLine = true;
+ break;
+ }
+ partialString = [[NSAttributedString alloc] initWithString: text.getNSString() attributes: nil];
+ [result appendAttributedString: partialString];
+ [partialString release];
+ }
+
+ n = next;
+ }
+/*
+ int start = 0;
+ int end = text.length();
+
+ // Strip leading LFs
+ while ((start < end) && (text[start] == '\n'))
+ start++;
+
+ // Strip excessive trailing LFs
+ while ((start < (end-1)) && (text[end-1] == '\n') && (text[end-2] == '\n'))
+ end--;
+
+ text.mid(start, end-start);
+*/
+ return result;
+}
+
+- (NSAttributedString *)selectedAttributedString
+{
+ return attributedString (part->impl->selectionStart(), part->impl->selectionStartOffset(), part->impl->selectionEnd(), part->impl->selectionEndOffset());
+}
+
+- (NSAttributedString *)attributedStringFrom: (id<WebDOMNode>)startNode startOffset: (int)startOffset to: (id<WebDOMNode>)endNode endOffset: (int)endOffset
+{
+ return attributedString ([(WebCoreDOMNode *)startNode impl], startOffset, [(WebCoreDOMNode *)endNode impl], endOffset);
+}
+
@end
diff --git a/WebCore/kwq/WebCoreDOMDocument.mm b/WebCore/kwq/WebCoreDOMDocument.mm
index 6660879..31e42a7 100644
--- a/WebCore/kwq/WebCoreDOMDocument.mm
+++ b/WebCore/kwq/WebCoreDOMDocument.mm
@@ -41,48 +41,42 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
return [[(WebCoreDOMDocumentType *)[[self class] alloc] initWithImpl: _impl] autorelease];
}
-- initWithImpl: (DOM::DocumentTypeImpl *)coreImpl
+- (DOM::DocumentTypeImpl *)documentTypeImpl
{
- [super initWithImpl:coreImpl];
- return self;
-}
-
-- (DOM::DocumentTypeImpl *)impl
-{
- return (DOM::DocumentTypeImpl *)impl;
+ return static_cast<DOM::DocumentTypeImpl *>(impl);
}
- (NSString *)name
{
- DOM::DOMString name = [self impl]->name();
+ DOM::DOMString name = [self documentTypeImpl]->name();
return domStringToNSString(name);
}
- (id<WebDOMNamedNodeMap>)entities
{
- return [WebCoreDOMNamedNodeMap namedNodeMapWithImpl:[self impl]->entities()];
+ return [WebCoreDOMNamedNodeMap namedNodeMapWithImpl:[self documentTypeImpl]->entities()];
}
- (id<WebDOMNamedNodeMap>)notations
{
- return [WebCoreDOMNamedNodeMap namedNodeMapWithImpl:[self impl]->entities()];
+ return [WebCoreDOMNamedNodeMap namedNodeMapWithImpl:[self documentTypeImpl]->entities()];
}
- (NSString *)publicId
{
- DOM::DOMString publicId = [self impl]->publicId();
+ DOM::DOMString publicId = [self documentTypeImpl]->publicId();
return domStringToNSString(publicId);
}
- (NSString *)systemId
{
- DOM::DOMString systemId = [self impl]->systemId();
+ DOM::DOMString systemId = [self documentTypeImpl]->systemId();
return domStringToNSString(systemId);
}
- (NSString *)internalSubset
{
- DOM::DOMString internalSubset = [self impl]->internalSubset();
+ DOM::DOMString internalSubset = [self documentTypeImpl]->internalSubset();
return domStringToNSString(internalSubset);
}
@end
@@ -95,28 +89,20 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
return [[(WebCoreDOMImplementation *)[[self class] alloc] initWithImpl: _impl] autorelease];
}
-- initWithImpl: (DOM::DOMImplementationImpl *)coreImpl
-{
- [super init];
- impl = coreImpl;
- impl->ref();
- return self;
-}
-
- (void)dealloc
{
impl->deref();
[super dealloc];
}
-- (DOM::DOMImplementationImpl *)impl
+- (DOM::DOMImplementationImpl *)DOMImplementationImpl
{
- return (DOM::DOMImplementationImpl *)impl;
+ return static_cast<DOM::DOMImplementationImpl *>(impl);
}
- (BOOL)hasFeature: (NSString *)feature : (NSString *)version
{
- return [self impl]->hasFeature(NSStringToDOMString(feature),NSStringToDOMString(version));
+ return [self DOMImplementationImpl]->hasFeature(NSStringToDOMString(feature),NSStringToDOMString(version));
}
- (id<WebDOMDocumentType>)createDocumentType: (NSString *)qualifiedName :(NSString *)publicId :(NSString *)systemId;
@@ -124,7 +110,7 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
DOM::DOMString _qualifiedName = NSStringToDOMString(qualifiedName);
DOM::DOMString _publicId = NSStringToDOMString(publicId);
DOM::DOMString _systemId = NSStringToDOMString(systemId);
- DOM::DOMImplementation instance = DOM::DOMImplementationImpl::createInstance([self impl]);
+ DOM::DOMImplementation instance = DOM::DOMImplementationImpl::createInstance([self DOMImplementationImpl]);
DOM::DocumentType ret;
ret = instance.createDocumentType (_qualifiedName, _publicId, _systemId);
@@ -136,8 +122,8 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
{
DOM::DOMString _namespaceURI = NSStringToDOMString(namespaceURI);
DOM::DOMString _qualifiedName = NSStringToDOMString(qualifiedName);
- DOM::DOMImplementation instance = DOM::DOMImplementationImpl::createInstance([self impl]);
- DOM::DocumentType docTypeInstance = DOM::DocumentTypeImpl::createInstance([(WebCoreDOMDocumentType *)doctype impl]);
+ DOM::DOMImplementation instance = DOM::DOMImplementationImpl::createInstance([self DOMImplementationImpl]);
+ DOM::DocumentType docTypeInstance = DOM::DocumentTypeImpl::createInstance([(WebCoreDOMDocumentType *)doctype documentTypeImpl]);
DOM::Document ret;
ret = instance.createDocument (_namespaceURI, _qualifiedName, docTypeInstance);
@@ -152,76 +138,72 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
+ (WebCoreDOMDocument *)documentWithImpl: (DOM::DocumentImpl *)_impl
{
- return [[(WebCoreDOMDocument *)[[self class] alloc] initWithImpl: _impl] autorelease];
+ printf ("documentWithImpl: _impl = %p, lastChild = %p\n", _impl, _impl->lastChild());
+ return [[(WebCoreDOMDocument *)[WebCoreDOMDocument alloc] initWithImpl: _impl] autorelease];
}
-- initWithImpl: (DOM::DocumentImpl *)coreImpl
+- (DOM::DocumentImpl *)documentImpl
{
- [super initWithImpl:coreImpl];
- return self;
+ return static_cast<DOM::DocumentImpl *>(impl);
}
-- (DOM::DocumentImpl *)impl
-{
- return (DOM::DocumentImpl *)impl;
-}
- (id<WebDOMDocumentType>)doctype
{
- return [WebCoreDOMDocumentType documentTypeWithImpl: [self impl]->doctype()];
+ return [WebCoreDOMDocumentType documentTypeWithImpl: [self documentImpl]->doctype()];
}
- (id<WebDOMImplementation>)implementation
{
- return [WebCoreDOMImplementation implementationWithImpl: [self impl]->implementation()];
+ return [WebCoreDOMImplementation implementationWithImpl: [self documentImpl]->implementation()];
}
- (id<WebDOMElement>)documentElement
{
- return [WebCoreDOMElement elementWithImpl: [self impl]->documentElement()];
+ return [WebCoreDOMElement elementWithImpl: [self documentImpl]->documentElement()];
}
- (id<WebDOMElement>)createElement:(NSString *)tagName
{
- return [WebCoreDOMElement elementWithImpl: [self impl]->createElement(NSStringToDOMString(tagName))];
+ return [WebCoreDOMElement elementWithImpl: [self documentImpl]->createElement(NSStringToDOMString(tagName))];
}
- (id<WebDOMElement>)createElementNS:(NSString *)namespaceURI :(NSString *)qualifiedName
{
- return [WebCoreDOMElement elementWithImpl: [self impl]->createElementNS(NSStringToDOMString(namespaceURI),NSStringToDOMString(qualifiedName))];
+ return [WebCoreDOMElement elementWithImpl: [self documentImpl]->createElementNS(NSStringToDOMString(namespaceURI),NSStringToDOMString(qualifiedName))];
}
- (id<WebDOMDocumentFragment>)createDocumentFragment
{
- return [WebCoreDOMDocumentFragment documentFragmentWithImpl: [self impl]->createDocumentFragment()];
+ return [WebCoreDOMDocumentFragment documentFragmentWithImpl: [self documentImpl]->createDocumentFragment()];
}
- (id<WebDOMText>)createTextNode:(NSString *)data
{
- return [WebCoreDOMText textWithImpl: [self impl]->createTextNode(NSStringToDOMString(data))];
+ return [WebCoreDOMText textWithImpl: [self documentImpl]->createTextNode(NSStringToDOMString(data))];
}
- (id<WebDOMComment>)createComment:(NSString *)data
{
- return [WebCoreDOMComment commentWithImpl: [self impl]->createComment(NSStringToDOMString(data))];
+ return [WebCoreDOMComment commentWithImpl: [self documentImpl]->createComment(NSStringToDOMString(data))];
}
- (id<WebDOMCDATASection>)createCDATASection:(NSString *)data
{
- return [WebCoreDOMCDATASection CDATASectionWithImpl: [self impl]->createCDATASection(NSStringToDOMString(data))];
+ return [WebCoreDOMCDATASection CDATASectionWithImpl: [self documentImpl]->createCDATASection(NSStringToDOMString(data))];
}
- (id<WebDOMProcessingInstruction>)createProcessingInstruction:(NSString *)target :(NSString *)data
{
DOM::DOMString _target = NSStringToDOMString(target);
DOM::DOMString _data = NSStringToDOMString(data);
- return [WebCoreDOMProcessingInstruction processingInstructionWithImpl: [self impl]->createProcessingInstruction(_target,_data)];
+ return [WebCoreDOMProcessingInstruction processingInstructionWithImpl: [self documentImpl]->createProcessingInstruction(_target,_data)];
}
- (id<WebDOMAttr>)createAttribute:(NSString *)name
{
DOM::DOMString _name = NSStringToDOMString(name);
- DOM::Document instance = DOM::DocumentImpl::createInstance([self impl]);
+ DOM::Document instance = DOM::DocumentImpl::createInstance([self documentImpl]);
DOM::AttrImpl *attr = (DOM::AttrImpl *)instance.createAttribute(_name).handle();
return [WebCoreDOMAttr attrWithImpl: attr];
}
@@ -230,7 +212,7 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
{
DOM::DOMString _namespaceURI = NSStringToDOMString(namespaceURI);
DOM::DOMString _qualifiedName = NSStringToDOMString(qualifiedName);
- DOM::Document instance = DOM::DocumentImpl::createInstance([self impl]);
+ DOM::Document instance = DOM::DocumentImpl::createInstance([self documentImpl]);
DOM::Attr ret;
ret= instance.createAttributeNS (_namespaceURI,_qualifiedName);
@@ -240,19 +222,19 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
- (id<WebDOMEntityReference>)createEntityReference:(NSString *)name
{
- return [WebCoreDOMEntityReference entityReferenceWithImpl: [self impl]->createEntityReference(NSStringToDOMString(name))];
+ return [WebCoreDOMEntityReference entityReferenceWithImpl: [self documentImpl]->createEntityReference(NSStringToDOMString(name))];
}
- (id<WebDOMElement>)getElementById:(NSString *)elementId
{
DOM::DOMString _elementId = NSStringToDOMString(elementId);
- return [WebCoreDOMElement elementWithImpl: [self impl]->getElementById(_elementId)];
+ return [WebCoreDOMElement elementWithImpl: [self documentImpl]->getElementById(_elementId)];
}
- (id<WebDOMNodeList>)getElementsByTagName:(NSString *)tagname
{
DOM::DOMString _tagname = NSStringToDOMString(tagname);
- DOM::Document instance = DOM::DocumentImpl::createInstance([self impl]);
+ DOM::Document instance = DOM::DocumentImpl::createInstance([self documentImpl]);
DOM::NodeListImpl *nodeList = (DOM::NodeListImpl *)instance.getElementsByTagName(_tagname).handle();
return [WebCoreDOMNodeList nodeListWithImpl: nodeList];
}
@@ -261,7 +243,7 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
{
DOM::DOMString _namespaceURI = NSStringToDOMString(namespaceURI);
DOM::DOMString _localName = NSStringToDOMString(localName);
- DOM::Document instance = DOM::DocumentImpl::createInstance([self impl]);
+ DOM::Document instance = DOM::DocumentImpl::createInstance([self documentImpl]);
DOM::NodeList ret;
ret = instance.getElementsByTagNameNS(_namespaceURI,_localName);
@@ -272,7 +254,7 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
- (id<WebDOMNode>)importNode:importedNode :(BOOL)deep
{
DOM::Node importNode([(WebCoreDOMNode *)importedNode impl]);
- DOM::Document instance = DOM::DocumentImpl::createInstance([self impl]);
+ DOM::Document instance = DOM::DocumentImpl::createInstance([self documentImpl]);
DOM::Node ret;
ret = instance.importNode(importNode,deep);
diff --git a/WebCore/kwq/WebCoreDOMNode.mm b/WebCore/kwq/WebCoreDOMNode.mm
index d70d9c6..dac9fa5 100644
--- a/WebCore/kwq/WebCoreDOMNode.mm
+++ b/WebCore/kwq/WebCoreDOMNode.mm
@@ -50,7 +50,7 @@ DOM::ProcessingInstruction DOM::ProcessingInstructionImpl::createInstance(Proces
{
[super init];
impl = coreImpl;
- impl->ref();
+ impl->ref();
return self;
}
@@ -101,12 +101,25 @@ DOM::ProcessingInstruction DOM::ProcessingInstructionImpl::createInstance(Proces
- (id<WebDOMNode>)firstChild
{
- return [WebCoreDOMNode nodeWithImpl: [self impl]->firstChild()];
+ DOM::Node instance([self impl]);
+ DOM::NodeImpl *firstChild = instance.firstChild().handle();
+
+ if (firstChild)
+ return [WebCoreDOMNode nodeWithImpl: firstChild];
+ return nil;
}
- (id<WebDOMNode>)lastChild
{
- return [WebCoreDOMNode nodeWithImpl: [self impl]->lastChild()];
+ DOM::Node instance([self impl]);
+ DOM::NodeImpl *lastChild = instance.lastChild().handle();
+
+ printf ("lastChild = %p\n", lastChild);
+
+ if (lastChild)
+ return [WebCoreDOMNode nodeWithImpl: lastChild];
+
+ return nil;
}
- (id<WebDOMNode>) previousSibling
diff --git a/WebCore/kwq/WebCoreDOMPrivate.h b/WebCore/kwq/WebCoreDOMPrivate.h
index b25cc0c..a823ce0 100644
--- a/WebCore/kwq/WebCoreDOMPrivate.h
+++ b/WebCore/kwq/WebCoreDOMPrivate.h
@@ -3,6 +3,7 @@
Copyright 2002, Apple, Inc. All rights reserved.
*/
#include <dom/dom_element.h>
+#include <dom/dom_node.h>
#include <dom/dom_string.h>
#include <dom/dom_text.h>
#include <dom/dom_xml.h>
@@ -12,6 +13,7 @@
#include <xml/dom2_eventsimpl.h>
#include <xml/xml_tokenizer.h>
#include <xml/dom_docimpl.h>
+#include <xml/dom_nodeimpl.h>
#import "WebCoreDOM.h"
@@ -20,20 +22,18 @@ extern DOM::DOMString NSStringToDOMString(NSString *aString);
@interface WebCoreDOMDocumentType (CorePrivate)
+ (WebCoreDOMDocumentType *)documentTypeWithImpl: (DOM::DocumentTypeImpl *)impl;
-- initWithImpl: (DOM::DocumentTypeImpl *)coreImpl;
-- (DOM::DocumentTypeImpl *)impl;
+- (DOM::DocumentTypeImpl *)documentTypeImpl;
@end
@interface WebCoreDOMImplementation (CorePrivate)
+ (WebCoreDOMImplementation *)implementationWithImpl: (DOM::DOMImplementationImpl *)impl;
- initWithImpl: (DOM::DOMImplementationImpl *)coreImpl;
-- (DOM::DOMImplementationImpl *)impl;
+- (DOM::DOMImplementationImpl *)DOMImplementationImpl;
@end
@interface WebCoreDOMDocument (CorePrivate)
+ (WebCoreDOMDocument *)documentWithImpl: (DOM::DocumentImpl *)impl;
-- initWithImpl: (DOM::DocumentImpl *)coreImpl;
-- (DOM::DocumentImpl *)impl;
+- (DOM::DocumentImpl *)documentImpl;
@end
@interface WebCoreDOMNamedNodeMap (CorePrivate)
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index cf9837b..cd9f0ca 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,17 @@
+2002-10-11 Richard Williamson <rjw at apple.com>
+
+ More DOM/attributed string work.
+
+ * WebView.subproj/WebHTMLRepresentation.h:
+ * WebView.subproj/WebHTMLRepresentation.m:
+ (-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]):
+ * WebView.subproj/WebHTMLRepresentationPrivate.h:
+
+2002-10-11 Richard Williamson <rjw at apple.com>
+
+ * WebView.subproj/WebHTMLRepresentation.m:
+ * WebView.subproj/WebHTMLRepresentationPrivate.h:
+
2002-10-11 Ken Kocienda <kocienda at apple.com>
Fixed uninitialized variable build breaker I got when
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index cf9837b..cd9f0ca 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,3 +1,17 @@
+2002-10-11 Richard Williamson <rjw at apple.com>
+
+ More DOM/attributed string work.
+
+ * WebView.subproj/WebHTMLRepresentation.h:
+ * WebView.subproj/WebHTMLRepresentation.m:
+ (-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]):
+ * WebView.subproj/WebHTMLRepresentationPrivate.h:
+
+2002-10-11 Richard Williamson <rjw at apple.com>
+
+ * WebView.subproj/WebHTMLRepresentation.m:
+ * WebView.subproj/WebHTMLRepresentationPrivate.h:
+
2002-10-11 Ken Kocienda <kocienda at apple.com>
Fixed uninitialized variable build breaker I got when
diff --git a/WebKit/WebView.subproj/WebHTMLRepresentation.h b/WebKit/WebView.subproj/WebHTMLRepresentation.h
index 2d1dd92..1143efa 100644
--- a/WebKit/WebView.subproj/WebHTMLRepresentation.h
+++ b/WebKit/WebView.subproj/WebHTMLRepresentation.h
@@ -43,6 +43,8 @@
*/
- (void)setSelectionFrom:(id<WebDOMNode>)start startOffset:(int)startOffset to:(id<WebDOMNode>)end endOffset:(int) endOffset;
+//- (NSAttributedString *)selectedAttributedString;
+
/*!
@method documentSource
@abstract Get the current HTML reconstructed from the current state of the DOM.
@@ -50,10 +52,6 @@
- (NSString *)reconstructedDocumentSource;
-/*!
- @method attributedText
- @discussion Return the document source as an attributed string.
-*/
-- (NSAttributedString *)attributedText;
+- (NSAttributedString *)attributedStringFrom: (id<WebDOMNode>)startNode startOffset: (int)startOffset to: (id<WebDOMNode>)endNode endOffset: (int)endOffset;
@end
diff --git a/WebKit/WebView.subproj/WebHTMLRepresentation.m b/WebKit/WebView.subproj/WebHTMLRepresentation.m
index 2e32eb4..c0bacaf 100644
--- a/WebKit/WebView.subproj/WebHTMLRepresentation.m
+++ b/WebKit/WebView.subproj/WebHTMLRepresentation.m
@@ -95,5 +95,9 @@
return nil;
}
+- (NSAttributedString *)attributedStringFrom: (id<WebDOMNode>)startNode startOffset: (int)startOffset to: (id<WebDOMNode>)endNode endOffset: (int)endOffset
+{
+ return [_private->bridge attributedStringFrom: startNode startOffset: startOffset to: endNode endOffset: endOffset];
+}
@end
diff --git a/WebKit/WebView.subproj/WebHTMLRepresentationPrivate.h b/WebKit/WebView.subproj/WebHTMLRepresentationPrivate.h
index f3bf1bb..c4ff384 100644
--- a/WebKit/WebView.subproj/WebHTMLRepresentationPrivate.h
+++ b/WebKit/WebView.subproj/WebHTMLRepresentationPrivate.h
@@ -9,4 +9,5 @@
@interface WebHTMLRepresentation (WebPrivate)
- (WebBridge *)_bridge;
+- (void)printDOMTree;
@end
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list