Implement mouse hovering for InsetExternal.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35803 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2010-10-24 19:25:36 +00:00
parent a77d991e24
commit 72569c42ba
2 changed files with 20 additions and 0 deletions

View File

@ -371,6 +371,7 @@ InsetExternal::InsetExternal(Buffer * buf)
}
// Mouse hover is not copied and remains empty
InsetExternal::InsetExternal(InsetExternal const & other)
: Inset(other),
boost::signals::trackable(),
@ -382,6 +383,19 @@ InsetExternal::InsetExternal(InsetExternal const & other)
InsetExternal::~InsetExternal()
{
hideDialogs("external", this);
map<BufferView const *, bool>::iterator it = mouse_hover_.begin();
map<BufferView const *, bool>::iterator end = mouse_hover_.end();
for (; it != end; ++it)
if (it->second)
it->first->clearLastInset(this);
}
bool InsetExternal::setMouseHover(BufferView const * bv, bool mouse_hover)
{
mouse_hover_[bv] = mouse_hover;
return true;
}
@ -454,6 +468,8 @@ void InsetExternal::metrics(MetricsInfo & mi, Dimension & dim) const
void InsetExternal::draw(PainterInfo & pi, int x, int y) const
{
if (renderer_->asButton())
renderer_->setRenderState(mouse_hover_[pi.base.bv]);
renderer_->draw(pi, x, y);
}

View File

@ -113,6 +113,8 @@ public:
int latex(odocstream &, OutputParams const &) const;
///
docstring contextMenu(BufferView const & bv, int x, int y) const;
///
bool setMouseHover(BufferView const * bv, bool mouse_hover);
private:
///
@ -161,6 +163,8 @@ private:
InsetExternalParams params_;
/// The thing that actually draws the image on LyX's screen.
boost::scoped_ptr<RenderBase> renderer_;
/// changes color of the button when mouse enters/leaves this inset
mutable std::map<BufferView const *, bool> mouse_hover_;
};
} // namespace lyx