Programmer's criticism of GTK2



Hi there,
I've decided to post this some critics after exploring various parts of GTK2 library.
Unfortunately GTK2 is awfull in some points of view, and perfect in another.
Of course all of us live in real world and nothing can be perfectly perfect :-)
1)Let's compare old GtkCList/CTree and new TreeModel
-Using both of them we can't store a single pointer the row and use it for FAST access in future. GtkCList model hides them(pointers) from us, TreeModel forbids to use stored iterators after any changes of the list/tree. I absolutely do not understand WHY! Both (new and old) list/tree structures does
not reallocate data of the row till it will be removed and added again.
-One can use iterators to access list rows in GTK2 and a number of a row in GTK1.x. BUT (always BUT) iterators can't be stored before changes and using again after changes done so we allways need to create iterator from GtkTreePath. But what is GtkTreePath? It's only a number of a row (for a list) and list of numbers of the rows for tree structure. gtk_tree_path_* routines is used very very frequent inside GtkTreeModel subrutines. Try to calc how often such routines is called during gtk_list_store_remove :-) So comparing with GTK1.x GTK2 is
much more slower.
-Simplicity. Add a row to the GtkCList (with all data) and to the list_store. Compare code length :-)
2) Let's compare old and new label widgets.
-New one can be selectable, can contain characters from different charsets and more.
   -Size of sources of new gtklabel is 80Kb versus 20Kb of old one.
3) i18n support in GTK2 is MUCH better than in GTK1.x.
4) GTK2 is MUCH slower than GTK1.x (try to run gtk-demo :-)
5) Stock icons should to be added even in GTK-0.x :-( But of course idea of SizeGroups is good :-)
6) Size of gtktreeview.c causes anxiety :-)

Current state of GTK and GLIB looks like it have to be rewritten in C++ or another highlevel language :-)

But even with all above GTK2 is good work of its developers.







[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]