Let the cursor blink frequency depend on qt settings.

Move checking of forked processes into independent timer.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22749 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Pavel Sanda 2008-02-02 03:05:54 +00:00
parent 9702f66938
commit 65c0ff6e6b
2 changed files with 26 additions and 6 deletions

View File

@ -197,11 +197,20 @@ GuiWorkArea::GuiWorkArea(Buffer & buffer, GuiView & lv)
{ {
buffer.workAreaManager().add(this); buffer.workAreaManager().add(this);
// Setup the signals // Setup the signals
cursor_timeout_.setInterval(400);
connect(&cursor_timeout_, SIGNAL(timeout()), connect(&cursor_timeout_, SIGNAL(timeout()),
this, SLOT(toggleCursor())); this, SLOT(toggleCursor()));
int const time = QApplication::cursorFlashTime() / 2;
if (time > 0) {
cursor_timeout_.setInterval(time);
cursor_timeout_.start(); cursor_timeout_.start();
} else
// let's initialize this just to be safe
cursor_timeout_.setInterval(500);
general_timer_.setInterval(500);
connect(&general_timer_, SIGNAL(timeout()),
this, SLOT(handleRegularEvents()));
screen_ = QPixmap(viewport()->width(), viewport()->height()); screen_ = QPixmap(viewport()->width(), viewport()->height());
cursor_ = new frontend::CursorWidget(); cursor_ = new frontend::CursorWidget();
@ -276,6 +285,11 @@ void GuiWorkArea::stopBlinkingCursor()
void GuiWorkArea::startBlinkingCursor() void GuiWorkArea::startBlinkingCursor()
{ {
showCursor(); 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(); cursor_timeout_.start();
} }
@ -446,10 +460,11 @@ void GuiWorkArea::toggleCursor()
hideCursor(); hideCursor();
else else
showCursor(); showCursor();
}
// Use this opportunity to deal with any child processes that
// have finished but are waiting to communicate this fact void GuiWorkArea::handleRegularEvents()
// to the rest of LyX. {
ForkedCallsController::handleCompletedProcesses(); ForkedCallsController::handleCompletedProcesses();
} }

View File

@ -142,7 +142,8 @@ private Q_SLOTS:
void doubleClickTimeout(); void doubleClickTimeout();
/// toggle the cursor's visibility /// toggle the cursor's visibility
void toggleCursor(); void toggleCursor();
/// events to be triggered by general_timer_ should go here
void handleRegularEvents();
/// close this work area. /// close this work area.
/// Slot for Buffer::closing signal. /// Slot for Buffer::closing signal.
void close(); void close();
@ -213,6 +214,10 @@ private:
/// ///
QTimer cursor_timeout_; 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_; SyntheticMouseEvent synthetic_mouse_event_;
/// ///