+ void selectionRequested();
+ ///
+ void selectionLost();
+ ///
+ void enterView();
+ ///
+ void leaveView();
+ ///
+ void cursorToggle();
+ ///
+ void cursorPrevious(LyXText *);
+ ///
+ void cursorNext(LyXText *);
+ ///
+ bool available() const;
+ ///
+ void beforeChange(LyXText *);
+ ///
+ void savePosition(unsigned int i);
+ ///
+ void restorePosition(unsigned int i);
+ ///
+ bool isSavedPosition(unsigned int i);
+ ///
+ void setState();
+ ///
+ void insetSleep();
+ ///
+ void insetWakeup();
+ ///
+ void insetUnlock();
+ ///
+ bool focus() const;
+ ///
+ void focus(bool);
+ ///
+ bool active() const;
+ ///
+ bool belowMouse() const;
+ ///
+ void showCursor();
+ ///
+ void hideCursor();
+ ///
+ void toggleSelection(bool = true);
+ ///
+ void toggleToggle();
+ ///
+ void center();
+ ///
+ bool insertInset(Inset * inset, string const & lout = string());
+ ///
+ void updateInset(Inset * inset, bool mark_dirty);
+ ///
+ bool Dispatch(kb_action action, string const & argument);
+private:
+ /**
+ * Return the on-screen dimensions of the inset at the cursor.
+ * Pre-condition: the cursor must be at an inset.
+ */
+ Box insetDimensions(LyXText const & text, LyXCursor const & cursor) const;
+ /**
+ * check if the given co-ordinates are inside an inset at the given cursor,
+ * if one exists. If so, the inset is returned, and the co-ordinates are
+ * made relative. Otherwise, 0 is returned.
+ */
+ Inset * checkInset(LyXText const & text, LyXCursor const & cursor, int & x, int & y) const;
+ ///
+ friend class BufferView;
+ /// open and lock an updatable inset
+ bool open_new_inset(UpdatableInset * new_inset, bool behind = false);
+ ///
+ void specialChar(InsetSpecialChar::Kind);
+ ///
+ void newline();
+ ///
+ void hfill();
+ ///
+ void smartQuote();
+ ///
+ void insertAndEditInset(Inset *);
+ ///
+ void gotoInset(std::vector<Inset::Code> const & codes,
+ bool same_content);
+ ///
+ void gotoInset(Inset::Code codes, bool same_content);
+ ///