Bug 72420 - [test case] Form objects unusable on large forms
Summary: [test case] Form objects unusable on large forms
Status: RESOLVED FIXED
Alias: None
Product: konqueror
Classification: Applications
Component: khtml forms (show other bugs)
Version: 4.0
Platform: unspecified Linux
: NOR grave
Target Milestone: ---
Assignee: Konqueror Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-01-11 21:58 UTC by drac
Modified: 2004-01-15 10:23 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description drac 2004-01-11 21:58:13 UTC
Version:           4.0 (using KDE 3.1.94 (CVS >= 20031206), SuSE)
Compiler:          gcc version 3.3.1 (SuSE Linux)
OS:          Linux (i686) release 2.6.0-1-default

Most form elements on large forms are not behaving correctly. It's not possible to enter text into textfields, clicking a submit button does not submit the form etc.

Here's one example:

http://www.lillepuu.com/ma_bug.html

Buttons are in the middle of the page under the table so scroll right.

When I reduced number of the table columns to about 5-6, then all the elements were behaving correctly.
Comment 1 Lars Knoll 2004-01-15 10:23:32 UTC
Subject: kdelibs/khtml

CVS commit by knoll: 

* rendering/render_table.cpp: set overflowWidth to width
  when layouting (#72420)
* xml/dom2_eventsimpl.cpp rendering/render_block.cpp
  nodeAtPoint() should always use contents coordinates.

Reviewed by Dirk

CCMAIL: 72420-done@bugs.kde.org


  M +7 -0      ChangeLog   1.159
  M +0 -4      rendering/render_block.cpp   1.20
  M +1 -0      rendering/render_table.cpp   1.251
  M +5 -1      xml/dom2_eventsimpl.cpp   1.43


--- kdelibs/khtml/ChangeLog  #1.158:1.159
@@ -1,2 +1,9 @@
+2004-01-15  Lars Knoll <knoll@kde.org>
+
+        * rendering/render_table.cpp: set overflowWidth to width 
+        when layouting (#72420)
+        * xml/dom2_eventsimpl.cpp rendering/render_block.cpp
+        nodeAtPoint() should always use contents coordinates.
+
 2004-01-14  Dirk Mueller  <mueller@kde.org>
 

--- kdelibs/khtml/rendering/render_block.cpp  #1.19:1.20
@@ -1856,8 +1856,4 @@ bool RenderBlock::nodeAtPoint(NodeInfo& 
         if (style()->hidesOverflow() && m_layer)
             m_layer->subtractScrollOffset(stx, sty);
-        if (isCanvas()) {
-            stx += static_cast<RenderCanvas*>(this)->view()->contentsX();
-            sty += static_cast<RenderCanvas*>(this)->view()->contentsY();
-        }
         FloatingObject* o;
         QPtrListIterator<FloatingObject> it(*m_floatingObjects);

--- kdelibs/khtml/rendering/render_table.cpp  #1.250:1.251
@@ -245,4 +245,5 @@ void RenderTable::layout()
     //int oldWidth = m_width;
     calcWidth();
+    m_overflowWidth = m_width;
 
     // the optimization below doesn't work since the internal table

--- kdelibs/khtml/xml/dom2_eventsimpl.cpp  #1.42:1.43
@@ -29,4 +29,5 @@
 #include "xml/dom_docimpl.h"
 #include "rendering/render_layer.h"
+#include "khtmlview.h"
 
 #include <kdebug.h>
@@ -361,5 +362,8 @@ void MouseEventImpl::computeLayerPos()
     if (doc) {
         khtml::RenderObject::NodeInfo renderInfo(true, false);
-        doc->renderer()->layer()->nodeAtPoint(renderInfo, m_clientX, m_clientY);
+
+        int x = doc->view()->contentsX();
+        int y = doc->view()->contentsY();
+        doc->renderer()->layer()->nodeAtPoint(renderInfo, m_clientX + x, m_clientY + y);
 
         NodeImpl *node = renderInfo.innerNonSharedNode();