Version: unknown (using KDE 3.1.9) Compiler: gcc version 2.95.3 20010315 (SuSE) OS: Linux (i686) release 2.4.18-4GB On Yahoo! Mail pages, you can scroll up and down very smoothly by dragging the scrollbar, but you can't scroll up and down using the arrow keys or pageup/pagedown, even after clicking in the page body. This is in 3.1 and current CVS. Will try and attach a test case.
Created attachment 1889 [details] testcase OK, it's something to do with the javascript. I've removed lots of the crap from the page. What remains still breaks scrolling. The tables seem to be important so I assume this is some kind of Javascript/css issue. I'll also attach the whole original page, in case anyone decides that the cut-down version would be screwed up in any browser :-)
Created attachment 1890 [details] the original page the original page that breaks keyboard scrolling.
I can confirm this-- scrolling works in the Yahoo Mail folders view, but doesn't work when viewing messages themselves.
Hmm, I don't call a testcase something that references 3 external js scripts and is still very big itself :) I have reduced it to the following testcase: <script> document.onkeydown = function() { } </script> foo<br><br>foo<br><br>foo<br><br>foo<br><br>foo<br><br> foo<br><br>foo<br><br>foo<br><br>foo<br><br>foo<br><br> foo<br><br>foo<br><br>foo<br><br>foo<br><br>foo<br><br> foo<br><br>foo<br><br>foo<br><br>foo<br><br>foo<br><br> foo<br><br>foo<br><br>foo<br><br>foo<br><br>foo<br><br> and I suspect the code in NodeImpl::dispatchKeyEvent.
This fixes it for me. Index: khtmlview.cpp =================================================================== RCS file: /home/kde/kdelibs/khtml/khtmlview.cpp,v retrieving revision 1.570 diff -u -p -r1.570 khtmlview.cpp --- khtmlview.cpp 20 Oct 2003 21:10:37 -0000 1.570 +++ khtmlview.cpp 23 Oct 2003 11:41:02 -0000 @@ -921,12 +921,13 @@ void KHTMLView::keyPressEvent( QKeyEvent return; } } - if (!_ke->text().isNull() && m_part->xmlDocImpl()->getHTMLEventListener(EventImpl::KHTML_KEYDOWN_EVENT)) - if (m_part->xmlDocImpl()->documentElement()->dispatchKeyEvent(_ke)) - { + if (!_ke->text().isNull() && m_part->xmlDocImpl()->getHTMLEventListener(EventImpl::KHTML_KEYDOWN_EVENT)) { + // If listener returned false, stop here. Otherwise handle standard keys (#60403). + if (!m_part->xmlDocImpl()->documentElement()->dispatchKeyEvent(_ke)) { _ke->accept(); return; } + } } int offs = (clipper()->height() < 30) ? clipper()->height() : 30;
Applied to CVS.