X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fscreen.C;h=d7a1f34e55dad26386c26ecefe6c9f32f52c53dc;hb=36945644e70db39a8316570bb44fabc7a3bd3d49;hp=d9b5b7c2be2c169e286595bc7c4153bac2b54bce;hpb=a2cd656e256fa50aec3f03851b63a4bc6cdd666d;p=lyx.git diff --git a/src/frontends/screen.C b/src/frontends/screen.C index d9b5b7c2be..d7a1f34e55 100644 --- a/src/frontends/screen.C +++ b/src/frontends/screen.C @@ -21,6 +21,7 @@ #include "BufferView.h" #include "buffer.h" #include "bufferparams.h" +#include "coordcache.h" #include "cursor.h" #include "debug.h" #include "language.h" @@ -34,8 +35,6 @@ #include "rowpainter.h" #include "version.h" -#include "insets/updatableinset.h" - #include "graphics/GraphicsImage.h" #include "graphics/GraphicsLoader.h" @@ -146,10 +145,6 @@ void LyXScreen::checkAndGreyOut() void LyXScreen::showCursor(BufferView & bv) { - // this is needed to make sure we copy back the right - // pixmap on the hide for the Qt frontend - lyx_gui::sync_events(); - if (cursor_visible_) return; @@ -174,17 +169,18 @@ void LyXScreen::showCursor(BufferView & bv) if (realfont.language() == latex_language) shape = BAR_SHAPE; - int ascent, descent; - bv.cursor().getDim(ascent, descent); - int h = ascent + descent; + LyXFont const font = bv.cursor().getFont(); + int const asc = font_metrics::maxAscent(font); + int const des = font_metrics::maxDescent(font); + int h = asc + des; int x = 0; int y = 0; bv.cursor().getPos(x, y); - y -= ascent; + y -= asc; //lyxerr << "LyXScreen::showCursor x: " << x << " y: " << y << endl; - // if it doesn't fit entirely on the screen, don't try to show it - if (y < 0 || y + h > workarea().workHeight()) + // if it doesn't touch the screen, don't try to show it + if (y + h < 0 || y >= workarea().workHeight()) return; cursor_visible_ = true; @@ -211,16 +207,21 @@ void LyXScreen::toggleCursor(BufferView & bv) } +void LyXScreen::prepareCursor() +{ + cursor_visible_ = false; +} + + void LyXScreen::redraw(BufferView & bv, ViewMetricsInfo const & vi) { greyed_out_ = false; workarea().getPainter().start(); - hideCursor(); paintText(bv, vi); lyxerr[Debug::DEBUG] << "Redraw screen" << endl; expose(0, 0, workarea().workWidth(), workarea().workHeight()); workarea().getPainter().end(); - showCursor(bv); + theCoords.doneUpdating(); }