Bug 128738

Summary: problem with new slashdot.org design
Product: [Applications] konqueror Reporter: Christophe Prud'Homme <prudhomm>
Component: khtml rendererAssignee: Konqueror Developers <konq-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: duchier, Stefan.Borggraefe
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Attachments: screen snapshot
screen snapshot

Description Christophe Prud'Homme 2006-06-07 13:54:14 UTC
Version:           3.5.3 (using KDE 3.5.3, Debian Package 4:3.5.3-1 (testing/unstable))
Compiler:          Target: x86_64-linux-gnu
OS:                Linux (x86_64) release 2.6.16-1-amd64-k8-smp

slashdot.org just changed its design. konqueror has problems 
showing it properly:

 1- some of the menus on the left are aggregated at the top left of
   the page
 2- if the window is resized, then the menus appear properly at
   their rightful place.
 3- if the windows was resized and menus ok, and I click on a new
   menu item, the same problem described in (1) occurs and I need
   to resize like in (2) to correct it.


Since the rendering bug gets fixed when the konqueror window
is resized, my conclusion is that it is a konqueror bug.

Best regards
Comment 1 Christophe Prud'Homme 2006-06-07 14:46:06 UTC
Created attachment 16501 [details]
screen snapshot

menus are scrambled on the left
Comment 2 Christophe Prud'Homme 2006-06-07 14:47:02 UTC
Created attachment 16502 [details]
screen snapshot

after resize, menus are ok
Comment 3 Allan Sandfeld 2006-06-07 15:02:26 UTC
Confirmed. There are lot of things wrong with the redesign, but this is most likely a Konqueror bug.
Comment 4 Timo Springmann 2006-06-07 15:33:22 UTC
You also can mark the broken menu with your mouse + left button and it suddenly appears at the right position.
Comment 5 Denys Duchier 2006-06-07 16:10:42 UTC
on my machine, when initally loading the slashdot page the menus are properly laid out for a brief instant, and then all but the topmost get warped into the top left corner.  subsequently, any operation affecting size gets the menus back into place.  Switching between existing tabs sometimes has a (partial) effect, sometimes not.
Comment 6 Allan Sandfeld 2006-06-13 23:59:39 UTC
The content is misplaced after this JS-statement:
 this.el.style.overflow = "hidden";

It seems creating the newly created overflow clip gets an incorrect position. I am still unsure why, but so far the following patch can solve it:

Index: xml/dom_nodeimpl.cpp
===================================================================
--- xml/dom_nodeimpl.cpp        (revision 550627)
+++ xml/dom_nodeimpl.cpp        (working copy)
@@ -781,8 +781,10 @@
     EDisplay display2 = s2 ? s2->display() : NONE;
     EPosition position1 = s1 ? s1->position() : STATIC;
     EPosition position2 = s2 ? s2->position() : STATIC;
+    EOverflow overflow1 = s1 ? s1->overflow() : OVISIBLE;
+    EOverflow overflow2 = s2 ? s2->overflow() : OVISIBLE;

-    if (display1 != display2 || position1 != position2)
+    if (display1 != display2 || position1 != position2 || overflow1 != overflow2)
         ch = Detach;
     else if ( !s1 || !s2 )
        ch = Inherit;
Comment 7 Allan Sandfeld 2006-06-14 00:18:50 UTC
SVN commit 551201 by carewolf:

Set position when inserting a new layer.
BUG: 128738


 M  +2 -0      render_box.cpp  


--- branches/KDE/3.5/kdelibs/khtml/rendering/render_box.cpp #551200:551201
@@ -159,6 +159,8 @@
         if (!m_layer) {
             m_layer = new (renderArena()) RenderLayer(this);
             m_layer->insertOnlyThisLayer();
+            if (parent() && containingBlock())
+                m_layer->updateLayerPosition();
         }
     }
     else if (m_layer && !isCanvas()) {