O projeto GNOME publicou o lançamento da biblioteca Libadwaita 1.8, que inclui um conjunto de componentes para o design de interfaces de usuário, em conformidade com as diretrizes GNOME HIG (Human Interface Guidelines). A biblioteca contém widgets e objetos prontos para criar aplicativos que seguem o estilo geral do GNOME, cujas interfaces podem se adaptar a telas de qualquer tamanho. O código da biblioteca é escrito em C e é distribuído sob a licença LGPL 2.1+.
A biblioteca libadwaita é utilizada em conjunto com GTK4 e inclui componentes do tema Adwaita, utilizado no GNOME, que foram extraídos do GTK para se tornarem uma biblioteca separada. A separação dos elementos de design do GNOME em uma biblioteca independente permite que as mudanças necessárias para o GNOME sejam desenvolvidas separadamente do GTK, possibilitando que os desenvolvedores do GTK se concentrem em aspectos fundamentais, enquanto os desenvolvedores do GNOME podem promover mudanças de estilo de forma mais rápida e flexível, sem afetar o próprio GTK.
A biblioteca inclui widgets padronizados que abrangem vários elementos da interface, como listas, painéis, blocos de edição, botões, guias, formulários de pesquisa, janelas de diálogo, etc. Os widgets propostos permitem a criação de interfaces universais que funcionam de forma orgânica tanto em grandes telas de PCs e laptops quanto em pequenas telas sensíveis ao toque de smartphones. A interface das aplicações muda dinamicamente, dependendo do tamanho da tela e dos dispositivos de entrada disponíveis. A biblioteca também inclui um conjunto de estilos Adwaita, que ajustam a aparência de acordo com as diretrizes do GNOME, sem a necessidade de adaptação manual.

Na nova versão:
- Em substituição à classe GtkShortcutsWindow, que foi declarada obsoleta no GTK 4.18, a Libadwaita implementou uma nova classe AdwShortcutsDialog, que realiza o diálogo para navegação através das combinações de teclas disponíveis. A nova implementação é caracterizada por uma reestruturação completa e simplificação da lógica de divisão em seções e grupos. O desenvolvedor oferece uma API mínima, e os arquivos UI são usados para definir a estrutura e o conteúdo do diálogo.
Em vez de GtkShortcutLabel para representar elementos, foi proposto uma nova classe AwsShortcutLabel, que não suporta a indicação de informações sobre gestos na tela e a integração de ícones, pois seu uso causava confusão e era limitado (por exemplo, os ícones eram usados apenas no aplicativo gnome-games para indicar botões de gamepads).

- Foi adicionada a capacidade de usar media queries CSS para definir estilos de temas claros e escuros, assim como apresentações normais e contrastantes do mesmo elemento. Os tamanhos das fontes para o conteúdo (Adwaita Sans 12pt) e a interface (Adwaita Sans 11pt) foram separados. Foi adicionado o estilo de classe '.document', que utiliza a fonte Adwaita Sans 12pt para melhor legibilidade e aumentou o espaçamento entre linhas. O espaçamento entre linhas na classe de estilo '.body' também foi aumentado, agora aplicado por padrão em alguns widgets nativos.

- A classe AdwPreferencesGroup agora pode ser usada com modelos de lista por meio do método adw_preferences_group_bind_model(). Além disso, foi adicionada a possibilidade de adicionar linhas ao lista interna que não são da classe AdwPreferencesRow.
- Na classe AdwPreferencesPage, agora é permitido inserir grupos em qualquer lugar, e não apenas no final da página.
- Métodos adw_preferences_page_get_group() e adw_preferences_group_get_row() foram adicionados nas classes AdwPreferencesGroup e AdwPreferencesPage para inspecionar grupos e linhas.
- Foi adicionado o método adw_wrap_box_remove_all() à classe AdwWrapBox para remover todos os elementos filhos.
- Os elementos filhos da classe GtkFlowBox possuem, por padrão, estilos para destacar a interação do mouse sobre o elemento e ativar o elemento.
- A classe AdwHeaderBar implementou suporte para elementos nativos de controle de janelas no macOS.
- Para melhorar o desempenho, o uso de sombras para janelas, diálogos e janelas pop-up foi reduzido.
Fonte: opennet.ru


