GTK 4 checklist
This wiki page is outdated and kept only for archival reasons. The list has now been migrated to a gitlab milestone: https://gitlab.gnome.org/GNOME/gtk/-/milestones/1
The initial list was produced at the GTK+ BOF at Guadec 2017 in Manchester. It has been reviewed at the GTK+ hackfest in February 2018.
Task |
People |
More info |
Status |
GTK |
|||
Constraint-based layout |
Emmanuele |
done |
|
Keyboard handling with event controllers |
Christian Hergert, Carlos |
done |
|
Split size and position to size allocation |
Benjamin, Timm |
|
done |
Add transformations to size allocation |
|
|
done |
Add overlay blur |
Matthias |
done |
|
Add fancy stack transition |
|
branch, needs shader support |
|
Flexible focus handling |
|
Add a visible-focus state flags, :focus(visible) pseudo class, and render outline always, branch needs alignment with new css things: https://drafts.csswg.org/selectors-4/#the-focusring-pseudo http://www.scottohara.me/blog/2017/05/14/focus-within.html |
done |
Make GtkLabel use gsk |
Matthias |
|
done |
Make GtkEntry use gsk |
Matthias |
|
done |
Make GtkGLArea use a texture |
Matthias |
done |
|
Cache render nodes |
Benjamin |
Cache render nodes per widget, make queue-draw just delete the cached node. Partial redraws can them be implemented by diffing the previous and current render trees and finding changed parts |
done |
Make GtkIconTheme return textures |
Matthias |
Currently, we have a cache of pixbufs, but we duplicate textures |
done |
Fix symbolic svg rendering with shaders |
Matthias |
Need to load them like gtk-encode-symbolic-svg |
done |
Clean up immodules |
Matthias |
Drop all the random ones, and keep the platform ones, but built-in, and turn the modules into an io extension point |
done |
Clean up printbackends |
Matthias |
Drop papi test, turn into an io extension point |
done |
Replace GdkPixbuf by GdkTexture internally |
Matthias |
|
mostly done |
Replace GdkPixbuf by GdkTexture in API |
Matthias |
|
mostly done |
Clean up legacy event signals and handlers |
Carlos, Matthias |
|
done |
Replace GtkDragSource by a gesture |
Benjamin |
|
done |
Drop GtkPlacesSidebar from api |
Matthias |
only used by nautilus outside of gtk |
done |
Drop GtkToolPalette |
Benjamin |
only used by glade |
done |
Replace child properties with real properties |
Emmanuele |
|
done |
Reimplement popovers using popup surfaces |
|
remove special-casing, treat them as toplevels |
done |
Add a GtkToplevel that does toplevel stuff for GtkWindow, GtkTooltip, GtkMenu, GtkPopover |
Benjamin |
handle things that are relevant to both window and popover: renderer, modality, focus, event delivery |
done |
Drop last child windows |
|
some uses in GtkTreeView |
done |
Get rid of GtkInvisible |
|
still used with grabs |
done |
Add paintables |
Benjamin |
|
done |
Add media support |
Benjamin |
based on paintables |
done |
GSK |
|||
Add GskTextNode |
Matthias |
|
done |
Add GskBlurNode |
Matthias |
done |
|
Make GskTextNode use texture atlas |
Matthias |
|
done |
Make GskBlurNode use a shader |
Matthias |
done |
|
Support nodes as texture |
Matthias, Benjamin |
This requires using multiple renderpasses and ordering them correctly |
done |
Finish the GL renderer |
Timm |
done |
|
Implement blurred shadows in glsl |
Timm |
|
done |
Implement repeat nodes in vulkan |
Matthias |
|
done |
Implement shadow nodes in vulkan |
|
|
todo |
Cache small textures in an atlas like glyphs |
|
benchmark first |
done |
Share the glyph cache for all toplevels |
|
plan: have a 'master' context in the display and use that to shared textures |
done |
Share textures for all toplevels |
|
follows from the previous one |
done |
GDK |
|||
Clean support for popups in GDK |
Benjamin, Matthias |
maintain a tree of child surfaces, treat them as toplevels wrt to input and output |
done |
Implement popups for X |
Benjamin, Matthias |
Implement popups for X as 'connected toplevels' where gdk moves the window |
done |
Implement popups for win32 |
|
|
todo |
Add monitor change signals |
|
Basically, enter/leave for windows wrt to monitors |
done |
No more root window |
Benjamin, Matthias |
api is gone, internal cleanup still needed |
done |
Get rid of root coordinates |
|
still used for dnd in some places |
done |
Event cleanup |
Carlos |
done |
|
Get rid of unmanaged DND |
|
done |
|
Convert win32 to managed DND |
LRN |
done |
|
Convert quartz to managed DND |
|
|
done |
Redo DND api with content providers |
Benjamin |
|
done |
Move selection and clipboard handling to GDK |
|
async apis instead of events branch |
done |
Remove gdkproperty.h |
|
all apis in there are X-specific and only used by GtkSelection |
done |
Get rid of GdkDeviceManager |
Matthias |
|
done |
Get rid of gdk_window_move |
|
|
done |
Get rid of foreign windows |
|
done |
|
Get rid of gdk_drag_context_get_source/dest_window |
|
at least, make them not return foreign windows |
done |
Get rid of gdk_selection_owner_get |
|
|
done |
Drop GdkScreen |
|
API is gone, some backend cleanup left |
done |
Drop GdkVisual |
|
|
done |
Consider dropping the mir backend |
|
Asked the mir team if it is still needed |
done |
Rewrite broadway backend for gsk |
|
|
done |
Remove gdkthreads.h |
done |
||
Remove gdkscreen.h |
|
|
done |
Drop gdk_window_add_filter |
Matthias |
replace with ::xevent and similar signal for win32 backend |
done |
Dropped from 4.0 |
|||
States and transitions in ui files |
Christian Hergert |
todo, prototyped in libdazzle |
|
Designer support |
|
todo |
|
Make GtkTextView use gsk |
Matthias |
|
done |
Clean up app vs device pixels |
|
|
todo |