]> git.lyx.org Git - lyx.git/commitdiff
Show corners of mathed with mouse hover, details see bug 3825
authorBo Peng <bpeng@lyx.org>
Thu, 7 Jun 2007 18:08:03 +0000 (18:08 +0000)
committerBo Peng <bpeng@lyx.org>
Thu, 7 Jun 2007 18:08:03 +0000 (18:08 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18701 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/Inset.cpp
src/insets/Inset.h
src/mathed/InsetMathNest.cpp
src/mathed/InsetMathNest.h

index 24760dbb6e3982e41812011282c6e245eaa7ee57..e1a8a4e975341ca856247c1a2f254e140975236b 100644 (file)
@@ -280,37 +280,6 @@ void Inset::metricsMarkers2(Dimension & dim, int framesize) const
 }
 
 
-void Inset::drawMarkers(PainterInfo & pi, int x, int y) const
-{
-       Color::color pen_color = editing(pi.base.bv)?
-               Color::mathframe : Color::mathcorners;
-
-       int const t = x + width() - 1;
-       int const d = y + descent();
-       pi.pain.line(x, d - 3, x, d, pen_color);
-       pi.pain.line(t, d - 3, t, d, pen_color);
-       pi.pain.line(x, d, x + 3, d, pen_color);
-       pi.pain.line(t - 3, d, t, d, pen_color);
-       setPosCache(pi, x, y);
-}
-
-
-void Inset::drawMarkers2(PainterInfo & pi, int x, int y) const
-{
-       Color::color pen_color = editing(pi.base.bv)?
-               Color::mathframe : Color::mathcorners;
-
-       drawMarkers(pi, x, y);
-       int const t = x + width() - 1;
-       int const a = y - ascent();
-       pi.pain.line(x, a + 3, x, a, pen_color);
-       pi.pain.line(t, a + 3, t, a, pen_color);
-       pi.pain.line(x, a, x + 3, a, pen_color);
-       pi.pain.line(t - 3, a, t, a, pen_color);
-       setPosCache(pi, x, y);
-}
-
-
 bool Inset::editing(BufferView * bv) const
 {
        return bv->cursor().isInside(this);
index 017d14189b211f5254ab56796eb1ec1b9e65aec7..b5e447c0819bb05c1e3342374805af1d37a1d93d 100644 (file)
@@ -130,10 +130,6 @@ public:
        /// draw inset decoration if necessary.
        /// This can use \c drawMarkers() for example.
        virtual void drawDecoration(PainterInfo &, int, int) const {}
-       /// draw four angular markers
-       void drawMarkers(PainterInfo & pi, int x, int y) const;
-       /// draw two angular markers
-       void drawMarkers2(PainterInfo & pi, int x, int y) const;
        /// add space for markers
        void metricsMarkers(Dimension & dim, int framesize = 1) const;
        /// add space for markers
index 14c817d3b9a396487695aee2e614e7010603081b..ef0c5c7296b5d74d0e737c9ef1ec1533cf814b56 100644 (file)
@@ -74,12 +74,13 @@ using std::istringstream;
 
 
 InsetMathNest::InsetMathNest(idx_type nargs)
-       : cells_(nargs), lock_(false)
+       : cells_(nargs), lock_(false), mouse_hover_(false)
 {}
 
 
 InsetMathNest::InsetMathNest(InsetMathNest const & inset)
-       : InsetMath(inset), cells_(inset.cells_), lock_(inset.lock_)
+       : InsetMath(inset), cells_(inset.cells_), lock_(inset.lock_),
+         mouse_hover_(false)
 {}
 
 
@@ -87,6 +88,7 @@ InsetMathNest & InsetMathNest::operator=(InsetMathNest const & inset)
 {
        cells_ = inset.cells_;
        lock_ = inset.lock_;
+       mouse_hover_ = false;
        InsetMath::operator=(inset);
        return *this;
 }
@@ -358,6 +360,44 @@ int InsetMathNest::latex(Buffer const &, odocstream & os,
 }
 
 
+void InsetMathNest::drawMarkers(PainterInfo & pi, int x, int y) const
+{
+       Color::color pen_color = mouse_hover_ || editing(pi.base.bv) ?
+               Color::mathframe : Color::mathcorners;
+
+       int const t = x + width() - 1;
+       int const d = y + descent();
+       pi.pain.line(x, d - 3, x, d, pen_color);
+       pi.pain.line(t, d - 3, t, d, pen_color);
+       pi.pain.line(x, d, x + 3, d, pen_color);
+       pi.pain.line(t - 3, d, t, d, pen_color);
+       setPosCache(pi, x, y);
+}
+
+
+void InsetMathNest::drawMarkers2(PainterInfo & pi, int x, int y) const
+{
+       Color::color pen_color = mouse_hover_ || editing(pi.base.bv)?
+               Color::mathframe : Color::mathcorners;
+
+       drawMarkers(pi, x, y);
+       int const t = x + width() - 1;
+       int const a = y - ascent();
+       pi.pain.line(x, a + 3, x, a, pen_color);
+       pi.pain.line(t, a + 3, t, a, pen_color);
+       pi.pain.line(x, a, x + 3, a, pen_color);
+       pi.pain.line(t - 3, a, t, a, pen_color);
+       setPosCache(pi, x, y);
+}
+
+
+bool InsetMathNest::setMouseHover(bool mouse_hover)
+{
+       mouse_hover_ = mouse_hover;
+       return true;
+}
+
+
 bool InsetMathNest::notifyCursorLeaves(Cursor & /*cur*/)
 {
 #ifdef WITH_WARNINGS
index 3770bccd0d3b00a23f1d7eb09d3d42e8795188e4..c204dbd09b884eef21d2c4c6fc0927133a954f39 100644 (file)
@@ -108,6 +108,13 @@ public:
 
        /// This signal is emitted when the inset is destroyed.
        boost::signal<void()> * destroyedSignal() { return &destroyed; }
+       
+       /// draw four angular markers
+       void drawMarkers(PainterInfo & pi, int x, int y) const;
+       /// draw two angular markers
+       void drawMarkers2(PainterInfo & pi, int x, int y) const;
+       ///
+       bool setMouseHover(bool mouse_hover);
 
 protected:
        ///
@@ -156,6 +163,8 @@ protected:
        cells_type cells_;
        /// if the inset is locked, it can't be entered with the cursor
        bool lock_;
+       ///
+       bool mouse_hover_;
 
 private:
        /// This signal is emitted when the inset is destroyed.