O lançamento do GTK 3.99.0 marcou a prontidão das funcionalidades planejadas para o GTK 4

Publicado publicação experimental final do framework GTK 3.99.0, que implementa todas as funcionalidades planejadas para o GTK 4. O ramo GTK 4 está sendo desenvolvido dentro de um novo processo de desenvolvimento que tenta fornecer aos desenvolvedores de aplicativos uma API estável e suportada por vários anos, que pode ser usada sem o medo de que a cada seis meses seja necessário reformular os aplicativos devido às mudanças na API em outro ramo do GTK. O lançamento do GTK 4 está previsto para o final do ano.

Das mais significativas mudanças em GTK 4 pode-se destacar:

  • Método de layout de elementos baseado em restrições (constraint layout), onde a posição e o tamanho dos elementos filhos são determinados com base na distância das bordas e no tamanho de outros elementos.
  • Módulo de renderização baseado na API gráfica Vulkan, que implementa shaders para muitos elementos CSS que consomem muitos recursos, aplicados nos widgets GTK.
  • Integração GSK (GTK Scene Kit) com capacidades de renderização de cenas gráficas através do OpenGL e Vulkan.
  • A organização da renderização foi revisada – em vez da saída para um buffer, agora é utilizada um modelo baseado em nós de renderização (render nodes), onde a saída é composta na forma de uma árvore de operações de alto nível, eficientemente processadas pela GPU através do OpenGL e Vulkan.
  • Ferramentas para processamento flexível da alteração do foco de entrada.
  • Modelo de entrega de eventos modernizado, que permite evitar subwindows na roteação de eventos de entrada. A necessidade de implementar um novo modelo está relacionada ao uso mais intenso de efeitos de animação, cuja renderização deve ser realizada sem mudar o layout dos elementos visíveis e, consequentemente, sem subwindows.
  • API do GDK reestruturada com foco no uso do protocolo Wayland e conceitos relacionados. Funcionalidades amarradas ao X11 e Wayland foram transferidas para backends separados.
  • Uma grande limpeza da API foi realizada, incluindo a remoção das classes GtkMenu, GtkMenuBar e GtkToolbar, que foram substituídas pelo GMenu e opções baseadas em menus suspensos (popover).
  • Um stack para desfazer alterações (undo) foi integrado no GtkTextView e outros widgets de entrada.
  • Foi adicionado uma nova classe GtkNative para widgets que têm sua própria superfície de exibição e podem funcionar de forma independente no primeiro nível, sem depender de widgets pais.
  • Novos widgets foram adicionados, incluindo GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, e também um widget para exibir Emojis.
  • Para o desenvolvimento de widgets, foi apresentado um novo objeto GtkLayoutManager com a implementação de um sistema de controle de layout de elementos com base no tamanho da área visível. O GtkLayoutManager substituiu as propriedades filhas em contêineres GTK, como GtkBox e GtkGrid.
  • O processamento de eventos foi simplificado, agora sendo utilizado apenas para entrada. Outros eventos foram substituídos por sinais separados, por exemplo, ao invés de eventos de saída, foi proposto o sinal "GdkSurface::render", e ao invés de eventos de ajuste — "GdkSurface::size-changed".
  • Adicionado um novo nível de abstração GdkPaintable, representando objetos que podem ser desenhados em qualquer lugar com qualquer tamanho, sem a necessidade de realizar a ordenação das camadas de layout.
  • O backend Broadway foi reescrito, permitindo que a saída da biblioteca GTK seja desenhada em uma janela de navegador web.
  • A API relacionada à execução de operações de Arrastar e Soltar foi reformulada, incluindo a oferta de objetos separados GdkDrag e GdkDrop.

Melhorias em relação à versão de teste anterior:

  • A antiga implementação da API de Acessibilidade para pessoas com deficiência foi removida, sendo substituída por uma nova versão baseada na especificação ARIA e no widget GtkAccessible.
  • Adicionada suporte a rótulos editáveis (GtkEditableLabel).
  • Novos modelos de listas foram propostos para exibição de marcadores (GtkBookmarkList), strings (GtkStringList) e blocos de seleção (GtkBitset).
  • No widget GtkTreeView, foi implementada a capacidade de edição de células.
  • Em GtkGridView e GtkListView, a implementação de rolagem foi aprimorada, adicionando suporte à rolagem automática e autoabrindo.
  • No GtkWidget, o processamento de várias ações foi significativamente acelerado.
  • Em GtkFilterListModel e GtkSortListModel, foi adicionada suporte à rolagem e filtragem incrementais.
  • No Inspector, foi adicionada suporte à inspeção de modelos de listas e a capacidade de navegação direta entre objetos.
  • No GDK, foi garantido o armazenamento do histórico de rolagem, realizada a limpeza da API GdkDevice, encerrando a divisão de dispositivos em mestre e escravo.
  • Adicionado um novo backend GDK para macOS.
  • Para Windows, foi proposto um novo backend GDK de rendering baseado em ANGLE, camadas para permitir a tradução de chamadas OpenGL ES em OpenGL, Direct3D 9/11, GL Desktop e Vulkan.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster