mirror of
https://github.com/RGBCube/serenity
synced 2025-05-18 18:55:07 +00:00
LibWeb: Add a blinking text cursor :^)
Each Web::Frame now has a cursor that sits at a DOM::Position. It will blink and look like a nice regular text cursor. It doesn't really do anything yet, but it will eventually.
This commit is contained in:
parent
e496a74bb3
commit
2c679d0c8b
5 changed files with 66 additions and 0 deletions
|
@ -40,6 +40,7 @@ Frame::Frame(DOM::Element& host_element, Frame& main_frame)
|
|||
, m_event_handler({}, *this)
|
||||
, m_host_element(host_element.make_weak_ptr())
|
||||
{
|
||||
setup();
|
||||
}
|
||||
|
||||
Frame::Frame(Page& page)
|
||||
|
@ -48,12 +49,23 @@ Frame::Frame(Page& page)
|
|||
, m_loader(*this)
|
||||
, m_event_handler({}, *this)
|
||||
{
|
||||
setup();
|
||||
}
|
||||
|
||||
Frame::~Frame()
|
||||
{
|
||||
}
|
||||
|
||||
void Frame::setup()
|
||||
{
|
||||
m_cursor_blink_timer = Core::Timer::construct(500, [this] {
|
||||
if (m_cursor_position.node() && m_cursor_position.node()->layout_node()) {
|
||||
m_cursor_blink_state = !m_cursor_blink_state;
|
||||
m_cursor_position.node()->layout_node()->set_needs_display();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void Frame::set_document(DOM::Document* document)
|
||||
{
|
||||
if (m_document == document)
|
||||
|
@ -168,4 +180,20 @@ Gfx::IntPoint Frame::to_main_frame_position(const Gfx::IntPoint& a_position)
|
|||
return position;
|
||||
}
|
||||
|
||||
void Frame::set_cursor_position(const DOM::Position & position)
|
||||
{
|
||||
if (m_cursor_position == position)
|
||||
return;
|
||||
|
||||
if (m_cursor_position.node() && m_cursor_position.node()->layout_node())
|
||||
m_cursor_position.node()->layout_node()->set_needs_display();
|
||||
|
||||
m_cursor_position = position;
|
||||
|
||||
if (m_cursor_position.node() && m_cursor_position.node()->layout_node())
|
||||
m_cursor_position.node()->layout_node()->set_needs_display();
|
||||
|
||||
dbg() << "Cursor position: " << m_cursor_position;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue