mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-09-21 15:18:45 +00:00
97901b5d51
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8333 a592a061-630c-0410-9148-cb99ea01b6c8
84 lines
1.8 KiB
C++
84 lines
1.8 KiB
C++
// -*- C++ -*-
|
|
/**
|
|
* \file cursor.h
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author André Pönitz
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
#ifndef CURSOR_H
|
|
#define CURSOR_H
|
|
|
|
#include "textcursor.h"
|
|
#include "cursor_slice.h"
|
|
|
|
#include "support/types.h"
|
|
|
|
#include <iosfwd>
|
|
#include <vector>
|
|
|
|
class BufferView;
|
|
class UpdatableInset;
|
|
class DispatchResult;
|
|
class FuncRequest;
|
|
class LyXText;
|
|
class InsetTabular;
|
|
|
|
|
|
/**
|
|
* The cursor class describes the position of a cursor within a document.
|
|
*/
|
|
|
|
|
|
class LCursor {
|
|
public:
|
|
/// create 'empty' cursor
|
|
explicit LCursor(BufferView * bv);
|
|
/// dispatch from innermost inset upwards
|
|
DispatchResult dispatch(FuncRequest const & cmd);
|
|
///
|
|
void push(UpdatableInset * inset);
|
|
/// restrict cursor nesting to given size
|
|
void pop(int depth);
|
|
/// pop one level off the cursor
|
|
void pop();
|
|
/// access to cursor 'tip'
|
|
CursorSlice & top() { return data_.back(); }
|
|
/// access to cursor 'tip'
|
|
CursorSlice const & top() const { return data_.back(); }
|
|
|
|
/// set the cell the cursor is in
|
|
void cell(int);
|
|
/// return the cell this cursor is in
|
|
int cell() const;
|
|
///
|
|
UpdatableInset * innerInset() const;
|
|
///
|
|
UpdatableInset * innerInsetOfType(int code) const;
|
|
///
|
|
InsetTabular * innerInsetTabular() const;
|
|
///
|
|
LyXText * innerText() const;
|
|
/// returns x,y position
|
|
void getPos(int & x, int & y) const;
|
|
/// returns cursor dimension
|
|
void getDim(int & asc, int & desc) const;
|
|
/// cache the absolute coordinate from the top inset
|
|
void updatePos();
|
|
///
|
|
friend std::ostream & operator<<(std::ostream &, LCursor const &);
|
|
public:
|
|
/// mainly used as stack, but wee need random access
|
|
std::vector<CursorSlice> data_;
|
|
///
|
|
BufferView * bv_;
|
|
private:
|
|
///
|
|
int cached_y_;
|
|
};
|
|
|
|
#endif // LYXCURSOR_H
|