From 4a6095fe7e32e2c810581141bb9568932f953bb5 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Thu, 16 Mar 2006 14:27:47 +0000 Subject: [PATCH] bug 2298: cursorTop/Bottom/Home/End does not redraw after dEPM git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_4_X@13396 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/ChangeLog | 8 ++++++++ src/frontends/qt2/QWorkArea.C | 3 ++- src/insets/insetgraphics.C | 6 ++++++ src/lyxtext.h | 8 ++++---- src/text2.C | 18 +++++++++--------- src/text3.C | 20 ++++++++++---------- status.14x | 3 +++ 7 files changed, 42 insertions(+), 24 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index f7181d8ca6..963fac4f88 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2006-03-16 Félix-Antoine Bourbonnais + + * text3.C (dispatch): set needsUpdate according to the return + value of the methods below (bug 2298) + + * text2.C (cursorTop, cursorBottom, cursorHome, cursorEnd): return + true if dEPM triggered. + 2006-03-16 Jürgen Spitzmüller * text.C (getPossibleLabel): get a sensible prefix inside figure and diff --git a/src/frontends/qt2/QWorkArea.C b/src/frontends/qt2/QWorkArea.C index 0dbefef5e3..8145f0de36 100644 --- a/src/frontends/qt2/QWorkArea.C +++ b/src/frontends/qt2/QWorkArea.C @@ -62,7 +62,8 @@ QWorkArea::QWorkArea(LyXView &, int, int) content_->show(); - content_->setBackgroundColor(lcolorcache.get(LColor::background)); + // It is said that this helps reduce flicker + content_->setBackgroundMode(NoBackground); QHBoxLayout * vl = new QHBoxLayout(this); vl->addWidget(content_, 5); diff --git a/src/insets/insetgraphics.C b/src/insets/insetgraphics.C index e0ce2256ec..b75d79a316 100644 --- a/src/insets/insetgraphics.C +++ b/src/insets/insetgraphics.C @@ -748,9 +748,15 @@ int InsetGraphics::latex(Buffer const & buf, ostream & os, string after; // Do we want subcaptions? if (params().subcaption) { + if (runparams.moving_arg) + before += "\\protect"; before += "\\subfigure[" + params().subcaptionText + "]{"; after = '}'; } + + if (runparams.moving_arg) + before += "\\protect"; + // We never use the starred form, we use the "clip" option instead. before += "\\includegraphics"; diff --git a/src/lyxtext.h b/src/lyxtext.h index db3b180bc1..28507d39f1 100644 --- a/src/lyxtext.h +++ b/src/lyxtext.h @@ -209,17 +209,17 @@ public: /// bool cursorDownParagraph(LCursor & cur); /// - void cursorHome(LCursor & cur); + bool cursorHome(LCursor & cur); /// - void cursorEnd(LCursor & cur); + bool cursorEnd(LCursor & cur); /// bool cursorPrevious(LCursor & cur); /// bool cursorNext(LCursor & cur); /// - void cursorTop(LCursor & cur); + bool cursorTop(LCursor & cur); /// - void cursorBottom(LCursor & cur); + bool cursorBottom(LCursor & cur); /// bool Delete(LCursor & cur); /// diff --git a/src/text2.C b/src/text2.C index fea1c4c697..42ee4e5358 100644 --- a/src/text2.C +++ b/src/text2.C @@ -476,16 +476,16 @@ void LyXText::setFont(LCursor & cur, LyXFont const & font, bool toggleall) // the cursor set functions have a special mechanism. When they // realize you left an empty paragraph, they will delete it. -void LyXText::cursorHome(LCursor & cur) +bool LyXText::cursorHome(LCursor & cur) { BOOST_ASSERT(this == cur.text()); Row const & row = cur.paragraph().getRow(cur.pos(),cur.boundary()); - setCursor(cur, cur.pit(), row.pos()); + return setCursor(cur, cur.pit(), row.pos()); } -void LyXText::cursorEnd(LCursor & cur) +bool LyXText::cursorEnd(LCursor & cur) { BOOST_ASSERT(this == cur.text()); // if not on the last row of the par, put the cursor before @@ -494,7 +494,7 @@ void LyXText::cursorEnd(LCursor & cur) pos_type end = cur.textRow().endpos(); if (end == 0) // empty text, end-1 is no valid position - return; + return false; bool boundary = false; if (end != cur.lastpos()) { if (!cur.paragraph().isLineSeparator(end-1) @@ -503,21 +503,21 @@ void LyXText::cursorEnd(LCursor & cur) else --end; } - setCursor(cur, cur.pit(), end, true, boundary); + return setCursor(cur, cur.pit(), end, true, boundary); } -void LyXText::cursorTop(LCursor & cur) +bool LyXText::cursorTop(LCursor & cur) { BOOST_ASSERT(this == cur.text()); - setCursor(cur, 0, 0); + return setCursor(cur, 0, 0); } -void LyXText::cursorBottom(LCursor & cur) +bool LyXText::cursorBottom(LCursor & cur) { BOOST_ASSERT(this == cur.text()); - setCursor(cur, cur.lastpit(), boost::prior(paragraphs().end())->size()); + return setCursor(cur, cur.lastpit(), boost::prior(paragraphs().end())->size()); } diff --git a/src/text3.C b/src/text3.C index 9acb2a7610..d913e026a7 100644 --- a/src/text3.C +++ b/src/text3.C @@ -387,7 +387,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) if (cur.depth() == 1) { if (!cur.mark()) cur.clearSelection(); - cursorTop(cur); + needsUpdate = cursorTop(cur); finishChange(cur, false); } else { cur.undispatched(); @@ -398,7 +398,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) if (cur.depth() == 1) { if (!cur.selection()) cur.resetAnchor(); - cursorTop(cur); + needsUpdate = cursorTop(cur); finishChange(cur, true); } else { cur.undispatched(); @@ -409,7 +409,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) if (cur.depth() == 1) { if (!cur.mark()) cur.clearSelection(); - cursorBottom(cur); + needsUpdate = cursorBottom(cur); finishChange(cur, false); } else { cur.undispatched(); @@ -420,7 +420,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) if (cur.depth() == 1) { if (!cur.selection()) cur.resetAnchor(); - cursorBottom(cur); + needsUpdate = cursorBottom(cur); finishChange(cur, true); } else { cur.undispatched(); @@ -520,7 +520,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) update(cur); if (!cur.selection()) cur.resetAnchor(); - cursorPrevious(cur); + needsUpdate = cursorPrevious(cur); finishChange(cur, true); break; @@ -528,7 +528,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) update(cur); if (!cur.selection()) cur.resetAnchor(); - cursorNext(cur); + needsUpdate = cursorNext(cur); finishChange(cur, true); break; @@ -536,7 +536,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) update(cur); if (!cur.selection()) cur.resetAnchor(); - cursorHome(cur); + needsUpdate = cursorHome(cur); finishChange(cur, true); break; @@ -544,7 +544,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) update(cur); if (!cur.selection()) cur.resetAnchor(); - cursorEnd(cur); + needsUpdate = cursorEnd(cur); finishChange(cur, true); break; @@ -604,14 +604,14 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) case LFUN_HOME: if (!cur.mark()) cur.clearSelection(); - cursorHome(cur); + needsUpdate = cursorHome(cur); finishChange(cur, false); break; case LFUN_END: if (!cur.mark()) cur.clearSelection(); - cursorEnd(cur); + needsUpdate = cursorEnd(cur); finishChange(cur, false); break; diff --git a/status.14x b/status.14x index 003822d5b2..48eca69e72 100644 --- a/status.14x +++ b/status.14x @@ -54,6 +54,9 @@ What's new - Fix cursor positioning in tabulars (bug 2006). +- Update screen when cursor was between two spaces and goes to + line/document start/end (bug 2298). + - Fix drawing of inset buttons (bug 2328) - Fix drawing of \boxed and \fbox in formulas (bug 2361).