Code

Disconnect Glyphs UI while updating the model. 5X+ performance boost on CJK fonts...
authorJon A. Cruz <jon@joncruz.org>
Sat, 3 Apr 2010 09:28:11 +0000 (02:28 -0700)
committerJon A. Cruz <jon@joncruz.org>
Sat, 3 Apr 2010 09:28:11 +0000 (02:28 -0700)
src/ui/dialog/glyphs.cpp

index 8677bcda2c4a1169a008f0230f2fc0eafa6eb1c3..133cf01ea856e7b4c2471735415e786ee1302607 100644 (file)
@@ -377,6 +377,10 @@ void GlyphsPanel::rebuild()
         }
 #endif // GLIB_CHECK_VERSION(2,14,0)
 
+        // Disconnect the model while we update it. Simple work-around for 5x+ performance boost.
+        Glib::RefPtr<Gtk::ListStore> tmp = Gtk::ListStore::create(*getColumns());
+        iconView->set_model(tmp);
+
         std::vector<gunichar> present;
         for (gunichar ch = 1; ch < 65535; ch++) {
             int glyphId = font->MapUnicodeChar(ch);
@@ -401,6 +405,9 @@ void GlyphsPanel::rebuild()
             (*row)[columns->code] = *it;
             (*row)[columns->name] = tmp;
         }
+
+        // Reconnect the model once it has been updated:
+        iconView->set_model(store);
     }
 }