X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.h;h=bceaf1f82fd92d4d6bdffc091c312130802d6bd6;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=5757b9961852d690b4f65263c9a035e317859f3a;hpb=647df45a50f1513ecfe17ffd9e223a6a6243a843;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index 5757b99618..bceaf1f82f 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -18,9 +18,12 @@ #include "coordcache.h" #include "cursor.h" #include "metricsinfo.h" +#include "TextMetrics.h" #include "UpdateFlags.h" + #include "support/types.h" +#include #include #include @@ -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 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_; @@ -281,6 +293,10 @@ private: /// last visited inset (kept to send setMouseHover(false) ) InsetBase * last_inset_; + + /// A map from a LyXText to the associated text metrics + typedef std::map TextMetricsCache; + mutable TextMetricsCache text_metrics_; };