]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.h
* src/LyXAction.C: mark goto-clear-bookmark as working without buffer
[lyx.git] / src / BufferView.h
index d4d69581587bc42a0ef22c2d01b8c5b1ee73d1ed..bceaf1f82fd92d4d6bdffc091c312130802d6bd6 100644 (file)
 #include "coordcache.h"
 #include "cursor.h"
 #include "metricsinfo.h"
+#include "TextMetrics.h"
 #include "UpdateFlags.h"
+
 #include "support/types.h"
 
+#include <boost/tuple/tuple.hpp>
 #include <boost/utility.hpp>
 #include <boost/signal.hpp>
 
@@ -38,10 +41,10 @@ class DocIterator;
 class FuncRequest;
 class FuncStatus;
 class Intl;
-class Language;
 class LCursor;
 class LyXText;
 class ParIterator;
+class ParagraphMetrics;
 class ViewMetricsInfo;
 
 /// Scrollbar Parameters.
@@ -90,8 +93,6 @@ public:
        /// resize the BufferView.
        void resize();
 
-       /// redisplay the referenced buffer.
-       void reload();
        /// load a buffer into the view.
        bool loadLyXFile(support::FileName const & name, bool tolastfiles = true);
 
@@ -114,8 +115,10 @@ public:
        /// Save the current position as bookmark.
        /// if persistent=false, save to temp_bookmark
        void saveBookmark(bool persistent);
-       /// goto a specified position.
-       void moveToPosition(
+       /// goto a specified position, try par_id first, and then par_pit
+       /// return the par_pit and par_id of the new paragraph
+       boost::tuple<pit_type, int> moveToPosition(
+               pit_type par_pit, ///< Paragraph pit, used when par_id is zero or invalid.
                int par_id, ///< Paragraph ID, \sa Paragraph
                pos_type par_pos ///< Position in the \c Paragraph
                );
@@ -182,6 +185,9 @@ 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.
        bool mouseSetCursor(LCursor & cur);
@@ -204,6 +210,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_;
@@ -279,8 +291,12 @@ private:
        /// keyboard mapping object.
        boost::scoped_ptr<Intl> const intl_;
 
-       /// last visited inset (kept to send setMouseHover(false)
+       /// 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_;
 };