]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph.h
Fix bug 2485 and crash on middle mouse paste on math
[lyx.git] / src / paragraph.h
index 83337fbd14ff2acd26f6a5aa48686ce005288108..29d499a267768203dc94a496cb05fd4c7d8f545d 100644 (file)
@@ -48,13 +48,17 @@ class TexRow;
 
 class FontSpan {
 public:
-       FontSpan() : first(0), last(0) {}
+       /// Invalid font span containing no character
+       FontSpan() : first(0), last(-1) {}
+       /// Span including first and last
        FontSpan(lyx::pos_type f, lyx::pos_type l) : first(f), last(l) {}
-       lyx::pos_type first;
-       lyx::pos_type last;
+
+public:
+       /// Range including first and last.
+       lyx::pos_type first, last;
 };
 
-       
+
 /// A Paragraph holds all text, attributes and insets in a text paragraph
 class Paragraph  {
 public:
@@ -66,9 +70,10 @@ public:
                /// try getInset() and crash. We should fix
                /// all these places.
                META_INSET = 1
+               //META_INSET = 0x200001  // above 0x10ffff, for ucs-4
        };
        ///
-       typedef char value_type;
+       typedef lyx::char_type value_type;
        ///
        typedef lyx::depth_type depth_type;
        ///
@@ -103,10 +108,10 @@ public:
        ///
        std::string const asString(Buffer const &, bool label) const;
        ///
-       std::string const Paragraph::asString(Buffer const & buffer,
-                                             lyx::pos_type beg,
-                                             lyx::pos_type end,
-                                             bool label) const;
+       std::string const asString(Buffer const & buffer,
+                                  lyx::pos_type beg,
+                                  lyx::pos_type end,
+                                  bool label) const;
        ///
        std::string const asString(Buffer const &,
                                   OutputParams const & runparams,
@@ -221,14 +226,17 @@ public:
        /// set change at pos
        void setChange(lyx::pos_type pos, Change::Type type);
 
+       /// set full change at pos
+       void setChangeFull(lyx::pos_type pos, Change change);
+
        /// accept change
        void acceptChange(lyx::pos_type start, lyx::pos_type end);
 
        /// reject change
        void rejectChange(lyx::pos_type start, lyx::pos_type end);
 
-       /// mark whole par as erased
-       void markErased();
+       /// mark whole par as erased or not
+       void markErased(bool erased);
 
        /// Paragraphs can contain "manual labels", for example, Description
        /// environment. The text for this user-editable label is stored in
@@ -269,7 +277,7 @@ public:
        LyXFont const
        getFontSettings(BufferParams const &, lyx::pos_type pos) const;
        ///
-       LyXFont const getFirstFontSettings() const;
+       LyXFont const getFirstFontSettings(BufferParams const &) const;
 
        /** Get fully instantiated font. If pos == -1, use the layout
            font attached to this paragraph.
@@ -387,6 +395,8 @@ public:
        RowList & rows() { return rows_; }
        /// The painter and others use this
        RowList const & rows() const { return rows_; }
+       ///
+       RowSignature & rowSignature() const { return rowSignature_; }
 
        /// LyXText::redoParagraph updates this
        Dimension & dim() { return dim_; }
@@ -404,6 +414,9 @@ private:
 
        ///
        mutable RowList rows_;
+       ///
+       mutable RowSignature rowSignature_;
+
        ///
        LyXLayout_ptr layout_;
        /**