X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxtext.h;h=ff3a73257b4070f7ef0464195f5e0370786bbb8a;hb=498f06d43a0f2000c3f704db1ea39fda3c819fe6;hp=f58f6de0d8b59230a101ffc163162904365ab8e7;hpb=c69f29dda75751987a71ec3dccc9b62725006e20;p=lyx.git diff --git a/src/lyxtext.h b/src/lyxtext.h index f58f6de0d8..ff3a73257b 100644 --- a/src/lyxtext.h +++ b/src/lyxtext.h @@ -12,10 +12,6 @@ #ifndef LYXTEXT_H #define LYXTEXT_H -#ifdef __GNUG__ -#pragma interface -#endif - #include "lyxfont.h" #include "lyxcursor.h" #include "layout.h" @@ -67,7 +63,7 @@ public: /// Constructor LyXText(BufferView *); - /// + /// sets inset as owner LyXText(InsetText *); /// Destructor @@ -75,8 +71,6 @@ public: void init(BufferView *, bool reinit = false); /// - mutable int number_of_rows; - /// mutable int height; /// mutable unsigned int width; @@ -88,8 +82,6 @@ public: // unsigned is wrong here for text-insets! int first_y; /// - BufferView * bv_owner; - /// InsetText * inset_owner; /// UpdatableInset * the_locking_inset; @@ -177,13 +169,7 @@ public: /// mutable int refresh_y; /// - int refresh_width; - /// - int refresh_x; - /// mutable Row * refresh_row; - /// - lyx::pos_type refresh_pos; /// give and set the LyXText status text_status status() const; @@ -194,6 +180,9 @@ public: Inset::RESULT dispatch(FuncRequest const & cmd); private: + /// only the top-level LyXText has this non-zero + BufferView * bv_owner; + /** wether the screen needs a refresh, starting with refresh_y */ @@ -215,18 +204,13 @@ public: /** returns a pointer to a specified row. y is set to the beginning of the row */ - Row * getRow(Paragraph * par, - lyx::pos_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 @@ -290,6 +274,12 @@ public: /// returns the inset at cursor (if it exists), 0 otherwise Inset * getInset() const; + /// accept selected change + void acceptChange(BufferView * bv); + + /// reject selected change + void rejectChange(BufferView * bv); + /** '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. @@ -349,6 +339,10 @@ public: /// void cursorEnd(BufferView *) const; /// + void cursorPrevious(BufferView * bv); + /// + void cursorNext(BufferView * bv); + /// void cursorTab(BufferView *) const; /// void cursorTop(BufferView *) const; @@ -413,10 +407,11 @@ public: /* these things are for search and replace */ - /** sets the selection over the number of characters of string, - no check!! - */ - void setSelectionOverString(BufferView *, string const & str); + /** + * Sets the selection from the current cursor position to length + * characters to the right. No safety checks. + */ + void setSelectionRange(BufferView *, lyx::pos_type length); /** simple replacing. The font of the first selected character is used @@ -432,6 +427,11 @@ public: bool gotoNextInset(BufferView *, std::vector const & codes, string const & contents = string()) const; /// + void gotoInset(BufferView * bv, std::vector const & codes, + bool same_content); + /// + void gotoInset(BufferView * bv, Inset::Code code, bool same_content); + /// /* for the greater insets */ @@ -480,18 +480,17 @@ public: private: /// mutable Row * firstrow; - /// 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 * bview, + void changeRegionCase(BufferView * bv, LyXCursor const & from, LyXCursor const & to, LyXText::TextCase action); @@ -508,16 +507,17 @@ private: Lgb has learned that 'char' is a lousy type for non-characters */ string copylayouttype; + /** inserts a new row behind the specified row, increments the touched counters */ void insertRow(Row * row, Paragraph * par, lyx::pos_type pos) const; - /** removes the row and reset the touched counters */ + /// 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; @@ -574,12 +574,15 @@ private: /// paint the selection background void paintRowSelection(DrawRowParams & p); + /// paint change bar + void paintChangeBar(DrawRowParams & p); + /// paint appendix marker void paintRowAppendix(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); @@ -601,7 +604,7 @@ private: // 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; @@ -613,8 +616,14 @@ public: /** Updates all counters starting BEHIND the row. Changed paragraphs * 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; @@ -662,10 +671,7 @@ private: screen in pixel */ int labelFill(BufferView *, Row const * row) const; - /// - 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 @@ -677,25 +683,6 @@ private: /// int labelEnd (BufferView *, Row const * row) const; - /** 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 - LyX-Hfill is a LaTeX \hfill so that the hfills at the - beginning and at the end were ignored. This is {\em MUCH} - 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 - LaTeX - */ - bool hfillExpansion(Buffer const *, Row const * row_ptr, - lyx::pos_type pos) const; /// LColor::color backgroundColor(); @@ -722,13 +709,6 @@ private: unsigned char transformChar(unsigned char c, Paragraph * par, lyx::pos_type pos) const; - /** returns the paragraph position of the last character in the - specified row - */ - lyx::pos_type rowLast(Row const * row) const; - /// - lyx::pos_type rowLastPrintable(Row const * row) const; - /// void charInserted(); public: @@ -740,6 +720,12 @@ public: void ownerParagraph(Paragraph *) const; // set it searching first for the right owner using the paragraph id void ownerParagraph(int id, Paragraph *) const; + + /// return true if this is the outer-most lyxtext + bool isTopLevel() const; }; -#endif +/// return the default height of a row in pixels, considering font zoom +extern int defaultRowHeight(); + +#endif // LYXTEXT_H