Author: arekm Date: Thu May 28 19:32:40 2009 GMT Module: packages Tag: HEAD ---- Log message: - rel 3; branch diff is back
---- Files affected: packages/kde4-kdelibs: kde4-kdelibs-branch.diff (1.12 -> 1.13) , kde4-kdelibs.spec (1.146 -> 1.147) ---- Diffs: ================================================================ Index: packages/kde4-kdelibs/kde4-kdelibs-branch.diff diff -u packages/kde4-kdelibs/kde4-kdelibs-branch.diff:1.12 packages/kde4-kdelibs/kde4-kdelibs-branch.diff:1.13 --- packages/kde4-kdelibs/kde4-kdelibs-branch.diff:1.12 Sun Apr 19 18:52:37 2009 +++ packages/kde4-kdelibs/kde4-kdelibs-branch.diff Thu May 28 21:32:32 2009 @@ -1,7291 +1,4955 @@ Index: khtml/khtmlview.cpp =================================================================== ---- khtml/khtmlview.cpp (.../tags/KDE/4.2.2/kdelibs) (wersja 956244) -+++ khtml/khtmlview.cpp (.../branches/KDE/4.2/kdelibs) (wersja 956244) -@@ -559,7 +559,10 @@ - } - node = node->parentNode(); +--- khtml/khtmlview.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/khtmlview.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -136,6 +136,9 @@ + static const int sSmoothScrollTick = 14; + static const int sSmoothScrollMinStaticPixels = 320*200; + ++static const int sMaxMissedDeadlines = 12; ++static const int sWayTooMany = -1; ++ + class KHTMLViewPrivate { + friend class KHTMLView; + public: +@@ -164,6 +167,7 @@ + postponed_autorepeat = NULL; + scrollingFromWheelTimerId = 0; + smoothScrollMode = KHTMLView::SSMWhenEfficient; ++ + reset(); + vpolicy = Qt::ScrollBarAsNeeded; + hpolicy = Qt::ScrollBarAsNeeded; +@@ -246,6 +250,7 @@ + smoothScrolling = false; + smoothScrollModeIsDefault = true; + shouldSmoothScroll = false; ++ smoothScrollMissedDeadlines = 0; + hasFrameset = false; + #ifdef FIX_QT_BROKEN_QWIDGET_SCROLL + oldVScrollUpdatesEnabled = true; +@@ -450,6 +455,7 @@ + bool possibleTripleClick :1; + bool dirtyLayout :1; + bool m_dialogsAllowed :1; ++ short smoothScrollMissedDeadlines; + int layoutCounter; + int layoutAttemptCounter; + int scheduledLayoutCounter; +@@ -3754,8 +3760,6 @@ + if (defaultHandled || me->defaultPrevented()) + swallowEvent = true; } -- return true; -+ // Qt makes tooltip events happen nearly immediately when a preceding one was processed in the past few seconds. -+ // We don't want that feature to apply to web tootlips however, as it clashes with dhtml menus. -+ // So we'll just pretend we did not process that event. -+ return false; +- me->deref(); +- + if (eventId == EventImpl::MOUSEDOWN_EVENT && !me->defaultPrevented()) { + // Focus should be shifted on mouse down, not on a click. -dwh + // Blur current focus node when a link/button is clicked; this +@@ -3769,6 +3773,7 @@ + else if (!nodeImpl || !nodeImpl->focused()) + m_part->xmlDocImpl()->setFocusNode(0); + } ++ me->deref(); + } + + return swallowEvent; +@@ -3925,7 +3930,7 @@ + } + + if ( d->shouldSmoothScroll && d->smoothScrollMode != SSMDisabled && m_part->xmlDocImpl() && +- m_part->xmlDocImpl()->renderer()) { ++ m_part->xmlDocImpl()->renderer() && (d->smoothScrollMode != SSMWhenEfficient || d->smoothScrollMissedDeadlines != sWayTooMany)) { + + bool doSmoothScroll = (!d->staticWidget || d->smoothScrollMode == SSMEnabled); + +@@ -4161,6 +4166,17 @@ + + d->ddx -= dddx; + d->ddy -= dddy; ++ d->smoothScrollMissedDeadlines = 0; ++ } else { ++ if (d->smoothScrollMissedDeadlines != sWayTooMany && ++ (!m_part->xmlDocImpl() || !m_part->xmlDocImpl()->parsing())) { ++ d->smoothScrollMissedDeadlines++; ++ if (d->smoothScrollMissedDeadlines >= sMaxMissedDeadlines) { ++ // we missed many deadlines in a row! ++ // time to signal we had enough.. ++ d->smoothScrollMissedDeadlines = sWayTooMany; ++ } ++ } + } + d->smoothScrollStopwatch.start(); + } +Index: khtml/dom/dom_node.cpp +=================================================================== +--- khtml/dom/dom_node.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/dom/dom_node.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -390,6 +390,13 @@ + throw DOMException(exceptioncode); + } + ++unsigned Node::compareDocumentPosition(const Node& other) ++{ ++ if (!impl || !other.impl) ++ throw DOMException(DOMException::NOT_FOUND_ERR); ++ return impl->compareDocumentPosition(other.impl); ++} ++ + unsigned int Node::elementId() const + { + if (!impl) return 0; +Index: khtml/dom/dom_node.h +=================================================================== +--- khtml/dom/dom_node.h (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/dom/dom_node.h (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -837,7 +837,7 @@ + bool dispatchEvent(const Event &evt); + + /** +- * Introduced in DOM Level 2 ++ * Introduced in DOM Level 3 + * + * This attribute returns the text content of this node and its + * descendants. When it is defined to be null, setting it has no +@@ -854,7 +854,7 @@ + * textual content. + */ + DOMString textContent() const; +- ++ + /** + * see textContent() + * +@@ -862,6 +862,40 @@ + * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. + */ + void setTextContent(const DOMString& text); ++ ++ /** ++ * Introduced in DOM Level 3. ++ * ++ * These constants represent bitflags returned by the compareDocumentPosition ++ * method. ++ * ++ * @since 4.2.4 ++ */ ++ enum DocumentPosition { ++ DOCUMENT_POSITION_DISCONNECTED = 0x01, ++ DOCUMENT_POSITION_PRECEDING = 0x02, ++ DOCUMENT_POSITION_FOLLOWING = 0x04, ++ DOCUMENT_POSITION_CONTAINS = 0x08, ++ DOCUMENT_POSITION_CONTAINED_BY = 0x10, ++ DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20 ++ }; ++ ++ /** ++ * Introduced in DOM Level 3. ++ * ++ * This method compares the current node's position with that of 'other' ++ * and returns it as a combination of DocumentPosition bitfields. ++ * Here DOCUMENT_POSITION_FOLLOWING means that the 'other' is ++ * after the current. ++ * ++ * The notion of order here is a logical one; for example attributes ++ * are viewed as if they were children of an element inserted ++ * right before the real children. The method will also assign ++ * some total order even if the nodes are not connected. ++ * ++ * @since 4.2.4 ++ */ ++ unsigned compareDocumentPosition(const DOM::Node& other); + + /** + * @internal +Index: khtml/misc/loader.cpp +=================================================================== +--- khtml/misc/loader.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/misc/loader.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -329,7 +329,7 @@ + if (strncmp(d, "@charset \"",10) == 0) + { + // the string until "; is the charset name +- char *p = strchr(d+10, '"'); ++ const char *p = strchr(d+10, '"'); + if (p == 0) return m_charset; + QString charset = QString::fromAscii(d+10, p-(d+10)); + return charset; +Index: khtml/misc/paintbuffer.h +=================================================================== +--- khtml/misc/paintbuffer.h (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/misc/paintbuffer.h (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -124,7 +124,8 @@ } + + void transfer( float opacity ) { +- bool constantOpacity = m_origPainter->paintEngine() && m_origPainter->paintEngine()->hasFeature(QPaintEngine::ConstantOpacity); ++ // ### when using DestinationIn with an alpha above 0.99, the resulting buffer ends up black in Qt 4.5.1 ++ bool constantOpacity = (opacity > 0.99) || m_origPainter->paintEngine() && m_origPainter->paintEngine()->hasFeature(QPaintEngine::ConstantOpacity); + if (!constantOpacity) { + QColor color; + color.setAlphaF(opacity); +Index: khtml/khtml.desktop +=================================================================== +--- khtml/khtml.desktop (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/khtml.desktop (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -79,8 +79,8 @@ + comment...@cyrillic]=Ичига ўрнатиб бўладиган HTML кўрувчи компонент + Comment[vi]=Thành phần xem HTML có khả năng nhúng. + Comment[wa]=Ravalé compôzant di håynaedje HTML ++Comment[xh]=Inxenye yemboniselo elungisiweyo ye HTML + Comment[x-test]=xxEmbeddable HTML viewing componentxx +-Comment[xh]=Inxenye yemboniselo elungisiweyo ye HTML + Comment[zh_CN]=可嵌入的 HTML 查看部件 + Comment[zh_HK]=可嵌入的 HTML 檢視元件 + Comment[zh_TW]=可嵌入的 HTML 檢視元件 +Index: khtml/khtmlimage.desktop +=================================================================== +--- khtml/khtmlimage.desktop (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/khtmlimage.desktop (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -79,8 +79,8 @@ + comment...@cyrillic]=Ичига ўрнатиб бўладиган расм кўрувчи компонент + Comment[vi]=Thành phần xem ảnh có khả năng nhúng. + Comment[wa]=Ravalé compôzant håyneu d' imådjes ++Comment[xh]=Ingxenye Yemboniselo Yomfanekiso Olungisiweyo + Comment[x-test]=xxEmbeddable Image Viewing Componentxx +-Comment[xh]=Ingxenye Yemboniselo Yomfanekiso Olungisiweyo + Comment[zh_CN]=可嵌入的图像查看部件 + Comment[zh_HK]=可嵌入的圖檔檢視元件 + Comment[zh_TW]=可嵌入的影像檢視元件 +@@ -164,8 +164,8 @@ + name...@cyrillic]=Расм кўрувчи + Name[vi]=Bộ xem ảnh có khả năng nhúng + Name[wa]=Ravalé håyneu d' imådjes ++Name[xh]=Umboniseli Womfanekiso Olungisiweyo + Name[x-test]=xxEmbeddable Image Viewerxx +-Name[xh]=Umboniseli Womfanekiso Olungisiweyo + Name[zh_CN]=可嵌入的图像查看器 + Name[zh_HK]=可嵌入的圖檔檢視器 + Name[zh_TW]=可嵌入的影像檢視器 +Index: khtml/svg/SVGElement.cpp +=================================================================== +--- khtml/svg/SVGElement.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/svg/SVGElement.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -154,7 +154,7 @@ + else*/ + if (attr->id() == ATTR_ID) { + setHasID(); +- document()->incDOMTreeVersion(); ++ document()->incDOMTreeVersion(DocumentImpl::TV_IDNameHref); + } else + StyledElement::parseAttribute(attr); + } +Index: khtml/html/html_miscimpl.cpp +=================================================================== +--- khtml/html/html_miscimpl.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/html/html_miscimpl.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -56,7 +56,7 @@ + + QHash<QString,QList<NodeImpl*>* > nameCache; + +- CollectionCache(): nameCache(){} ++ CollectionCache(): Cache(DocumentImpl::TV_IDNameHref) {} + + virtual void clear(DocumentImpl* doc) + { +Index: khtml/html/html_formimpl.cpp +=================================================================== +--- khtml/html/html_formimpl.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/html/html_formimpl.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -71,6 +71,7 @@ + + using namespace DOM; + using namespace khtml; ++using namespace WTF; + + HTMLFormElementImpl::HTMLFormElementImpl(DocumentImpl *doc, bool implicit) + : HTMLElementImpl(doc) +@@ -245,6 +246,19 @@ + return str; + } + ++Vector<HTMLGenericFormElementImpl*> HTMLFormElementImpl::gatherInTreeOrder(NodeImpl* root, ++ const HashSet<NodeImpl*>& toGather) ++{ ++ Vector<HTMLGenericFormElementImpl*> out; ++ out.reserveCapacity(toGather.size()); ++ ++ for (NodeImpl* cur = root; cur; cur = cur->traverseNextNode(root)) { ++ if (toGather.contains(cur)) ++ out.append(static_cast<HTMLGenericFormElementImpl*>(cur)); ++ } ++ return out; ++} ++ + QByteArray HTMLFormElementImpl::formData(bool& ok) + { + #ifdef FORMS_DEBUG +@@ -296,9 +310,27 @@ + m_encCharset[i] = m_encCharset[i].toLatin1() == ' ' ? QChar('-') : m_encCharset[i].toLower(); + + QStringList fileUploads, fileNotUploads; ++ ++ /** ++ Frameworks such as mootools Sortables expect form element values to be submitted in ++ tree order (and HTML5 specifies this behavior); however formElements need not be ++ ordered thus. Hence we walk through the tree and the formElements as we go --- ++ first in our kids, then if needed in the parent ++ */ ++ HashSet<NodeImpl*> formElementsSet; ++ foreach (HTMLGenericFormElementImpl* fe, formElements) ++ formElementsSet.add(fe); ++ ++ Vector<HTMLGenericFormElementImpl*> ordered = gatherInTreeOrder(this, formElementsSet); ++ ++ if (ordered.size() < (unsigned)formElements.size()) { ++ // Some of our elements not contained within us due to parsing hijinks -- scan ++ // the entire document. ++ ordered = gatherInTreeOrder(document()->documentElement(), formElementsSet); ++ } + +- for (QListIterator<HTMLGenericFormElementImpl*> it(formElements); it.hasNext();) { +- HTMLGenericFormElementImpl* const current = it.next(); ++ for (unsigned i = 0; i < ordered.size(); ++i) { ++ HTMLGenericFormElementImpl* const current = ordered[i]; + khtml::encodingList lst; + + if (!current->disabled() && current->encoding(codec, lst, m_multipart)) +Index: khtml/html/html_elementimpl.cpp +=================================================================== +--- khtml/html/html_elementimpl.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/html/html_elementimpl.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -161,7 +161,7 @@ + case ATTR_ID: + // unique id + setHasID(); +- document()->incDOMTreeVersion(); ++ document()->incDOMTreeVersion(DocumentImpl::TV_IDNameHref); + break; + case ATTR_CLASS: + if (attr->val()) { +@@ -175,9 +175,10 @@ + } else { + setHasClass(false); + } ++ document()->incDOMTreeVersion(DocumentImpl::TV_Class); + break; + case ATTR_NAME: +- document()->incDOMTreeVersion(); ++ document()->incDOMTreeVersion(DocumentImpl::TV_IDNameHref); + break; + case ATTR_CONTENTEDITABLE: + setContentEditable(attr); +Index: khtml/html/html_miscimpl.h +=================================================================== +--- khtml/html/html_miscimpl.h (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/html/html_miscimpl.h (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -24,6 +24,7 @@ + #define HTML_MISCIMPL_H - case QEvent::DragEnter: -@@ -1425,16 +1428,27 @@ + #include "html_elementimpl.h" ++#include "xml/dom_nodelistimpl.h" + #include "misc/shared.h" + + namespace DOM { +Index: khtml/html/html_formimpl.h +=================================================================== +--- khtml/html/html_formimpl.h (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/html/html_formimpl.h (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -28,6 +28,8 @@ + #include "html/html_elementimpl.h" + #include "html/html_imageimpl.h" + #include "dom/html_element.h" ++#include <wtf/HashSet.h> ++#include <wtf/Vector.h> - khtml::RenderObject* r = target ? target->renderer() : 0; - bool setCursor = true; -- if (r && r->isWidget()) { -+ bool forceDefault = false; -+ if (r && r->isWidget()) { - RenderWidget* rw = static_cast<RenderWidget*>(r); - KHTMLWidget* kw = qobject_cast<KHTMLView*>(rw->widget())? dynamic_cast<KHTMLWidget*>(rw->widget()) : 0; - if (kw && kw->m_kwp->isRedirected()) - setCursor = false; -+ else if (QLineEdit* le = qobject_cast<QLineEdit*>(rw->widget())) { -+ QList<QWidget*> wl = qFindChildren<QWidget *>( le, "KHTMLLineEditButton" ); -+ // force arrow cursor above lineedit clear button -+ foreach (QWidget*w, wl) { -+ if (w->underMouse()) { -+ forceDefault = true; -+ break; + class QTextCodec; + +@@ -107,6 +109,10 @@ + friend class HTMLFormCollectionImpl; + + private: ++ // Collects nodes that are inside the toGather set in tree order ++ WTF::Vector<HTMLGenericFormElementImpl*> gatherInTreeOrder(NodeImpl* root, ++ const WTF::HashSet<NodeImpl*>& toGather); ++ + void gatherWalletData(); + QList<HTMLGenericFormElementImpl*> formElements; + QList<HTMLImageElementImpl*> imgElements; +Index: khtml/html/html_inlineimpl.cpp +=================================================================== +--- khtml/html/html_inlineimpl.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/html/html_inlineimpl.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -176,7 +176,7 @@ + { + bool hadAnchor = m_hasAnchor; + m_hasAnchor = attr->val() != 0; +- document()->incDOMTreeVersion(); ++ document()->incDOMTreeVersion(DocumentImpl::TV_IDNameHref); + if (hadAnchor != m_hasAnchor) + setChanged(); + if (m_hasAnchor && document()->part() && document()->part()->dnsPrefetch()) { +Index: khtml/ecma/kjs_dom.cpp +=================================================================== +--- khtml/ecma/kjs_dom.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/ecma/kjs_dom.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -72,6 +72,12 @@ + DOCUMENT_TYPE_NODE DOM::Node::DOCUMENT_TYPE_NODE DontDelete|ReadOnly + DOCUMENT_FRAGMENT_NODE DOM::Node::DOCUMENT_FRAGMENT_NODE DontDelete|ReadOnly + NOTATION_NODE DOM::Node::NOTATION_NODE DontDelete|ReadOnly ++ DOCUMENT_POSITION_DISCONNECTED DOM::Node::DOCUMENT_POSITION_DISCONNECTED DontDelete|ReadOnly ++ DOCUMENT_POSITION_PRECEDING DOM::Node::DOCUMENT_POSITION_PRECEDING DontDelete|ReadOnly ++ DOCUMENT_POSITION_FOLLOWING DOM::Node::DOCUMENT_POSITION_FOLLOWING DontDelete|ReadOnly ++ DOCUMENT_POSITION_CONTAINS DOM::Node::DOCUMENT_POSITION_CONTAINS DontDelete|ReadOnly ++ DOCUMENT_POSITION_CONTAINED_BY DOM::Node::DOCUMENT_POSITION_CONTAINED_BY DontDelete|ReadOnly ++ DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC DOM::Node::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC DontDelete|ReadOnly + @end + */ + IMPLEMENT_CONSTANT_TABLE(DOMNodeConstants,"DOMNodeConstants") +@@ -89,6 +95,8 @@ + # DOM2 + normalize DOMNode::Normalize DontDelete|Function 0 + isSupported DOMNode::IsSupported DontDelete|Function 2 ++# DOM3 ++ compareDocumentPosition DOMNode::CompareDocumentPosition DontDelete|Function 1 + # from the EventTarget interface + addEventListener DOMNode::AddEventListener DontDelete|Function 3 + removeEventListener DOMNode::RemoveEventListener DontDelete|Function 3 +@@ -684,6 +692,13 @@ + SharedPtr<NodeListImpl> childNodes = node.childNodes(); + return getDOMNode(exec, childNodes->item(static_cast<unsigned long>(args[0]->toNumber(exec)))); + } ++ case DOMNode::CompareDocumentPosition: { ++ DOM::NodeImpl* other = toNode(args[0]); ++ if (!other) ++ setDOMException(exec, DOMException::TYPE_MISMATCH_ERR); ++ else ++ return jsNumber(node.compareDocumentPosition(other)); ++ } + } + + return jsUndefined(); +Index: khtml/ecma/kjs_window.cpp +=================================================================== +--- khtml/ecma/kjs_window.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/ecma/kjs_window.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -1652,6 +1652,10 @@ + KHTMLView *widget = p->view(); + KParts::WindowArgs winargs; + ++ // Split on commas and syntactic whitespace ++ // Testcase: 'height=600, width=950 left = 30,top = 50,statusbar=0' ++ static const QRegExp m(",|\\b\\s+(?!=)"); ++ + // scan feature argument + if (!features.isEmpty()) { + // specifying window params means false defaults +@@ -1659,7 +1663,7 @@ + winargs.setToolBarsVisible(false); + winargs.setStatusBarVisible(false); + winargs.setScrollBarsVisible(false); +- const QStringList flist = features.split(','); ++ const QStringList flist = features.trimmed().split(m); + QStringList::ConstIterator it = flist.begin(); + while (it != flist.end()) { + QString s = *it++; +Index: khtml/ecma/kjs_dom.h +=================================================================== +--- khtml/ecma/kjs_dom.h (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/ecma/kjs_dom.h (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -65,7 +65,7 @@ + OnResize, OnScroll, OnSelect, OnSubmit, OnUnload, + OffsetLeft, OffsetTop, OffsetWidth, OffsetHeight, OffsetParent, + ClientLeft, ClientTop, ClientWidth, ClientHeight, ScrollLeft, ScrollTop, +- ScrollWidth, ScrollHeight, SourceIndex, TextContent }; ++ ScrollWidth, ScrollHeight, SourceIndex, TextContent, CompareDocumentPosition }; + + //### toNode? virtual + DOM::NodeImpl* impl() const { return m_impl.get(); } +Index: khtml/CMakeLists.txt +=================================================================== +--- khtml/CMakeLists.txt (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/CMakeLists.txt (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -355,6 +355,7 @@ + set(khtmlxml_STAT_SRCS + ${CMAKE_SOURCE_DIR}/khtml/xml/dom_docimpl.cpp + ${CMAKE_SOURCE_DIR}/khtml/xml/dom_nodeimpl.cpp ++ ${CMAKE_SOURCE_DIR}/khtml/xml/dom_nodelistimpl.cpp + ${CMAKE_SOURCE_DIR}/khtml/xml/dom_textimpl.cpp + ${CMAKE_SOURCE_DIR}/khtml/xml/dom_elementimpl.cpp + ${CMAKE_SOURCE_DIR}/khtml/xml/dom_stringimpl.cpp +@@ -366,7 +367,6 @@ + ${CMAKE_SOURCE_DIR}/khtml/xml/dom2_viewsimpl.cpp + ${CMAKE_SOURCE_DIR}/khtml/xml/dom_restyler.cpp + ${CMAKE_SOURCE_DIR}/khtml/xml/ClassNames.cpp +- ${CMAKE_SOURCE_DIR}/khtml/xml/ClassNodeList.cpp + ${CMAKE_SOURCE_DIR}/khtml/xml/dom_position.cpp + ${CMAKE_SOURCE_DIR}/khtml/xml/dom_positioniterator.cpp + ${CMAKE_SOURCE_DIR}/khtml/xml/dom_selection.cpp +Index: khtml/rendering/bidi.cpp +=================================================================== +--- khtml/rendering/bidi.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/rendering/bidi.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -2078,8 +2078,10 @@ + + // For wrapping text only, include the hyphen. We need to ensure it will fit + // on the line if it shows when we break. +- if (o->style()->autoWrap()) +- tmpW += t->width(pos, 1, f); ++ if (o->style()->autoWrap()) { ++ const QChar softHyphen(0x00ad); ++ tmpW += f->charWidth(&softHyphen, 1, 0, true); ++ } + + BidiIterator startMid(0, o, pos+1); + addMidpoint(startMid); +Index: khtml/rendering/render_box.h +=================================================================== +--- khtml/rendering/render_box.h (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/rendering/render_box.h (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -141,7 +141,7 @@ + int calcHeightUsing(const Length& height); + int calcReplacedWidthUsing(WidthType widthType) const; + int calcReplacedHeightUsing(HeightType heightType) const; +- int calcPercentageHeight(const Length& height, bool treatAsReplaced = false) const; ++ int calcPercentageHeight(const Length& height) const; + int availableHeightUsing(const Length& h) const; + int availableWidthUsing(const Length& w) const; + int calcImplicitContentHeight() const; +Index: khtml/rendering/render_container.cpp +=================================================================== +--- khtml/rendering/render_container.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/rendering/render_container.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) +@@ -195,6 +195,37 @@ + if (oldChild->isPosWithStaticDim() && childrenInline()) + dirtyLinesFromChangedChild(oldChild); + ++ // We are about to take out node from the rendering tree and therefore ++ // it's possible that we're modifying the line box tree too. ++ // In order to properly recalculate it later we need ++ // to delete all the boxes from the current flow of the removed child. (vtokarev) ++ // In particular that's relevant when we're merging splitted inline flow. (continuations) ++ // We're taking the render objects from one block and insert into another ++ // so we have to force line box tree recalculation ++ if (oldChild->isInline()) { ++ if (oldChild->isText()) { ++ InlineTextBox* box = static_cast<RenderText*>(oldChild)->firstTextBox(); ++ InlineTextBox* nextTextBox; ++ assert(!box || box->parent()); ++ // delete all the text boxes ++ for (; box; box = nextTextBox) { ++ nextTextBox = box->nextTextBox(); ++ box->remove(); ++ box->deleteLine(renderArena()); ++ } ++ } else if (oldChild->isInlineFlow()) { ++ InlineFlowBox* box = static_cast<RenderFlow*>(oldChild)->firstLineBox(); ++ InlineFlowBox* nextFlowBox; ++ assert(!box || box->parent()); ++ // delete all the flow ++ for (; box; box = nextFlowBox) { ++ nextFlowBox = box->nextFlowBox(); ++ box->remove(); ++ box->deleteLine(renderArena()); + } + } + } ++ + // if oldChild is the start or end of the selection, then clear + // the selection to avoid problems of invalid pointers + +Index: khtml/rendering/render_box.cpp +=================================================================== +--- khtml/rendering/render_box.cpp (.../tags/KDE/4.2.3/kdelibs) (wersja 974229) ++++ khtml/rendering/render_box.cpp (.../branches/KDE/4.2/kdelibs) (wersja 974229) <<Diff was trimmed, longer than 597 lines>> ---- CVS-web: http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kde4-kdelibs/kde4-kdelibs-branch.diff?r1=1.12&r2=1.13&f=u http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kde4-kdelibs/kde4-kdelibs.spec?r1=1.146&r2=1.147&f=u _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit