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
This commit is contained in:
Bo Peng 2007-06-07 18:08:03 +00:00
parent 5a7524ac9b
commit 8153ea8fa7
4 changed files with 51 additions and 37 deletions

View 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);

View 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

View 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

View File

@ -109,6 +109,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:
///
InsetMathNest(InsetMathNest const & inset);
@ -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.