X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.h;h=bb75c160c66e83b2e53c3d0736d449362ff1e2cc;hb=850c5a3d5545eb6cf76e3c94d1e534c3b74a86bd;hp=a5222599f2cf983f7dc514c53d39ffee8e6e6a48;hpb=b4294a7b06d1d9436efdde3df6ce4b0732620e9e;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index a5222599f2..bb75c160c6 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -42,6 +42,8 @@ class FuncStatus; class Intl; class Inset; class Length; +class MathData; +class MathRow; class ParIterator; class ParagraphMetrics; class Point; @@ -114,17 +116,23 @@ public: */ int inPixels(Length const & len) const; + /** Return the number of pixels equivalent to \c pix pixels at + * 100dpi and 100% zoom. + */ + int zoomedPixels(int pix) const; + /// \return true if the BufferView is at the top of the document. bool isTopScreen() const; /// \return true if the BufferView is at the bottom of the document. bool isBottomScreen() const; - /// perform pending metrics updates. - /** \c Update::FitCursor means first to do a FitCursor, and to + /// Add \p flags to current update flags and trigger an update. + /* If this method is invoked several times before the update + * actually takes place, the effect is cumulative. + * \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 */ void processUpdateFlags(Update::flags flags); @@ -132,9 +140,6 @@ public: /// Only to be called with good y coordinates (after a bv::metrics) bool needsFitCursor() const; - /// returns true if this row needs to be repainted (to erase caret) - bool needRepaint(Text const * text, Row const & row) const; - // Returns the amount of horizontal scrolling applied to the // top-level row where the cursor lies int horizScrollOffset() const; @@ -143,11 +148,6 @@ public: int horizScrollOffset(Text const * text, pit_type pit, pos_type pos) const; - // Returns true if the row of text starting at (pit, pos) was scrolled - // at the last draw event. - bool hadHorizScrollOffset(Text const * text, - pit_type pit, pos_type pos) const; - /// reset the scrollbar to reflect current view position. void updateScrollbar(); /// return the Scrollbar Parameters. @@ -250,9 +250,6 @@ public: /// \sa WorkArea void mouseEventDispatch(FuncRequest const & ev); - /// access to anchor. - pit_type anchor_ref() const; - /// CursorStatus cursorStatus(DocIterator const & dit) const; /// access to full cursor. @@ -270,6 +267,12 @@ public: /// sets cursor. /// This is used when handling LFUN_MOUSE_PRESS. bool mouseSetCursor(Cursor & cur, bool select = false); + /// Set the cursor language from language code. + /* Considers first exact math with the codes used in the document, + * then approximate match among the same list, and finally exact + * or partial match with the whole list of languages. + */ + void setCursorLanguage(std::string const & code); /// sets the selection. /* When \c backwards == false, set anchor @@ -301,12 +304,17 @@ public: /// CoordCache const & coordCache() const; + /// + MathRow const & mathRow(MathData const * cell) const; + /// + void setMathRow(MathData const * cell, MathRow const & mrow); + /// Point getPos(DocIterator const & dit) const; /// is the paragraph of the cursor visible ? bool paragraphVisible(DocIterator const & dit) const; - /// is the cursor currently visible in the view - bool cursorInView(Point const & p, int h) const; + /// is the caret currently visible in the view + bool caretInView() const; /// get the position and height of the caret void caretPosAndHeight(Point & p, int & h) const; @@ -343,7 +351,7 @@ public: // Insert plain text file (if filename is empty, prompt for one) void insertPlaintextFile(support::FileName const & f, bool asParagraph); /// - void insertLyXFile(support::FileName const & f); + void insertLyXFile(support::FileName const & f, bool const ignorelang = false); /// save temporary bookmark for jump back navigation void bookmarkEditPosition(); /// Find and return the inset associated with given dialog name. @@ -367,6 +375,8 @@ private: /// Update current paragraph metrics. /// \return true if no further update is needed. bool singleParUpdate(); + /// do the work for the public updateMetrics() + void updateMetrics(Update::flags & update_flags); // Set the row on which the cursor lives. void setCurrentRowSlice(CursorSlice const & rowSlice);