]> git.lyx.org Git - lyx.git/blobdiff - src/lyxtext.h
fix keys to be unique
[lyx.git] / src / lyxtext.h
index c61c94a617cc2b44274c565d9719f60a6e57bf4d..176b9192e486ca46a6d649ae5219eff41d1e333c 100644 (file)
@@ -1,9 +1,9 @@
 // -*- C++ -*-
 /* This file is part of
- * ====================================================== 
- * 
+ * ======================================================
+ *
  *           LyX, The Document Processor
- *      
+ *
  *           Copyright 1995 Matthias Ettrich
  *           Copyright 1995-2001 The LyX Team.
  *
 
 #include "lyxfont.h"
 #include "lyxcursor.h"
-#include "paragraph.h"
 #include "layout.h"
-#include "lyxrow.h"
-#include "vspace.h"
-#include "Spacing.h"
 #include "LColor.h"
+#include "insets/inset.h"
 
 class Buffer;
 class BufferParams;
 class BufferView;
 class InsetText;
+class Paragraph;
+class Row;
+class Spacing;
+class UpdatableInset;
+class VSpace;
+class WordLangTuple;
 
 
 /**
@@ -64,16 +67,14 @@ public:
 
        /// Constructor
        LyXText(BufferView *);
-       ///
+       /// sets inset as owner
        LyXText(InsetText *);
-   
+
        /// Destructor
        ~LyXText();
 
        void init(BufferView *, bool reinit = false);
        ///
-       mutable int number_of_rows;
-       ///
        mutable int height;
        ///
        mutable unsigned int width;
@@ -83,7 +84,7 @@ public:
        mutable LyXFont real_current_font;
        /// first visible pixel-row is set from LyXScreen!!!
        // unsigned is wrong here for text-insets!
-       int first;
+       int first_y;
        ///
        BufferView * bv_owner;
        ///
@@ -95,20 +96,17 @@ public:
        int getRealCursorX(BufferView *) const;
        ///
        LyXFont const getFont(Buffer const *, Paragraph * par,
-                       Paragraph::size_type pos) const;
+               lyx::pos_type pos) const;
        ///
        LyXFont const getLayoutFont(Buffer const *, Paragraph * par) const;
        ///
        LyXFont const getLabelFont(Buffer const *, Paragraph * par) const;
        ///
        void setCharFont(Buffer const *, Paragraph * par,
-                        Paragraph::size_type pos, LyXFont const & font);
+                        lyx::pos_type pos, LyXFont const & font);
        void setCharFont(BufferView *, Paragraph * par,
-                        Paragraph::size_type pos,
-                        LyXFont const & font, bool toggleall);
-       /// returns a pointer to the very first Paragraph
-       Paragraph * firstParagraph() const;
-  
+                        lyx::pos_type pos, LyXFont const & font, bool toggleall);
+
        /// what you expect when pressing <enter> at cursor position
        void breakParagraph(BufferView *, char keep_layout = 0);
 
@@ -116,120 +114,110 @@ public:
          those paragraphs
          */
        Paragraph * setLayout(BufferView *, LyXCursor & actual_cursor,
-                                LyXCursor & selection_start,
-                                LyXCursor & selection_end,
-                                LyXTextClass::size_type layout);
-       void setLayout(BufferView *, LyXTextClass::size_type layout);
-       
-       /// used in setlayout
-       void makeFontEntriesLayoutSpecific(Buffer const *, Paragraph * par);
-       
-       /** increment depth over selection and make a total rebreak of those 
+                             LyXCursor & selection_start,
+                             LyXCursor & selection_end,
+                             string const & layout);
+       ///
+       void setLayout(BufferView *, string const & layout);
+
+       /** increment depth over selection and make a total rebreak of those
          paragraphs
          */
        void incDepth(BufferView *);
-       
-       /** decrement depth over selection and make a total rebreak of those  
+
+       /** decrement depth over selection and make a total rebreak of those
          paragraphs */
        void decDepth(BufferView *);
 
-       /** Get the depth at current cursor position
-        */
-       int getDepth() const { return cursor.par()->getDepth(); }
-       
+       /// get the depth at current cursor position
+       int getDepth() const;
+
        /** set font over selection and make a total rebreak of those
          paragraphs.
          toggleall defaults to false.
          */
        void setFont(BufferView *, LyXFont const &, bool toggleall = false);
-       
+
        /** deletes and inserts again all paragaphs between the cursor
          and the specified par. The Cursor is needed to set the refreshing
-         parameters. 
+         parameters.
          This function is needed after SetLayout and SetFont etc.
          */
        void redoParagraphs(BufferView *, LyXCursor const & cursor,
                            Paragraph const * end_par) const;
        ///
        void redoParagraph(BufferView *) const;
-       
+
        ///
        void toggleFree(BufferView *, LyXFont const &, bool toggleall = false);
 
        ///
        string getStringToIndex(BufferView *);
-       
+
        /** recalculates the heights of all previous rows of the
            specified paragraph.  needed, if the last characters font
-           has changed.  
+           has changed.
            */
        void redoHeightOfParagraph(BufferView *, LyXCursor const & cursor);
-       
-       /** forces the redrawing of a paragraph. Needed when manipulating a 
-           right address box
-           */ 
-       void redoDrawingOfParagraph(BufferView *, LyXCursor const & cursor);
-       
-       /** insert a character, moves all the following breaks in the 
+
+       /** insert a character, moves all the following breaks in the
          same Paragraph one to the right and make a little rebreak
          */
        void insertChar(BufferView *, char c);
        ///
        void insertInset(BufferView *, Inset * inset);
-   
-       /** Completes the insertion with a full rebreak.
-           Returns true if something was broken. */
-       bool fullRebreak(BufferView *);
+
+       /// Completes the insertion with a full rebreak
+       void fullRebreak(BufferView *);
 
        ///
        mutable Row * need_break_row;
        ///
        mutable int refresh_y;
        ///
-       int refresh_height;
-       ///
-       int refresh_width;
-       ///
-       int refresh_x;
-       ///
        mutable Row * refresh_row;
-       ///
-       Paragraph::size_type refresh_pos;
 
        /// give and set the LyXText status
        text_status status() const;
        ///
        void status(BufferView *, text_status) const;
 
-private:       
+       ///
+       Inset::RESULT dispatch(FuncRequest const & cmd);
+
+private:
        /** wether the screen needs a refresh,
           starting with refresh_y
           */
        mutable text_status status_;
-       
+
 public:
        /** returns a pointer to the row near the specified y-coordinate
          (relative to the whole text). y is set to the real beginning
          of this row
-         */ 
+         */
        Row * getRowNearY(int & y) const;
-       
-       /** returns the column near the specified x-coordinate of the row 
+
+       /** returns the column near the specified x-coordinate of the row
         x is set to the real beginning of this column
-        */ 
-       Paragraph::size_type getColumnNearX(BufferView *, Row * row,
+        */
+       lyx::pos_type getColumnNearX(BufferView *, Row * row,
                                            int & x, bool & boundary) const;
-       
+
        /** returns a pointer to a specified row. y is set to the beginning
         of the row
         */
-       Row * getRow(Paragraph * par,
-                    Paragraph::size_type pos, int & y) const;
+       Row * getRow(Paragraph * par, lyx::pos_type pos, int & y) const;
+       /** returns the firstrow, this could be done with the above too but
+           IMO it's stupid to have to allocate a dummy y all the time I need
+           the first row
+       */
+       Row * firstRow() { return firstrow; }
 
        /** returns the height of a default row, needed  for scrollbar
         */
        int defaultHeight() const;
-   
+
        /** The cursor.
          Later this variable has to be removed. There should be now internal
          cursor in a text (and thus not in a buffer). By keeping this it is
@@ -243,7 +231,7 @@ public:
 
        /** The structure that keeps track of the selections set. */
        struct Selection {
-               Selection() 
+               Selection()
                        : set_(false), mark_(false)
                        {}
                bool set() const {
@@ -259,58 +247,60 @@ public:
                        mark_ = m;
                }
                LyXCursor cursor; // temporary cursor to hold a cursor position
-                                 // until setSelection is called!
+                                 // until setSelection is called!
                LyXCursor start;  // start of a REAL selection
                LyXCursor end;    // end of a REAL selection
        private:
                bool set_; // former selection
                bool mark_; // former mark_set
-               
+
        };
        mutable Selection selection;
+       // this is used to handle XSelection events in the right manner
+       mutable Selection xsel_cache;
 
        /// needed for the toggling (cursor position on last selection made)
-       mutable LyXCursor last_sel_cursor; 
+       mutable LyXCursor last_sel_cursor;
        /// needed for toggling the selection in screen.C
        mutable LyXCursor toggle_cursor;
        /// needed for toggling the selection in screen.C
        mutable LyXCursor toggle_end_cursor;
-   
+
        /// need the selection cursor:
        void setSelection(BufferView *);
        ///
        void clearSelection() const;
        ///
        string const selectionAsString(Buffer const *, bool label) const;
-       
+
        /// select the word we need depending on word_location
-       void getWord(LyXCursor & from, LyXCursor & to, 
+       void getWord(LyXCursor & from, LyXCursor & to,
                     word_location const) const;
        /// just selects the word the cursor is in
        void selectWord(BufferView *, word_location const);
        /// returns the inset at cursor (if it exists), 0 otherwise
        Inset * getInset() const;
 
-       /** 'selects" the next word, where the cursor is not in 
-        and returns this word as string. THe cursor will be moved 
-        to the beginning of this word. 
+       /** 'selects" the next word, where the cursor is not in
+        and returns this word as string. THe cursor will be moved
+        to the beginning of this word.
         With SelectSelectedWord can this be highlighted really
-        */ 
-       string const selectNextWordToSpellcheck(BufferView *, float & value) const;
+        */
+       WordLangTuple const selectNextWordToSpellcheck(BufferView *, float & value) const;
        ///
        void selectSelectedWord(BufferView *);
-       ///
-       void setCursor(BufferView *, Paragraph * par,
-                      Paragraph::size_type pos,
+       /// returns true if par was empty and was removed
+       bool setCursor(BufferView *, Paragraph * par,
+                      lyx::pos_type pos,
                       bool setfont = true,
                       bool boundary = false) const;
        ///
        void setCursor(BufferView *, LyXCursor &, Paragraph * par,
-                      Paragraph::size_type pos,
+                      lyx::pos_type pos,
                       bool boundary = false) const;
        ///
        void setCursorIntern(BufferView *, Paragraph * par,
-                            Paragraph::size_type pos,
+                            lyx::pos_type pos,
                             bool setfont = true,
                             bool boundary = false) const;
        ///
@@ -318,10 +308,10 @@ public:
 
        ///
        bool isBoundary(Buffer const *, Paragraph * par,
-                       Paragraph::size_type pos) const;
+                       lyx::pos_type pos) const;
        ///
        bool isBoundary(Buffer const *, Paragraph * par,
-                        Paragraph::size_type pos,
+                        lyx::pos_type pos,
                         LyXFont const & font) const;
 
        ///
@@ -330,9 +320,9 @@ public:
        void setCursorFromCoordinates(BufferView *, LyXCursor &,
                                      int x, int y) const;
        ///
-       void cursorUp(BufferView *) const;
+       void cursorUp(BufferView *, bool selecting = false) const;
        ///
-       void cursorDown(BufferView *) const;
+       void cursorDown(BufferView *, bool selecting = false) const;
        ///
        void cursorLeft(BufferView *, bool internal = true) const;
        ///
@@ -340,8 +330,6 @@ public:
        ///
        void cursorLeftOneWord(BufferView *) const;
        ///
-       void cursorLeftOneWord(LyXCursor &) const;
-       ///
        void cursorRightOneWord(BufferView *) const;
        ///
        void cursorUpParagraph(BufferView *) const;
@@ -352,6 +340,10 @@ public:
        ///
        void cursorEnd(BufferView *) const;
        ///
+       void cursorPrevious(BufferView * bv);
+       ///
+       void cursorNext(BufferView * bv);
+       ///
        void cursorTab(BufferView *) const;
        ///
        void cursorTop(BufferView *) const;
@@ -362,13 +354,7 @@ public:
        ///
        void backspace(BufferView *);
        ///
-       void deleteWordForward(BufferView *);
-       ///
-       void deleteWordBackward(BufferView *);
-       ///
-       void deleteLineForward(BufferView *);
-       ///
-       bool selectWordWhenUnderCursor(BufferView *, 
+       bool selectWordWhenUnderCursor(BufferView *,
                                       word_location const);
        ///
        enum TextCase {
@@ -382,13 +368,8 @@ public:
        /// Change the case of the word at cursor position.
        void changeCase(BufferView *, TextCase action);
        ///
-       void changeRegionCase(BufferView * bview,
-                                      LyXCursor const & from,
-                                      LyXCursor const & to,
-                                      LyXText::TextCase action);
-       ///
        void transposeChars(BufferView &);
-       
+
        /** returns a printed row in a pixmap. The y value is needed to
          decide, wether it is selected text or not. This is a strange
          solution but faster.
@@ -396,7 +377,7 @@ public:
        void getVisibleRow(BufferView *, int y_offset, int x_offset,
                           Row * row_ptr, int y, bool cleared=false);
 
-       /// 
+       ///
        void toggleInset(BufferView *);
        ///
        void cutSelection(BufferView *, bool doclear = true, bool realcut = true);
@@ -411,17 +392,17 @@ public:
 
        /** the DTP switches for paragraphs. LyX will store the top settings
         always in the first physical paragraph, the bottom settings in the
-        last. When a paragraph is broken, the top settings rest, the bottom 
+        last. When a paragraph is broken, the top settings rest, the bottom
         settings are given to the new one. So I can make shure, they do not
         duplicate themself (and you cannnot make dirty things with them! )
-        */ 
+        */
        void setParagraph(BufferView *,
                          bool line_top, bool line_bottom,
                          bool pagebreak_top, bool pagebreak_bottom,
                          VSpace const & space_top,
                          VSpace const & space_bottom,
                          Spacing const & spacing,
-                         LyXAlignment align, 
+                         LyXAlignment align,
                          string labelwidthstring,
                          bool noindent);
 
@@ -446,23 +427,18 @@ public:
        bool gotoNextInset(BufferView *, std::vector<Inset::Code> const & codes,
                           string const & contents = string()) const;
        ///
+       void gotoInset(BufferView * bv, std::vector<Inset::Code> const & codes,
+                                               bool same_content);
+       ///
+       void gotoInset(BufferView * bv, Inset::Code code, bool same_content);
+       ///
 
        /* for the greater insets */
-  
+
        /// returns false if inset wasn't found
        bool updateInset(BufferView *, Inset *);
        ///
-       void checkParagraph(BufferView *, Paragraph * par,
-                           Paragraph::size_type pos);
-       ///
-       int numberOfCell(Paragraph * par,
-                        Paragraph::size_type pos) const;
-       ///
-       void removeTableRow(LyXCursor & cursor) const;
-       ///
-       bool isEmptyTableCell() const;
-       ///
-       void toggleAppendix(BufferView *);
+       void checkParagraph(BufferView *, Paragraph * par, lyx::pos_type pos);
        ///
        int workWidth(BufferView *) const;
        ///
@@ -472,7 +448,7 @@ public:
 
        /// Maps positions in the visual string to positions in logical string.
        inline
-       Paragraph::size_type log2vis(Paragraph::size_type pos) const {
+       lyx::pos_type log2vis(lyx::pos_type pos) const {
                if (bidi_start == -1)
                        return pos;
                else
@@ -481,7 +457,7 @@ public:
 
        /// Maps positions in the logical string to positions in visual string.
        inline
-       Paragraph::size_type vis2log(Paragraph::size_type pos) const {
+       lyx::pos_type vis2log(lyx::pos_type pos) const {
                if (bidi_start == -1)
                        return pos;
                else
@@ -489,15 +465,15 @@ public:
        }
        ///
        inline
-       Paragraph::size_type bidi_level(Paragraph::size_type pos) const {
+       lyx::pos_type bidi_level(lyx::pos_type pos) const {
                if (bidi_start == -1)
                        return 0;
                else
                        return bidi_levels[pos-bidi_start];
-       }       
+       }
        ///
        inline
-       bool bidi_InRange(Paragraph::size_type pos) const {
+       bool bidi_InRange(lyx::pos_type pos) const {
                return bidi_start == -1 ||
                        (bidi_start <= pos && pos <= bidi_end);
        }
@@ -507,30 +483,48 @@ private:
        ///
        mutable Row * lastrow;
 
+       ///
+       void cursorLeftOneWord(LyXCursor &) const;
+       ///
+       float getCursorX(BufferView *, Row *, lyx::pos_type pos,
+                                        lyx::pos_type last, bool boundary) const;
+       ///
+       void changeRegionCase(BufferView * bv,
+                                      LyXCursor const & from,
+                                      LyXCursor const & to,
+                                      LyXText::TextCase action);
+       /// used in setlayout
+       void makeFontEntriesLayoutSpecific(Buffer const *, Paragraph * par);
+
+       /** forces the redrawing of a paragraph. Needed when manipulating a
+           right address box
+           */
+       void redoDrawingOfParagraph(BufferView *, LyXCursor const & cursor);
+
        /** Copybuffer for copy environment type.
          Asger has learned that this should be a buffer-property instead
          Lgb has learned that 'char' is a lousy type for non-characters
          */
-       LyXTextClass::size_type copylayouttype;
+       string copylayouttype;
 
        /** inserts a new row behind the specified row, increments
            the touched counters */
-       void insertRow(Row * row, Paragraph * par,
-                      Paragraph::size_type pos) const;
-       /** removes the row and reset the touched counters */
+       void insertRow(Row * row, Paragraph * par, lyx::pos_type pos) const;
+       /// removes the row and reset the touched counters 
        void removeRow(Row * row) const;
 
-       /** remove all following rows of the paragraph of the specified row. */
+       /// remove all following rows of the paragraph of the specified row.
        void removeParagraph(Row * row) const;
 
-       /** insert the specified paragraph behind the specified row */
+       /// insert the specified paragraph behind the specified row 
        void insertParagraph(BufferView *,
                             Paragraph * par, Row * row) const;
 
        /** appends  the implizit specified paragraph behind the specified row,
         * start at the implizit given position */
        void appendParagraph(BufferView *, Row * row) const;
-   
+
        ///
        void breakAgain(BufferView *, Row * row) const;
        ///
@@ -539,9 +533,9 @@ private:
        void setHeightOfRow(BufferView *, Row * row_ptr) const;
 
        /** this calculates the specified parameters. needed when setting
-        * the cursor and when creating a visible row */ 
+        * the cursor and when creating a visible row */
        void prepareToPrint(BufferView *, Row * row, float & x,
-                           float & fill_separator, 
+                           float & fill_separator,
                            float & fill_hfill,
                            float & fill_label_hfill,
                            bool bidi = true) const;
@@ -549,16 +543,16 @@ private:
        /// A struct used for drawing routines
        struct DrawRowParams {
                // the bufferview
-               BufferView * bv; 
+               BufferView * bv;
                // the row
                Row * row;
                // the painter to use
-               Painter * pain; 
+               Painter * pain;
                // has the background been cleared
                bool cleared;
-               /// x offset
+               /// x offset (e.g. for insets)
                int xo;
-               /// y offset 
+               /// y offset (e.g. for insets)
                int yo;
                /// FIXME
                float x;
@@ -573,80 +567,116 @@ private:
                /// fill separator size
                float separator;
        };
-                
+
        /// paint the background
        bool paintRowBackground(DrawRowParams & p);
-       /// paint the selection background 
+
+       /// paint the selection background
        void paintRowSelection(DrawRowParams & p);
 
        /// paint appendix marker
        void paintRowAppendix(DrawRowParams & p);
-        
-       /// paint env depth bar 
-       void paintRowDepthBar(DrawRowParams & p);
+
+       /// paint page break marker. Returns its height.
+       int paintPageBreak(string const & label, int y, DrawRowParams & p);
  
+       /// paint env depth bar
+       void paintRowDepthBar(DrawRowParams & p);
+
+       /// get the on-screen size of the length marker
+       int getLengthMarkerHeight(BufferView * bv, VSpace const & vsp) const;
+
+       /// paint an added space marker
+       int drawLengthMarker(DrawRowParams & p, string const & str,
+               VSpace const & vsp, int start);
+
        /// paint a first row in a paragraph
        void paintFirstRow(DrawRowParams & p);
+
        /// paint a last row in a paragraph
        void paintLastRow(DrawRowParams & p);
+
        /// paint text
        void paintRowText(DrawRowParams & p);
+
        // fix the cursor `cur' after a characters has been deleted at `where'
        // position. Called by deleteEmptyParagraphMechanism
-       void fixCursorAfterDelete(BufferView * bview,
+       void fixCursorAfterDelete(BufferView * bv,
                                  LyXCursor & cur,
                                  LyXCursor const & where) const;
-       
-       ///
-       void deleteEmptyParagraphMechanism(BufferView *,
+
+       /// delete double space (false) or empty paragraphs (true) around old_cursor
+       bool deleteEmptyParagraphMechanism(BufferView *,
                                           LyXCursor const & old_cursor) const;
 
 public:
        /** Updates all counters starting BEHIND the row. Changed paragraphs
-        * with a dynamic left margin will be rebroken. */ 
-       void updateCounters(BufferView *, Row * row) const;
+        * with a dynamic left margin will be rebroken. */
+       void updateCounters(BufferView *) const;
+       /// 
+       void update(BufferView * bv, bool changed = true);
+       /**
+        * Returns an inset if inset was hit, or 0 if not.
+        * If hit, the coordinates are changed relative to the inset.
+        */
+       Inset * checkInsetHit(BufferView * bv, int & x, int & y) const;
+
 private:
        ///
        void setCounter(Buffer const *, Paragraph * par) const;
-   
+       ///
+       void deleteWordForward(BufferView *);
+       ///
+       void deleteWordBackward(BufferView *);
+       ///
+       void deleteLineForward(BufferView *);
+
        /*
         * some low level functions
         */
-       
+
        ///
        int singleWidth(BufferView *, Paragraph * par,
-                       Paragraph::size_type pos) const;
+               lyx::pos_type pos) const;
        ///
        int singleWidth(BufferView *, Paragraph * par,
-                       Paragraph::size_type pos, char c) const;
-       ///
-       void draw(BufferView *, Row const * row,
-                 Paragraph::size_type & pos,
-                 int offset, float & x, bool cleared);
+               lyx::pos_type pos, char c) const;
+
+
+       /// draw normal chars
+       void drawChars(DrawRowParams & p, lyx::pos_type & vpos,
+               bool hebrew, bool arabic);
+       /// draw from arabic composed char
+       void drawArabicComposeChar(DrawRowParams & p, lyx::pos_type & vpos);
+       /// draw from hebrew composed char
+       void drawHebrewComposeChar(DrawRowParams & p, lyx::pos_type & vpos);
+       /// draw a mark for foreign language, starting from orig_x
+       void drawForeignMark(DrawRowParams & p, float const orig_x, LyXFont const & orig_font);
+       /// draw an inset
+       bool drawInset(DrawRowParams & p, lyx::pos_type const pos);
+       /// draw new line marker
+       void drawNewline(DrawRowParams & p, lyx::pos_type const pos);
+       /// draw text
+       bool draw(DrawRowParams & p, lyx::pos_type & vpos);
 
        /// get the next breakpoint in a given paragraph
-       Paragraph::size_type nextBreakPoint(BufferView *, Row const * row,
-                                              int width) const;
+       lyx::pos_type nextBreakPoint(BufferView *, Row const * row, int width) const;
        /// returns the minimum space a row needs on the screen in pixel
        int fill(BufferView *, Row * row, int workwidth) const;
-       
+
        /** returns the minimum space a manual label needs on the
-         screen in pixel */ 
+         screen in pixel */
        int labelFill(BufferView *, Row const * row) const;
 
        ///
-       Paragraph::size_type
-       beginningOfMainBody(Buffer const *, Paragraph const * par) const;
-       
-       /** Returns the left beginning of the text.
-         This information cannot be taken from the layouts-objekt, because
-         in LaTeX the beginning of the text fits in some cases
-         (for example sections) exactly the label-width.
-         */
+       lyx::pos_type beginningOfMainBody(Buffer const *, Paragraph const * par) const;
+
+       /** 
+        * Returns the left beginning of the text.
+        * This information cannot be taken from the layout object, because
+        * in LaTeX the beginning of the text fits in some cases
+        * (for example sections) exactly the label-width.
+        */
        int leftMargin(BufferView *, Row const * row) const;
        ///
        int rightMargin(Buffer const *, Row const * row) const;
@@ -655,7 +685,7 @@ private:
 
        /** returns the number of separators in the specified row.
          The separator on the very last column doesnt count
-         */ 
+         */
        int numberOfSeparators(Buffer const *, Row const * row) const;
 
        /** returns the number of hfills in the specified row. The
@@ -664,46 +694,46 @@ private:
          more usefull than not to ignore!
          */
        int numberOfHfills(Buffer const *, Row const * row) const;
-   
+
        /// like NumberOfHfills, but only those in the manual label!
        int numberOfLabelHfills(Buffer const *, Row const * row) const;
-       /** returns true, if a expansion is needed. Rules are given by 
+       /** returns true, if a expansion is needed. Rules are given by
          LaTeX
          */
        bool hfillExpansion(Buffer const *, Row const * row_ptr,
-                           Paragraph::size_type pos) const;
-       /// 
+                           lyx::pos_type pos) const;
+       ///
        LColor::color backgroundColor();
 
 
        ///
-       mutable std::vector<Paragraph::size_type> log2vis_list;
+       mutable std::vector<lyx::pos_type> log2vis_list;
 
        ///
-       mutable std::vector<Paragraph::size_type> vis2log_list;
+       mutable std::vector<lyx::pos_type> vis2log_list;
 
        ///
-       mutable std::vector<Paragraph::size_type> bidi_levels;
+       mutable std::vector<lyx::pos_type> bidi_levels;
 
        ///
-       mutable Paragraph::size_type bidi_start;
+       mutable lyx::pos_type bidi_start;
 
        ///
-       mutable Paragraph::size_type bidi_end;
+       mutable lyx::pos_type bidi_end;
 
        ///
        mutable bool bidi_same_direction;
 
        ///
        unsigned char transformChar(unsigned char c, Paragraph * par,
-                                   Paragraph::size_type pos) const;
+                                   lyx::pos_type pos) const;
 
-       /** returns the paragraph position of the last character in the 
+       /** returns the paragraph position of the last character in the
          specified row
          */
-       Paragraph::size_type rowLast(Row const * row) const;
+       lyx::pos_type rowLast(Row const * row) const;
        ///
-       Paragraph::size_type rowLastPrintable(Row const * row) const;
+       lyx::pos_type rowLastPrintable(Row const * row) const;
 
        ///
        void charInserted();
@@ -718,23 +748,4 @@ public:
        void ownerParagraph(int id, Paragraph *) const;
 };
 
-
-/* returns a pointer to the row near the specified y-coordinate
- * (relative to the whole text). y is set to the real beginning
- * of this row */
-inline
-Row * LyXText::getRowNearY(int & y) const
-{
-       // If possible we should optimize this method. (Lgb)
-       Row * tmprow = firstrow;
-       int tmpy = 0;
-       
-       while (tmprow->next() && tmpy + tmprow->height() <= y) {
-               tmpy += tmprow->height();
-               tmprow = tmprow->next();
-       }
-       
-       y = tmpy;   // return the real y
-       return tmprow;
-}
 #endif