
libadwaita é baseada na biblioteca libhandy e está posicionada para substituir esta biblioteca,
O lançamento da nova versão da biblioteca Libadwaita 1.4 em que são apresentadas diversas melhorias e das quais se destacam, por exemplo, a novo sistema de ponto de interrupção, novos widgets adaptativos, melhorias nos botões Voltar, melhorias nas visualizações divididas, novos estilos e muitas outras coisas.
Para quem não conhece Libadwaita, saiba que este inclui um conjunto de componentes para projetar a interface do usuário que está em conformidade com o GNOME HIG (Diretrizes de Interface Humana). A biblioteca inclui widgets e objetos prontos para uso para a criação de aplicativos em conformidade com o estilo geral do GNOME, cuja interface pode ser adaptada de forma responsiva a telas de qualquer tamanho.
A biblioteca libadwaita é usada em conjunto com GTK4 e inclui componentes do Adwaita usados no GNOME que foram movidos do GTK para uma biblioteca separada.
Principais novidades do Libadwaita 1.4
Nesta nova versão apresentada do Libadwaita 1.4, propomos novos widgets adaptativos que se ajustam ao tamanho da área visível, e o novo conjunto fornece suporte correto para redimensionamento aninhado (por exemplo, quando o redimensionamento da barra lateral envolve redimensionar botões e interruptores).
Além disso, Corrigidos problemas com efeitos animados Ao alterar os modos, o tratamento das alterações de largura foi modificado e a flexibilidade de uso aumentou (por exemplo, na versão móvel, você pode mover alguns dos widgets do cabeçalho para o painel inferior).
Outras mudanças que se destacam na nova versão do Libadwaita 1.4 é que ela foi implementadan sistema de breakpoint, a classe Breakpoint, que permite alterar a interface do usuário de qualquer forma, dependendo do tamanho da janela. Os pontos de interrupção, entre outras coisas, podem ser definidos declarativamente por meio de arquivos de UI.
Por exemplo pode ser usado de forma totalmente declarativa dos arquivos da IU:
<object class="AdwBreakpoint">
<condition>max-width: 500sp</condition>
<setter object="split-view" property="collapsed">True</property>
</object>
Por outro lado, o widget AdwNavigationView implementa um padrão de navegação que substitui o widget AdwLeaflet no modo "can-unfold = false", fornecendo uma pilha de navegação que pode ser configurada estaticamente (por meio de arquivos de UI) ou dinamicamente e suporta ações Navigation.push e Navigation.pop para colocar páginas diretamente da UI do arquivo.
O widget AdwHeaderBar agora tem a capacidade de exibir automaticamente o cabeçalho correto para cada página de navegação, bem como exibir um botão Voltar para ir para a página anterior ou exibir um menu para selecionar quais páginas ir.
Também notável é que foi adicionado um widget AdwNavigationSplitView que possui dois filhos (uma barra lateral e conteúdo) que aparecem lado a lado. O tamanho da barra lateral pode ser selecionado como uma determinada porcentagem da largura total da área visível.
Das outras mudanças que se destacam nesta nova versão:
- Adicionado um widget para exibir switches AdwSwitchRow , implementado como uma subclasse de AdwActionRow contendo GtkSwitch.
- Adicionado o widget AdwSpinRow com uma implementação de linha de lista que inclui um GtkSpinButton.
- Adicionada uma nova classe de estilo » .property » para exibir propriedades.
- Adicionada a função adw_about_window_new_from_appdata() para simplificar a criação de janelas com informações sobre o programa.
- O widget AdwComboRow agora oferece suporte a campos de pesquisa.
- Adicionada propriedade AdwPreferencesPage:description para exibir a descrição na parte superior da página.
- O widget AdwTabOverview modificou significativamente seu tratamento de miniaturas para funcionar melhor com WebKitWebView.
- A cor dos cabeçalhos e das barras de ferramentas em temas claros foi alterada para branco em vez de cinza. A cor cinza agora está incluída nas barras laterais.
Finalmente, se você estiver interessado em saber mais sobre o assunto, você pode verificar o detalhes no link a seguir. Vale ressaltar também que o código da biblioteca é escrito em linguagem C e distribuído sob a licença LGPL 2.1+.