#include "lyxcursor.h"
#include "lyxparagraph.h"
#include "layout.h"
+#include "lyxrow.h"
class Buffer;
class BufferParams;
-class Row;
class BufferView;
class InsetText;
///
mutable int number_of_rows;
///
- mutable long height;
+ mutable int height;
///
mutable unsigned int width;
/// the current font settings
/// the current font
mutable LyXFont real_current_font;
/// first visible pixel-row is set from LyXScreen!!!
- unsigned long first;
+ // unsigned is wrong here for text-insets!
+ int first;
///
BufferView * bv_owner;
///
InsetText * inset_owner;
+ ///
+ UpdatableInset * the_locking_inset;
///
- LyXFont GetFont(Buffer const *, LyXParagraph * par,
+ int GetRealCursorX(BufferView *) const;
+ ///
+ LyXFont const GetFont(Buffer const *, LyXParagraph * par,
LyXParagraph::size_type pos) const;
///
void SetCharFont(Buffer const *, LyXParagraph * par,
Returns true if something was broken. */
bool FullRebreak(BufferView *);
-#ifndef NEW_INSETS
- ///
- LyXParagraph::footnote_flag GetFootnoteFlag(int row);
-#endif
///
Row * need_break_row;
///
- mutable long refresh_y;
+ mutable int refresh_y;
///
int refresh_height;
///
(relative to the whole text). y is set to the real beginning
of this row
*/
- Row * GetRowNearY(long & y) const;
+ Row * GetRowNearY(int & y) const;
/** returns the column near the specified x-coordinate of the row
x is set to the real beginning of this column
of the row
*/
Row * GetRow(LyXParagraph * par,
- LyXParagraph::size_type pos, long & y) const;
+ LyXParagraph::size_type pos, int & y) const;
/** returns the height of a default row, needed for scrollbar
*/
LyXCursor toggle_end_cursor;
/// need the selection cursor:
- void SetSelection();
+ void SetSelection(BufferView *);
///
- void ClearSelection() const;
+ void ClearSelection(BufferView *) const;
///
- string selectionAsString(Buffer const *) const;
+ string const selectionAsString(Buffer const *) const;
/// just selects the word the cursor is in
void SelectWord(BufferView *);
to the beginning of this word.
With SelectSelectedWord can this be highlighted really
*/
- char * SelectNextWord(BufferView *, float & value);
+ string const SelectNextWord(BufferView *, float & value) const;
///
void SelectSelectedWord(BufferView *);
///
LyXFont const & font) const;
///
- void SetCursorFromCoordinates(BufferView *, int x, long y) const;
+ void SetCursorFromCoordinates(BufferView *, int x, int y) const;
///
void SetCursorFromCoordinates(BufferView *, LyXCursor &,
- int x, long y) const;
+ int x, int y) const;
///
void CursorUp(BufferView *) const;
///
///
void CursorRight(BufferView *, bool internal = true) const;
///
- void CursorLeftIntern(BufferView *, bool internal = true) const;
- ///
- void CursorRightIntern(BufferView *, bool internal = true) const;
- ///
void CursorLeftOneWord(BufferView *) const;
///
void CursorRightOneWord(BufferView *) const;
};
/// Change the case of the word at cursor position.
void ChangeWordCase(BufferView *, TextCase action);
-
+ void TransposeChars(BufferView const &);
+
/** 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.
*/
void GetVisibleRow(BufferView *, int y_offset, int x_offset,
- Row * row_ptr, long y, bool cleared=false);
+ Row * row_ptr, int y, bool cleared=false);
-#ifndef NEW_INSETS
- /* footnotes: */
- ///
- void ToggleFootnote(BufferView *);
- ///
- void OpenStuff(BufferView *);
- ///
- void OpenFootnotes();
- ///
- void OpenFootnote(BufferView *);
- ///
- void CloseFootnotes();
- ///
- void CloseFootnote(BufferView *);
-
- /** turn the selection into a new environment. If there is no
- selection, create an empty environment
- */
- void InsertFootnoteEnvironment(BufferView *,
- LyXParagraph::footnote_kind kind);
- ///
- void MeltFootnoteEnvironment(BufferView *);
-#endif
///
void CutSelection(BufferView *, bool = true);
///
LyXAlignment align,
string labelwidthstring,
bool noindent);
- ///
- void SetParagraphExtraOpt(BufferView *, int type,
- char const * width,
- char const * widthp,
- int alignment, bool hfill,
- bool start_minipage);
/* these things are for search and replace */
- /** returns true if the specified string is at the specified
- position
- */
- bool IsStringInText(LyXParagraph * par,
- LyXParagraph::size_type pos,
- char const * str) const;
/** sets the selection over the number of characters of string,
no check!!
*/
- void SetSelectionOverString(BufferView *, char const * str);
+ void SetSelectionOverString(BufferView *, string const & str);
/** simple replacing. The font of the first selected character
is used
*/
- void ReplaceSelectionWithString(BufferView *, char const * str);
-
- /** if the string can be found: return true and set the cursor to
- the new position */
- bool SearchForward(BufferView *, char const * str) const;
- ///
- bool SearchBackward(BufferView *, char const * str) const;
+ void ReplaceSelectionWithString(BufferView *, string const & str);
/// needed to insert the selection
void InsertStringA(BufferView *, string const & str);
/// needed to insert the selection
void InsertStringB(BufferView *, string const & str);
- /// usefull when texing from within LyX
- bool GotoNextError(BufferView *) const;
-
- /// just another feature :)
- bool GotoNextNote(BufferView *) const;
+ /// Find next inset of some specified type.
+ bool GotoNextInset(BufferView *, std::vector<Inset::Code> const & codes,
+ string const & contents = string()) const;
+ ///
/* for the greater insets */
///
int NumberOfCell(LyXParagraph * par,
LyXParagraph::size_type pos) const;
- /* table stuff -- begin*/
-
- /** all table features of the text-class are put together in
- this function. Possible values of feature are defined in table.h
- */
- void TableFeatures(BufferView *, int feature, string const & val) const;
- ///
- void TableFeatures(BufferView *, int feature) const;
-
- /** pos points at the beginning of the next cell (if there is one)
- */
- int WidthOfCell(BufferView *, LyXParagraph * par,
- LyXParagraph::size_type & pos) const;
- ///
- void CheckParagraphInTable(BufferView *, LyXParagraph * par,
- LyXParagraph::size_type pos);
- ///
- void InsertCharInTable(BufferView *, char c);
- ///
- void BackspaceInTable(BufferView *);
- ///
- bool HitInTable(BufferView *, Row * row, int x) const;
- ///
- bool MouseHitInTable(BufferView *, int x, long y) const;
- /* table stuff -- end*/
///
LyXParagraph * GetParFromID(int id);
}
///
inline
- int bidi_level(LyXParagraph::size_type pos) const {
+ LyXParagraph::size_type bidi_level(LyXParagraph::size_type pos) const {
if (bidi_start == -1)
return 0;
else
LyXParagraph * OwnerParagraph(LyXParagraph *) 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