I've applied attached patch which only eats page up/down keys on x11
and fixes the scrollbar scrolling bug. This is a conservative approach.

And because we really need more testing until the release it
is now in svn (I know, I know, I know,... but somehow this
thread must find an end, and we could still revert).

Here the bugzilla entries:
http://bugzilla.lyx.org/show_bug.cgi?id=3652
http://bugzilla.lyx.org/show_bug.cgi?id=3320

Peter
Index: src/frontends/qt4/GuiWorkArea.cpp
===================================================================
--- src/frontends/qt4/GuiWorkArea.cpp   (revision 18628)
+++ src/frontends/qt4/GuiWorkArea.cpp   (working copy)
@@ -48,6 +48,11 @@
 #include <boost/bind.hpp>
 #include <boost/current_function.hpp>
 
+#ifdef Q_WS_X11
+#include <QX11Info>
+extern "C" int XEventsQueued(Display *display, int mode);
+#endif
+
 #ifdef Q_WS_WIN
 int const CursorWidth = 2;
 #else
@@ -234,6 +239,7 @@
 void GuiWorkArea::adjustViewWithScrollBar(int)
 {
        scrollBufferView(verticalScrollBar()->sliderPosition());
+       QApplication::syncX();
 }
 
 
@@ -414,6 +420,19 @@
 
 void GuiWorkArea::keyPressEvent(QKeyEvent * e)
 {
+       // do nothing if there are other events
+       // (the auto repeated events come too fast)
+       // \todo FIXME: remove hard coded Qt keysprocess the key binding
+#ifdef Q_WS_X11
+       if (XEventsQueued(QX11Info::display(), 0) > 1   && e->isAutoRepeat() 
+                       && (Qt::Key_PageDown || Qt::Key_PageUp)) {
+               LYXERR(Debug::KEY)      
+                       << BOOST_CURRENT_FUNCTION << endl
+                       << "sysstem is busy: scroll key event ignored" << endl;
+               e->ignore();
+               return;
+       }
+#endif
 
        LYXERR(Debug::KEY) << BOOST_CURRENT_FUNCTION
                << " count=" << e->count()

Reply via email to