Overview of Changes in GTK 3.98.0 ================================= While this release gets significantly closer to what we aim for in GTK 4, there are still a few big items outstanding that we are currently working on: - Event controllers for keyboard shortcuts - Movable popovers - Row-recycling list and grid views - Revamped accessibility infrastructure - Animation API We will do further 3.98.x snapshots as these land. ***************** * The DND refactoring has been completed. The GTK API for DND has been turned into event controllers: GtkDragSource and GtkDropTarget. Support for file transfers via file transfer portal has been added for both DND and the clipboard. * Child surfaces have been removed. GDK only supports toplevel and popup surfaces now. The client-side window implementation has been removed too. On the GTK side, the GtkNative interface has been introduced for widgets that have their own surface. This cleanup is not 100% complete yet. * Global positions and related apis such as gdk_surface_move are no longer available. * A constraint-based layout manager has been added. * Many classes have been made explicitly non-subclassable, and the widget hierarchy has been simplified, by making widgets derive directly from GtkWidget instead of a container. * Menu-related changes: - GtkMenu, GtkMenuBar and related classes have been removed. They are being replaced by GMenu and popover-based variants. Popover menus can now do traditional, nested menus, and model buttons show accelerators. - Context menus are no longer created with ::populate-popup signals, but use menu models and actions. - Widget actions can be created in class_init, with gtk_widget_class_install_action. - GtkToolbar has been removed as well. * Text-related changed: - Text cursor blinking has been made smooth. - GtkTextView is caching rendernodes for the visible text range now, improving the scrolling performance of text. - Add a simple undo stack for text edits has been added. * The native Win32 filechooser backend supports choices. * GtkTreeView renders tree and grid lines with textures. * GtkEmojiChooser has been made public. * GtkGestureMultiPress has been renamed to GtkGestureClick. * GtkWidget has api to handle style classes: gtk_widget_add_style_class. This is the first step towards moving away from GtkStyleContext. * X11-specific changes: - XI2 is now mandatory - The xim input method has been removed * Wayland-specific changes: - The loading of cursor themes has been improved to load cursors on demand, and no longer relies on libwayland-cursor. * The GL renderer is now sharing icon and glyph caches for all surfaces, and has better support for blurring and shadow rendering. * Performance-related changes: - GTK provides profiling information for Sysprof when launched with GTK_TRACE=1. - Css computation has been optimized - Css lookups are using a Bloom filter - Icon loading IO has been moved to a thread