]> git.lyx.org Git - lyx.git/blobdiff - src/insets/inset.h
Don't remove cell selections after fontchange.
[lyx.git] / src / insets / inset.h
index 49e38c05de1ed05762650bbbbe69fd4bf3c368e4..aae88009d78c4c7e8be4955fcd897013adda9cab 100644 (file)
@@ -159,7 +159,12 @@ public:
        /// This is called when the user clicks inside an inset
        virtual void insetButtonPress(BufferView *, int, int, int) {}
        /// This is called when the user releases the button inside an inset
-       virtual void insetButtonRelease(BufferView *, int, int, int) {}
+       // the bool return is used to see if we opened a dialog so that we can
+       // check this from an outer inset and open the dialog of the outer inset
+       // if that one has one!
+       ///
+       virtual bool insetButtonRelease(BufferView *, int, int, int)
+               { return false; }
        /// This is called when the user moves the mouse inside an inset
        virtual void insetMotionNotify(BufferView *, int , int , int) {}
        ///
@@ -186,7 +191,7 @@ public:
                          bool free_spc) const = 0;
        ///
        virtual int ascii(Buffer const *,
-                         std::ostream &, int linelen = 0) const = 0;
+                         std::ostream &, int linelen = 0) const = 0;
        ///
        virtual int linuxdoc(Buffer const *, std::ostream &) const = 0;
        ///
@@ -226,6 +231,10 @@ public:
        ///
        Inset * owner() const { return owner_; }
        ///
+       void parOwner(Paragraph * par) { par_owner_ = par; }
+       ///
+       Paragraph * parOwner() const {return par_owner_; }
+       ///
        void setBackgroundColor(LColor::color);
        ///
        LColor::color backgroundColor() const;
@@ -295,6 +304,25 @@ public:
        // needed for spellchecking text
        ///
        virtual bool allowSpellcheck() { return false; }
+
+       // should this inset be handled like a normal charater
+       virtual bool isChar() const { return false; }
+       // is this equivalent to a letter?
+       virtual bool isLetter() const { return false; }
+       // is this equivalent to a space (which is BTW different from
+       // a line separator)?
+       virtual bool isSpace() const { return false; }
+       // should we break lines after this inset?
+       virtual bool isLineSeparator() const { return false; }
+       // if this inset has paragraphs should they be output all as default
+       // paragraphs with "Standard" layout?
+       virtual bool forceDefaultParagraphs(Inset const *) const;
+       // needed for widths which are % of something
+       /* returns the value of \textwidth in this inset. Most of the
+           time this is the width of the workarea, but if there is a
+           minipage somewhere, it will be the width of this minipage */
+       virtual int latexTextWidth(BufferView *) const;
+
 protected:
        ///
        mutable int top_x;
@@ -312,6 +340,8 @@ protected:
 private:
        ///
        Inset * owner_;
+       /// the paragraph in which this inset has been inserted
+       Paragraph * par_owner_;
        ///
        string name_;
        ///
@@ -329,7 +359,7 @@ bool Inset::insetAllowed(Inset * in) const
 inline
 bool Inset::checkInsertChar(LyXFont &)
 {
-       return true;
+       return false;
 }
 
 //  Updatable Insets. These insets can be locked and receive
@@ -399,6 +429,9 @@ public:
        ///
        UpdatableInset(UpdatableInset const & in, bool same_id = false);
 
+       /// check if the font of the char we want inserting is correct
+       /// and modify it if it is not.
+       virtual bool checkInsertChar(LyXFont &);
        ///
        virtual EDITABLE editable() const;
        
@@ -415,8 +448,12 @@ public:
        ///
        virtual void insetButtonPress(BufferView *, int x, int y, int button);
        ///
-       virtual void insetButtonRelease(BufferView *,
-                                       int x, int y, int button);
+       // the bool return is used to see if we opened a dialog so that we can
+       // check this from an outer inset and open the dialog of the outer inset
+       // if that one has one!
+       ///
+       virtual bool insetButtonRelease(BufferView *,
+                                       int x, int y, int button);
        ///
        virtual void insetKeyPress(XKeyEvent * ev);
        ///
@@ -449,7 +486,7 @@ public:
                { return false; }
        ///
        virtual bool unlockInsetInInset(BufferView *, UpdatableInset *,
-                                       bool /*lr*/ = false)
+                                       bool /*lr*/ = false)
                { return false; }
        ///  An updatable inset could handle lyx editing commands
        virtual RESULT localDispatch(BufferView *, kb_action, string const &);
@@ -488,10 +525,10 @@ public:
        // needed for search/replace functionality
        ///
        virtual bool searchForward(BufferView *, string const &,
-                                  bool const & = true, bool const & = false);
+                                  bool = true, bool = false);
        ///
        virtual bool searchBackward(BufferView *, string const &,
-                                   bool const & = true, bool const & = false);
+                                   bool = true, bool = false);
 
 protected:
        ///
@@ -514,6 +551,12 @@ private:
        mutable bool block_drawing_;
 };
 
+inline
+bool UpdatableInset::checkInsertChar(LyXFont &)
+{
+       return true;
+}
+
 /**
  * returns true if pointer argument is valid
  * and points to an editable inset
@@ -524,11 +567,12 @@ inline bool isEditableInset(Inset * i)
 }
  
 /**
- * returns true if poiinter argument is valid
+ * returns true if pointer argument is valid
  * and points to a highly editable inset
  */
 inline bool isHighlyEditableInset(Inset * i)
 {
        return i && i->editable() == Inset::HIGHLY_EDITABLE;
 }
+
 #endif