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

darin darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:21:35 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 691dc09aa23c8a57db897c070e394a0f74753d0c
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Jan 23 22:38:51 2003 +0000

            Reviewed by John.
    
    	- fixed 3154647 -- Triple clicked on a line of text (to select entire line), crashola
    
            * khtml/khtml_part.cpp:
            (firstSlaveAt): Loop instead of using recursion for siblings.
            (lastSlaveAt): Ditto, only backwards.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3432 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 002d610..59e7117 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,13 @@
+2003-01-23  Darin Adler  <darin at apple.com>
+
+        Reviewed by John.
+
+	- fixed 3154647 -- Triple clicked on a line of text (to select entire line), crashola
+
+        * khtml/khtml_part.cpp:
+        (firstSlaveAt): Loop instead of using recursion for siblings.
+        (lastSlaveAt): Ditto, only backwards.
+
 2003-01-23  David Hyatt  <hyatt at apple.com>
 
 	Fix for 3142124.  
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 002d610..59e7117 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,13 @@
+2003-01-23  Darin Adler  <darin at apple.com>
+
+        Reviewed by John.
+
+	- fixed 3154647 -- Triple clicked on a line of text (to select entire line), crashola
+
+        * khtml/khtml_part.cpp:
+        (firstSlaveAt): Loop instead of using recursion for siblings.
+        (lastSlaveAt): Ditto, only backwards.
+
 2003-01-23  David Hyatt  <hyatt at apple.com>
 
 	Fix for 3142124.  
diff --git a/WebCore/khtml/khtml_part.cpp b/WebCore/khtml/khtml_part.cpp
index 4fc3fda..ae95039 100644
--- a/WebCore/khtml/khtml_part.cpp
+++ b/WebCore/khtml/khtml_part.cpp
@@ -96,6 +96,9 @@ using namespace DOM;
 #include <CoreServices/CoreServices.h>
 #endif
 
+using khtml::RenderText;
+using khtml::TextSlaveArray;
+
 namespace khtml {
     class PartStyleSheetLoader : public CachedObjectClient
     {
@@ -3969,64 +3972,64 @@ void KHTMLPart::customEvent( QCustomEvent *event )
 }
 
 #if APPLE_CHANGES
-static bool firstSlaveAt (khtml::RenderObject *renderNode, int y, DOM::NodeImpl*&startNode, long &startOffset)
-{
-    bool found = false;
-    
-    if (renderNode == 0)
-        return false;
-        
-    if (renderNode->isText()){
-        khtml::RenderText *textRenderer =  static_cast<khtml::RenderText *>(renderNode);
-        khtml::TextSlaveArray slaves = textRenderer->textSlaves();
-        for (int i = 0; i < (int)slaves.count(); i++){
-            if (slaves[i]->m_y == y){
-                startNode = textRenderer->element();
-                startOffset = slaves[i]->m_start;
-                return true;
+
+static bool firstSlaveAt(RenderObject *renderNode, int y, NodeImpl *&startNode, long &startOffset)
+{
+    for (RenderObject *n = renderNode; n; n = n->nextSibling()) {
+        if (n->isText()) {
+            RenderText *textRenderer = static_cast<khtml::RenderText *>(n);
+            TextSlaveArray slaves = textRenderer->textSlaves();
+            for (unsigned i = 0; i != slaves.count(); i++) {
+                if (slaves[i]->m_y == y) {
+                    startNode = textRenderer->element();
+                    startOffset = slaves[i]->m_start;
+                    return true;
+                }
             }
         }
+        
+        if (firstSlaveAt(n->firstChild(), y, startNode, startOffset)) {
+            return true;
+        }
     }
     
-    found =  firstSlaveAt(renderNode->firstChild(), y, startNode, startOffset);
-    if (found)
-        return found;
-
-    found = firstSlaveAt(renderNode->nextSibling(), y, startNode, startOffset);
-    if (found)
-        return found;
-    
     return false;
 }
 
-static bool lastSlaveAt (khtml::RenderObject *renderNode, int y, DOM::NodeImpl*&endNode, long &endOffset)
+static bool lastSlaveAt(RenderObject *renderNode, int y, NodeImpl *&endNode, long &endOffset)
 {
-    bool found = false;
-    
-    if (renderNode == 0)
+    RenderObject *n = renderNode;
+    if (!n) {
         return false;
-        
-    found = lastSlaveAt(renderNode->nextSibling(), y, endNode, endOffset);
-    if (found)
-        return found;
+    }
+    RenderObject *next;
+    while ((next = n->nextSibling())) {
+        n = next;
+    }
     
-    found =  lastSlaveAt(renderNode->firstChild(), y, endNode, endOffset);
-    if (found)
-        return found;
-
-    if (renderNode->isText()){
-        khtml::RenderText *textRenderer =  static_cast<khtml::RenderText *>(renderNode);
-        khtml::TextSlaveArray slaves = textRenderer->textSlaves();
-        for (int i = (int)slaves.count()-1; i >= 0; i--){
-            if (slaves[i]->m_y == y){
-                endNode = textRenderer->element();
-                endOffset = slaves[i]->m_start + slaves[i]->m_len;
-                return true;
+    while (1) {
+        if (lastSlaveAt(n->firstChild(), y, endNode, endOffset)) {
+            return true;
+        }
+    
+        if (n->isText()) {
+            RenderText *textRenderer =  static_cast<khtml::RenderText *>(n);
+            TextSlaveArray slaves = textRenderer->textSlaves();
+            for (int i = (int)slaves.count()-1; i >= 0; i--) {
+                if (slaves[i]->m_y == y) {
+                    endNode = textRenderer->element();
+                    endOffset = slaves[i]->m_start + slaves[i]->m_len;
+                    return true;
+                }
             }
         }
+        
+        if (n == renderNode) {
+            return false;
+        }
+        
+        n = n->previousSibling();
     }
-    
-    return false;
 }
 
 static bool startAndEndLineNodesIncludingNode (DOM::NodeImpl *node, int offset, DOM::Node &_startNode, long &startOffset, DOM::Node &_endNode, long &endOffset)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list