diff --git a/src/frontends/qt4/GuiWorkArea.cpp b/src/frontends/qt4/GuiWorkArea.cpp index e31d15a55a..524494788c 100644 --- a/src/frontends/qt4/GuiWorkArea.cpp +++ b/src/frontends/qt4/GuiWorkArea.cpp @@ -197,11 +197,20 @@ GuiWorkArea::GuiWorkArea(Buffer & buffer, GuiView & lv) { buffer.workAreaManager().add(this); // Setup the signals - cursor_timeout_.setInterval(400); connect(&cursor_timeout_, SIGNAL(timeout()), this, SLOT(toggleCursor())); + + int const time = QApplication::cursorFlashTime() / 2; + if (time > 0) { + cursor_timeout_.setInterval(time); + cursor_timeout_.start(); + } else + // let's initialize this just to be safe + cursor_timeout_.setInterval(500); - cursor_timeout_.start(); + general_timer_.setInterval(500); + connect(&general_timer_, SIGNAL(timeout()), + this, SLOT(handleRegularEvents())); screen_ = QPixmap(viewport()->width(), viewport()->height()); cursor_ = new frontend::CursorWidget(); @@ -276,6 +285,11 @@ void GuiWorkArea::stopBlinkingCursor() void GuiWorkArea::startBlinkingCursor() { showCursor(); + //we're not supposed to cache this value. + int const time = QApplication::cursorFlashTime() / 2; + if (time <= 0) + return; + cursor_timeout_.setInterval(time); cursor_timeout_.start(); } @@ -446,10 +460,11 @@ void GuiWorkArea::toggleCursor() hideCursor(); else showCursor(); +} - // Use this opportunity to deal with any child processes that - // have finished but are waiting to communicate this fact - // to the rest of LyX. + +void GuiWorkArea::handleRegularEvents() +{ ForkedCallsController::handleCompletedProcesses(); } diff --git a/src/frontends/qt4/GuiWorkArea.h b/src/frontends/qt4/GuiWorkArea.h index 313e5fbc87..ed54cb87a6 100644 --- a/src/frontends/qt4/GuiWorkArea.h +++ b/src/frontends/qt4/GuiWorkArea.h @@ -142,7 +142,8 @@ private Q_SLOTS: void doubleClickTimeout(); /// toggle the cursor's visibility void toggleCursor(); - + /// events to be triggered by general_timer_ should go here + void handleRegularEvents(); /// close this work area. /// Slot for Buffer::closing signal. void close(); @@ -213,6 +214,10 @@ private: /// QTimer cursor_timeout_; + /// this timer is used for any regular events one wants to + /// perform. at present it is used to check if forked processes + /// are done. + QTimer general_timer_; /// SyntheticMouseEvent synthetic_mouse_event_; ///