From: Peter Kümmel Date: Sat, 2 Jun 2007 07:58:11 +0000 (+0000) Subject: fix scrolling bug: 3320 and 3652, maybe not perfect X-Git-Tag: 1.6.10~9517 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=d582d487ff9c390a54dbfb0b5ba1345e4599dc6c;p=features.git fix scrolling bug: 3320 and 3652, maybe not perfect git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18629 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/qt4/GuiWorkArea.cpp b/src/frontends/qt4/GuiWorkArea.cpp index 7ae001d2ec..4dbe5ab66c 100644 --- a/src/frontends/qt4/GuiWorkArea.cpp +++ b/src/frontends/qt4/GuiWorkArea.cpp @@ -48,6 +48,11 @@ #include #include +#ifdef Q_WS_X11 +#include +extern "C" int XEventsQueued(Display *display, int mode); +#endif + #ifdef Q_WS_WIN int const CursorWidth = 2; #else @@ -234,6 +239,7 @@ void GuiWorkArea::setScrollbarParams(int h, int scroll_pos, int scroll_line_step void GuiWorkArea::adjustViewWithScrollBar(int) { scrollBufferView(verticalScrollBar()->sliderPosition()); + QApplication::syncX(); } @@ -414,6 +420,19 @@ void GuiWorkArea::generateSyntheticMouseEvent() 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()