#include "rowpainter.h"
#include "gettext.h"
-#include "support/filetools.h" // LibFileSearch
#include "support/forkedcontr.h"
#include <boost/utility.hpp>
#include <boost/bind.hpp>
#include <boost/current_function.hpp>
-using lyx::support::libFileSearch;
using lyx::support::ForkedcallsController;
using std::endl;
void WorkArea::stopBlinkingCursor()
{
cursor_timeout_.stop();
+ hideCursor();
}
void WorkArea::startBlinkingCursor()
{
+ showCursor();
cursor_timeout_.restart();
}
-void WorkArea::redraw(bool singlePar)
+void WorkArea::redraw()
{
if (!buffer_view_ || !buffer_view_->buffer()) {
greyed_out_ = true;
return;
}
- buffer_view_->updateMetrics(singlePar && hasFocus());
+ // No need to do anything if this is the current view. The BufferView
+ // metrics are already up to date.
+ if (&lyx_view_ != theApp()->currentView())
+ // FIXME: it would be nice to optimize for the off-screen case.
+ buffer_view_->updateMetrics(false);
updateScrollbar();
void WorkArea::processKeySym(LyXKeySymPtr key,
key_modifier::state state)
{
- hideCursor();
+ // In order to avoid bad surprise in the middle of an operation, we better stop
+ // the blinking cursor.
+ stopBlinkingCursor();
theLyXFunc().setLyXView(&lyx_view_);
theLyXFunc().processKeySym(key, state);
- /* This is perhaps a bit of a hack. When we move
- * around, or type, it's nice to be able to see
- * the cursor immediately after the keypress. So
- * we reset the toggle timeout and force the visibility
- * of the cursor. Note we cannot do this inside
- * dispatch() itself, because that's called recursively.
+ /* When we move around, or type, it's nice to be able to see
+ * the cursor immediately after the keypress.
*/
-// if (buffer_view_->buffer())
- toggleCursor();
+ startBlinkingCursor();
}
lyx_view_.updateToolbars();
}
- // Slight hack: this is only called currently when we
- // clicked somewhere, so we force through the display
- // of the new status here.
- lyx_view_.clearMessage();
-
- // Show the cursor immediately after any operation.
- hideCursor();
- toggleCursor();
+
+ // GUI tweaks except with mouse motion with no button pressed.
+ if (!(cmd0.action == LFUN_MOUSE_MOTION
+ && cmd0.button() == mouse_button::none)) {
+ // Slight hack: this is only called currently when we
+ // clicked somewhere, so we force through the display
+ // of the new status here.
+ lyx_view_.clearMessage();
+
+ // Show the cursor immediately after any operation.
+ hideCursor();
+ toggleCursor();
+ }
if (needRedraw)
redraw();
lyx_view_.message(_("Formatting document..."));
buffer_view_->workAreaResize(width(), height());
lyx_view_.updateLayoutChoice();
- redraw();
lyx_view_.busy(false);
lyx_view_.clearMessage();
}