#include "lyxfont.h"
#include "layout.h"
#include "lyxlayout_ptr_fwd.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
#include <iosfwd>
void breakParagraph(LCursor & cur, bool keep_layout = false);
/// set layout over selection
- pit_type setLayout(pit_type start, pit_type end,
+ void setLayout(pit_type start, pit_type end,
std::string const & layout);
///
void setLayout(LCursor & cur, std::string const & layout);
void setFont(LCursor & cur, LyXFont const &, bool toggleall = false);
/// rebreaks the given par
- void redoParagraph(pit_type pit);
+ bool redoParagraph(pit_type pit);
/// returns pos in given par at given x coord
pos_type x2pos(pit_type pit, int row, int x) const;
void toggleFree(LCursor & cur, LyXFont const &, bool toggleall = false);
///
- std::string getStringToIndex(LCursor & cur);
+ std::string getStringToIndex(LCursor const & cur);
/// insert a character at cursor position
- void insertChar(LCursor & cur, char c);
+ void insertChar(LCursor & cur, lyx::char_type c);
/// insert an inset at cursor position
void insertInset(LCursor & cur, InsetBase * inset);
FuncStatus & status) const;
/// access to out BufferView. This should go...
-// BufferView * bv();
- /// access to out BufferView. This should go...
BufferView * bv() const;
- /// access to individual paragraphs
- Paragraph & getPar(pit_type par) const;
+ /// read-only access to individual paragraph
+ Paragraph const & getPar(pit_type pit) const { return pars_[pit]; }
+ /// read-write access to individual paragraph
+ Paragraph & getPar(pit_type pit) { return pars_[pit]; }
// Returns the current font and depth as a message.
- std::string LyXText::currentState(LCursor & cur);
+ std::string currentState(LCursor & cur);
/** returns row near the specified
* y-coordinate in given paragraph (relative to the screen).
bool setCursor(LCursor & cur, pit_type par, pos_type pos,
bool setfont = true, bool boundary = false);
///
- void setCursor(CursorSlice &, pit_type par,
- pos_type pos, bool boundary = false);
+ void setCursor(CursorSlice &, pit_type par, pos_type pos);
///
void setCursorIntern(LCursor & cur, pit_type par,
- pos_type pos, bool setfont = true, bool boundary = false);
+ pos_type pos, bool setfont = true, bool boundary = false);
///
void setCurrentFont(LCursor & cur);
void recUndo(pit_type first, pit_type last) const;
///
void recUndo(pit_type first) const;
+ /// returns true if par was empty and was removed
+ bool setCursorFromCoordinates(LCursor & cur, int x, int y);
///
- void setCursorFromCoordinates(LCursor & cur, int x, int y);
- ///
- InsetBase * editXY(LCursor & cur, int x, int y) const;
+ InsetBase * editXY(LCursor & cur, int x, int y);
/// Move cursor one line up.
/**
* Returns true if an update is needed after the move.
///
bool cursorDownParagraph(LCursor & cur);
///
- void cursorHome(LCursor & cur);
+ bool cursorHome(LCursor & cur);
///
- void cursorEnd(LCursor & cur);
+ bool cursorEnd(LCursor & cur);
///
bool cursorPrevious(LCursor & cur);
///
bool cursorNext(LCursor & cur);
///
- void cursorTop(LCursor & cur);
+ bool cursorTop(LCursor & cur);
///
- void cursorBottom(LCursor & cur);
- ///
- void Delete(LCursor & cur);
- ///
- void backspace(LCursor & cur);
+ bool cursorBottom(LCursor & cur);
+ /// Erase character at cursor. Honour change tracking
+ bool erase(LCursor & cur);
+ /** At cursor position 0, merge paragraph with the one before it.
+ * Ignore CT (this is used in \c acceptChange, \c rejectChange for
+ * physical deletion of paragraph break)
+ */
+ bool backspacePos0(LCursor & cur);
+ /// Delete character before cursor. Honour CT
+ bool backspace(LCursor & cur);
///
bool selectWordWhenUnderCursor(LCursor & cur, lyx::word_location);
///
RowMetrics computeRowMetrics(pit_type pit, Row const & row) const;
/// access to our paragraphs
- ParagraphList & paragraphs() const;
+ ParagraphList const & paragraphs() const { return pars_; }
+ ParagraphList & paragraphs() { return pars_; }
/// return true if this is the main text
bool isMainText() const;
///
int descent() const;
///
- int cursorX(CursorSlice const & cursor) const;
+ int cursorX(CursorSlice const & cursor, bool boundary) const;
///
- int cursorY(CursorSlice const & cursor) const;
+ int cursorY(CursorSlice const & cursor, bool boundary) const;
+
+ /// delete double space or empty paragraphs around old cursor
+ bool deleteEmptyParagraphMechanism(LCursor & cur, LCursor & old);
///
friend class LyXScreen;
LyXFont current_font;
/// the current font
LyXFont real_current_font;
- /// our buffer's default layout font. This is textclass specific
- LyXFont defaultfont_;
///
int background_color_;
/// change on pit
pit_type undoSpan(pit_type pit);
- /// used in setlayout
- void makeFontEntriesLayoutSpecific(BufferParams const &, Paragraph & par);
-
/// Calculate and set the height of the row
void setHeightOfRow(pit_type, Row & row);
// position. Called by deleteEmptyParagraphMechanism
void fixCursorAfterDelete(CursorSlice & cur, CursorSlice const & where);
- /// delete double space or empty paragraphs around old cursor
- bool deleteEmptyParagraphMechanism(LCursor & cur, LCursor const & old);
-
///
void deleteWordForward(LCursor & cur);
///