From 8153ea8fa728e06a709e4147d4fcf977c5cdf513 Mon Sep 17 00:00:00 2001 From: Bo Peng Date: Thu, 7 Jun 2007 18:08:03 +0000 Subject: [PATCH] Show corners of mathed with mouse hover, details see bug 3825 git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18701 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/insets/Inset.cpp | 31 ------------------------- src/insets/Inset.h | 4 ---- src/mathed/InsetMathNest.cpp | 44 ++++++++++++++++++++++++++++++++++-- src/mathed/InsetMathNest.h | 9 ++++++++ 4 files changed, 51 insertions(+), 37 deletions(-) diff --git a/src/insets/Inset.cpp b/src/insets/Inset.cpp index 24760dbb6e..e1a8a4e975 100644 --- a/src/insets/Inset.cpp +++ b/src/insets/Inset.cpp @@ -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); diff --git a/src/insets/Inset.h b/src/insets/Inset.h index 017d14189b..b5e447c081 100644 --- a/src/insets/Inset.h +++ b/src/insets/Inset.h @@ -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 diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp index 14c817d3b9..ef0c5c7296 100644 --- a/src/mathed/InsetMathNest.cpp +++ b/src/mathed/InsetMathNest.cpp @@ -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 diff --git a/src/mathed/InsetMathNest.h b/src/mathed/InsetMathNest.h index 3770bccd0d..c204dbd09b 100644 --- a/src/mathed/InsetMathNest.h +++ b/src/mathed/InsetMathNest.h @@ -108,6 +108,13 @@ public: /// This signal is emitted when the inset is destroyed. boost::signal * 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.