mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
have pointing cursor when hovering something clickable
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35806 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
943288066d
commit
4e5d3469f6
@ -220,7 +220,8 @@ struct BufferView::Private
|
|||||||
Private(BufferView & bv): wh_(0), cursor_(bv),
|
Private(BufferView & bv): wh_(0), cursor_(bv),
|
||||||
anchor_pit_(0), anchor_ypos_(0),
|
anchor_pit_(0), anchor_ypos_(0),
|
||||||
inlineCompletionUniqueChars_(0),
|
inlineCompletionUniqueChars_(0),
|
||||||
last_inset_(0), mouse_position_cache_(),
|
last_inset_(0), clickable_inset_(false),
|
||||||
|
mouse_position_cache_(),
|
||||||
bookmark_edit_position_(-1), gui_(0)
|
bookmark_edit_position_(-1), gui_(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -263,6 +264,8 @@ struct BufferView::Private
|
|||||||
* Not owned, so don't delete.
|
* Not owned, so don't delete.
|
||||||
*/
|
*/
|
||||||
Inset * last_inset_;
|
Inset * last_inset_;
|
||||||
|
/// are we hovering something that we can click
|
||||||
|
bool clickable_inset_;
|
||||||
|
|
||||||
/// position of the mouse at the time of the last mouse move
|
/// position of the mouse at the time of the last mouse move
|
||||||
/// This is used to update the hovering status of inset in
|
/// This is used to update the hovering status of inset in
|
||||||
@ -1959,8 +1962,12 @@ Inset const * BufferView::getCoveringInset(Text const & text,
|
|||||||
void BufferView::updateHoveredInset() const
|
void BufferView::updateHoveredInset() const
|
||||||
{
|
{
|
||||||
// Get inset under mouse, if there is one.
|
// Get inset under mouse, if there is one.
|
||||||
Inset const * covering_inset = getCoveringInset(buffer_.text(),
|
int const x = d->mouse_position_cache_.x_;
|
||||||
d->mouse_position_cache_.x_, d->mouse_position_cache_.y_);
|
int const y = d->mouse_position_cache_.y_;
|
||||||
|
Inset const * covering_inset = getCoveringInset(buffer_.text(), x, y);
|
||||||
|
|
||||||
|
d->clickable_inset_ = covering_inset && covering_inset->clickable(x, y);
|
||||||
|
|
||||||
if (covering_inset == d->last_inset_)
|
if (covering_inset == d->last_inset_)
|
||||||
// Same inset, no need to do anything...
|
// Same inset, no need to do anything...
|
||||||
return;
|
return;
|
||||||
@ -2888,4 +2895,10 @@ void BufferView::setInlineCompletion(Cursor & cur, DocIterator const & pos,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool BufferView::clickableInset() const
|
||||||
|
{
|
||||||
|
return d->clickable_inset_;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace lyx
|
} // namespace lyx
|
||||||
|
@ -311,6 +311,8 @@ public:
|
|||||||
void editInset(std::string const & name, Inset * inset);
|
void editInset(std::string const & name, Inset * inset);
|
||||||
///
|
///
|
||||||
void clearLastInset(Inset * inset) const;
|
void clearLastInset(Inset * inset) const;
|
||||||
|
/// Is the mouse hovering a clickable inset or element?
|
||||||
|
bool clickableInset() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// noncopyable
|
/// noncopyable
|
||||||
|
@ -527,6 +527,9 @@ void GuiWorkArea::dispatch(FuncRequest const & cmd0, KeyModifier mod)
|
|||||||
// Show the cursor immediately after any operation
|
// Show the cursor immediately after any operation
|
||||||
startBlinkingCursor();
|
startBlinkingCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setCursorShape(buffer_view_->clickableInset()
|
||||||
|
? Qt::PointingHandCursor : Qt::IBeamCursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user