mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
LibWeb: Restart the cursor blink cycle whenever the user edits content
Having the text cursor disappear during rapid continuous editing is quite jarring, so let's make sure we always restart the blink cycle whenever the user performs some kind of editing action in a frame.
This commit is contained in:
parent
901ef3f1c8
commit
ce2894c95b
Notes:
sideshowbarker
2024-07-19 00:07:08 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/ce2894c95b1
3 changed files with 14 additions and 0 deletions
|
@ -96,6 +96,8 @@ void EditEventHandler::handle_delete(DOM::Range& range)
|
|||
// remain in the layout tree. This has to be fixed, this just causes everything to be recomputed
|
||||
// which really hurts performance.
|
||||
m_frame.document()->force_layout();
|
||||
|
||||
m_frame.did_edit({});
|
||||
}
|
||||
|
||||
void EditEventHandler::handle_insert(DOM::Position position, u32 code_point)
|
||||
|
@ -116,5 +118,7 @@ void EditEventHandler::handle_insert(DOM::Position position, u32 code_point)
|
|||
// remain in the layout tree. This has to be fixed, this just causes everything to be recomputed
|
||||
// which really hurts performance.
|
||||
m_frame.document()->force_layout();
|
||||
|
||||
m_frame.did_edit({});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,6 +70,14 @@ void Frame::setup()
|
|||
});
|
||||
}
|
||||
|
||||
void Frame::did_edit(Badge<EditEventHandler>)
|
||||
{
|
||||
// The user has edited the content, restart the cursor blink cycle so that
|
||||
// the cursor doesn't disappear during rapid continuous editing.
|
||||
m_cursor_blink_state = true;
|
||||
m_cursor_blink_timer->restart();
|
||||
}
|
||||
|
||||
bool Frame::is_focused_frame() const
|
||||
{
|
||||
return m_page && &m_page->focused_frame() == this;
|
||||
|
|
|
@ -94,6 +94,8 @@ public:
|
|||
|
||||
String selected_text() const;
|
||||
|
||||
void did_edit(Badge<EditEventHandler>);
|
||||
|
||||
private:
|
||||
explicit Frame(DOM::Element& host_element, Frame& main_frame);
|
||||
explicit Frame(Page&);
|
||||
|
|
Loading…
Reference in a new issue