From d582d487ff9c390a54dbfb0b5ba1345e4599dc6c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Peter=20K=C3=BCmmel?= Date: Sat, 2 Jun 2007 07:58:11 +0000 Subject: [PATCH] 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 --- src/frontends/qt4/GuiWorkArea.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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() -- 2.39.5