Hello community,
here is the log from the commit of package kdelibs4 for openSUSE:Factory
checked in at Tue Oct 6 00:01:55 CEST 2009.
--------
--- KDE/kdelibs4/kdelibs4.changes 2009-09-24 15:14:27.000000000 +0200
+++ kdelibs4/kdelibs4.changes 2009-10-04 13:40:49.000000000 +0200
@@ -1,0 +2,6 @@
+Sun Oct 4 10:55:56 UTC 2009 - beineri@opensuse.org
+
+- update khtml to 4.3.2 release level for several crash fixes, like
+ gmail (kde#202699), bahn.de (kde#204050), kde#192755, kde#206038
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
New:
----
khtml-4.3.2.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdelibs4.spec ++++++
--- /var/tmp/diff_new_pack.zfGcMJ/_old 2009-10-06 00:01:02.000000000 +0200
+++ /var/tmp/diff_new_pack.zfGcMJ/_new 2009-10-06 00:01:02.000000000 +0200
@@ -43,7 +43,7 @@
Summary: KDE Base Libraries
Url: http://www.kde.org
Version: 4.3.1
-Release: 3
+Release: 4
Requires: libstrigi0 >= %( echo `rpm -q --queryformat '%{VERSION}' strigi-devel`)
Requires: soprano >= %( echo `rpm -q --queryformat '%{VERSION}' libsoprano-devel`)
Recommends: strigi >= %( echo `rpm -q --queryformat '%{VERSION}' strigi-devel`)
@@ -72,6 +72,7 @@
Patch19: oom-protect.diff
Patch20: ignore-inline-menu.diff
Patch21: policykit-workaround.patch
+Patch22: khtml-4.3.2.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %suse_version > 1010
%requires_ge libqt4-x11
@@ -134,6 +135,7 @@
%patch19
%patch20
%patch21 -p1
+%patch22
#
# define KDE version exactly
#
++++++ khtml-4.3.2.diff ++++++
diff -ruN khtml/ecma/kjs_window.cpp khtml/ecma/kjs_window.cpp
--- khtml/ecma/kjs_window.cpp 2009-07-21 17:16:12.000000000 +0200
+++ khtml/ecma/kjs_window.cpp 2009-10-02 10:18:12.000000000 +0200
@@ -2107,7 +2107,10 @@
JSEventListener *listener = Window::retrieveActive(exec)->getJSEventListener(args[1]);
if (listener) {
DOM::DocumentImpl* docimpl = static_cast(part->document().handle());
- docimpl->addWindowEventListener(EventName::fromString(args[0]->toString(exec).domString()),listener,args[2]->toBoolean(exec));
+ if (docimpl)
+ docimpl->addWindowEventListener(EventName::fromString(args[0]->toString(exec).domString()),listener,args[2]->toBoolean(exec));
+ else
+ kWarning() << "document missing on Window::AddEventListener. why?";
}
return jsUndefined();
}
@@ -2115,7 +2118,10 @@
JSEventListener *listener = Window::retrieveActive(exec)->getJSEventListener(args[1]);
if (listener) {
DOM::DocumentImpl* docimpl = static_cast(part->document().handle());
- docimpl->removeWindowEventListener(EventName::fromString(args[0]->toString(exec).domString()),listener,args[2]->toBoolean(exec));
+ if (docimpl)
+ docimpl->removeWindowEventListener(EventName::fromString(args[0]->toString(exec).domString()),listener,args[2]->toBoolean(exec));
+ else
+ kWarning() << "document missing on Window::RemoveEventListener. why?";
}
return jsUndefined();
}
diff -ruN khtml/html/html_baseimpl.cpp khtml/html/html_baseimpl.cpp
--- khtml/html/html_baseimpl.cpp 2009-02-12 11:24:41.000000000 +0100
+++ khtml/html/html_baseimpl.cpp 2009-10-02 10:18:11.000000000 +0200
@@ -220,7 +220,8 @@
RenderStyle* style = document()->styleSelector()->styleForElement(this);
style->ref();
- if (parentNode()->renderer() && style->display() != NONE) {
+ if (parentNode()->renderer() && parentNode()->renderer()->childAllowed()
+ && style->display() != NONE) {
if (style->display() == BLOCK)
// only use the quirky class for block display
m_render = new (document()->renderArena()) RenderBody(this);
@@ -371,7 +372,8 @@
node = static_cast(node->parentNode());
}
- if (parentNode()->renderer() && document()->isURLAllowed(url.string())) {
+ if (parentNode()->renderer() && parentNode()->renderer()->childAllowed()
+ && document()->isURLAllowed(url.string())) {
RenderStyle* _style = document()->styleSelector()->styleForElement(this);
_style->ref();
if ( _style->display() != NONE ) {
@@ -620,10 +622,11 @@
}
// ignore display: none
- if ( parentNode()->renderer() ) {
+ if ( parentNode()->renderer() && parentNode()->renderer()->childAllowed() ) {
+ RenderStyle* _style = document()->styleSelector()->styleForElement(this);
m_render = new (document()->renderArena()) RenderFrameSet(this);
- m_render->setStyle(document()->styleSelector()->styleForElement(this));
- parentNode()->renderer()->addChild(m_render, nextRenderer());
+ m_render->setStyle(_style);
+ parentNode()->renderer()->addChild(m_render, nextRenderer());
}
NodeBaseImpl::attach();
@@ -754,8 +757,8 @@
RenderStyle* style = document()->styleSelector()->styleForElement(this);
style->ref();
- if (document()->isURLAllowed(url.string()) &&
- parentNode()->renderer() && style->display() != NONE) {
+ if (document()->isURLAllowed(url.string()) && parentNode()->renderer()
+ && parentNode()->renderer()->childAllowed() && style->display() != NONE) {
m_render = new (document()->renderArena()) RenderPartObject(this);
m_render->setStyle(style);
parentNode()->renderer()->addChild(m_render, nextRenderer());
diff -ruN khtml/khtml_global.cpp khtml/khtml_global.cpp
--- khtml/khtml_global.cpp 2008-10-23 01:04:51.000000000 +0200
+++ khtml/khtml_global.cpp 2009-10-02 10:18:12.000000000 +0200
@@ -255,5 +255,5 @@
kWarning(6000) << "Document" << s_docs->first() << "wasn't deleted";
}
}
- assert( !s_refcnt );
+ //assert( !s_refcnt );
}
diff -ruN khtml/khtmlview.cpp khtml/khtmlview.cpp
--- khtml/khtmlview.cpp 2009-10-04 12:53:26.000000000 +0200
+++ khtml/khtmlview.cpp 2009-10-02 10:18:12.000000000 +0200
@@ -2289,6 +2289,17 @@
keyReleaseEvent(ke);
block = true;
}
+
+ if (qobject_cast(w->parentWidget()) &&
+ e->type() == QEvent::KeyPress) {
+ // Since keypress events on the upload widget will
+ // be forwarded to the lineedit anyway,
+ // block the original copy at this level to prevent
+ // double-emissions of events it doesn't accept
+ e->ignore();
+ block = true;
+ }
+
break;
case QEvent::FocusIn:
case QEvent::FocusOut:
diff -ruN khtml/xml/dom_docimpl.cpp khtml/xml/dom_docimpl.cpp
--- khtml/xml/dom_docimpl.cpp 2009-06-09 18:09:23.000000000 +0200
+++ khtml/xml/dom_docimpl.cpp 2009-10-02 10:18:12.000000000 +0200
@@ -2451,8 +2451,11 @@
if (m_focusNode != newFocusNode) {
NodeImpl *oldFocusNode = m_focusNode;
- // Set focus on the new node
- m_focusNode = newFocusNode;
+
+ // We are blurring, so m_focusNode ATM is 0; this is observable to the
+ // event handlers.
+ m_focusNode = 0;
+
// Remove focus from the existing focus node (if any)
if (oldFocusNode) {
if (oldFocusNode->active())
@@ -2470,7 +2473,8 @@
oldFocusNode->dispatchUIEvent(EventImpl::DOMFOCUSOUT_EVENT);
if ((oldFocusNode == this) && oldFocusNode->hasOneRef()) {
- oldFocusNode->deref(); // deletes this
+ oldFocusNode->deref(); // may delete this, if there are not kids keeping it alive...
+ // so we better not add any.
return;
}
else {
@@ -2478,7 +2482,11 @@
}
}
- if (m_focusNode) {
+ // It's possible that one of the blur, etc. handlers has already set focus.
+ // in that case, we don't want to override it.
+ if (!m_focusNode && newFocusNode) {
+ // Set focus on the new node
+ m_focusNode = newFocusNode;
m_focusNode->ref();
m_focusNode->dispatchHTMLEvent(EventImpl::FOCUS_EVENT,false,false);
if (m_focusNode != newFocusNode) return;
diff -ruN khtml/xml/dom_elementimpl.cpp khtml/xml/dom_elementimpl.cpp
--- khtml/xml/dom_elementimpl.cpp 2009-08-27 10:19:09.000000000 +0200
+++ khtml/xml/dom_elementimpl.cpp 2009-10-02 10:18:12.000000000 +0200
@@ -799,7 +799,7 @@
void ElementImpl::defaultEventHandler(EventImpl *e)
{
- if (document()->part() && e->id() == EventImpl::KEYPRESS_EVENT && e->isKeyRelatedEvent()) {
+ if (!e->defaultHandled() && document()->part() && e->id() == EventImpl::KEYPRESS_EVENT && e->isKeyRelatedEvent()) {
const KHTMLPart* part = document()->part();
bool isContentEditableElement = part->isEditable() || (focused() && isContentEditable());
if (isContentEditableElement || part->isCaretMode()) {
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org