Jelajahi Sumber

LibWeb: Ensure layout is up-to-date before blinking the input cursor

Andreas Kling 1 tahun lalu
induk
melakukan
94e55768f6
1 mengubah file dengan 8 tambahan dan 2 penghapusan
  1. 8 2
      Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp

+ 8 - 2
Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp

@@ -279,9 +279,15 @@ BrowsingContext::BrowsingContext(JS::NonnullGCPtr<Page> page)
     m_cursor_blink_timer = Core::Timer::create_repeating(500, [this] {
     m_cursor_blink_timer = Core::Timer::create_repeating(500, [this] {
         if (!is_focused_context())
         if (!is_focused_context())
             return;
             return;
-        if (m_cursor_position && m_cursor_position->node()->paintable()) {
+        if (!m_cursor_position)
+            return;
+        auto node = m_cursor_position->node();
+        if (!node)
+            return;
+        node->document().update_layout();
+        if (node->paintable()) {
             m_cursor_blink_state = !m_cursor_blink_state;
             m_cursor_blink_state = !m_cursor_blink_state;
-            m_cursor_position->node()->paintable()->set_needs_display();
+            node->paintable()->set_needs_display();
         }
         }
     }).release_value_but_fixme_should_propagate_errors();
     }).release_value_but_fixme_should_propagate_errors();
 }
 }