瀏覽代碼

LibGUI: Disable EmojiInputDialog updates while re-displaying emoji

To prevent lag when the displayed code points are redrawn in support of
a search box, disable updates while re-adding the emoji buttons.
Timothy Flynn 2 年之前
父節點
當前提交
a885406511
共有 1 個文件被更改,包括 4 次插入0 次删除
  1. 4 0
      Userland/Libraries/LibGUI/EmojiInputDialog.cpp

+ 4 - 0
Userland/Libraries/LibGUI/EmojiInputDialog.cpp

@@ -6,6 +6,7 @@
  */
 
 #include <AK/LexicalPath.h>
+#include <AK/ScopeGuard.h>
 #include <AK/StringBuilder.h>
 #include <AK/Utf32View.h>
 #include <LibCore/DirIterator.h>
@@ -89,6 +90,9 @@ auto EmojiInputDialog::supported_emoji() -> Vector<Emoji>
 
 void EmojiInputDialog::update_displayed_emoji()
 {
+    ScopeGuard guard { [&] { m_emojis_widget->set_updates_enabled(true); } };
+    m_emojis_widget->set_updates_enabled(false);
+
     constexpr size_t columns = 18;
     size_t rows = ceil_div(m_emojis.size(), columns);
     size_t index = 0;