A versão final do GTK 3.99 já foi lançada e nele eu vouegan várias implementações que visam atualizações a serem oferecidas dentro GTK 4.
O ramo GTK 4 está sendo desenvolvido como parte de um novo processo desenvolvimento que tente fornecer aos desenvolvedores de aplicativos uma API estável e compatível por vários anos, ele pode ser usado sem medo de que a cada seis meses você terá que refazer aplicativos devido a alterações de API na próxima versão do GTK.
O que há de novo no GTK 3.99?
Nesta nova versão lançada do GTK 3.99, é removeu a antiga implementação de a API de acessibilidade para pessoas com deficiência e, em vez disso, uma nova versão baseada na especificação ARIA foi proposta e o widget GtkAccessible.
Para Windows, um novo backend de renderização GDK baseado em ANGLE foi proposto, uma camada intermediária para traduzir chamadas OpenGL ES para OpenGL, Direct3D 9/11, Desktop GL e Vulkan. Já para o macOS, um novo back-end GDK foi adicionado.
Outra das mudanças implementadas é o suporte para rótulos editáveis (GtkEditableLabel), mais novos modelos de lista foram propostos para exibir favoritos (GtkBookmarkList), Strings (GtkStringList) e Select Boxes (GtkBitset) e o widget GtkTreeView implementa a capacidade de editar células.
Das outras mudanças nesta versão:
- GtkGridView e GtkListView melhoraram a implementação de rolagem, adicionaram suporte para rolagem automática e ocultação automática.
- GtkWidget acelerou significativamente o processamento de várias ações.
- Suporte de rolagem e filtragem incremental adicionado a GtkFilterListModel e GtkSortListModel.
- O Inspetor adiciona suporte para inspecionar modelos de lista e a capacidade de navegar diretamente entre objetos.
- No GDK, o histórico de deslocamento é salvo, a API GdkDevice foi limpa, a divisão de dispositivos em mestre e escravo foi interrompida.
O que é esperado do GTK4?
Quanto às mudanças que são esperadas para GTK4 (que tem previsão de lançamento entre outubro e novembro deste ano) é por exemplo um método de projeto de restrição, em que a posição e o tamanho dos elementos filhos são determinados com base na distância até as bordas e no tamanho de outros elementos.
Um módulo de renderização baseado na API gráfica Vulkan, que implementa sombreadores para muitos elementos CSS de uso intensivo de recursos usados em widgets GTK.
Integração GSK (GTK Scene Kit) com recursos de renderização de cenas gráficas por meio de OpenGL e Vulkan.
Assim como o organização de representação foi revisada: Em vez de gerar um buffer, um modelo baseado em nó de renderização agora é usado, no qual a saída é organizada na forma de uma árvore de operações de alto nível, processadas de forma eficiente pela GPU usando OpenGL e Vulkan.
Um modelo de entrega de eventos modernizado o que elimina a necessidade de uma subjanela ao rotear eventos de entrada. A necessidade de implementação de um novo modelo está associada a um uso mais ativo dos efeitos de animação, que devem ser renderizados sem alterar o layout dos elementos visíveis e, conseqüentemente, sem subjanela.
API GDK reprojetada para aproveitar as vantagens do protocolo Wayland e conceitos relacionados. As funções relacionadas ao X11 e ao Wayland foram movidas para back-ends separados.
Para o desenvolvimento de widgets, um novo objeto GtkLayoutManager é apresentado com a implementação do sistema de controle para o desenho dos elementos em função do tamanho da área visível. GtkLayoutManager substituiu propriedades filho em contêineres GTK como GtkBox e GtkGrid.
Tratamento simplificado de eventos que agora são usados apenas para entrada. O resto dos eventos foram substituídos por sinais separados.
O back-end da Broadway foi reescrito para permitir a renderização da saída da biblioteca GTK em uma janela do navegador da web.
A API relacionada às operações de arrastar e soltar foi alterada, incluindo os objetos GdkDrag e GdkDrop propostos separadamente.
Finalmente se você estiver interessado em saber mais sobre isso sobre o que esperar do GTk4, você pode verificar os detalhes no link a seguir.