GTK 3.96, versão experimental do GTK 4, publicado

10 meses depois do passado versão de teste apresentado GTK 3.96, uma nova versão experimental da próxima versão estável do GTK 4. A ramificação GTK 4 está sendo desenvolvida como parte 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 medo de ter que reescrever o aplicativo a cada seis meses devido à alteração da API na próxima ramificação do GTK. Até que o GTK 4 esteja totalmente estabilizado, é recomendado que as aplicações oferecidas aos usuários continuem a ser construídas usando o branch GTK 3.24.

O principal mudanças em GTK 3.96:

  • Na API GSK (GTK Scene Kit), que fornece renderização de cenas gráficas via OpenGL e Vulkan, trabalhou-se nos erros, que se tornaram mais fáceis de identificar graças à nova ferramenta de depuração gtk4-node-editor, que permite carregar e exibir o renderizar o nó em um formato serializado (pode ser salvo no modo de inspeção do inspetor GTK) e também comparar os resultados da renderização ao usar back-ends diferentes;

    GTK 3.96, versão experimental do GTK 4, publicado

  • Os recursos de transformação 3D foram elevados a um nível que permite criar efeitos de animação, como um cubo giratório;

    GTK 3.96, versão experimental do GTK 4, publicado

  • Totalmente reescrito Backend Broadway GDK projetado para renderizar a saída da biblioteca GTK em uma janela do navegador da web. A antiga implementação do Broadway não se enquadrava nos métodos de renderização propostos no GTK 4 (em vez de saída para um buffer, agora utiliza um modelo baseado em nós de renderização, onde a saída é composta na forma de uma árvore de operações de alto nível, processado eficientemente pela GPU usando OpenGL e Vulkan).
    A nova opção Broadway converte nós de renderização em nós DOM com estilos CSS para renderizar a interface no navegador. Cada novo estado de tela é processado como uma alteração na árvore DOM em relação ao estado anterior, o que reduz o tamanho dos dados transmitidos ao cliente remoto. Transformações 3D e efeitos gráficos são implementados através da propriedade CSS transform;

  • O GDK continua a implementar APIs projetadas com o protocolo Wayland em mente e a limpar APIs baseadas em X11 ou movê-las para um back-end X11 separado. Há progresso no trabalho para abandonar o uso de superfícies secundárias e coordenadas globais. O suporte para GDK_SURFACE_SUBSURFACE foi removido do GDK;
  • A refatoração do código associado à execução de operações de arrastar e soltar continuou, incluindo os objetos GdkDrag e GdkDrop separados propostos;
  • O tratamento de eventos foi simplificado e agora é usado apenas para entrada. Os demais eventos são substituídos por sinais separados, por exemplo, em vez de eventos de saída, é proposto o sinal “GdkSurface::render”, em vez de eventos de configuração - “GdkSurface::size-changed”, em vez de eventos de mapeamento - “GdkSurface: :mapeado”, em vez de gdk_event_handler_set() - "GdkSurface::event";
  • O backend GDK para Wayland adicionou suporte para uma interface de portal para acessar as configurações do GtkSettings. Para trabalhar com métodos de entrada, foi proposto suporte para a extensão do protocolo text-input-unstable-v3;
  • Para o desenvolvimento de widgets, é introduzido um novo objeto GtkLayoutManager com a implementação de um sistema de controle do layout dos elementos em função do layout da área visível. GtkLayoutManager substitui propriedades filhas em contêineres GTK como GtkBox e GtkGrid. Vários gerenciadores de layout prontos são propostos: GtkBinLayout para contêineres simples com um elemento filho, GtkBoxLayout para elementos filhos alinhados linearmente, GtkGridLayout para alinhar elementos filhos a uma grade, GtkFixedLayout para posicionamento arbitrário de elementos filhos, GtkCustomLayout para traduzir elementos tradicionais com base em size_allocate manipuladores;
  • Objetos publicamente acessíveis para exibição de páginas de elementos filhos foram adicionados aos widgets GtkAssistant, GtkStack e GtkNotebook, para os quais as propriedades filhas não relacionadas ao Layout desses widgets são transferidas. Como todas as propriedades filhas existentes foram convertidas em propriedades regulares, propriedades de layout ou movidas para objetos de página, o suporte para propriedades filhas foi totalmente removido do GtkContainer;
  • A funcionalidade principal do GtkEntry foi movida para um novo widget GtkText, que também inclui uma interface de edição GtkEditable aprimorada. Todas as subclasses de entrada de dados existentes foram refeitas como implementações GtkEditable baseadas no novo widget GtkText;
  • Adicionado um novo widget GtkPasswordEntry para formulários de entrada de senha;
  • GtkWidgets adicionou a capacidade de transformar elementos filhos usando métodos de transformação linear especificados via CSS ou o argumento gtk_widget_allocate para GskTransform. O recurso especificado já está aplicado no widget GtkFixed;
  • Novos modelos de geração de lista foram adicionados: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel e GtkSingleSelection. No futuro planejamos adicionar suporte para modelos de lista ao GtkListView;
  • GtkBuilder adicionou a capacidade de definir propriedades de objetos localmente (inline), em vez de usar links por identificador;
  • Adicionado comando ao gtk4-builder-tool para converter arquivos UI de GTK 3 para GTK 4;
  • O suporte para temas principais, menus tabulares e caixas de combinação foi descontinuado. O widget GtkInvisible foi removido.

    Fonte: opennet.ru

Adicionar um comentário