]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.h
The bug-fix in revision 16531 introduced another bug. This is the right fix. I did...
[lyx.git] / src / BufferView.h
index 0e5f9102b090019644ec6480639742da0d55f9b1..b57d348048c2b33b87837a671d95369507584c14 100644 (file)
@@ -18,7 +18,9 @@
 #include "coordcache.h"
 #include "cursor.h"
 #include "metricsinfo.h"
+#include "TextMetrics.h"
 #include "UpdateFlags.h"
+
 #include "support/types.h"
 
 #include <boost/utility.hpp>
 
 namespace lyx {
 
+namespace support { class FileName; }
+
 class Buffer;
 class Change;
 class DocIterator;
 class FuncRequest;
 class FuncStatus;
 class Intl;
-class Language;
 class LCursor;
 class LyXText;
 class ParIterator;
+class ParagraphMetrics;
 class ViewMetricsInfo;
 
 /// Scrollbar Parameters.
@@ -91,18 +95,15 @@ public:
        /// redisplay the referenced buffer.
        void reload();
        /// load a buffer into the view.
-       bool loadLyXFile(std::string const & name, bool tolastfiles = true);
-
-       /// perform pending painting updates.
-       /** \c fitcursor means first
-        *  to do a fitcursor, and to force an update if screen
-        *  position changes. \c forceupdate means to force an update
-        *  in any case.
-        * \retval (false, xxx) if no redraw is required
-        * \retval (true, true) if a single paragraph redraw is needed
-        * \retval (true, false) if a full redraw is needed
+       bool loadLyXFile(support::FileName const & name, bool tolastfiles = true);
+
+       /// perform pending metrics updates.
+       /** \c Update::FitCursor means first to do a FitCursor, and to
+        * force an update if screen position changes.
+        * \c Update::Force means to force an update in any case.
+        * \retval true if a screen redraw is needed
         */
-       std::pair<bool, bool> update(Update::flags flags = Update::FitCursor | Update::Force);
+       bool update(Update::flags flags = Update::FitCursor | Update::Force);
 
        /// move the screen to fit the cursor.
        /// Only to be called with good y coordinates (after a bv::metrics)
@@ -170,10 +171,8 @@ public:
 
        /// dispatch method helper for \c WorkArea
        /// \sa WorkArea
-       /// \retval (false, xxx) if no redraw is required
-       /// \retval (true, true) if a single paragraph redraw is needed
-       /// \retval (true, false) if a full redraw is needed
-       std::pair<bool, bool> workAreaDispatch(FuncRequest const & ev);
+       /// \retval true if a redraw is needed
+       bool workAreaDispatch(FuncRequest const & ev);
 
        /// access to anchor.
        pit_type anchor_ref() const;
@@ -185,9 +184,12 @@ public:
        /// sets cursor.
        /// This will also open all relevant collapsable insets.
        void setCursor(DocIterator const &);
+       /// Check deleteEmptyParagraphMechanism and update metrics if needed.
+       /// \retval true if an update was needed.
+       bool checkDepm(LCursor & cur, LCursor & old);
        /// sets cursor.
        /// This is used when handling LFUN_MOUSE_PRESS.
-       void mouseSetCursor(LCursor & cur);
+       bool mouseSetCursor(LCursor & cur);
 
        /// sets the selection.
        /* When \c backwards == false, set anchor
@@ -207,6 +209,12 @@ public:
        /// \param singlepar indicates wether
        void updateMetrics(bool singlepar = false);
 
+       ///
+       TextMetrics const & textMetrics(LyXText const * t) const;
+       TextMetrics & textMetrics(LyXText const * t);
+       ///
+       ParagraphMetrics const & parMetrics(LyXText const *, pit_type) const;
+
        ///
        CoordCache & coordCache() {
                return coord_cache_;
@@ -281,6 +289,13 @@ private:
 
        /// keyboard mapping object.
        boost::scoped_ptr<Intl> const intl_;
+
+       /// last visited inset (kept to send setMouseHover(false) )
+       InsetBase * last_inset_;
+
+       /// A map from a LyXText to the associated text metrics
+       typedef std::map<LyXText const *, TextMetrics> TextMetricsCache;
+       mutable TextMetricsCache text_metrics_;
 };