diff -pruN 1.2~alpha-1/build-aux/meson/dist-data.py 1.2~beta-1/build-aux/meson/dist-data.py
--- 1.2~alpha-1/build-aux/meson/dist-data.py	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/build-aux/meson/dist-data.py	2022-08-05 21:51:59.000000000 +0000
@@ -3,6 +3,7 @@
 import os
 import shutil
 import subprocess
+import sys
 
 from pathlib import PurePath
 
@@ -32,3 +33,5 @@ for reference in references:
     if os.path.isdir(src_path):
         dst_path = os.path.join(distroot, reference)
         shutil.copytree(src_path, dst_path)
+    else:
+        sys.exit("Documentation not found. Please pass -Dgtk_doc=true and to Meson and run ninja once.")
diff -pruN 1.2~alpha-1/debian/changelog 1.2~beta-1/debian/changelog
--- 1.2~alpha-1/debian/changelog	2022-07-14 14:07:50.000000000 +0000
+++ 1.2~beta-1/debian/changelog	2022-08-05 22:21:01.000000000 +0000
@@ -1,3 +1,10 @@
+libadwaita-1 (1.2~beta-1) unstable; urgency=medium
+
+  * New upstream release
+  * debian/libadwaita-1.0.symbols: Add new symbols
+
+ -- Jeremy Bicha <jbicha@ubuntu.com>  Fri, 05 Aug 2022 18:21:01 -0400
+
 libadwaita-1 (1.2~alpha-1) unstable; urgency=medium
 
   * New upstream release
diff -pruN 1.2~alpha-1/debian/libadwaita-1-0.symbols 1.2~beta-1/debian/libadwaita-1-0.symbols
--- 1.2~alpha-1/debian/libadwaita-1-0.symbols	2022-07-14 14:07:50.000000000 +0000
+++ 1.2~beta-1/debian/libadwaita-1-0.symbols	2022-08-05 22:21:01.000000000 +0000
@@ -186,6 +186,8 @@ libadwaita-1.so.0 libadwaita-1-0 #MINVER
  adw_easing_get_type@LIBADWAITA_1_0 1.0.1
  adw_entry_row_add_prefix@LIBADWAITA_1_0 1.2~alpha
  adw_entry_row_add_suffix@LIBADWAITA_1_0 1.2~alpha
+ adw_entry_row_get_activates_default@LIBADWAITA_1_0 1.2~beta
+ adw_entry_row_get_attributes@LIBADWAITA_1_0 1.2~beta
  adw_entry_row_get_enable_emoji_completion@LIBADWAITA_1_0 1.2~alpha
  adw_entry_row_get_input_hints@LIBADWAITA_1_0 1.2~alpha
  adw_entry_row_get_input_purpose@LIBADWAITA_1_0 1.2~alpha
@@ -193,6 +195,8 @@ libadwaita-1.so.0 libadwaita-1-0 #MINVER
  adw_entry_row_get_type@LIBADWAITA_1_0 1.2~alpha
  adw_entry_row_new@LIBADWAITA_1_0 1.2~alpha
  adw_entry_row_remove@LIBADWAITA_1_0 1.2~alpha
+ adw_entry_row_set_activates_default@LIBADWAITA_1_0 1.2~beta
+ adw_entry_row_set_attributes@LIBADWAITA_1_0 1.2~beta
  adw_entry_row_set_enable_emoji_completion@LIBADWAITA_1_0 1.2~alpha
  adw_entry_row_set_input_hints@LIBADWAITA_1_0 1.2~alpha
  adw_entry_row_set_input_purpose@LIBADWAITA_1_0 1.2~alpha
@@ -417,6 +421,7 @@ libadwaita-1.so.0 libadwaita-1-0 #MINVER
  adw_show_about_window@LIBADWAITA_1_0 1.2~alpha
  adw_split_button_get_child@LIBADWAITA_1_0 1.0.1
  adw_split_button_get_direction@LIBADWAITA_1_0 1.0.1
+ adw_split_button_get_dropdown_tooltip@LIBADWAITA_1_0 1.2~beta
  adw_split_button_get_icon_name@LIBADWAITA_1_0 1.0.1
  adw_split_button_get_label@LIBADWAITA_1_0 1.0.1
  adw_split_button_get_menu_model@LIBADWAITA_1_0 1.0.1
@@ -428,6 +433,7 @@ libadwaita-1.so.0 libadwaita-1-0 #MINVER
  adw_split_button_popup@LIBADWAITA_1_0 1.0.1
  adw_split_button_set_child@LIBADWAITA_1_0 1.0.1
  adw_split_button_set_direction@LIBADWAITA_1_0 1.0.1
+ adw_split_button_set_dropdown_tooltip@LIBADWAITA_1_0 1.2~beta
  adw_split_button_set_icon_name@LIBADWAITA_1_0 1.0.1
  adw_split_button_set_label@LIBADWAITA_1_0 1.0.1
  adw_split_button_set_menu_model@LIBADWAITA_1_0 1.0.1
@@ -547,6 +553,7 @@ libadwaita-1.so.0 libadwaita-1-0 #MINVER
  adw_tab_page_get_icon@LIBADWAITA_1_0 1.0.0
  adw_tab_page_get_indicator_activatable@LIBADWAITA_1_0 1.0.0
  adw_tab_page_get_indicator_icon@LIBADWAITA_1_0 1.0.0
+ adw_tab_page_get_indicator_tooltip@LIBADWAITA_1_0 1.2~beta
  adw_tab_page_get_loading@LIBADWAITA_1_0 1.0.0
  adw_tab_page_get_needs_attention@LIBADWAITA_1_0 1.0.0
  adw_tab_page_get_parent@LIBADWAITA_1_0 1.0.0
@@ -558,11 +565,13 @@ libadwaita-1.so.0 libadwaita-1-0 #MINVER
  adw_tab_page_set_icon@LIBADWAITA_1_0 1.0.0
  adw_tab_page_set_indicator_activatable@LIBADWAITA_1_0 1.0.0
  adw_tab_page_set_indicator_icon@LIBADWAITA_1_0 1.0.0
+ adw_tab_page_set_indicator_tooltip@LIBADWAITA_1_0 1.2~beta
  adw_tab_page_set_loading@LIBADWAITA_1_0 1.0.0
  adw_tab_page_set_needs_attention@LIBADWAITA_1_0 1.0.0
  adw_tab_page_set_title@LIBADWAITA_1_0 1.0.0
  adw_tab_page_set_tooltip@LIBADWAITA_1_0 1.0.0
  adw_tab_view_add_page@LIBADWAITA_1_0 1.0.0
+ adw_tab_view_add_shortcuts@LIBADWAITA_1_0 1.2~beta
  adw_tab_view_append@LIBADWAITA_1_0 1.0.0
  adw_tab_view_append_pinned@LIBADWAITA_1_0 1.0.0
  adw_tab_view_close_other_pages@LIBADWAITA_1_0 1.0.0
@@ -580,12 +589,14 @@ libadwaita-1.so.0 libadwaita-1-0 #MINVER
  adw_tab_view_get_page_position@LIBADWAITA_1_0 1.0.0
  adw_tab_view_get_pages@LIBADWAITA_1_0 1.0.0
  adw_tab_view_get_selected_page@LIBADWAITA_1_0 1.0.0
+ adw_tab_view_get_shortcuts@LIBADWAITA_1_0 1.2~beta
  adw_tab_view_get_type@LIBADWAITA_1_0 1.0.0
  adw_tab_view_insert@LIBADWAITA_1_0 1.0.0
  adw_tab_view_insert_pinned@LIBADWAITA_1_0 1.0.0
  adw_tab_view_new@LIBADWAITA_1_0 1.0.0
  adw_tab_view_prepend@LIBADWAITA_1_0 1.0.0
  adw_tab_view_prepend_pinned@LIBADWAITA_1_0 1.0.0
+ adw_tab_view_remove_shortcuts@LIBADWAITA_1_0 1.2~beta
  adw_tab_view_reorder_backward@LIBADWAITA_1_0 1.0.0
  adw_tab_view_reorder_first@LIBADWAITA_1_0 1.0.0
  adw_tab_view_reorder_forward@LIBADWAITA_1_0 1.0.0
@@ -597,6 +608,8 @@ libadwaita-1.so.0 libadwaita-1-0 #MINVER
  adw_tab_view_set_menu_model@LIBADWAITA_1_0 1.0.0
  adw_tab_view_set_page_pinned@LIBADWAITA_1_0 1.0.0
  adw_tab_view_set_selected_page@LIBADWAITA_1_0 1.0.0
+ adw_tab_view_set_shortcuts@LIBADWAITA_1_0 1.2~beta
+ adw_tab_view_shortcuts_get_type@LIBADWAITA_1_0 1.2~beta
  adw_tab_view_transfer_page@LIBADWAITA_1_0 1.0.0
  adw_timed_animation_get_alternate@LIBADWAITA_1_0 1.0.1
  adw_timed_animation_get_duration@LIBADWAITA_1_0 1.0.1
@@ -643,6 +656,7 @@ libadwaita-1.so.0 libadwaita-1-0 #MINVER
  adw_view_stack_add@LIBADWAITA_1_0 1.0.0
  adw_view_stack_add_named@LIBADWAITA_1_0 1.0.0
  adw_view_stack_add_titled@LIBADWAITA_1_0 1.0.0
+ adw_view_stack_add_titled_with_icon@LIBADWAITA_1_0 1.2~beta
  adw_view_stack_get_child_by_name@LIBADWAITA_1_0 1.0.0
  adw_view_stack_get_hhomogeneous@LIBADWAITA_1_0 1.0.0
  adw_view_stack_get_page@LIBADWAITA_1_0 1.0.0
diff -pruN 1.2~alpha-1/demo/adw-demo-preferences-window.ui 1.2~beta-1/demo/adw-demo-preferences-window.ui
--- 1.2~alpha-1/demo/adw-demo-preferences-window.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/adw-demo-preferences-window.ui	2022-08-05 21:51:59.000000000 +0000
@@ -62,21 +62,15 @@
               </object>
             </child>
             <child>
-              <object class="GtkBox">
+              <object class="GtkLabel">
+                <property name="ellipsize">end</property>
+                <property name="label" translatable="yes">Other widgets are appended after the list box</property>
+                <property name="margin-top">12</property>
+                <property name="margin-bottom">12</property>
+                <property name="xalign">0</property>
                 <style>
-                  <class name="inline-toolbar"/>
+                  <class name="dim-label"/>
                 </style>
-                <child>
-                  <object class="GtkLabel">
-                    <property name="ellipsize">end</property>
-                    <property name="label" translatable="yes">Other widgets are appended after the list box</property>
-                    <property name="margin-top">12</property>
-                    <property name="margin-bottom">12</property>
-                    <property name="margin-start">12</property>
-                    <property name="margin-end">12</property>
-                    <property name="xalign">0</property>
-                  </object>
-                </child>
               </object>
             </child>
           </object>
diff -pruN 1.2~alpha-1/demo/adw-demo-window.ui 1.2~beta-1/demo/adw-demo-window.ui
--- 1.2~alpha-1/demo/adw-demo-window.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/adw-demo-window.ui	2022-08-05 21:51:59.000000000 +0000
@@ -25,7 +25,7 @@
     <property name="title" translatable="yes">Adwaita Demo</property>
     <property name="default_width">800</property>
     <property name="default_height">576</property>
-    <child>
+    <property name="content">
       <object class="AdwToastOverlay" id="toast_overlay">
         <property name="child">
           <object class="AdwLeaflet" id="subpage_leaflet">
@@ -296,6 +296,6 @@
           </object>
         </property>
       </object>
-    </child>
+    </property>
   </template>
 </interface>
diff -pruN 1.2~alpha-1/demo/data/meson.build 1.2~beta-1/demo/data/meson.build
--- 1.2~alpha-1/demo/data/meson.build	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/data/meson.build	2022-08-05 21:51:59.000000000 +0000
@@ -40,13 +40,13 @@ if target_system != 'windows'
     install: true,
     install_dir: datadir / 'metainfo'
   )
-endif
 
-appstream_util = find_program('appstream-util', required: false)
-if appstream_util.found()
-  test('Validate appstream file', appstream_util,
-    args: ['validate', '--nonet', appstream_file]
-  )
+  appstream_util = find_program('appstream-util', required: false)
+  if appstream_util.found()
+    test('Validate appstream file', appstream_util,
+      args: ['validate', '--nonet', appstream_file]
+    )
+  endif
 endif
 
 install_data(
diff -pruN 1.2~alpha-1/demo/pages/animations/adw-demo-page-animations.ui 1.2~beta-1/demo/pages/animations/adw-demo-page-animations.ui
--- 1.2~alpha-1/demo/pages/animations/adw-demo-page-animations.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/pages/animations/adw-demo-page-animations.ui	2022-08-05 21:51:59.000000000 +0000
@@ -7,370 +7,365 @@
       <object class="GtkScrolledWindow">
         <property name="hscrollbar-policy">never</property>
         <property name="child">
-          <object class="GtkViewport">
-            <property name="scroll-to-focus">True</property>
-            <property name="child">
+          <object class="GtkBox">
+            <property name="orientation">vertical</property>
+            <property name="valign">center</property>
+            <style>
+              <class name="timed-animation-page"/>
+            </style>
+            <child>
               <object class="GtkBox">
                 <property name="orientation">vertical</property>
-                <property name="valign">center</property>
-                <style>
-                  <class name="timed-animation-page"/>
-                </style>
                 <child>
-                  <object class="GtkBox">
-                    <property name="orientation">vertical</property>
-                    <child>
-                      <object class="AdwClamp">
-                        <property name="maximum-size">400</property>
-                        <property name="tightening-threshold">300</property>
+                  <object class="AdwClamp">
+                    <property name="maximum-size">400</property>
+                    <property name="tightening-threshold">300</property>
+                    <property name="child">
+                      <object class="AdwBin" id="timed_animation_sample">
+                        <property name="margin-bottom">36</property>
                         <property name="child">
-                          <object class="AdwBin" id="timed_animation_sample">
-                            <property name="margin-bottom">36</property>
-                            <property name="child">
-                              <object class="AdwBin" id="timed_animation_widget">
-                                <property name="halign">center</property>
-                                <property name="valign">center</property>
-                                <property name="name">animation-sample</property>
-                              </object>
-                            </property>
+                          <object class="AdwBin" id="timed_animation_widget">
+                            <property name="halign">center</property>
+                            <property name="valign">center</property>
+                            <property name="name">animation-sample</property>
                           </object>
                         </property>
                       </object>
-                    </child>
-                    <child>
-                      <object class="GtkLabel">
-                        <property name="label" translatable="yes">Animations</property>
-                        <property name="wrap">True</property>
-                        <property name="wrap-mode">word-char</property>
-                        <property name="justify">center</property>
-                        <style>
-                          <class name="title"/>
-                          <class name="title-1"/>
-                        </style>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkLabel">
-                        <property name="label" translatable="yes">Simple transitions.</property>
-                        <property name="justify">center</property>
-                        <property name="use_markup">true</property>
-                        <property name="wrap">True</property>
-                        <style>
-                          <class name="body"/>
-                          <class name="description"/>
-                        </style>
-                      </object>
-                    </child>
+                    </property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">Animations</property>
+                    <property name="wrap">True</property>
+                    <property name="wrap-mode">word-char</property>
+                    <property name="justify">center</property>
+                    <style>
+                      <class name="title"/>
+                      <class name="title-1"/>
+                    </style>
                   </object>
                 </child>
                 <child>
-                  <object class="GtkBox" id="timed_animation_button_box">
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">Simple transitions.</property>
+                    <property name="justify">center</property>
+                    <property name="use_markup">true</property>
+                    <property name="wrap">True</property>
+                    <style>
+                      <class name="body"/>
+                      <class name="description"/>
+                    </style>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkBox" id="timed_animation_button_box">
+                <property name="valign">center</property>
+                <property name="halign">center</property>
+                <property name="margin-top">30</property>
+                <property name="margin-bottom">30</property>
+                <property name="spacing">18</property>
+                <child>
+                  <object class="GtkButton">
+                    <property name="icon-name">media-skip-backward-symbolic</property>
                     <property name="valign">center</property>
-                    <property name="halign">center</property>
-                    <property name="margin-top">30</property>
-                    <property name="margin-bottom">30</property>
-                    <property name="spacing">18</property>
-                    <child>
-                      <object class="GtkButton">
-                        <property name="icon-name">media-skip-backward-symbolic</property>
-                        <property name="valign">center</property>
-                        <binding name="sensitive">
-                          <closure type="gboolean" function="timed_animation_can_reset">
-                            <lookup name="state" type="AdwAnimation">
-                              <lookup name="timed-animation">AdwDemoPageAnimations</lookup>
-                            </lookup>
-                            <lookup name="state" type="AdwAnimation">
-                              <lookup name="spring-animation">AdwDemoPageAnimations</lookup>
-                            </lookup>
-                          </closure>
-                        </binding>
-                        <signal name="clicked" handler="timed_animation_reset" swapped="true"/>
-                        <style>
-                          <class name="circular"/>
-                          <class name="flat"/>
-                        </style>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkButton">
-                        <binding name="icon-name">
-                          <closure type="gchararray" function="get_play_pause_icon_name">
-                            <lookup name="state" type="AdwAnimation">
-                              <lookup name="timed-animation">AdwDemoPageAnimations</lookup>
-                            </lookup>
-                            <lookup name="state" type="AdwAnimation">
-                              <lookup name="spring-animation">AdwDemoPageAnimations</lookup>
-                            </lookup>
-                          </closure>
-                        </binding>
-                        <property name="width-request">48</property>
-                        <property name="height-request">48</property>
-                        <signal name="clicked" handler="timed_animation_play_pause" swapped="true"/>
-                        <style>
-                          <class name="circular"/>
-                          <class name="suggested-action"/>
-                        </style>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkButton">
-                        <property name="icon-name">media-skip-forward-symbolic</property>
-                        <property name="valign">center</property>
-                        <binding name="sensitive">
-                          <closure type="gboolean" function="timed_animation_can_skip">
-                            <lookup name="state" type="AdwAnimation">
-                              <lookup name="timed-animation">AdwDemoPageAnimations</lookup>
-                            </lookup>
-                            <lookup name="state" type="AdwAnimation">
-                              <lookup name="spring-animation">AdwDemoPageAnimations</lookup>
-                            </lookup>
-                          </closure>
-                        </binding>
-                        <signal name="clicked" handler="timed_animation_skip" swapped="true"/>
-                        <style>
-                          <class name="circular"/>
-                          <class name="flat"/>
-                        </style>
-                      </object>
-                    </child>
+                    <binding name="sensitive">
+                      <closure type="gboolean" function="timed_animation_can_reset">
+                        <lookup name="state" type="AdwAnimation">
+                          <lookup name="timed-animation">AdwDemoPageAnimations</lookup>
+                        </lookup>
+                        <lookup name="state" type="AdwAnimation">
+                          <lookup name="spring-animation">AdwDemoPageAnimations</lookup>
+                        </lookup>
+                      </closure>
+                    </binding>
+                    <signal name="clicked" handler="timed_animation_reset" swapped="true"/>
+                    <style>
+                      <class name="circular"/>
+                      <class name="flat"/>
+                    </style>
                   </object>
                 </child>
                 <child>
-                  <object class="AdwPreferencesGroup">
-                    <child>
-                      <object class="GtkStackSwitcher">
-                        <property name="stack">animation_preferences_stack</property>
-                        <property name="margin-bottom">32</property>
-                        <property name="halign">center</property>
-                      </object>
-                    </child>
+                  <object class="GtkButton">
+                    <binding name="icon-name">
+                      <closure type="gchararray" function="get_play_pause_icon_name">
+                        <lookup name="state" type="AdwAnimation">
+                          <lookup name="timed-animation">AdwDemoPageAnimations</lookup>
+                        </lookup>
+                        <lookup name="state" type="AdwAnimation">
+                          <lookup name="spring-animation">AdwDemoPageAnimations</lookup>
+                        </lookup>
+                      </closure>
+                    </binding>
+                    <property name="width-request">48</property>
+                    <property name="height-request">48</property>
+                    <signal name="clicked" handler="timed_animation_play_pause" swapped="true"/>
+                    <style>
+                      <class name="circular"/>
+                      <class name="suggested-action"/>
+                    </style>
                   </object>
                 </child>
                 <child>
-                  <object class="AdwClamp">
-                    <property name="maximum-size">400</property>
-                    <property name="tightening-threshold">300</property>
-                    <property name="child">
-                      <object class="GtkStack" id="animation_preferences_stack">
-                        <signal name="notify::visible-child-name" handler="timed_animation_reset" swapped="true"/>
-                        <child>
-                          <object class="GtkStackPage">
-                            <property name="title" translatable="yes">Timed</property>
-                            <property name="name">Timed</property>
-                            <property name="child">
-                              <object class="AdwPreferencesGroup">
-                                <child>
-                                  <object class="AdwComboRow" id="timed_animation_easing">
-                                    <property name="title" translatable="yes">Easing</property>
-                                    <property name="model">
-                                      <object class="AdwEnumListModel">
-                                        <property name="enum-type">AdwEasing</property>
+                  <object class="GtkButton">
+                    <property name="icon-name">media-skip-forward-symbolic</property>
+                    <property name="valign">center</property>
+                    <binding name="sensitive">
+                      <closure type="gboolean" function="timed_animation_can_skip">
+                        <lookup name="state" type="AdwAnimation">
+                          <lookup name="timed-animation">AdwDemoPageAnimations</lookup>
+                        </lookup>
+                        <lookup name="state" type="AdwAnimation">
+                          <lookup name="spring-animation">AdwDemoPageAnimations</lookup>
+                        </lookup>
+                      </closure>
+                    </binding>
+                    <signal name="clicked" handler="timed_animation_skip" swapped="true"/>
+                    <style>
+                      <class name="circular"/>
+                      <class name="flat"/>
+                    </style>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="AdwPreferencesGroup">
+                <child>
+                  <object class="GtkStackSwitcher">
+                    <property name="stack">animation_preferences_stack</property>
+                    <property name="margin-bottom">32</property>
+                    <property name="halign">center</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="AdwClamp">
+                <property name="maximum-size">400</property>
+                <property name="tightening-threshold">300</property>
+                <property name="child">
+                  <object class="GtkStack" id="animation_preferences_stack">
+                    <signal name="notify::visible-child-name" handler="timed_animation_reset" swapped="true"/>
+                    <child>
+                      <object class="GtkStackPage">
+                        <property name="title" translatable="yes">Timed</property>
+                        <property name="name">Timed</property>
+                        <property name="child">
+                          <object class="AdwPreferencesGroup">
+                            <child>
+                              <object class="AdwComboRow" id="timed_animation_easing">
+                                <property name="title" translatable="yes">Easing</property>
+                                <property name="model">
+                                  <object class="AdwEnumListModel">
+                                    <property name="enum-type">AdwEasing</property>
+                                  </object>
+                                </property>
+                                <property name="expression">
+                                  <closure type="gchararray" function="animations_easing_name"/>
+                                </property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="AdwActionRow">
+                                <property name="title" translatable="yes">Duration</property>
+                                <child>
+                                  <object class="GtkSpinButton" id="timed_animation_duration">
+                                    <property name="valign">center</property>
+                                    <property name="numeric">True</property>
+                                    <property name="adjustment">
+                                      <object class="GtkAdjustment">
+                                        <property name="lower">100</property>
+                                        <property name="upper">4000</property>
+                                        <property name="value">500</property>
+                                        <property name="page-increment">100</property>
+                                        <property name="step-increment">50</property>
                                       </object>
                                     </property>
-                                    <property name="expression">
-                                      <closure type="gchararray" function="animations_easing_name"/>
-                                    </property>
-                                  </object>
-                                </child>
-                                <child>
-                                  <object class="AdwActionRow">
-                                    <property name="title" translatable="yes">Duration</property>
-                                    <child>
-                                      <object class="GtkSpinButton" id="timed_animation_duration">
-                                        <property name="valign">center</property>
-                                        <property name="numeric">True</property>
-                                        <property name="adjustment">
-                                          <object class="GtkAdjustment">
-                                            <property name="lower">100</property>
-                                            <property name="upper">4000</property>
-                                            <property name="value">500</property>
-                                            <property name="page-increment">100</property>
-                                            <property name="step-increment">50</property>
-                                          </object>
-                                        </property>
-                                      </object>
-                                    </child>
                                   </object>
                                 </child>
-                                <child>
-                                  <object class="AdwActionRow">
-                                    <property name="title" translatable="yes">Repeat Count</property>
-                                    <child>
-                                      <object class="GtkSpinButton" id="timed_animation_repeat_count">
-                                        <property name="valign">center</property>
-                                        <property name="numeric">True</property>
-                                        <property name="adjustment">
-                                          <object class="GtkAdjustment">
-                                            <property name="lower">0</property>
-                                            <property name="upper">10</property>
-                                            <property name="value">1</property>
-                                            <property name="page-increment">1</property>
-                                            <property name="step-increment">1</property>
-                                          </object>
-                                        </property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="AdwActionRow">
+                                <property name="title" translatable="yes">Repeat Count</property>
+                                <child>
+                                  <object class="GtkSpinButton" id="timed_animation_repeat_count">
+                                    <property name="valign">center</property>
+                                    <property name="numeric">True</property>
+                                    <property name="adjustment">
+                                      <object class="GtkAdjustment">
+                                        <property name="lower">0</property>
+                                        <property name="upper">10</property>
+                                        <property name="value">1</property>
+                                        <property name="page-increment">1</property>
+                                        <property name="step-increment">1</property>
                                       </object>
-                                    </child>
+                                    </property>
                                   </object>
                                 </child>
-                                <child>
-                                  <object class="AdwActionRow">
-                                    <property name="title" translatable="yes">Reverse</property>
-                                    <property name="activatable_widget">timed_animation_reverse</property>
-                                    <child>
-                                      <object class="GtkSwitch" id="timed_animation_reverse">
-                                        <property name="valign">center</property>
-                                        <property name="state">False</property>
-                                      </object>
-                                    </child>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="AdwActionRow">
+                                <property name="title" translatable="yes">Reverse</property>
+                                <property name="activatable_widget">timed_animation_reverse</property>
+                                <child>
+                                  <object class="GtkSwitch" id="timed_animation_reverse">
+                                    <property name="valign">center</property>
+                                    <property name="state">False</property>
                                   </object>
                                 </child>
-                                <child>
-                                  <object class="AdwActionRow">
-                                    <property name="title" translatable="yes">Alternate</property>
-                                    <property name="activatable_widget">timed_animation_alternate</property>
-                                    <child>
-                                      <object class="GtkSwitch" id="timed_animation_alternate">
-                                        <property name="valign">center</property>
-                                        <property name="state">False</property>
-                                      </object>
-                                    </child>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="AdwActionRow">
+                                <property name="title" translatable="yes">Alternate</property>
+                                <property name="activatable_widget">timed_animation_alternate</property>
+                                <child>
+                                  <object class="GtkSwitch" id="timed_animation_alternate">
+                                    <property name="valign">center</property>
+                                    <property name="state">False</property>
                                   </object>
                                 </child>
                               </object>
-                            </property>
+                            </child>
                           </object>
-                        </child>
-                        <child>
-                          <object class="GtkStackPage">
-                            <property name="title" translatable="yes">Spring</property>
-                            <property name="name">Spring</property>
-                            <property name="child">
-                              <object class="AdwPreferencesGroup">
-                                <child>
-                                  <object class="AdwActionRow">
-                                    <property name="title" translatable="yes">Initial Velocity</property>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spring_animation_velocity">
-                                        <property name="valign">center</property>
-                                        <property name="numeric">True</property>
-                                        <property name="adjustment">
-                                          <object class="GtkAdjustment">
-                                            <property name="lower">-1000</property>
-                                            <property name="upper">1000</property>
-                                            <property name="value">0</property>
-                                            <property name="page-increment">10</property>
-                                            <property name="step-increment">1</property>
-                                          </object>
-                                        </property>
+                        </property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkStackPage">
+                        <property name="title" translatable="yes">Spring</property>
+                        <property name="name">Spring</property>
+                        <property name="child">
+                          <object class="AdwPreferencesGroup">
+                            <child>
+                              <object class="AdwActionRow">
+                                <property name="title" translatable="yes">Initial Velocity</property>
+                                <child>
+                                  <object class="GtkSpinButton" id="spring_animation_velocity">
+                                    <property name="valign">center</property>
+                                    <property name="numeric">True</property>
+                                    <property name="adjustment">
+                                      <object class="GtkAdjustment">
+                                        <property name="lower">-1000</property>
+                                        <property name="upper">1000</property>
+                                        <property name="value">0</property>
+                                        <property name="page-increment">10</property>
+                                        <property name="step-increment">1</property>
                                       </object>
-                                    </child>
+                                    </property>
                                   </object>
                                 </child>
-                                <child>
-                                  <object class="AdwActionRow">
-                                    <property name="title" translatable="yes">Damping</property>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spring_animation_damping">
-                                        <property name="valign">center</property>
-                                        <property name="numeric">True</property>
-                                        <property name="adjustment">
-                                          <object class="GtkAdjustment">
-                                            <property name="lower">0</property>
-                                            <property name="upper">1000</property>
-                                            <property name="value">10</property>
-                                            <property name="page-increment">10</property>
-                                            <property name="step-increment">1</property>
-                                          </object>
-                                        </property>
-                                        <signal name="value-changed" handler="notify_spring_params_change" swapped="yes"/>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="AdwActionRow">
+                                <property name="title" translatable="yes">Damping</property>
+                                <child>
+                                  <object class="GtkSpinButton" id="spring_animation_damping">
+                                    <property name="valign">center</property>
+                                    <property name="numeric">True</property>
+                                    <property name="adjustment">
+                                      <object class="GtkAdjustment">
+                                        <property name="lower">0</property>
+                                        <property name="upper">1000</property>
+                                        <property name="value">10</property>
+                                        <property name="page-increment">10</property>
+                                        <property name="step-increment">1</property>
                                       </object>
-                                    </child>
+                                    </property>
+                                    <signal name="value-changed" handler="notify_spring_params_change" swapped="yes"/>
                                   </object>
                                 </child>
-                                <child>
-                                  <object class="AdwActionRow">
-                                    <property name="title" translatable="yes">Mass</property>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spring_animation_mass">
-                                        <property name="valign">center</property>
-                                        <property name="numeric">True</property>
-                                        <property name="adjustment">
-                                          <object class="GtkAdjustment">
-                                            <property name="lower">0</property>
-                                            <property name="upper">100</property>
-                                            <property name="value">1</property>
-                                            <property name="page-increment">10</property>
-                                            <property name="step-increment">1</property>
-                                          </object>
-                                        </property>
-                                        <signal name="value-changed" handler="notify_spring_params_change" swapped="yes"/>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="AdwActionRow">
+                                <property name="title" translatable="yes">Mass</property>
+                                <child>
+                                  <object class="GtkSpinButton" id="spring_animation_mass">
+                                    <property name="valign">center</property>
+                                    <property name="numeric">True</property>
+                                    <property name="adjustment">
+                                      <object class="GtkAdjustment">
+                                        <property name="lower">0</property>
+                                        <property name="upper">100</property>
+                                        <property name="value">1</property>
+                                        <property name="page-increment">10</property>
+                                        <property name="step-increment">1</property>
                                       </object>
-                                    </child>
+                                    </property>
+                                    <signal name="value-changed" handler="notify_spring_params_change" swapped="yes"/>
                                   </object>
                                 </child>
-                                <child>
-                                  <object class="AdwActionRow">
-                                    <property name="title" translatable="yes">Stiffness</property>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spring_animation_stiffness">
-                                        <property name="valign">center</property>
-                                        <property name="numeric">True</property>
-                                        <property name="adjustment">
-                                          <object class="GtkAdjustment">
-                                            <property name="lower">0</property>
-                                            <property name="upper">1000</property>
-                                            <property name="value">100</property>
-                                            <property name="page-increment">10</property>
-                                            <property name="step-increment">1</property>
-                                          </object>
-                                        </property>
-                                        <signal name="value-changed" handler="notify_spring_params_change" swapped="yes"/>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="AdwActionRow">
+                                <property name="title" translatable="yes">Stiffness</property>
+                                <child>
+                                  <object class="GtkSpinButton" id="spring_animation_stiffness">
+                                    <property name="valign">center</property>
+                                    <property name="numeric">True</property>
+                                    <property name="adjustment">
+                                      <object class="GtkAdjustment">
+                                        <property name="lower">0</property>
+                                        <property name="upper">1000</property>
+                                        <property name="value">100</property>
+                                        <property name="page-increment">10</property>
+                                        <property name="step-increment">1</property>
                                       </object>
-                                    </child>
+                                    </property>
+                                    <signal name="value-changed" handler="notify_spring_params_change" swapped="yes"/>
                                   </object>
                                 </child>
-                                <child>
-                                  <object class="AdwActionRow">
-                                    <property name="title" translatable="yes">Epsilon</property>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spring_animation_epsilon">
-                                        <property name="valign">center</property>
-                                        <property name="numeric">True</property>
-                                        <property name="digits">5</property>
-                                        <property name="adjustment">
-                                          <object class="GtkAdjustment">
-                                            <property name="lower">0.0001</property>
-                                            <property name="upper">0.01</property>
-                                            <property name="value">0.001</property>
-                                            <property name="page-increment">0.001</property>
-                                            <property name="step-increment">0.001</property>
-                                          </object>
-                                        </property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="AdwActionRow">
+                                <property name="title" translatable="yes">Epsilon</property>
+                                <child>
+                                  <object class="GtkSpinButton" id="spring_animation_epsilon">
+                                    <property name="valign">center</property>
+                                    <property name="numeric">True</property>
+                                    <property name="digits">5</property>
+                                    <property name="adjustment">
+                                      <object class="GtkAdjustment">
+                                        <property name="lower">0.0001</property>
+                                        <property name="upper">0.01</property>
+                                        <property name="value">0.001</property>
+                                        <property name="page-increment">0.001</property>
+                                        <property name="step-increment">0.001</property>
                                       </object>
-                                    </child>
+                                    </property>
                                   </object>
                                 </child>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="AdwActionRow">
+                                <property name="title" translatable="yes">Clamp</property>
+                                <property name="activatable-widget">spring_animation_clamp_switch</property>
                                 <child>
-                                  <object class="AdwActionRow">
-                                    <property name="title" translatable="yes">Clamp</property>
-                                    <property name="activatable-widget">spring_animation_clamp_switch</property>
-                                    <child>
-                                      <object class="GtkSwitch" id="spring_animation_clamp_switch">
-                                        <property name="valign">center</property>
-                                      </object>
-                                    </child>
+                                  <object class="GtkSwitch" id="spring_animation_clamp_switch">
+                                    <property name="valign">center</property>
                                   </object>
                                 </child>
                               </object>
-                            </property>
+                            </child>
                           </object>
-                        </child>
+                        </property>
                       </object>
-                    </property>
+                    </child>
                   </object>
-                </child>
+                </property>
               </object>
-            </property>
+            </child>
           </object>
         </property>
       </object>
diff -pruN 1.2~alpha-1/demo/pages/avatar/adw-demo-page-avatar.ui 1.2~beta-1/demo/pages/avatar/adw-demo-page-avatar.ui
--- 1.2~alpha-1/demo/pages/avatar/adw-demo-page-avatar.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/pages/avatar/adw-demo-page-avatar.ui	2022-08-05 21:51:59.000000000 +0000
@@ -7,168 +7,163 @@
       <object class="GtkScrolledWindow">
         <property name="hscrollbar-policy">never</property>
         <property name="child">
-          <object class="GtkViewport">
-            <property name="scroll-to-focus">True</property>
-            <property name="child">
+          <object class="GtkBox">
+            <property name="orientation">vertical</property>
+            <property name="valign">start</property>
+            <style>
+              <class name="avatar-page"/>
+            </style>
+            <child>
               <object class="GtkBox">
                 <property name="orientation">vertical</property>
-                <property name="valign">start</property>
-                <style>
-                  <class name="avatar-page"/>
-                </style>
                 <child>
-                  <object class="GtkBox">
-                    <property name="orientation">vertical</property>
-                    <child>
-                      <object class="AdwAvatar" id="avatar">
-                        <property name="valign">center</property>
-                        <property name="size" bind-source="size" bind-property="value" bind-flags="sync-create"></property>
-                        <property name="show-initials" bind-source="show_initials" bind-property="state" bind-flags="sync-create"/>
-                        <property name="text" bind-source="text" bind-property="text" bind-flags="sync-create"/>
-                        <property name="margin-bottom">36</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkLabel">
-                        <property name="label" translatable="yes">Avatar</property>
-                        <property name="wrap">True</property>
-                        <property name="wrap-mode">word-char</property>
-                        <property name="justify">center</property>
-                        <style>
-                          <class name="title"/>
-                          <class name="title-1"/>
-                        </style>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkLabel">
-                        <property name="label" translatable="yes">A user avatar with generated fallback.</property>
-                        <property name="justify">center</property>
-                        <property name="use-markup">true</property>
-                        <property name="wrap">True</property>
-                        <style>
-                          <class name="body"/>
-                          <class name="description"/>
-                        </style>
-                      </object>
-                    </child>
+                  <object class="AdwAvatar" id="avatar">
+                    <property name="valign">center</property>
+                    <property name="size" bind-source="size" bind-property="value" bind-flags="sync-create"></property>
+                    <property name="show-initials" bind-source="show_initials" bind-property="state" bind-flags="sync-create"/>
+                    <property name="text" bind-source="text" bind-property="text" bind-flags="sync-create"/>
+                    <property name="margin-bottom">36</property>
                   </object>
                 </child>
                 <child>
-                  <object class="AdwClamp">
-                    <property name="maximum-size">400</property>
-                    <property name="tightening-threshold">300</property>
-                    <property name="child">
-                      <object class="GtkBox">
-                        <property name="valign">center</property>
-                        <property name="orientation">vertical</property>
-                        <property name="spacing">12</property>
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">Avatar</property>
+                    <property name="wrap">True</property>
+                    <property name="wrap-mode">word-char</property>
+                    <property name="justify">center</property>
+                    <style>
+                      <class name="title"/>
+                      <class name="title-1"/>
+                    </style>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="label" translatable="yes">A user avatar with generated fallback.</property>
+                    <property name="justify">center</property>
+                    <property name="use-markup">true</property>
+                    <property name="wrap">True</property>
+                    <style>
+                      <class name="body"/>
+                      <class name="description"/>
+                    </style>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="AdwClamp">
+                <property name="maximum-size">400</property>
+                <property name="tightening-threshold">300</property>
+                <property name="child">
+                  <object class="GtkBox">
+                    <property name="valign">center</property>
+                    <property name="orientation">vertical</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="AdwPreferencesGroup">
                         <child>
-                          <object class="AdwPreferencesGroup">
+                          <object class="AdwEntryRow" id="text">
+                            <property name="title" translatable="yes">Text</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="AdwActionRow">
+                            <property name="title" translatable="yes">Show Initials</property>
+                            <property name="activatable-widget">show_initials</property>
                             <child>
-                              <object class="AdwEntryRow" id="text">
-                                <property name="title" translatable="yes">Text</property>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="AdwActionRow">
-                                <property name="title" translatable="yes">Show Initials</property>
-                                <property name="activatable-widget">show_initials</property>
-                                <child>
-                                  <object class="GtkSwitch" id="show_initials">
-                                    <property name="valign">center</property>
-                                    <property name="state">True</property>
-                                  </object>
-                                </child>
+                              <object class="GtkSwitch" id="show_initials">
+                                <property name="valign">center</property>
+                                <property name="state">True</property>
                               </object>
                             </child>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="AdwActionRow">
+                            <property name="title" translatable="yes">File</property>
                             <child>
-                              <object class="AdwActionRow">
-                                <property name="title" translatable="yes">File</property>
+                              <object class="GtkButton">
+                                <property name="valign">center</property>
+                                <property name="action-name">avatar.open</property>
                                 <child>
-                                  <object class="GtkButton">
-                                    <property name="valign">center</property>
-                                    <property name="action-name">avatar.open</property>
+                                  <object class="GtkBox">
+                                    <property name="spacing">6</property>
                                     <child>
-                                      <object class="GtkBox">
-                                        <property name="spacing">6</property>
-                                        <child>
-                                          <object class="GtkImage">
-                                            <property name="icon-name">document-open-symbolic</property>
-                                          </object>
-                                        </child>
-                                        <child>
-                                          <object class="GtkLabel" id="file_chooser_label">
-                                            <property name="ellipsize">middle</property>
-                                          </object>
-                                        </child>
+                                      <object class="GtkImage">
+                                        <property name="icon-name">document-open-symbolic</property>
+                                      </object>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="file_chooser_label">
+                                        <property name="ellipsize">middle</property>
                                       </object>
                                     </child>
-                                  </object>
-                                </child>
-                                <child>
-                                  <object class="GtkButton">
-                                    <property name="valign">center</property>
-                                    <property name="icon-name">user-trash-symbolic</property>
-                                    <property name="action-name">avatar.remove</property>
-                                    <style>
-                                      <class name="flat"/>
-                                    </style>
                                   </object>
                                 </child>
                               </object>
                             </child>
                             <child>
-                              <object class="AdwActionRow">
-                                <property name="title" translatable="yes">Size</property>
-                                <child>
-                                  <object class="GtkSpinButton" id="size">
-                                    <property name="valign">center</property>
-                                    <property name="numeric">True</property>
-                                    <property name="adjustment">
-                                      <object class="GtkAdjustment">
-                                        <property name="lower">24</property>
-                                        <property name="upper">320</property>
-                                        <property name="value">128</property>
-                                        <property name="page-increment">8</property>
-                                        <property name="step-increment">8</property>
-                                      </object>
-                                    </property>
-                                  </object>
-                                </child>
+                              <object class="GtkButton">
+                                <property name="valign">center</property>
+                                <property name="icon-name">user-trash-symbolic</property>
+                                <property name="action-name">avatar.remove</property>
+                                <style>
+                                  <class name="flat"/>
+                                </style>
                               </object>
                             </child>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="AdwActionRow">
+                            <property name="title" translatable="yes">Size</property>
                             <child>
-                              <object class="AdwActionRow">
-                                <property name="title" translatable="yes">Export to File</property>
-                                <child>
-                                  <object class="GtkButton">
-                                    <property name="valign">center</property>
-                                    <property name="icon-name">avatar-save-symbolic</property>
-                                    <property name="action-name">avatar.save</property>
-                                    <style>
-                                      <class name="flat"/>
-                                    </style>
+                              <object class="GtkSpinButton" id="size">
+                                <property name="valign">center</property>
+                                <property name="numeric">True</property>
+                                <property name="adjustment">
+                                  <object class="GtkAdjustment">
+                                    <property name="lower">24</property>
+                                    <property name="upper">320</property>
+                                    <property name="value">128</property>
+                                    <property name="page-increment">8</property>
+                                    <property name="step-increment">8</property>
                                   </object>
-                                </child>
+                                </property>
                               </object>
                             </child>
                           </object>
                         </child>
                         <child>
-                          <object class="GtkListBox" id="contacts">
-                            <property name="selection-mode">none</property>
-                            <style>
-                              <class name="boxed-list"/>
-                            </style>
+                          <object class="AdwActionRow">
+                            <property name="title" translatable="yes">Export to File</property>
+                            <child>
+                              <object class="GtkButton">
+                                <property name="valign">center</property>
+                                <property name="icon-name">avatar-save-symbolic</property>
+                                <property name="action-name">avatar.save</property>
+                                <style>
+                                  <class name="flat"/>
+                                </style>
+                              </object>
+                            </child>
                           </object>
                         </child>
                       </object>
-                    </property>
+                    </child>
+                    <child>
+                      <object class="GtkListBox" id="contacts">
+                        <property name="selection-mode">none</property>
+                        <style>
+                          <class name="boxed-list"/>
+                        </style>
+                      </object>
+                    </child>
                   </object>
-                </child>
+                </property>
               </object>
-            </property>
+            </child>
           </object>
         </property>
       </object>
diff -pruN 1.2~alpha-1/demo/pages/carousel/adw-demo-page-carousel.ui 1.2~beta-1/demo/pages/carousel/adw-demo-page-carousel.ui
--- 1.2~alpha-1/demo/pages/carousel/adw-demo-page-carousel.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/pages/carousel/adw-demo-page-carousel.ui	2022-08-05 21:51:59.000000000 +0000
@@ -31,7 +31,7 @@
                 <property name="maximum-size">400</property>
                 <property name="tightening-threshold">300</property>
                 <property name="valign">center</property>
-                <child>
+                <property name="child">
                   <object class="AdwPreferencesGroup">
                     <child>
                       <object class="AdwComboRow" id="orientation_row">
@@ -88,7 +88,7 @@
                       </object>
                     </child>
                   </object>
-                </child>
+                </property>
               </object>
             </child>
             <child>
diff -pruN 1.2~alpha-1/demo/pages/flap/adw-flap-demo-window.ui 1.2~beta-1/demo/pages/flap/adw-flap-demo-window.ui
--- 1.2~alpha-1/demo/pages/flap/adw-flap-demo-window.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/pages/flap/adw-flap-demo-window.ui	2022-08-05 21:51:59.000000000 +0000
@@ -7,7 +7,7 @@
     <property name="title" translatable="yes">AdwFlap Demo</property>
     <property name="default-width">640</property>
     <property name="default-height">480</property>
-    <child>
+    <property name="content">
       <object class="GtkBox">
         <property name="orientation">vertical</property>
         <child>
@@ -199,6 +199,6 @@
           </object>
         </child>
       </object>
-    </child>
+    </property>
   </template>
 </interface>
diff -pruN 1.2~alpha-1/demo/pages/styles/adw-style-demo-window.ui 1.2~beta-1/demo/pages/styles/adw-style-demo-window.ui
--- 1.2~alpha-1/demo/pages/styles/adw-style-demo-window.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/pages/styles/adw-style-demo-window.ui	2022-08-05 21:51:59.000000000 +0000
@@ -265,7 +265,6 @@ The "opaque" style class allows to creat
                         <property name="column-spacing">6</property>
                         <property name="row-spacing">6</property>
                         <property name="selection-mode">none</property>
-                        <property name="margin-top">12</property>
                         <style>
                           <class name="inline"/>
                         </style>
@@ -661,12 +660,12 @@ The "card" style class can be used to ac
                             <style>
                               <class name="card"/>
                             </style>
-                            <child>
+                            <property name="child">
                               <object class="GtkLabel">
                                 <property name="label" translatable="yes">Card</property>
                                 <property name="wrap">True</property>
                               </object>
-                            </child>
+                            </property>
                           </object>
                         </child>
                         <child>
@@ -677,12 +676,12 @@ The "card" style class can be used to ac
                               <class name="card"/>
                               <class name="activatable"/>
                             </style>
-                            <child>
+                            <property name="child">
                               <object class="GtkLabel">
                                 <property name="label" translatable="yes">Card (activatable)</property>
                                 <property name="wrap">True</property>
                               </object>
-                            </child>
+                            </property>
                           </object>
                         </child>
                         <child>
@@ -691,12 +690,12 @@ The "card" style class can be used to ac
                             <style>
                               <class name="card"/>
                             </style>
-                            <child>
+                            <property name="child">
                               <object class="GtkLabel">
                                 <property name="label" translatable="yes">Card (button)</property>
                                 <property name="wrap">True</property>
                               </object>
-                            </child>
+                            </property>
                           </object>
                         </child>
                       </object>
@@ -908,7 +907,7 @@ The "raised" style class can be used to
                     <child>
                       <object class="GtkFrame">
                         <property name="margin-bottom">12</property>
-                        <child>
+                        <property name="child">
                           <object class="GtkBox">
                             <property name="tooltip-text">toolbar</property>
                             <style>
@@ -957,7 +956,7 @@ The "raised" style class can be used to
                               </object>
                             </child>
                           </object>
-                        </child>
+                        </property>
                       </object>
                     </child>
                     <child>
@@ -1015,11 +1014,11 @@ The "raised" style class can be used to
                             <style>
                               <class name="background"/>
                             </style>
-                            <child>
+                            <property name="child">
                               <object class="GtkLabel">
                                 <property name="label" translatable="yes">Background</property>
                               </object>
-                            </child>
+                            </property>
                           </object>
                         </child>
                         <child>
@@ -1028,11 +1027,11 @@ The "raised" style class can be used to
                             <style>
                               <class name="view"/>
                             </style>
-                            <child>
+                            <property name="child">
                               <object class="GtkLabel">
                                 <property name="label" translatable="yes">View</property>
                               </object>
-                            </child>
+                            </property>
                           </object>
                         </child>
                         <child>
@@ -1041,11 +1040,11 @@ The "raised" style class can be used to
                             <style>
                               <class name="osd"/>
                             </style>
-                            <child>
+                            <property name="child">
                               <object class="GtkLabel">
                                 <property name="label" translatable="yes">OSD</property>
                               </object>
-                            </child>
+                            </property>
                           </object>
                         </child>
                       </object>
@@ -1140,7 +1139,7 @@ The "raised" style class can be used to
     <property name="transient-for">AdwStyleDemoWindow</property>
     <property name="title" translatable="yes">Flat Header Bar</property>
     <property name="hide-on-close">True</property>
-    <child type="titlebar">
+    <property name="titlebar">
       <object class="GtkHeaderBar">
         <property name="tooltip-text">flat</property>
         <property name="title-widget">
@@ -1150,8 +1149,8 @@ The "raised" style class can be used to
           <class name="flat"/>
         </style>
       </object>
-    </child>
-    <child>
+    </property>
+    <property name="child">
       <object class="GtkLabel">
         <property name="use-markup">True</property>
         <property name="label" translatable="yes">The header bar in this window has the "flat" style class.</property>
@@ -1160,7 +1159,7 @@ The "raised" style class can be used to
         <property name="margin-end">48</property>
         <property name="margin-bottom">48</property>
       </object>
-    </child>
+    </property>
   </object>
   <object class="GtkWindow" id="status_page_window">
     <property name="modal">True</property>
@@ -1169,7 +1168,7 @@ The "raised" style class can be used to
     <property name="hide-on-close">True</property>
     <property name="default-width">640</property>
     <property name="default-height">480</property>
-    <child type="titlebar">
+    <property name="titlebar">
       <object class="GtkHeaderBar">
         <child>
           <object class="GtkRevealer">
@@ -1184,8 +1183,8 @@ The "raised" style class can be used to
           </object>
         </child>
       </object>
-    </child>
-    <child>
+    </property>
+    <property name="child">
       <object class="AdwFlap" id="status_page_flap">
         <property name="width-request">360</property>
         <property name="flap">
@@ -1231,7 +1230,7 @@ The "raised" style class can be used to
           </object>
         </property>
       </object>
-    </child>
+    </property>
   </object>
   <object class="AdwWindow" id="sidebar_window">
     <property name="modal">True</property>
@@ -1262,57 +1261,52 @@ The "raised" style class can be used to
                 <property name="hscrollbar-policy">never</property>
                 <property name="vexpand">True</property>
                 <property name="child">
-                  <object class="GtkViewport">
-                    <property name="scroll-to-focus">False</property>
-                    <property name="child">
-                      <object class="GtkListBox">
-                        <property name="tooltip-text">navigation-sidebar</property>
-                        <binding name="selection-mode">
-                          <closure type="GtkSelectionMode" function="selection_mode_for_folded">
-                            <lookup name="folded">sidebar_leaflet</lookup>
-                          </closure>
-                        </binding>
-                        <signal name="row-activated" handler="sidebar_forward_cb" swapped="yes"/>
-                        <style>
-                          <class name="navigation-sidebar"/>
-                        </style>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label" translatable="yes">Item 1</property>
-                            <property name="ellipsize">end</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label" translatable="yes">Item 2</property>
-                            <property name="ellipsize">end</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label" translatable="yes">Item 3</property>
-                            <property name="ellipsize">end</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label" translatable="yes">Item 4</property>
-                            <property name="ellipsize">end</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label" translatable="yes">Item 5</property>
-                            <property name="ellipsize">end</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
+                  <object class="GtkListBox">
+                    <property name="tooltip-text">navigation-sidebar</property>
+                    <binding name="selection-mode">
+                      <closure type="GtkSelectionMode" function="selection_mode_for_folded">
+                        <lookup name="folded">sidebar_leaflet</lookup>
+                      </closure>
+                    </binding>
+                    <signal name="row-activated" handler="sidebar_forward_cb" swapped="yes"/>
+                    <style>
+                      <class name="navigation-sidebar"/>
+                    </style>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label" translatable="yes">Item 1</property>
+                        <property name="ellipsize">end</property>
+                        <property name="xalign">0</property>
                       </object>
-                    </property>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label" translatable="yes">Item 2</property>
+                        <property name="ellipsize">end</property>
+                        <property name="xalign">0</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label" translatable="yes">Item 3</property>
+                        <property name="ellipsize">end</property>
+                        <property name="xalign">0</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label" translatable="yes">Item 4</property>
+                        <property name="ellipsize">end</property>
+                        <property name="xalign">0</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label" translatable="yes">Item 5</property>
+                        <property name="ellipsize">end</property>
+                        <property name="xalign">0</property>
+                      </object>
+                    </child>
                   </object>
                 </property>
               </object>
diff -pruN 1.2~alpha-1/demo/pages/tab-view/adw-tab-view-demo-window.c 1.2~beta-1/demo/pages/tab-view/adw-tab-view-demo-window.c
--- 1.2~alpha-1/demo/pages/tab-view/adw-tab-view-demo-window.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/pages/tab-view/adw-tab-view-demo-window.c	2022-08-05 21:51:59.000000000 +0000
@@ -251,6 +251,20 @@ get_indicator_icon (AdwTabPage *page)
     return g_themed_icon_new ("tab-audio-playing-symbolic");
 }
 
+static char *
+get_indicator_tooltip (AdwTabPage *page)
+{
+  gboolean muted;
+
+  muted = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (page),
+                                              "adw-tab-view-demo-muted"));
+
+  if (muted)
+    return g_strdup (_("Unmute Tab"));
+  else
+    return g_strdup (_("Mute Tab"));
+}
+
 static void
 tab_change_indicator (GSimpleAction *action,
                       GVariant      *parameter,
@@ -259,13 +273,18 @@ tab_change_indicator (GSimpleAction *act
   AdwTabViewDemoWindow *self = ADW_TAB_VIEW_DEMO_WINDOW (user_data);
   gboolean indicator = g_variant_get_boolean (parameter);
   GIcon *icon = NULL;
+  char *tooltip = NULL;
 
-  if (indicator)
+  if (indicator) {
     icon = get_indicator_icon (get_current_page (self));
+    tooltip = get_indicator_tooltip (get_current_page (self));
+  }
 
   adw_tab_page_set_indicator_icon (get_current_page (self), icon);
+  adw_tab_page_set_indicator_tooltip (get_current_page (self), tooltip);
   g_simple_action_set_state (action, g_variant_new_boolean (indicator));
 
+  g_clear_pointer (&tooltip, g_free);
   g_clear_object (&icon);
 }
 
@@ -317,6 +336,7 @@ tab_duplicate (GSimpleAction *action,
                    adw_tab_page_get_icon (parent));
 
   adw_tab_page_set_indicator_icon (page, adw_tab_page_get_indicator_icon (parent));
+  adw_tab_page_set_indicator_tooltip (page, adw_tab_page_get_indicator_tooltip (parent));
   adw_tab_page_set_loading (page, adw_tab_page_get_loading (parent));
   adw_tab_page_set_needs_attention (page, adw_tab_page_get_needs_attention (parent));
 
@@ -445,6 +465,7 @@ indicator_activated_cb (AdwTabViewDemoWi
                         AdwTabPage           *page)
 {
   GIcon *icon;
+  char *tooltip;
   gboolean muted;
 
   muted = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (page),
@@ -455,10 +476,13 @@ indicator_activated_cb (AdwTabViewDemoWi
                      GINT_TO_POINTER (!muted));
 
   icon = get_indicator_icon (page);
+  tooltip = get_indicator_tooltip (page);
 
   adw_tab_page_set_indicator_icon (page, icon);
+  adw_tab_page_set_indicator_tooltip (page, tooltip);
 
   g_object_unref (icon);
+  g_free (tooltip);
 }
 
 static gboolean
diff -pruN 1.2~alpha-1/demo/pages/tab-view/adw-tab-view-demo-window.ui 1.2~beta-1/demo/pages/tab-view/adw-tab-view-demo-window.ui
--- 1.2~alpha-1/demo/pages/tab-view/adw-tab-view-demo-window.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/pages/tab-view/adw-tab-view-demo-window.ui	2022-08-05 21:51:59.000000000 +0000
@@ -6,7 +6,7 @@
     <property name="title" translatable="yes">Tab View Demo</property>
     <property name="default-width">800</property>
     <property name="default-height">600</property>
-    <child>
+    <property name="content">
       <object class="GtkBox">
         <property name="orientation">vertical</property>
         <child>
@@ -42,7 +42,7 @@
           </object>
         </child>
       </object>
-    </child>
+    </property>
   </template>
   <menu id="tab_menu">
     <section>
diff -pruN 1.2~alpha-1/demo/pages/view-switcher/adw-demo-page-view-switcher.ui 1.2~beta-1/demo/pages/view-switcher/adw-demo-page-view-switcher.ui
--- 1.2~alpha-1/demo/pages/view-switcher/adw-demo-page-view-switcher.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/pages/view-switcher/adw-demo-page-view-switcher.ui	2022-08-05 21:51:59.000000000 +0000
@@ -8,7 +8,7 @@
         <property name="icon-name">widget-view-switcher-symbolic</property>
         <property name="title" translatable="yes">View Switcher</property>
         <property name="description" translatable="yes">Widgets to switch the window's view.</property>
-        <child>
+        <property name="child">
           <object class="GtkButton">
             <property name="label" translatable="yes">Run the Demo</property>
             <property name="halign">center</property>
@@ -17,7 +17,7 @@
               <class name="pill"/>
             </style>
           </object>
-        </child>
+        </property>
       </object>
     </property>
   </template>
diff -pruN 1.2~alpha-1/demo/pages/view-switcher/adw-view-switcher-demo-window.ui 1.2~beta-1/demo/pages/view-switcher/adw-view-switcher-demo-window.ui
--- 1.2~alpha-1/demo/pages/view-switcher/adw-view-switcher-demo-window.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/demo/pages/view-switcher/adw-view-switcher-demo-window.ui	2022-08-05 21:51:59.000000000 +0000
@@ -7,7 +7,7 @@
     <property name="modal">True</property>
     <property name="width-request">360</property>
     <property name="title" translatable="yes">AdwViewSwitcher Demo</property>
-    <child>
+    <property name="content">
       <object class="GtkBox">
         <property name="orientation">vertical</property>
         <child>
@@ -103,6 +103,6 @@
           </object>
         </child>
       </object>
-    </child>
+    </property>
   </template>
 </interface>
Binary files 1.2~alpha-1/doc/images/osd-toolbar-dark.png and 1.2~beta-1/doc/images/osd-toolbar-dark.png differ
Binary files 1.2~alpha-1/doc/images/osd-toolbar.png and 1.2~beta-1/doc/images/osd-toolbar.png differ
Binary files 1.2~alpha-1/doc/images/style-view.png and 1.2~beta-1/doc/images/style-view.png differ
diff -pruN 1.2~alpha-1/doc/named-colors.md 1.2~beta-1/doc/named-colors.md
--- 1.2~alpha-1/doc/named-colors.md	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/doc/named-colors.md	2022-08-05 21:51:59.000000000 +0000
@@ -298,8 +298,8 @@ well as with the [`.view`](style-classes
   </tr>
   <tr>
     <td><tt>&#64;view_fg_color</tt></td>
-    <td><div class="color-pill dark" style="background-color: #000000"/></td>
-    <td><tt>#000000</tt></td>
+    <td><div class="color-pill dark" style="background-color: rgba(0, 0, 0, 0.8)"/></td>
+    <td><tt>rgba(0, 0, 0, 0.8)</tt></td>
     <td><div class="color-pill light" style="background-color: #ffffff"/></td>
     <td><tt>#ffffff</tt></td>
   </tr>
diff -pruN 1.2~alpha-1/doc/tools/data/adaptive-split-headers-narrow-1.ui 1.2~beta-1/doc/tools/data/adaptive-split-headers-narrow-1.ui
--- 1.2~alpha-1/doc/tools/data/adaptive-split-headers-narrow-1.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/doc/tools/data/adaptive-split-headers-narrow-1.ui	2022-08-05 21:51:59.000000000 +0000
@@ -27,34 +27,29 @@
                 <property name="hscrollbar-policy">never</property>
                 <property name="width-request">250</property>
                 <property name="child">
-                  <object class="GtkViewport">
-                    <property name="scroll-to-focus">True</property>
-                    <property name="child">
-                      <object class="GtkListBox">
-                        <property name="selection-mode">none</property>
-                        <style>
-                          <class name="navigation-sidebar"/>
-                        </style>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label">Item 1</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label">Item 2</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label">Item 3</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
+                  <object class="GtkListBox">
+                    <property name="selection-mode">none</property>
+                    <style>
+                      <class name="navigation-sidebar"/>
+                    </style>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label">Item 1</property>
+                        <property name="xalign">0</property>
                       </object>
-                    </property>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label">Item 2</property>
+                        <property name="xalign">0</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label">Item 3</property>
+                        <property name="xalign">0</property>
+                      </object>
+                    </child>
                   </object>
                 </property>
               </object>
diff -pruN 1.2~alpha-1/doc/tools/data/adaptive-split-headers-narrow-2.ui 1.2~beta-1/doc/tools/data/adaptive-split-headers-narrow-2.ui
--- 1.2~alpha-1/doc/tools/data/adaptive-split-headers-narrow-2.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/doc/tools/data/adaptive-split-headers-narrow-2.ui	2022-08-05 21:51:59.000000000 +0000
@@ -28,34 +28,29 @@
                 <property name="hscrollbar-policy">never</property>
                 <property name="width-request">250</property>
                 <property name="child">
-                  <object class="GtkViewport">
-                    <property name="scroll-to-focus">True</property>
-                    <property name="child">
-                      <object class="GtkListBox">
-                        <property name="selection-mode">none</property>
-                        <style>
-                          <class name="navigation-sidebar"/>
-                        </style>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label">Item 1</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label">Item 2</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label">Item 3</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
+                  <object class="GtkListBox">
+                    <property name="selection-mode">none</property>
+                    <style>
+                      <class name="navigation-sidebar"/>
+                    </style>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label">Item 1</property>
+                        <property name="xalign">0</property>
                       </object>
-                    </property>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label">Item 2</property>
+                        <property name="xalign">0</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label">Item 3</property>
+                        <property name="xalign">0</property>
+                      </object>
+                    </child>
                   </object>
                 </property>
               </object>
diff -pruN 1.2~alpha-1/doc/tools/data/adaptive-split-headers-wide.ui 1.2~beta-1/doc/tools/data/adaptive-split-headers-wide.ui
--- 1.2~alpha-1/doc/tools/data/adaptive-split-headers-wide.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/doc/tools/data/adaptive-split-headers-wide.ui	2022-08-05 21:51:59.000000000 +0000
@@ -27,34 +27,29 @@
                 <property name="hscrollbar-policy">never</property>
                 <property name="width-request">250</property>
                 <property name="child">
-                  <object class="GtkViewport">
-                    <property name="scroll-to-focus">True</property>
-                    <property name="child">
-                      <object class="GtkListBox">
-                        <property name="selection-mode">single</property>
-                        <style>
-                          <class name="navigation-sidebar"/>
-                        </style>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label">Item 1</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label">Item 2</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel">
-                            <property name="label">Item 3</property>
-                            <property name="xalign">0</property>
-                          </object>
-                        </child>
+                  <object class="GtkListBox">
+                    <property name="selection-mode">single</property>
+                    <style>
+                      <class name="navigation-sidebar"/>
+                    </style>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label">Item 1</property>
+                        <property name="xalign">0</property>
                       </object>
-                    </property>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label">Item 2</property>
+                        <property name="xalign">0</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkLabel">
+                        <property name="label">Item 3</property>
+                        <property name="xalign">0</property>
+                      </object>
+                    </child>
                   </object>
                 </property>
               </object>
diff -pruN 1.2~alpha-1/doc/tools/data/popover-menu-list.ui 1.2~beta-1/doc/tools/data/popover-menu-list.ui
--- 1.2~alpha-1/doc/tools/data/popover-menu-list.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/doc/tools/data/popover-menu-list.ui	2022-08-05 21:51:59.000000000 +0000
@@ -11,12 +11,12 @@
         <property name="width-request">100</property>
         <child>
           <object class="GtkListBoxRow" id="hover">
-            <child>
+            <property name="child">
               <object class="GtkLabel">
                 <property name="label">Item 1</property>
                 <property name="xalign">0</property>
               </object>
-            </child>
+            </property>
           </object>
         </child>
         <child>
diff -pruN 1.2~alpha-1/doc/tools/data/toast-undo.ui 1.2~beta-1/doc/tools/data/toast-undo.ui
--- 1.2~alpha-1/doc/tools/data/toast-undo.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/doc/tools/data/toast-undo.ui	2022-08-05 21:51:59.000000000 +0000
@@ -19,8 +19,8 @@
       <object class="AdwToastOverlay">
         <child>
           <object class="AdwToast">
-        <property name="title">&lt;span font_features='tnum=1'&gt;2&lt;/span&gt; items deleted</property>
-        <property name="button-label">Undo</property>
+            <property name="title">&lt;span font_features='tnum=1'&gt;2&lt;/span&gt; items deleted</property>
+            <property name="button-label">Undo</property>
           </object>
         </child>
       </object>
diff -pruN 1.2~alpha-1/examples/hello-world/hello.c 1.2~beta-1/examples/hello-world/hello.c
--- 1.2~alpha-1/examples/hello-world/hello.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/examples/hello-world/hello.c	2022-08-05 21:51:59.000000000 +0000
@@ -18,7 +18,7 @@ main (int   argc,
 {
   g_autoptr (AdwApplication) app = NULL;
 
-  app = adw_application_new ("org.example.Hello", G_APPLICATION_FLAGS_NONE);
+  app = adw_application_new ("org.example.Hello", 0);
 
   g_signal_connect (app, "activate", G_CALLBACK (activate_cb), NULL);
 
diff -pruN 1.2~alpha-1/.gitlab-ci/abi-checker.Dockerfile 1.2~beta-1/.gitlab-ci/abi-checker.Dockerfile
--- 1.2~alpha-1/.gitlab-ci/abi-checker.Dockerfile	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/.gitlab-ci/abi-checker.Dockerfile	2022-08-05 21:51:59.000000000 +0000
@@ -1,4 +1,4 @@
-FROM fedora:34
+FROM fedora:36
 
 RUN dnf -y update \
  && dnf -y install \
diff -pruN 1.2~alpha-1/.gitlab-ci/docs.Dockerfile 1.2~beta-1/.gitlab-ci/docs.Dockerfile
--- 1.2~alpha-1/.gitlab-ci/docs.Dockerfile	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/.gitlab-ci/docs.Dockerfile	2022-08-05 21:51:59.000000000 +0000
@@ -1,4 +1,4 @@
-FROM fedora:34
+FROM fedora:36
 
 RUN dnf -y update \
  && dnf -y install \
diff -pruN 1.2~alpha-1/.gitlab-ci.yml 1.2~beta-1/.gitlab-ci.yml
--- 1.2~alpha-1/.gitlab-ci.yml	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/.gitlab-ci.yml	2022-08-05 21:51:59.000000000 +0000
@@ -3,6 +3,9 @@ include:
     file: 'flatpak/flatpak_ci_initiative.yml'
 
 variables:
+  APP_ID: 'org.gnome.Adwaita1.Demo'
+  BUNDLE: 'org.gnome.Adwaita1.Demo.flatpak'
+  RUNTIME_REPO: 'https://nightly.gnome.org/gnome-nightly.flatpakrepo'
   MANIFEST_PATH: 'demo/org.gnome.Adwaita1.Demo.json'
   FLATPAK_MODULE: 'libadwaita'
   FLATPAK_BUILD_DIR: build
@@ -39,13 +42,14 @@ doc:
       - _doc
 
 build-flatpak:
-  extends: '.flatpak'
+  extends: '.flatpak@x86_64'
+  stage: build
+  before_script: []
+
+build-flatpak-aarch64:
+  extends: '.flatpak@aarch64'
   stage: build
   before_script: []
-  variables:
-    RUNTIME_REPO: 'https://nightly.gnome.org/gnome-nightly.flatpakrepo'
-    APP_ID: 'org.gnome.Adwaita1.Demo'
-    BUNDLE: 'org.gnome.Adwaita1.Demo.flatpak'
 
 abi-check:
   image: $ABI_CHECKER_IMAGE
@@ -66,5 +70,8 @@ refresh-doc:
 
 nightly:
   extends: '.publish_nightly'
-  dependencies: ['build-flatpak']
   needs: ['build-flatpak']
+
+nightly-aarch64:
+  extends: '.publish_nightly'
+  needs: ['build-flatpak-aarch64']
diff -pruN 1.2~alpha-1/meson.build 1.2~beta-1/meson.build
--- 1.2~alpha-1/meson.build	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/meson.build	2022-08-05 21:51:59.000000000 +0000
@@ -1,5 +1,5 @@
 project('libadwaita', 'c',
-          version: '1.2.alpha',
+          version: '1.2.beta',
           license: 'LGPL-2.1-or-later',
     meson_version: '>= 0.59.0',
   default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ],
diff -pruN 1.2~alpha-1/NEWS 1.2~beta-1/NEWS
--- 1.2~alpha-1/NEWS	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/NEWS	2022-08-05 21:51:59.000000000 +0000
@@ -1,3 +1,73 @@
+================
+Version 1.2.beta
+================
+
+- Fix deprecations with newer GLib
+- Fix strict aliasing warnings
+- Fix GLSL shader compile errors on certain systems
+- AdwAboutWindow
+  - Fix a random crash when closing
+  - Rework the flat header bar layout
+  - Properly mark as final class
+- AdwAvatar
+  - Fix draw_to_texture() with rectangular avatars
+- AdwEntryRow
+  - Add entry-activated signal
+  - Add attributes property
+  - Add activates-default property
+  - Don't select text when clicking the row
+- AdwMessageDialog
+  - Fix crash when destroying the parent before the dialog
+- AdwShadowHelper
+  - Fix warnings when drawing vertical shadow
+- AdwSplitButton
+  - Add dropdown-tooltip property
+- AdwSwipeTracker
+  - Fix swipe speed on GTK 4.7.x
+  - Fix criticals with GTK 4.7.x
+- AdwTabBar
+  - Remove tab background when there's only one tab
+  - Add a tooltip for close buttons
+  - Fix squished or clipped text with gtk-hint-font-metrics=0
+  - Fix scrolling to a tab with disabled animations
+  - Fix assorted tab reordering issues
+- AdwTabView
+  - Add shortcut management API
+  - Add AdwTabPage:indicator-tooltip property
+  - Handle shortcuts on CAPTURE phase
+  - Shortcut propagation and bell fixes
+- AdwToast
+  - Add button-clicked signal
+- AdwViewStack
+  - Add adw_view_stack_add_titled_with_icon()
+- Demo
+  - Prefer properties over <child> in UI files
+  - Don't explicilty add GtkViewport to GtkScrolledWindow
+  - Stop using .inline-toolbar
+  - Fix build on Windows
+- Stylesheet
+  - Unify @view_fg_color with other foreground colors
+  - Improve contrast of @success_color and @warning_color
+  - Fix infobar margins and spacing
+  - Partially support .navigation-sidebar with GtkTreeView
+  - Move GtkScale focus onto its slider
+  - Ensure consistant GtkScale size when using marks
+  - Remove unnecessary transitions
+- Translation updates
+  - Abkhazian
+  - Basque
+  - Catalan
+  - Galician
+  - Georgian
+  - Hebrew
+  - Indonesian
+  - Lithuanian
+  - Occitan
+  - Portuguese
+  - Russian
+  - Turkish
+  - Ukrainian
+
 =================
 Version 1.2.alpha
 =================
diff -pruN 1.2~alpha-1/po/ab.po 1.2~beta-1/po/ab.po
--- 1.2~alpha-1/po/ab.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/ab.po	2022-08-05 21:51:59.000000000 +0000
@@ -1,20 +1,248 @@
-# Abkhazian translation for libadwaita.
-# Copyright (C) 2022 libadwaita's COPYRIGHT HOLDER
-# This file is distributed under the same license as the libadwaita package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
 msgid ""
 msgstr ""
-"Project-Id-Version: libadwaita main\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-01-30 22:34+0000\n"
-"PO-Revision-Date: 2022-01-30 22:34+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2022-07-09 18:02+0000\n"
+"Last-Translator: Нанба Наала <naala-nanba@rambler.ru>\n"
 "Language-Team: Abkhazian <ab@li.org>\n"
 "Language: ab\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/adw-about-window.c:205
+msgid "GNU General Public License, version 2 or later"
+msgstr ""
+
+#: src/adw-about-window.c:206
+msgid "GNU General Public License, version 3 or later"
+msgstr ""
+
+#: src/adw-about-window.c:207
+msgid "GNU Lesser General Public License, version 2.1 or later"
+msgstr ""
+
+#: src/adw-about-window.c:208
+msgid "GNU Lesser General Public License, version 3 or later"
+msgstr ""
+
+#: src/adw-about-window.c:209
+msgid "BSD 2-Clause License"
+msgstr "BSD 2-Clause License"
+
+#: src/adw-about-window.c:210
+msgid "The MIT License (MIT)"
+msgstr "The MIT License (MIT)"
+
+#: src/adw-about-window.c:211
+msgid "Artistic License 2.0"
+msgstr "Artistic License 2.0"
+
+#: src/adw-about-window.c:212
+msgid "GNU General Public License, version 2 only"
+msgstr ""
+
+#: src/adw-about-window.c:213
+msgid "GNU General Public License, version 3 only"
+msgstr ""
+
+#: src/adw-about-window.c:214
+msgid "GNU Lesser General Public License, version 2.1 only"
+msgstr ""
+
+#: src/adw-about-window.c:215
+msgid "GNU Lesser General Public License, version 3 only"
+msgstr ""
+
+#: src/adw-about-window.c:216
+msgid "GNU Affero General Public License, version 3 or later"
+msgstr ""
+
+#: src/adw-about-window.c:217
+msgid "GNU Affero General Public License, version 3 only"
+msgstr ""
+
+#: src/adw-about-window.c:218
+msgid "BSD 3-Clause License"
+msgstr "BSD 3-Clause License"
+
+#: src/adw-about-window.c:219
+msgid "Apache License, Version 2.0"
+msgstr ""
+
+#: src/adw-about-window.c:220
+msgid "Mozilla Public License 2.0"
+msgstr "Mozilla Public License 2.0"
+
+#: src/adw-about-window.c:527
+msgid "Code by"
+msgstr ""
+
+#: src/adw-about-window.c:528
+msgid "Design by"
+msgstr ""
+
+#: src/adw-about-window.c:529
+msgid "Artwork by"
+msgstr ""
+
+#: src/adw-about-window.c:530
+msgid "Documentation by"
+msgstr ""
+
+#: src/adw-about-window.c:531
+msgid "Translated by"
+msgstr ""
+
+#. Translators: this is the license preamble; the string at the end
+#. * contains the name of the license as link text.
+#.
+#: src/adw-about-window.c:558
+#, c-format
+msgid ""
+"This application comes with absolutely no warranty. See the <a "
+"href=\"%s\">%s</a> for details."
+msgstr ""
+
+#: src/adw-about-window.c:636
+msgid "This Application"
+msgstr ""
+
+#: src/adw-about-window.c:933
+#, c-format
+msgid "Version %s"
+msgstr ""
+
+#: src/adw-about-window.c:959
+msgid "Unable to parse release notes:"
+msgstr ""
+
+#: src/adw-about-window.c:965
+#, c-format
+msgid "Line: %d, character: %d"
+msgstr ""
+
+#: src/adw-about-window.c:1235
+msgid "Copied to clipboard"
+msgstr ""
+
+#: src/adw-about-window.c:1270
+msgid "Unable to save debugging information"
+msgstr ""
+
+#: src/adw-about-window.c:1275
+msgid "Close"
+msgstr ""
+
+#: src/adw-about-window.c:1293
+msgid "Save debugging information"
+msgstr ""
+
+#: src/adw-about-window.c:1296
+msgid "_Save"
+msgstr ""
+
+#: src/adw-about-window.c:1297
+msgid "_Cancel"
+msgstr ""
+
+#: src/adw-about-window.ui:5
+msgid "About"
+msgstr ""
+
+#: src/adw-about-window.ui:121
+msgid "_What’s New"
+msgstr ""
+
+#: src/adw-about-window.ui:140
+msgid "_Details"
+msgstr ""
+
+#: src/adw-about-window.ui:162 src/adw-about-window.ui:487
+msgid "_Website"
+msgstr ""
+
+#: src/adw-about-window.ui:193
+msgid "_Support Questions"
+msgstr ""
+
+#: src/adw-about-window.ui:215
+msgid "_Report an Issue"
+msgstr ""
+
+#: src/adw-about-window.ui:236
+msgid "_Troubleshooting"
+msgstr ""
+
+#: src/adw-about-window.ui:267
+msgid "_Credits"
+msgstr ""
+
+#: src/adw-about-window.ui:284
+msgid "_Legal"
+msgstr ""
+
+#: src/adw-about-window.ui:301
+msgid "_Acknowledgements"
+msgstr ""
+
+#: src/adw-about-window.ui:381
+msgid "What’s New"
+msgstr ""
+
+#: src/adw-about-window.ui:386 src/adw-about-window.ui:442
+#: src/adw-about-window.ui:531 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653 src/adw-about-window.ui:700
+#: src/adw-about-window.ui:747
+msgid "Back"
+msgstr ""
+
+#: src/adw-about-window.ui:437
+msgid "Details"
+msgstr ""
+
+#: src/adw-about-window.ui:526
+msgid "Troubleshooting"
+msgstr ""
+
+#: src/adw-about-window.ui:555
+msgid ""
+"To assist in troubleshooting, you can view your debugging information. "
+"Providing this information to the application developers can help diagnose "
+"any problems you encounter when you report an issue."
+msgstr ""
+
+#: src/adw-about-window.ui:566
+msgid "_Debugging Information"
+msgstr ""
+
+#: src/adw-about-window.ui:601
+msgid "Credits"
+msgstr " Аҭабурақәа"
+
+#: src/adw-about-window.ui:648
+msgid "Legal"
+msgstr ""
+
+#: src/adw-about-window.ui:695
+msgid "Acknowledgements"
+msgstr ""
+
+#: src/adw-about-window.ui:742
+msgid "Debugging Information"
+msgstr ""
+
+#: src/adw-about-window.ui:790
+msgid "_Copy Text"
+msgstr ""
+
+#: src/adw-about-window.ui:797
+msgid "_Save as…"
+msgstr ""
+
+#: src/adw-entry-row.ui:93
+msgid "Apply"
+msgstr ""
 
 #: src/adw-inspector-page.c:76
 msgid "No Preference"
@@ -41,8 +269,9 @@ msgstr "Асистема адәахьт
 msgid ""
 "Override settings for this application. They will be reset upon closing the "
 "inspector."
-msgstr "Еиҭашьақәшәыргыл архиарақәа ари аԥшьы азы.Урҭ алырыҩроит агәаҭара"
-"анаркхалак ашьҭахь"
+msgstr ""
+"Еиҭашьақәшәыргыл архиарақәа ари аԥшьы азы.Урҭ алырыҩроит агәаҭараанаркхалак "
+"ашьҭахь"
 
 #: src/adw-inspector-page.ui:14
 msgid "System Supports Color Schemes"
@@ -56,7 +285,23 @@ msgstr "Еиӷьу аԥшшәытә сх
 msgid "High Contrast"
 msgstr "Иҳараку аконтрастра "
 
-#: src/adw-preferences-window.c:226
+#: src/adw-password-entry-row.c:71
+msgid "Hide Text"
+msgstr ""
+
+#: src/adw-password-entry-row.c:75
+msgid "Show Text"
+msgstr ""
+
+#: src/adw-password-entry-row.c:169
+msgid "Caps Lock is on"
+msgstr ""
+
+#: src/adw-password-entry-row.c:177
+msgid "_Show Text"
+msgstr ""
+
+#: src/adw-preferences-window.c:242
 msgid "Untitled page"
 msgstr "Ихьӡыдоу адаҟьа"
 
diff -pruN 1.2~alpha-1/po/ca.po 1.2~beta-1/po/ca.po
--- 1.2~alpha-1/po/ca.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/ca.po	2022-08-05 21:51:59.000000000 +0000
@@ -1,7 +1,6 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 # Translators:
 # Assumpta, 2020
@@ -12,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libadwaita\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-06-01 11:18+0000\n"
+"POT-Creation-Date: 2022-07-09 18:02+0000\n"
 "PO-Revision-Date: 2022-06-01 08:57+0100\n"
 "Last-Translator: Jordi Mas i Hernàndez <jmas@softcatala.org>\n"
 "Language-Team: Catalan (https://www.transifex.com/softcatala/teams/62837/ca/)\n"
@@ -23,6 +22,237 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 2.4.1\n"
 
+#: src/adw-about-window.c:205
+msgid "GNU General Public License, version 2 or later"
+msgstr "Llicència pública general de GNU, versió 2 o posterior"
+
+#: src/adw-about-window.c:206
+msgid "GNU General Public License, version 3 or later"
+msgstr "Llicència pública general de GNU, versió 3 o posterior"
+
+#: src/adw-about-window.c:207
+msgid "GNU Lesser General Public License, version 2.1 or later"
+msgstr "Llicència pública general reduïda de GNU, versió 2.1 o posterior"
+
+#: src/adw-about-window.c:208
+msgid "GNU Lesser General Public License, version 3 or later"
+msgstr "Llicència pública general reduïda de GNU, versió 3 o posterior"
+
+#: src/adw-about-window.c:209
+msgid "BSD 2-Clause License"
+msgstr "Llicència BSD de 2 clàusules"
+
+#: src/adw-about-window.c:210
+msgid "The MIT License (MIT)"
+msgstr "Llicència MIT (MIT)"
+
+#: src/adw-about-window.c:211
+msgid "Artistic License 2.0"
+msgstr "Llicència artística 2.0"
+
+#: src/adw-about-window.c:212
+msgid "GNU General Public License, version 2 only"
+msgstr "Llicència Pública General GNU, només versió 2"
+
+#: src/adw-about-window.c:213
+msgid "GNU General Public License, version 3 only"
+msgstr "Llicència Pública General GNU, només versió 3"
+
+#: src/adw-about-window.c:214
+msgid "GNU Lesser General Public License, version 2.1 only"
+msgstr "Llicència pública general reduïda de GNU, només versió 2.1"
+
+#: src/adw-about-window.c:215
+msgid "GNU Lesser General Public License, version 3 only"
+msgstr "Llicència pública general reduïda de GNU, només la versió 3"
+
+#: src/adw-about-window.c:216
+msgid "GNU Affero General Public License, version 3 or later"
+msgstr "Llicència pública general GNU Affero, versió 3 o posterior"
+
+#: src/adw-about-window.c:217
+msgid "GNU Affero General Public License, version 3 only"
+msgstr "Llicència Pública General GNU Affero, només versió 3"
+
+#: src/adw-about-window.c:218
+msgid "BSD 3-Clause License"
+msgstr "Llicència BSD de 3 clàusules"
+
+#: src/adw-about-window.c:219
+msgid "Apache License, Version 2.0"
+msgstr "Llicència Apache, versió 2.0"
+
+#: src/adw-about-window.c:220
+msgid "Mozilla Public License 2.0"
+msgstr "Llicència pública de Mozilla 2.0"
+
+#: src/adw-about-window.c:527
+msgid "Code by"
+msgstr "Codi per"
+
+#: src/adw-about-window.c:528
+msgid "Design by"
+msgstr "Dissenyat per"
+
+#: src/adw-about-window.c:529
+msgid "Artwork by"
+msgstr "Treball artístic per"
+
+#: src/adw-about-window.c:530
+msgid "Documentation by"
+msgstr "Documentació per"
+
+#: src/adw-about-window.c:531
+msgid "Translated by"
+msgstr "Traduït per"
+
+#. Translators: this is the license preamble; the string at the end
+#. * contains the name of the license as link text.
+#: src/adw-about-window.c:558
+#, c-format
+msgid ""
+"This application comes with absolutely no warranty. See the <a "
+"href=\"%s\">%s</a> for details."
+msgstr ""
+"Aquesta aplicació no té absolutament cap garantia. Vegeu el <a "
+"href=\"%s\">%s</a> per a més detalls."
+
+#: src/adw-about-window.c:636
+msgid "This Application"
+msgstr "Aquesta aplicació"
+
+#: src/adw-about-window.c:933
+#, c-format
+msgid "Version %s"
+msgstr "Versió %s"
+
+#: src/adw-about-window.c:959
+msgid "Unable to parse release notes:"
+msgstr "No s'han pogut analitzar les notes de publicació:"
+
+#: src/adw-about-window.c:965
+#, c-format
+msgid "Line: %d, character: %d"
+msgstr "Línia: %d, caràcter: %d"
+
+#: src/adw-about-window.c:1235
+msgid "Copied to clipboard"
+msgstr "Copiat al porta-retalls"
+
+#: src/adw-about-window.c:1270
+msgid "Unable to save debugging information"
+msgstr "No s'ha pogut desar la informació de depuració"
+
+#: src/adw-about-window.c:1275
+msgid "Close"
+msgstr "Tanca"
+
+#: src/adw-about-window.c:1293
+msgid "Save debugging information"
+msgstr "Desa la informació de depuració"
+
+#: src/adw-about-window.c:1296
+msgid "_Save"
+msgstr "_Desa"
+
+#: src/adw-about-window.c:1297
+msgid "_Cancel"
+msgstr "_Cancel·la"
+
+#: src/adw-about-window.ui:5
+msgid "About"
+msgstr "Quant a"
+
+#: src/adw-about-window.ui:121
+msgid "_What’s New"
+msgstr "_Novetats"
+
+#: src/adw-about-window.ui:140
+msgid "_Details"
+msgstr "_Detalls"
+
+#: src/adw-about-window.ui:162 src/adw-about-window.ui:487
+msgid "_Website"
+msgstr "_Lloc web"
+
+#: src/adw-about-window.ui:193
+msgid "_Support Questions"
+msgstr "_Preguntes de suport"
+
+#: src/adw-about-window.ui:215
+msgid "_Report an Issue"
+msgstr "_Informa d'un problema"
+
+#: src/adw-about-window.ui:236
+msgid "_Troubleshooting"
+msgstr "_Solució de problemes"
+
+#: src/adw-about-window.ui:267
+msgid "_Credits"
+msgstr "_Crèdits"
+
+#: src/adw-about-window.ui:284
+msgid "_Legal"
+msgstr "_Legal"
+
+#: src/adw-about-window.ui:301
+msgid "_Acknowledgements"
+msgstr "_Reconeixements"
+
+#: src/adw-about-window.ui:381
+msgid "What’s New"
+msgstr "Novetats"
+
+#: src/adw-about-window.ui:386 src/adw-about-window.ui:442
+#: src/adw-about-window.ui:531 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653 src/adw-about-window.ui:700
+#: src/adw-about-window.ui:747
+msgid "Back"
+msgstr "Enrere"
+
+#: src/adw-about-window.ui:437
+msgid "Details"
+msgstr "Detalls"
+
+#: src/adw-about-window.ui:526
+msgid "Troubleshooting"
+msgstr "Solució de problemes"
+
+#: src/adw-about-window.ui:555
+msgid ""
+"To assist in troubleshooting, you can view your debugging information. "
+"Providing this information to the application developers can help diagnose "
+"any problems you encounter when you report an issue."
+msgstr ""
+"Per a ajudar en la resolució de problemes, podeu veure la informació de "
+"depuració. Proporcionar aquesta informació als desenvolupadors de "
+"l'aplicació pot ajudar a diagnosticar qualsevol problema que trobeu quan "
+"informeu d'un problema."
+
+#: src/adw-about-window.ui:566
+msgid "_Debugging Information"
+msgstr "_Informació de depuració"
+
+#: src/adw-about-window.ui:601
+msgid "Credits"
+msgstr "Crèdits"
+
+#: src/adw-about-window.ui:648
+msgid "Legal"
+msgstr "Legal"
+
+#: src/adw-about-window.ui:695
+msgid "Acknowledgements"
+msgstr "Reconeixements"
+
+#: src/adw-about-window.ui:790
+msgid "_Copy Text"
+msgstr "_Copia el text"
+
+#: src/adw-about-window.ui:797
+msgid "_Save as…"
+msgstr "_Anomena i desa…"
+
 #: src/adw-entry-row.ui:93
 msgid "Apply"
 msgstr "Aplica"
@@ -76,11 +306,11 @@ msgstr "Oculta el text"
 msgid "Show Text"
 msgstr "Mostra el text"
 
-#: src/adw-password-entry-row.c:168
+#: src/adw-password-entry-row.c:169
 msgid "Caps Lock is on"
 msgstr "Bloq Maj està activat"
 
-#: src/adw-password-entry-row.c:176
+#: src/adw-password-entry-row.c:177
 msgid "_Show Text"
 msgstr "_Mostra el text"
 
diff -pruN 1.2~alpha-1/po/eu.po 1.2~beta-1/po/eu.po
--- 1.2~alpha-1/po/eu.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/eu.po	2022-08-05 21:51:59.000000000 +0000
@@ -6,8 +6,8 @@
 msgid ""
 msgstr "Project-Id-Version: libhandy master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-05-04 16:49+0000\n"
-"PO-Revision-Date: 2022-06-22 10:00+0100\n"
+"POT-Creation-Date: 2022-07-09 18:02+0000\n"
+"PO-Revision-Date: 2022-07-16 10:00+0100\n"
 "Last-Translator: Asier Sarasua Garmendia <asier.sarasua@ni.eus>\n"
 "Language-Team: Basque <librezale@librezale.eus>\n"
 "Language: eu\n"
@@ -15,6 +15,236 @@ msgstr "Project-Id-Version: libhandy mas
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: src/adw-about-window.c:205
+msgid "GNU General Public License, version 2 or later"
+msgstr "GNUren Lizentzia Publiko Orokorra, 2 bertsioa edo berriagoa"
+
+#: src/adw-about-window.c:206
+msgid "GNU General Public License, version 3 or later"
+msgstr "GNUren Lizentzia Publiko Orokorra, 3 bertsioa edo berriagoa"
+
+#: src/adw-about-window.c:207
+msgid "GNU Lesser General Public License, version 2.1 or later"
+msgstr "GNU Hedadura Txikiagoko Lizentzia Publiko Orokorra, 2.1. bertsioa edo berriagoa"
+
+#: src/adw-about-window.c:208
+msgid "GNU Lesser General Public License, version 3 or later"
+msgstr "GNU Hedadura Txikiagoko Lizentzia Publiko Orokorra, 3. bertsioa edo berriagoa"
+
+#: src/adw-about-window.c:209
+msgid "BSD 2-Clause License"
+msgstr "BSD 2-klausula Lizentzia"
+
+#: src/adw-about-window.c:210
+msgid "The MIT License (MIT)"
+msgstr "MIT Lizentzia (MIT)"
+
+#: src/adw-about-window.c:211
+msgid "Artistic License 2.0"
+msgstr "Lizentzia Artistikoa 2.0"
+
+#: src/adw-about-window.c:212
+msgid "GNU General Public License, version 2 only"
+msgstr "GNUren Lizentzia Publiko Orokorra, 2. bertsioa soilik"
+
+#: src/adw-about-window.c:213
+msgid "GNU General Public License, version 3 only"
+msgstr "GNUren Lizentzia Publiko Orokorra, 3. bertsioa soilik"
+
+#: src/adw-about-window.c:214
+msgid "GNU Lesser General Public License, version 2.1 only"
+msgstr "GNU Hedadura Txikiagoko Lizentzia Publiko Orokorra, 2.1. bertsioa soilik"
+
+#: src/adw-about-window.c:215
+msgid "GNU Lesser General Public License, version 3 only"
+msgstr "GNU Hedadura Txikiagoko Lizentzia Publiko Orokorra, 3. bertsioa soilik"
+
+#: src/adw-about-window.c:216
+msgid "GNU Affero General Public License, version 3 or later"
+msgstr "GNUren Affero Lizentzia Publiko Orokorra, 3 bertsioa edo berriagoa"
+
+#: src/adw-about-window.c:217
+msgid "GNU Affero General Public License, version 3 only"
+msgstr "GNUren Affero Lizentzia Publiko Orokorra, 3. bertsioa soilik"
+
+#: src/adw-about-window.c:218
+msgid "BSD 3-Clause License"
+msgstr "BSD 3-klausula Lizentzia"
+
+#: src/adw-about-window.c:219
+msgid "Apache License, Version 2.0"
+msgstr "Apache lizentzia, 2.0 bertsioa"
+
+#: src/adw-about-window.c:220
+msgid "Mozilla Public License 2.0"
+msgstr "Mozillaren lizentzia publikoa 2.0"
+
+#: src/adw-about-window.c:527
+msgid "Code by"
+msgstr "Kodea:"
+
+#: src/adw-about-window.c:528
+msgid "Design by"
+msgstr "Diseinua:"
+
+#: src/adw-about-window.c:529
+msgid "Artwork by"
+msgstr "Artelana:"
+
+#: src/adw-about-window.c:530
+msgid "Documentation by"
+msgstr "Dokumentazioa:"
+
+#: src/adw-about-window.c:531
+msgid "Translated by"
+msgstr "Itzulpena:"
+
+#. Translators: this is the license preamble; the string at the end
+#. * contains the name of the license as link text.
+#.
+#: src/adw-about-window.c:558
+#, c-format
+msgid ""
+"This application comes with absolutely no warranty. See the <a href=\"%s\">"
+"%s</a> for details."
+msgstr "Aplikazio honek ez du inolako bermerik. Xehetasun gehiagorako, ikusi <a href=\"%s\">%s</a>."
+
+#: src/adw-about-window.c:636
+msgid "This Application"
+msgstr "Aplikazio hau"
+
+#: src/adw-about-window.c:933
+#, c-format
+msgid "Version %s"
+msgstr "%s bertsioa"
+
+#: src/adw-about-window.c:959
+msgid "Unable to parse release notes:"
+msgstr "Ezin dira argitalpen-oharrak analizatu:"
+
+#: src/adw-about-window.c:965
+#, c-format
+msgid "Line: %d, character: %d"
+msgstr "Lerroa: %d, karakterea: %d"
+
+#: src/adw-about-window.c:1235
+msgid "Copied to clipboard"
+msgstr "Arbelean kopiatu da"
+
+#: src/adw-about-window.c:1270
+msgid "Unable to save debugging information"
+msgstr "Ezin da arazketa-informazioa gorde"
+
+#: src/adw-about-window.c:1275
+msgid "Close"
+msgstr "Itxi"
+
+#: src/adw-about-window.c:1293
+msgid "Save debugging information"
+msgstr "Gorde arazketa-informazioa"
+
+#: src/adw-about-window.c:1296
+msgid "_Save"
+msgstr "_Gorde"
+
+#: src/adw-about-window.c:1297
+msgid "_Cancel"
+msgstr "_Utzi"
+
+#: src/adw-about-window.ui:5
+msgid "About"
+msgstr "Honi buruz"
+
+#: src/adw-about-window.ui:121
+msgid "_What’s New"
+msgstr "_Zer berri"
+
+#: src/adw-about-window.ui:140
+msgid "_Details"
+msgstr "_Xehetasunak"
+
+#: src/adw-about-window.ui:162 src/adw-about-window.ui:487
+msgid "_Website"
+msgstr "_Webgunea"
+
+#: src/adw-about-window.ui:193
+msgid "_Support Questions"
+msgstr "_Laguntza-galderak"
+
+#: src/adw-about-window.ui:215
+msgid "_Report an Issue"
+msgstr "_Jakinarazi akatsa"
+
+#: src/adw-about-window.ui:236
+msgid "_Troubleshooting"
+msgstr "_Arazoen ebazpena"
+
+#: src/adw-about-window.ui:267
+msgid "_Credits"
+msgstr "_Kredituak"
+
+#: src/adw-about-window.ui:284
+msgid "_Legal"
+msgstr "_Legea"
+
+#: src/adw-about-window.ui:301
+msgid "_Acknowledgements"
+msgstr "A_itortzak"
+
+#: src/adw-about-window.ui:381
+msgid "What’s New"
+msgstr "Zer berri"
+
+#: src/adw-about-window.ui:386 src/adw-about-window.ui:442
+#: src/adw-about-window.ui:531 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653 src/adw-about-window.ui:700
+#: src/adw-about-window.ui:747
+msgid "Back"
+msgstr "Atzera"
+
+#: src/adw-about-window.ui:437
+msgid "Details"
+msgstr "Xehetasunak"
+
+#: src/adw-about-window.ui:526
+msgid "Troubleshooting"
+msgstr "Arazoen ebazpena"
+
+#: src/adw-about-window.ui:555
+msgid ""
+"To assist in troubleshooting, you can view your debugging information. "
+"Providing this information to the application developers can help diagnose "
+"any problems you encounter when you report an issue."
+msgstr "Arazoak ebazten laguntzeko, arazketa-informazioa begiratu dezakezu. Informazio hori aplikazioaren garatzaileei ematen badiezu, aurkitutako edozein arazoren diagnostikoa egiten lagundu dezakezu."
+
+#: src/adw-about-window.ui:566
+msgid "_Debugging Information"
+msgstr "_Arazketa-informazioa"
+
+#: src/adw-about-window.ui:601
+msgid "Credits"
+msgstr "Kredituak"
+
+#: src/adw-about-window.ui:648
+msgid "Legal"
+msgstr "Legea"
+
+#: src/adw-about-window.ui:695
+msgid "Acknowledgements"
+msgstr "Aitortzak"
+
+#: src/adw-about-window.ui:742
+msgid "Debugging Information"
+msgstr "Arazketa-informazioa"
+
+#: src/adw-about-window.ui:790
+msgid "_Copy Text"
+msgstr "_Kopiatu testua"
+
+#: src/adw-about-window.ui:797
+msgid "_Save as…"
+msgstr "Gorde _honela…"
+
 #: src/adw-entry-row.ui:93
 msgid "Apply"
 msgstr "Aplikatu"
@@ -66,11 +296,11 @@ msgstr "Ezkutatu testua"
 msgid "Show Text"
 msgstr "Erakutsi testua"
 
-#: src/adw-password-entry-row.c:168
+#: src/adw-password-entry-row.c:169
 msgid "Caps Lock is on"
 msgstr "Maiuskulen blokeoaren tekla aktibatuta dago"
 
-#: src/adw-password-entry-row.c:176
+#: src/adw-password-entry-row.c:177
 msgid "_Show Text"
 msgstr "_Erakutsi testua"
 
@@ -177,9 +407,6 @@ msgstr "Saiatu bestelako bilaketa bateki
 #~ msgid "Whether the expansion is enabled"
 #~ msgstr "Hedatzea gaituta dagoen ala ez"
 
-#~ msgid "Application menu"
-#~ msgstr "Aplikazioaren menua"
-
 #~ msgid "Minimize"
 #~ msgstr "Minimizatu"
 
@@ -189,12 +416,6 @@ msgstr "Saiatu bestelako bilaketa bateki
 #~ msgid "Maximize"
 #~ msgstr "Maximizatu"
 
-#~ msgid "Close"
-#~ msgstr "Itxi"
-
-#~ msgid "Back"
-#~ msgstr "Atzera"
-
 #~ msgid "Pack type"
 #~ msgstr "Pakete mota"
 
diff -pruN 1.2~alpha-1/po/gl.po 1.2~beta-1/po/gl.po
--- 1.2~alpha-1/po/gl.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/gl.po	2022-08-05 21:51:59.000000000 +0000
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libadwaita main\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-05-04 16:49+0000\n"
-"PO-Revision-Date: 2022-05-16 09:09+0200\n"
+"POT-Creation-Date: 2022-07-31 04:40+0000\n"
+"PO-Revision-Date: 2022-08-01 08:40+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
 "Language-Team: Galician <Proxecto Trasno <proxecto@trasno.gal>>\n"
 "Language: gl\n"
@@ -24,6 +24,243 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "X-Generator: Gtranslator 40.0\n"
 
+#: src/adw-about-window.c:203
+msgid "GNU General Public License, version 2 or later"
+msgstr "Licenza Pública Xeral de GNU, versión 2 ou posterior"
+
+#: src/adw-about-window.c:204
+msgid "GNU General Public License, version 3 or later"
+msgstr "Licenza Pública Xeral de GNU, versión 3 ou posterior"
+
+#: src/adw-about-window.c:205
+msgid "GNU Lesser General Public License, version 2.1 or later"
+msgstr "Licenza Pública Xeral Menor de GNU, versión 2.1 ou posterior"
+
+#: src/adw-about-window.c:206
+msgid "GNU Lesser General Public License, version 3 or later"
+msgstr "Licenza Pública Xeral Menor de GNU, versión 3 ou posterior"
+
+#: src/adw-about-window.c:207
+msgid "BSD 2-Clause License"
+msgstr "Licenza BSD cláusula 2"
+
+#: src/adw-about-window.c:208
+msgid "The MIT License (MIT)"
+msgstr "Licenza MIT"
+
+#: src/adw-about-window.c:209
+msgid "Artistic License 2.0"
+msgstr "Licenza artística 2.0"
+
+#: src/adw-about-window.c:210
+msgid "GNU General Public License, version 2 only"
+msgstr "Licenza Pública Xeral de GNU, versión 2 só"
+
+#: src/adw-about-window.c:211
+msgid "GNU General Public License, version 3 only"
+msgstr "Licenza Pública Xeral de GNU, versión 3 só"
+
+#: src/adw-about-window.c:212
+msgid "GNU Lesser General Public License, version 2.1 only"
+msgstr "Licenza Pública Xeral Menor de GNU, versión 2.1 só"
+
+#: src/adw-about-window.c:213
+msgid "GNU Lesser General Public License, version 3 only"
+msgstr "Licenza Pública Xeral Menor de GNU, versión 3 só"
+
+#: src/adw-about-window.c:214
+msgid "GNU Affero General Public License, version 3 or later"
+msgstr "Licenza Pública Xeral de GNU Affero, versión 3 ou posterior"
+
+#: src/adw-about-window.c:215
+msgid "GNU Affero General Public License, version 3 only"
+msgstr "Licenza Pública Xeral Affero de GNU, só versión 3"
+
+#: src/adw-about-window.c:216
+msgid "BSD 3-Clause License"
+msgstr "Licenza BSD cláusula 3"
+
+#: src/adw-about-window.c:217
+msgid "Apache License, Version 2.0"
+msgstr "Licencia Apache, versión 2.0"
+
+#: src/adw-about-window.c:218
+msgid "Mozilla Public License 2.0"
+msgstr "Licenza Pública de Mozilla 2.0"
+
+#: src/adw-about-window.c:526
+msgid "Code by"
+msgstr "Programado por"
+
+#: src/adw-about-window.c:527
+msgid "Design by"
+msgstr "Deseñado por"
+
+#: src/adw-about-window.c:528
+msgid "Artwork by"
+msgstr "Deseñado por"
+
+#: src/adw-about-window.c:529
+msgid "Documentation by"
+msgstr "Documentado por"
+
+#: src/adw-about-window.c:530
+msgid "Translated by"
+msgstr "Traducido por"
+
+#. Translators: this is the license preamble; the string at the end
+#. * contains the name of the license as link text.
+#.
+#: src/adw-about-window.c:559
+#, c-format
+msgid ""
+"This application comes with absolutely no warranty. See the <a "
+"href=\"%s\">%s</a> for details."
+msgstr ""
+"Este programa non fornece ningunha garantía, para máis información visite <a "
+"href=\"%s\">%s</a>."
+
+#: src/adw-about-window.c:637
+msgid "This Application"
+msgstr "Esta aplicación"
+
+#: src/adw-about-window.c:939
+#, c-format
+msgid "Version %s"
+msgstr "Versión %s"
+
+#: src/adw-about-window.c:965
+msgid "Unable to parse release notes:"
+msgstr "Non foi posíbel analizar as notas de publicación:"
+
+#: src/adw-about-window.c:971
+#, c-format
+msgid "Line: %d, character: %d"
+msgstr "Liña: %d, caracter: %d"
+
+#: src/adw-about-window.c:1264
+msgid "Copied to clipboard"
+msgstr "Copiado ao portapapeis"
+
+#: src/adw-about-window.c:1299
+msgid "Unable to save debugging information"
+msgstr "Non é posíbel gardar o ficheiro de depuración"
+
+#: src/adw-about-window.c:1304
+msgid "Close"
+msgstr "Pechar"
+
+#: src/adw-about-window.c:1322
+msgid "Save debugging information"
+msgstr "Gardar información de depuración"
+
+#: src/adw-about-window.c:1325
+msgid "_Save"
+msgstr "_Gardar"
+
+#: src/adw-about-window.c:1326
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+#: src/adw-about-window.ui:5
+msgid "About"
+msgstr "Sobre"
+
+#: src/adw-about-window.ui:123
+msgid "_What’s New"
+msgstr "Que hai de _novo?"
+
+#: src/adw-about-window.ui:138
+msgid "_Details"
+msgstr "_Detalles"
+
+#: src/adw-about-window.ui:153 src/adw-about-window.ui:395
+msgid "_Website"
+msgstr "_Sitio web"
+
+#: src/adw-about-window.ui:176
+msgid "_Support Questions"
+msgstr "Preguntas de _asistencia"
+
+#: src/adw-about-window.ui:192
+msgid "_Report an Issue"
+msgstr "_Informar dun erro"
+
+#: src/adw-about-window.ui:207
+msgid "_Troubleshooting"
+msgstr "Resolución de _problemas"
+
+#: src/adw-about-window.ui:226
+msgid "_Credits"
+msgstr "_Créditos"
+
+#: src/adw-about-window.ui:241
+msgid "_Legal"
+msgstr "Aviso _Legal"
+
+#: src/adw-about-window.ui:256
+msgid "_Acknowledgements"
+msgstr "_Recoñecementos"
+
+#: src/adw-about-window.ui:295
+msgid "What’s New"
+msgstr "Que hai de novo"
+
+#: src/adw-about-window.ui:300 src/adw-about-window.ui:356
+#: src/adw-about-window.ui:437 src/adw-about-window.ui:512
+#: src/adw-about-window.ui:559 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653
+msgid "Back"
+msgstr "Atrás"
+
+#: src/adw-about-window.ui:351
+msgid "Details"
+msgstr "Detalles"
+
+#: src/adw-about-window.ui:432
+msgid "Troubleshooting"
+msgstr "Resolución de problemas"
+
+#: src/adw-about-window.ui:461
+msgid ""
+"To assist in troubleshooting, you can view your debugging information. "
+"Providing this information to the application developers can help diagnose "
+"any problems you encounter when you report an issue."
+msgstr ""
+"Para axudar na resolución de problemas, pode ver a información de "
+"depuración. Se fornece esta información aos desenvolvedores da aplicación "
+"pode axudarlles a diagnosticar calquera problema que atope cando reporta un "
+"erro."
+
+#: src/adw-about-window.ui:472
+msgid "_Debugging Information"
+msgstr "Información de _depuración"
+
+#: src/adw-about-window.ui:507
+msgid "Credits"
+msgstr "Créditos"
+
+#: src/adw-about-window.ui:554
+msgid "Legal"
+msgstr "Aviso legal"
+
+#: src/adw-about-window.ui:601
+msgid "Acknowledgements"
+msgstr "Recoñecementos"
+
+#: src/adw-about-window.ui:648
+msgid "Debugging Information"
+msgstr "Información de depuración"
+
+#: src/adw-about-window.ui:696
+#| msgid "_Show Text"
+msgid "_Copy Text"
+msgstr "_Copiar texto"
+
+#: src/adw-about-window.ui:703
+msgid "_Save as…"
+msgstr "_Gardar como…"
+
 #: src/adw-entry-row.ui:93
 msgid "Apply"
 msgstr "Aplicar"
@@ -77,11 +314,11 @@ msgstr "Ocultar texto"
 msgid "Show Text"
 msgstr "Mostrar texto"
 
-#: src/adw-password-entry-row.c:168
+#: src/adw-password-entry-row.c:169
 msgid "Caps Lock is on"
 msgstr "Bloq Maiús está activo"
 
-#: src/adw-password-entry-row.c:176
+#: src/adw-password-entry-row.c:177
 msgid "_Show Text"
 msgstr "_Mostrar texto"
 
diff -pruN 1.2~alpha-1/po/he.po 1.2~beta-1/po/he.po
--- 1.2~alpha-1/po/he.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/he.po	2022-08-05 21:51:59.000000000 +0000
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libadwaita main\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-05-04 16:49+0000\n"
-"PO-Revision-Date: 2022-05-30 21:32+0300\n"
+"POT-Creation-Date: 2022-08-03 12:29+0000\n"
+"PO-Revision-Date: 2022-08-05 09:53+0300\n"
 "Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
 "Language-Team: Hebrew <>\n"
 "Language: he\n"
@@ -19,6 +19,238 @@ msgstr ""
 "2 : 3)\n"
 "X-Generator: Gtranslator 40.0\n"
 
+#: src/adw-about-window.c:203
+msgid "GNU General Public License, version 2 or later"
+msgstr "הרישיון הציבורי הכללי של גנו, גרסה 2 או כל גרסה מאוחרת יותר"
+
+#: src/adw-about-window.c:204
+msgid "GNU General Public License, version 3 or later"
+msgstr "הרישיון הציבורי הכללי של גנו, גרסה 3 או כל גרסה מאוחרת יותר"
+
+#: src/adw-about-window.c:205
+msgid "GNU Lesser General Public License, version 2.1 or later"
+msgstr "הרישיון הציבורי הכללי המוקטן של גנו, גרסה 2.1 או כל גרסה מאוחרת יותר"
+
+#: src/adw-about-window.c:206
+msgid "GNU Lesser General Public License, version 3 or later"
+msgstr "הרישיון הציבורי הכללי המוקטן של גנו, גרסה 3 או כל גרסה מאוחרת יותר"
+
+#: src/adw-about-window.c:207
+msgid "BSD 2-Clause License"
+msgstr "רשיון BSD דו־סעיפי"
+
+#: src/adw-about-window.c:208
+msgid "The MIT License (MIT)"
+msgstr "רישיון MIT ‏(MIT)"
+
+#: src/adw-about-window.c:209
+msgid "Artistic License 2.0"
+msgstr "רישיון אמנותי 2.0"
+
+#: src/adw-about-window.c:210
+msgid "GNU General Public License, version 2 only"
+msgstr "הרישיון הציבורי הכללי של גנו, גרסה 2 בלבד"
+
+#: src/adw-about-window.c:211
+msgid "GNU General Public License, version 3 only"
+msgstr "הרישיון הציבורי הכללי של גנו, גרסה 3 בלבד"
+
+#: src/adw-about-window.c:212
+msgid "GNU Lesser General Public License, version 2.1 only"
+msgstr "הרישיון הציבורי הכללי המוקטן של גנו, גרסה 2.1 בלבד"
+
+#: src/adw-about-window.c:213
+msgid "GNU Lesser General Public License, version 3 only"
+msgstr "הרישיון הציבורי הכללי המוקטן של גנו, גרסה 3 בלבד"
+
+#: src/adw-about-window.c:214
+msgid "GNU Affero General Public License, version 3 or later"
+msgstr ""
+"הרישיון הציבורי הכללי של גנו במהדורת Affero, גרסה 3 או כל גרסה מאוחרת יותר"
+
+#: src/adw-about-window.c:215
+msgid "GNU Affero General Public License, version 3 only"
+msgstr "הרישיון הציבורי הכללי של גנו במהדורת Affero, גרסה 3 בלבד"
+
+#: src/adw-about-window.c:216
+msgid "BSD 3-Clause License"
+msgstr "רישיון BSD תלת־סעיפי"
+
+#: src/adw-about-window.c:217
+msgid "Apache License, Version 2.0"
+msgstr "רישיון אפאצ'י, גרסה 2.0"
+
+#: src/adw-about-window.c:218
+msgid "Mozilla Public License 2.0"
+msgstr "הרישיון הציבורי של מוזילה, גרסה 2.0"
+
+#: src/adw-about-window.c:526
+msgid "Code by"
+msgstr "קוד על ידי"
+
+#: src/adw-about-window.c:527
+msgid "Design by"
+msgstr "עוצב על ידי"
+
+#: src/adw-about-window.c:528
+msgid "Artwork by"
+msgstr "אומנות על ידי"
+
+#: src/adw-about-window.c:529
+msgid "Documentation by"
+msgstr "תיעוד על ידי"
+
+#: src/adw-about-window.c:530
+msgid "Translated by"
+msgstr "תורגם על ידי"
+
+#. Translators: this is the license preamble; the string at the end
+#. * contains the name of the license as link text.
+#.
+#: src/adw-about-window.c:559
+#, c-format
+msgid ""
+"This application comes with absolutely no warranty. See the <a "
+"href=\"%s\">%s</a> for details."
+msgstr ""
+"תכנית זו מופצת ללא שום אחריות. ניתן לבקר בכתובת <a href=\"%s\">%s</a> לפרטים."
+
+#: src/adw-about-window.c:637
+msgid "This Application"
+msgstr "יישום זה"
+
+#: src/adw-about-window.c:939
+#, c-format
+msgid "Version %s"
+msgstr "גרסה %s"
+
+#: src/adw-about-window.c:965
+msgid "Unable to parse release notes:"
+msgstr "לא ניתן לנתח את הערות השחרור:"
+
+#: src/adw-about-window.c:971
+#, c-format
+msgid "Line: %d, character: %d"
+msgstr "שורה: %d, תו: %d"
+
+#: src/adw-about-window.c:1264
+msgid "Copied to clipboard"
+msgstr "הועתק ללוח הגזירים"
+
+#: src/adw-about-window.c:1299
+msgid "Unable to save debugging information"
+msgstr "לא ניתן לשמור מידע לניפוי שגיאות"
+
+#: src/adw-about-window.c:1304
+msgid "Close"
+msgstr "סגירה"
+
+#: src/adw-about-window.c:1322
+msgid "Save debugging information"
+msgstr "שמירת מידע לניפוי שגיאות"
+
+#: src/adw-about-window.c:1325
+msgid "_Save"
+msgstr "_שמירה"
+
+#: src/adw-about-window.c:1326
+msgid "_Cancel"
+msgstr "_ביטול"
+
+#: src/adw-about-window.ui:5
+msgid "About"
+msgstr "אודות"
+
+#: src/adw-about-window.ui:123
+msgid "_What’s New"
+msgstr "_מה חדש"
+
+#: src/adw-about-window.ui:138
+msgid "_Details"
+msgstr "_פרטים"
+
+#: src/adw-about-window.ui:153 src/adw-about-window.ui:395
+msgid "_Website"
+msgstr "_אתר אינטרנט"
+
+#: src/adw-about-window.ui:176
+msgid "_Support Questions"
+msgstr "_שאלות נפוצות"
+
+#: src/adw-about-window.ui:192
+msgid "_Report an Issue"
+msgstr "_דיווח על תקלה"
+
+#: src/adw-about-window.ui:207
+msgid "_Troubleshooting"
+msgstr "_פתרון תקלות"
+
+#: src/adw-about-window.ui:226
+msgid "_Credits"
+msgstr "_תודות"
+
+#: src/adw-about-window.ui:241
+msgid "_Legal"
+msgstr "_משפטי"
+
+#: src/adw-about-window.ui:256
+msgid "_Acknowledgements"
+msgstr ""
+
+#: src/adw-about-window.ui:295
+msgid "What’s New"
+msgstr "מה חדש"
+
+#: src/adw-about-window.ui:300 src/adw-about-window.ui:356
+#: src/adw-about-window.ui:437 src/adw-about-window.ui:512
+#: src/adw-about-window.ui:559 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653
+msgid "Back"
+msgstr "אחורה"
+
+#: src/adw-about-window.ui:351
+msgid "Details"
+msgstr "פרטים"
+
+#: src/adw-about-window.ui:432
+msgid "Troubleshooting"
+msgstr "פתרון תקלות"
+
+#: src/adw-about-window.ui:461
+msgid ""
+"To assist in troubleshooting, you can view your debugging information. "
+"Providing this information to the application developers can help diagnose "
+"any problems you encounter when you report an issue."
+msgstr "לסיוע בפתרון תקלות, באפשרותך לצפות במידע לניפוי שגיאות."
+
+#: src/adw-about-window.ui:472
+msgid "_Debugging Information"
+msgstr "מידע ל_ניפוי שגיאות"
+
+#: src/adw-about-window.ui:507
+msgid "Credits"
+msgstr "תודות"
+
+#: src/adw-about-window.ui:554
+msgid "Legal"
+msgstr "משפטי"
+
+#: src/adw-about-window.ui:601
+msgid "Acknowledgements"
+msgstr ""
+
+#: src/adw-about-window.ui:648
+msgid "Debugging Information"
+msgstr "מידע לניפוי שגיאות"
+
+#: src/adw-about-window.ui:696
+msgid "_Copy Text"
+msgstr "_העתקת טקסט"
+
+#: src/adw-about-window.ui:703
+msgid "_Save as…"
+msgstr "_שמירה בשם…"
+
 #: src/adw-entry-row.ui:93
 msgid "Apply"
 msgstr "החלה"
@@ -70,11 +302,11 @@ msgstr "הסתרת טקסט"
 msgid "Show Text"
 msgstr "הצגת טקסט"
 
-#: src/adw-password-entry-row.c:168
+#: src/adw-password-entry-row.c:169
 msgid "Caps Lock is on"
 msgstr "ה־Caps Lock פעיל"
 
-#: src/adw-password-entry-row.c:176
+#: src/adw-password-entry-row.c:177
 msgid "_Show Text"
 msgstr "_הצגת טקסט"
 
@@ -97,3 +329,8 @@ msgstr "לא נמצאו תוצאות"
 #: src/adw-preferences-window.ui:140
 msgid "Try a different search."
 msgstr "יש לנסות חיפוש שונה."
+
+#: src/adw-tab.ui:88
+#| msgid "Close"
+msgid "Close Tab"
+msgstr "סגירת לשונית"
diff -pruN 1.2~alpha-1/po/id.po 1.2~beta-1/po/id.po
--- 1.2~alpha-1/po/id.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/id.po	2022-08-05 21:51:59.000000000 +0000
@@ -9,64 +9,283 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libadwaita main\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2021-12-06 17:25+0000\n"
-"PO-Revision-Date: 2022-01-05 10:25+0700\n"
+"POT-Creation-Date: 2022-07-07 21:50+0000\n"
+"PO-Revision-Date: 2022-07-10 16:49+0700\n"
 "Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
 "Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
 "Language: id\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 3.0\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.1.1\n"
 "X-DL-Team: id\n"
 "X-DL-Module: libadwaita\n"
 "X-DL-Branch: main\n"
 "X-DL-Domain: po\n"
 "X-DL-State: Translating\n"
 
-#: src/adw-preferences-window.c:212
-msgid "Untitled page"
-msgstr "Halaman tanpa judul"
-
-#: src/adw-preferences-window.ui:8
-msgid "Preferences"
-msgstr "Preferensi"
-
-#: src/adw-preferences-window.ui:69
-msgid "Search"
-msgstr "Cari"
+#: src/adw-about-window.c:205
+msgid "GNU General Public License, version 2 or later"
+msgstr "GNU General Public License, versi 2 atau setelahnya"
+
+#: src/adw-about-window.c:206
+msgid "GNU General Public License, version 3 or later"
+msgstr "GNU General Public License, versi 3 atau setelahnya"
+
+#: src/adw-about-window.c:207
+msgid "GNU Lesser General Public License, version 2.1 or later"
+msgstr "GNU Lesser General Public License, versi 2.1 atau setelahnya"
+
+#: src/adw-about-window.c:208
+msgid "GNU Lesser General Public License, version 3 or later"
+msgstr "GNU Lesser General Public License, versi 3 atau setelahnya"
+
+#: src/adw-about-window.c:209
+msgid "BSD 2-Clause License"
+msgstr "Lisensi BSD 2-Clause"
+
+#: src/adw-about-window.c:210
+msgid "The MIT License (MIT)"
+msgstr "Lisensi MIT (MIT)"
+
+#: src/adw-about-window.c:211
+msgid "Artistic License 2.0"
+msgstr "Artistic License 2.0"
+
+#: src/adw-about-window.c:212
+msgid "GNU General Public License, version 2 only"
+msgstr "GNU General Public License, hanya versi 2"
+
+#: src/adw-about-window.c:213
+msgid "GNU General Public License, version 3 only"
+msgstr "GNU General Public License, hanya versi 3"
+
+#: src/adw-about-window.c:214
+msgid "GNU Lesser General Public License, version 2.1 only"
+msgstr "GNU Lesser General Public License, hanya versi 2.1"
+
+#: src/adw-about-window.c:215
+msgid "GNU Lesser General Public License, version 3 only"
+msgstr "GNU Lesser General Public License, hanya versi 3"
+
+#: src/adw-about-window.c:216
+msgid "GNU Affero General Public License, version 3 or later"
+msgstr "GNU Affero General Public License, versi 3 atau setelahnya"
+
+#: src/adw-about-window.c:217
+msgid "GNU Affero General Public License, version 3 only"
+msgstr "GNU Affero General Public License, hanya versi 3"
+
+#: src/adw-about-window.c:218
+msgid "BSD 3-Clause License"
+msgstr "Lisensi BSD 3-Clause"
+
+#: src/adw-about-window.c:219
+msgid "Apache License, Version 2.0"
+msgstr "Lisensi Apache, Versi 2.0"
+
+#: src/adw-about-window.c:220
+msgid "Mozilla Public License 2.0"
+msgstr "Mozilla Public License 2.0"
+
+#: src/adw-about-window.c:527
+msgid "Code by"
+msgstr "Kode oleh"
+
+#: src/adw-about-window.c:528
+msgid "Design by"
+msgstr "Desain oleh"
+
+#: src/adw-about-window.c:529
+msgid "Artwork by"
+msgstr "Karya Seni oleh"
+
+#: src/adw-about-window.c:530
+msgid "Documentation by"
+msgstr "_Dokumentasi"
+
+#: src/adw-about-window.c:531
+msgid "Translated by"
+msgstr "Diterjemahkan oleh"
+
+#. Translators: this is the license preamble; the string at the end
+#. * contains the name of the license as link text.
+#.
+#: src/adw-about-window.c:558
+#, c-format
+msgid ""
+"This application comes with absolutely no warranty. See the <a href=\"%s\">"
+"%s</a> for details."
+msgstr ""
+"Aplikasi ini hadir tanpa jaminan sama sekali. Lihat <a href=\"%s\">%s</a> "
+"untuk detailnya ."
 
-#: src/adw-preferences-window.ui:139
-msgid "No Results Found"
-msgstr "Tak Ada Hasil yang Ditemukan"
+#: src/adw-about-window.c:636
+msgid "This Application"
+msgstr "Aplikasi Ini"
+
+#: src/adw-about-window.c:933
+#, c-format
+msgid "Version %s"
+msgstr "Versi %s"
+
+#: src/adw-about-window.c:959
+msgid "Unable to parse release notes:"
+msgstr "Tidak dapat mengurai catatan rilis:"
+
+#: src/adw-about-window.c:965
+#, c-format
+msgid "Line: %d, character: %d"
+msgstr "Baris: %d, karakter: %d"
+
+#: src/adw-about-window.c:1234
+msgid "Copied to clipboard"
+msgstr "Disalin ke papan klip"
+
+#: src/adw-about-window.c:1269
+msgid "Unable to save debugging information"
+msgstr "Tidak dapat menyimpan informasi pengawakutuan"
+
+#: src/adw-about-window.c:1274
+msgid "Close"
+msgstr "Tutup"
+
+#: src/adw-about-window.c:1292
+msgid "Save debugging information"
+msgstr "Simpan informasi pengawakutuan"
+
+#: src/adw-about-window.c:1295
+msgid "_Save"
+msgstr "_Simpan"
+
+#: src/adw-about-window.c:1296
+msgid "_Cancel"
+msgstr "_Batal"
+
+#: src/adw-about-window.ui:5
+msgid "About"
+msgstr "Tentang"
+
+#: src/adw-about-window.ui:121
+msgid "_What’s New"
+msgstr "Apa _yang Baru"
+
+#: src/adw-about-window.ui:140
+msgid "_Details"
+msgstr "_Detail"
+
+#: src/adw-about-window.ui:162 src/adw-about-window.ui:487
+msgid "_Website"
+msgstr "Situs _Web"
+
+#: src/adw-about-window.ui:193
+msgid "_Support Questions"
+msgstr "Pertanyaan Du_kungan"
+
+#: src/adw-about-window.ui:215
+msgid "_Report an Issue"
+msgstr "Lapo_rkan Masalah"
+
+#: src/adw-about-window.ui:236
+msgid "_Troubleshooting"
+msgstr "_Penyelesaian Masalah"
+
+#: src/adw-about-window.ui:267
+msgid "_Credits"
+msgstr "_Kredit"
+
+#: src/adw-about-window.ui:284
+msgid "_Legal"
+msgstr "_Hukum"
+
+#: src/adw-about-window.ui:301
+msgid "_Acknowledgements"
+msgstr "Uc_apan Terima Kasih"
+
+#: src/adw-about-window.ui:381
+msgid "What’s New"
+msgstr "Apa yang Baru"
+
+#: src/adw-about-window.ui:386 src/adw-about-window.ui:442
+#: src/adw-about-window.ui:531 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653 src/adw-about-window.ui:700
+#: src/adw-about-window.ui:747
+msgid "Back"
+msgstr "Kembali"
+
+#: src/adw-about-window.ui:437
+msgid "Details"
+msgstr "Detail"
+
+#: src/adw-about-window.ui:526
+msgid "Troubleshooting"
+msgstr "Penyelesaian Masalah"
 
-#: src/adw-preferences-window.ui:140
-msgid "Try a different search."
-msgstr "Cobalah pencarian lain."
+#: src/adw-about-window.ui:555
+msgid ""
+"To assist in troubleshooting, you can view your debugging information. "
+"Providing this information to the application developers can help diagnose "
+"any problems you encounter when you report an issue."
+msgstr ""
+"Untuk membantu pemecahan masalah, Anda dapat melihat informasi "
+"pengawakutuan. Memberikan informasi ini kepada pengembang aplikasi dapat "
+"membantu mendiagnosis masalah yang Anda temui saat melaporkan masalah."
+
+#: src/adw-about-window.ui:566
+msgid "_Debugging Information"
+msgstr "Informasi _Pengawakutuan"
+
+#: src/adw-about-window.ui:601
+msgid "Credits"
+msgstr "Kredit"
+
+#: src/adw-about-window.ui:648
+msgid "Legal"
+msgstr "Hukum"
+
+#: src/adw-about-window.ui:695
+msgid "Acknowledgements"
+msgstr "Ucapan Terima Kasih"
+
+#: src/adw-about-window.ui:742
+msgid "Debugging Information"
+msgstr "Informasi Pengawakutuan"
+
+#: src/adw-about-window.ui:790
+msgid "_Copy Text"
+msgstr "S_alin Teks"
+
+#: src/adw-about-window.ui:797
+msgid "_Save as…"
+msgstr "_Simpan sebagai…"
+
+#: src/adw-entry-row.ui:93
+msgid "Apply"
+msgstr "Terapkan"
 
-#: src/inspector/adw-inspector-page.c:76
+#: src/adw-inspector-page.c:76
 msgid "No Preference"
 msgstr "Tiada Preferensi"
 
-#: src/inspector/adw-inspector-page.c:78
+#: src/adw-inspector-page.c:78
 msgid "Prefer Dark"
 msgstr "Lebih Suka Gelap"
 
-#: src/inspector/adw-inspector-page.c:80
+#: src/adw-inspector-page.c:80
 msgid "Prefer Light"
 msgstr "Lebih Suka Terang"
 
 #. Translators: The name of the library, not the stylesheet
-#: src/inspector/adw-inspector-page.c:98
+#: src/adw-inspector-page.c:98
 msgid "Adwaita"
 msgstr "Adwaita"
 
-#: src/inspector/adw-inspector-page.ui:10
+#: src/adw-inspector-page.ui:10
 msgid "System Appearance"
 msgstr "Tampilan Sistem"
 
-#: src/inspector/adw-inspector-page.ui:11
+#: src/adw-inspector-page.ui:11
 msgid ""
 "Override settings for this application. They will be reset upon closing the "
 "inspector."
@@ -74,14 +293,50 @@ msgstr ""
 "Mengesampingkan pengaturan untuk aplikasi ini. Akan diatur ulang pada saat "
 "menutup peninjau."
 
-#: src/inspector/adw-inspector-page.ui:14
+#: src/adw-inspector-page.ui:14
 msgid "System Supports Color Schemes"
 msgstr "Sistem Mendukung Skema-skema Warna"
 
-#: src/inspector/adw-inspector-page.ui:26
+#: src/adw-inspector-page.ui:26
 msgid "Preferred Color Scheme"
 msgstr "Skema Warna yang Disukai"
 
-#: src/inspector/adw-inspector-page.ui:43
+#: src/adw-inspector-page.ui:43
 msgid "High Contrast"
 msgstr "Kontras Tinggi"
+
+#: src/adw-password-entry-row.c:71
+msgid "Hide Text"
+msgstr "Sembunyikan Teks"
+
+#: src/adw-password-entry-row.c:75
+msgid "Show Text"
+msgstr "Tampilkan Teks"
+
+#: src/adw-password-entry-row.c:169
+msgid "Caps Lock is on"
+msgstr "Caps Lock menyala"
+
+#: src/adw-password-entry-row.c:177
+msgid "_Show Text"
+msgstr "Tampilkan Tek_s"
+
+#: src/adw-preferences-window.c:242
+msgid "Untitled page"
+msgstr "Halaman tanpa judul"
+
+#: src/adw-preferences-window.ui:8
+msgid "Preferences"
+msgstr "Preferensi"
+
+#: src/adw-preferences-window.ui:69
+msgid "Search"
+msgstr "Cari"
+
+#: src/adw-preferences-window.ui:139
+msgid "No Results Found"
+msgstr "Tak Ada Hasil yang Ditemukan"
+
+#: src/adw-preferences-window.ui:140
+msgid "Try a different search."
+msgstr "Cobalah pencarian lain."
diff -pruN 1.2~alpha-1/po/ka.po 1.2~beta-1/po/ka.po
--- 1.2~alpha-1/po/ka.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/ka.po	2022-08-05 21:51:59.000000000 +0000
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-04-22 21:43+0000\n"
-"PO-Revision-Date: 2022-04-24 09:01+0200\n"
+"POT-Creation-Date: 2022-07-25 04:13+0000\n"
+"PO-Revision-Date: 2022-07-26 08:20+0200\n"
 "Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
 "Language-Team: \n"
 "Language: ka\n"
@@ -16,7 +16,242 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.0.1\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: src/adw-about-window.c:203
+msgid "GNU General Public License, version 2 or later"
+msgstr "GNU Lesser General Public License Version 2"
+
+#: src/adw-about-window.c:204
+msgid "GNU General Public License, version 3 or later"
+msgstr "GNU Lesser General Public License Version 3"
+
+#: src/adw-about-window.c:205
+msgid "GNU Lesser General Public License, version 2.1 or later"
+msgstr "GNU Lesser General Public License Version 2.1"
+
+#: src/adw-about-window.c:206
+msgid "GNU Lesser General Public License, version 3 or later"
+msgstr "GNU Lesser General Public License Version 3"
+
+#: src/adw-about-window.c:207
+msgid "BSD 2-Clause License"
+msgstr "BSD 2-Clause License"
+
+#: src/adw-about-window.c:208
+msgid "The MIT License (MIT)"
+msgstr "The MIT License (MIT)"
+
+#: src/adw-about-window.c:209
+msgid "Artistic License 2.0"
+msgstr "ხელოვანების ლიცენზია"
+
+#: src/adw-about-window.c:210
+msgid "GNU General Public License, version 2 only"
+msgstr "GNU Lesser General Public License Version 2"
+
+#: src/adw-about-window.c:211
+msgid "GNU General Public License, version 3 only"
+msgstr "GNU Lesser General Public License Version 3"
+
+#: src/adw-about-window.c:212
+msgid "GNU Lesser General Public License, version 2.1 only"
+msgstr "GNU Lesser General Public License Version 2.1"
+
+#: src/adw-about-window.c:213
+msgid "GNU Lesser General Public License, version 3 only"
+msgstr "GNU Lesser General Public License Version 3"
+
+#: src/adw-about-window.c:214
+msgid "GNU Affero General Public License, version 3 or later"
+msgstr "GNU Lesser General Public License Version 3"
+
+#: src/adw-about-window.c:215
+msgid "GNU Affero General Public License, version 3 only"
+msgstr "GNU General Public License Version 3"
+
+#: src/adw-about-window.c:216
+msgid "BSD 3-Clause License"
+msgstr "BSD 3-Clause License"
+
+#: src/adw-about-window.c:217
+msgid "Apache License, Version 2.0"
+msgstr "Apache License, Version 2.0"
+
+#: src/adw-about-window.c:218
+msgid "Mozilla Public License 2.0"
+msgstr "Mozilla Public License 2.0"
+
+#: src/adw-about-window.c:519
+msgid "Code by"
+msgstr "კოდის ავტორი"
+
+#: src/adw-about-window.c:520
+msgid "Design by"
+msgstr "დიზაინი"
+
+#: src/adw-about-window.c:521
+msgid "Artwork by"
+msgstr "დიზაინის ავტორი"
+
+#: src/adw-about-window.c:522
+msgid "Documentation by"
+msgstr "დოკუმენტაციის ავტორი"
+
+#: src/adw-about-window.c:523
+msgid "Translated by"
+msgstr "თარგმნა"
+
+#. Translators: this is the license preamble; the string at the end
+#. * contains the name of the license as link text.
+#.
+#: src/adw-about-window.c:550
+#, c-format
+msgid ""
+"This application comes with absolutely no warranty. See the <a href=\"%s\">"
+"%s</a> for details."
+msgstr ""
+"პროგრამას ყოველგვარი გარანტიების გარეშე იღებთ. მეტი დეტალებისთვის იხილეთ <a "
+"href=\"%s\">%s</a>."
+
+#: src/adw-about-window.c:628
+msgid "This Application"
+msgstr "ეს აპლიკაცია"
+
+#: src/adw-about-window.c:925
+#, c-format
+msgid "Version %s"
+msgstr "ვერისა %s"
+
+#: src/adw-about-window.c:951
+msgid "Unable to parse release notes:"
+msgstr "რელიზის შენიშვნების დამუშავების შეცდომა:"
+
+#: src/adw-about-window.c:957
+#, c-format
+msgid "Line: %d, character: %d"
+msgstr "ხაზი: %d, სიმბოლო: %d"
+
+#: src/adw-about-window.c:1227
+msgid "Copied to clipboard"
+msgstr "დაკოპირდა გაცვლის ბაფერში"
+
+#: src/adw-about-window.c:1262
+msgid "Unable to save debugging information"
+msgstr "გამართვის ინფორმაციის შენახვის შეცდომა"
+
+#: src/adw-about-window.c:1267
+msgid "Close"
+msgstr "დახურვა"
+
+#: src/adw-about-window.c:1285
+msgid "Save debugging information"
+msgstr "გამართვის ინფორმაციის შენახვა"
+
+#: src/adw-about-window.c:1288
+msgid "_Save"
+msgstr "_შენახვა"
+
+#: src/adw-about-window.c:1289
+msgid "_Cancel"
+msgstr "_გაუქმება"
+
+#: src/adw-about-window.ui:5
+msgid "About"
+msgstr "შესახებ"
+
+#: src/adw-about-window.ui:160
+msgid "_What’s New"
+msgstr "_რა არის ახალი"
+
+#: src/adw-about-window.ui:179
+msgid "_Details"
+msgstr "_დეტალები"
+
+#: src/adw-about-window.ui:201 src/adw-about-window.ui:487
+msgid "_Website"
+msgstr "_ვებსაიტი"
+
+#: src/adw-about-window.ui:232
+msgid "_Support Questions"
+msgstr "მხარდაჭერის _კითხვები"
+
+#: src/adw-about-window.ui:254
+msgid "_Report an Issue"
+msgstr "_პრობლემის რეპორტი"
+
+#: src/adw-about-window.ui:275
+msgid "_Troubleshooting"
+msgstr "_პრობლემების გადაჭრა"
+
+#: src/adw-about-window.ui:306
+msgid "_Credits"
+msgstr "_კრედიტები"
+
+#: src/adw-about-window.ui:323
+msgid "_Legal"
+msgstr "_იურიდიული"
+
+#: src/adw-about-window.ui:340
+msgid "_Acknowledgements"
+msgstr "_სხვა გამოყენებული პროექტები"
+
+#: src/adw-about-window.ui:381
+msgid "What’s New"
+msgstr "რა არის ახალი"
+
+#: src/adw-about-window.ui:386 src/adw-about-window.ui:442
+#: src/adw-about-window.ui:531 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653 src/adw-about-window.ui:700
+#: src/adw-about-window.ui:747
+msgid "Back"
+msgstr "უკან"
+
+#: src/adw-about-window.ui:437
+msgid "Details"
+msgstr "დეტალები"
+
+#: src/adw-about-window.ui:526
+msgid "Troubleshooting"
+msgstr "პრობლემების გადაჭრა"
+
+#: src/adw-about-window.ui:555
+msgid ""
+"To assist in troubleshooting, you can view your debugging information. "
+"Providing this information to the application developers can help diagnose "
+"any problems you encounter when you report an issue."
+msgstr ""
+"პრობლემის გადაწყვეტაში დასახმარებლად შეგიძლიათ გადახედოთ გამართვის "
+"ინფორმაციას. პროგრამისტებისთვის ამ ინფორმაციის გაგზავნით შეგიძლიათ "
+"ნებისმიერი პრობლემა გადაჭრათ."
+
+#: src/adw-about-window.ui:566
+msgid "_Debugging Information"
+msgstr "_გამართვის ინფორმაცია"
+
+#: src/adw-about-window.ui:601
+msgid "Credits"
+msgstr "კრედიტები"
+
+#: src/adw-about-window.ui:648
+msgid "Legal"
+msgstr "იურიდიული"
+
+#: src/adw-about-window.ui:695
+msgid "Acknowledgements"
+msgstr "სხვა გამოყენებული პროექტები"
+
+#: src/adw-about-window.ui:742
+msgid "Debugging Information"
+msgstr "გამართვის ინფორმაცია"
+
+#: src/adw-about-window.ui:790
+msgid "_Copy Text"
+msgstr "ტექსტის _კოპირება"
+
+#: src/adw-about-window.ui:797
+msgid "_Save as…"
+msgstr "_შენახვა, როგორც…"
 
 #: src/adw-entry-row.ui:93
 msgid "Apply"
@@ -71,11 +306,11 @@ msgstr "ტექსტის დამ
 msgid "Show Text"
 msgstr "ტექსტის ჩვენება"
 
-#: src/adw-password-entry-row.c:168
+#: src/adw-password-entry-row.c:169
 msgid "Caps Lock is on"
 msgstr "CapsLock ჩართულია"
 
-#: src/adw-password-entry-row.c:176
+#: src/adw-password-entry-row.c:177
 msgid "_Show Text"
 msgstr "ტექსტის ჩვენება"
 
diff -pruN 1.2~alpha-1/po/lt.po 1.2~beta-1/po/lt.po
--- 1.2~alpha-1/po/lt.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/lt.po	2022-08-05 21:51:59.000000000 +0000
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libadwaita main\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-05-04 16:49+0000\n"
-"PO-Revision-Date: 2022-06-20 22:30+0300\n"
+"POT-Creation-Date: 2022-08-01 14:50+0000\n"
+"PO-Revision-Date: 2022-08-01 22:40+0300\n"
 "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
 "Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
 "Language: lt\n"
@@ -19,6 +19,242 @@ msgstr ""
 "(n%100<10 || n%100>=20) ? 1 : 2)\n"
 "X-Generator: Gtranslator 40.0\n"
 
+#: src/adw-about-window.c:203
+msgid "GNU General Public License, version 2 or later"
+msgstr "GNU bendroji vieša licencija, 2 arba vėlesnė versija"
+
+#: src/adw-about-window.c:204
+msgid "GNU General Public License, version 3 or later"
+msgstr "GNU bendroji vieša licencija, 3 arba vėlesnė versija"
+
+#: src/adw-about-window.c:205
+msgid "GNU Lesser General Public License, version 2.1 or later"
+msgstr "GNU sumažinta bendroji vieša licencija, 2.1 arba vėlesnė versija"
+
+#: src/adw-about-window.c:206
+msgid "GNU Lesser General Public License, version 3 or later"
+msgstr "GNU sumažinta bendroji vieša licencija, 3 arba vėlesnė versija"
+
+#: src/adw-about-window.c:207
+msgid "BSD 2-Clause License"
+msgstr "BSD 2 dalių licencija"
+
+#: src/adw-about-window.c:208
+msgid "The MIT License (MIT)"
+msgstr "MIT licencija (MIT)"
+
+#: src/adw-about-window.c:209
+msgid "Artistic License 2.0"
+msgstr "Artistic licencija 2.0"
+
+#: src/adw-about-window.c:210
+msgid "GNU General Public License, version 2 only"
+msgstr "GNU bendroji vieša licencija, tik 2 versija"
+
+#: src/adw-about-window.c:211
+msgid "GNU General Public License, version 3 only"
+msgstr "GNU bendroji vieša licencija, tik 3 versija"
+
+#: src/adw-about-window.c:212
+msgid "GNU Lesser General Public License, version 2.1 only"
+msgstr "GNU sumažinta bendroji vieša licencija, tik 2.1 versija"
+
+#: src/adw-about-window.c:213
+msgid "GNU Lesser General Public License, version 3 only"
+msgstr "GNU sumažinta bendroji vieša licencija, tik 3 versija"
+
+#: src/adw-about-window.c:214
+msgid "GNU Affero General Public License, version 3 or later"
+msgstr "GNU affero bendroji vieša licencija, 3 arba vėlesnė versija"
+
+#: src/adw-about-window.c:215
+msgid "GNU Affero General Public License, version 3 only"
+msgstr "GNU affero bendroji vieša licencija, tik 3 versija"
+
+#: src/adw-about-window.c:216
+msgid "BSD 3-Clause License"
+msgstr "BSD 3 dalių licencija"
+
+#: src/adw-about-window.c:217
+msgid "Apache License, Version 2.0"
+msgstr "Apache licencija, 2.0 versija"
+
+#: src/adw-about-window.c:218
+msgid "Mozilla Public License 2.0"
+msgstr "Mozilla viešoji licencija 2.0"
+
+#: src/adw-about-window.c:526
+msgid "Code by"
+msgstr "Kodas"
+
+#: src/adw-about-window.c:527
+msgid "Design by"
+msgstr "Dizainas"
+
+#: src/adw-about-window.c:528
+msgid "Artwork by"
+msgstr "Menas"
+
+#: src/adw-about-window.c:529
+msgid "Documentation by"
+msgstr "Dokumentacija"
+
+#: src/adw-about-window.c:530
+msgid "Translated by"
+msgstr "Vertimas"
+
+#. Translators: this is the license preamble; the string at the end
+#. * contains the name of the license as link text.
+#.
+#: src/adw-about-window.c:559
+#, c-format
+msgid ""
+"This application comes with absolutely no warranty. See the <a "
+"href=\"%s\">%s</a> for details."
+msgstr ""
+"Ši programa pateikiama be jokios garantijos. Daugiau informacijos adresu <a "
+"href=\"%s\">%s</a>."
+
+#: src/adw-about-window.c:637
+msgid "This Application"
+msgstr "Ši programa"
+
+#: src/adw-about-window.c:939
+#, c-format
+msgid "Version %s"
+msgstr "Versija %s"
+
+#: src/adw-about-window.c:965
+msgid "Unable to parse release notes:"
+msgstr "Nepavyko išanalizuoti leidimo naujienų:"
+
+#: src/adw-about-window.c:971
+#, c-format
+msgid "Line: %d, character: %d"
+msgstr "Eilutė %d, simbolis: %d"
+
+#: src/adw-about-window.c:1264
+msgid "Copied to clipboard"
+msgstr "Nukopijuota į iškarpinę"
+
+#: src/adw-about-window.c:1299
+msgid "Unable to save debugging information"
+msgstr "Nepavyko įrašyti derinimo informacijos"
+
+#: src/adw-about-window.c:1304
+msgid "Close"
+msgstr "Užverti"
+
+#: src/adw-about-window.c:1322
+msgid "Save debugging information"
+msgstr "Įrašyti derinimo informaciją"
+
+#: src/adw-about-window.c:1325
+msgid "_Save"
+msgstr "Į_rašyti"
+
+#: src/adw-about-window.c:1326
+msgid "_Cancel"
+msgstr "_Atsisakyti"
+
+#: src/adw-about-window.ui:5
+msgid "About"
+msgstr "Apie"
+
+#: src/adw-about-window.ui:123
+msgid "_What’s New"
+msgstr "_Naujienos"
+
+#: src/adw-about-window.ui:138
+msgid "_Details"
+msgstr "_Detali informacija"
+
+#: src/adw-about-window.ui:153 src/adw-about-window.ui:395
+msgid "_Website"
+msgstr "_Tinklalapis"
+
+#: src/adw-about-window.ui:176
+msgid "_Support Questions"
+msgstr "_Pagalbos klausimai"
+
+#: src/adw-about-window.ui:192
+msgid "_Report an Issue"
+msgstr "P_ranešti apie problemą"
+
+#: src/adw-about-window.ui:207
+msgid "_Troubleshooting"
+msgstr "_Problemų sprendimas"
+
+#: src/adw-about-window.ui:226
+msgid "_Credits"
+msgstr "_Autoriai"
+
+#: src/adw-about-window.ui:241
+msgid "_Legal"
+msgstr "_Teisinė informacija"
+
+#: src/adw-about-window.ui:256
+msgid "_Acknowledgements"
+msgstr "Pa_dėkos"
+
+#: src/adw-about-window.ui:295
+msgid "What’s New"
+msgstr "Naujienos"
+
+#: src/adw-about-window.ui:300 src/adw-about-window.ui:356
+#: src/adw-about-window.ui:437 src/adw-about-window.ui:512
+#: src/adw-about-window.ui:559 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653
+msgid "Back"
+msgstr "Grįžti"
+
+#: src/adw-about-window.ui:351
+msgid "Details"
+msgstr "Detali informacija"
+
+#: src/adw-about-window.ui:432
+msgid "Troubleshooting"
+msgstr "Problemų sprendimas"
+
+#: src/adw-about-window.ui:461
+msgid ""
+"To assist in troubleshooting, you can view your debugging information. "
+"Providing this information to the application developers can help diagnose "
+"any problems you encounter when you report an issue."
+msgstr ""
+"Ieškodami problemų sprendimo galite peržiūrėti derinimo informaciją. Šios "
+"informacijos pateikimas programos kūrėjams gali padėti diagnozuoti jūsų "
+"problemas, kai apie jas pranešate."
+
+#: src/adw-about-window.ui:472
+msgid "_Debugging Information"
+msgstr "_Derinimo informacija"
+
+#: src/adw-about-window.ui:507
+msgid "Credits"
+msgstr "Autoriai"
+
+#: src/adw-about-window.ui:554
+msgid "Legal"
+msgstr "Teisinė informacija"
+
+#: src/adw-about-window.ui:601
+msgid "Acknowledgements"
+msgstr "Padėkos"
+
+#: src/adw-about-window.ui:648
+msgid "Debugging Information"
+msgstr "Derinimo informacija"
+
+#: src/adw-about-window.ui:696
+#| msgid "_Show Text"
+msgid "_Copy Text"
+msgstr "_Kopijuoti tekstą"
+
+#: src/adw-about-window.ui:703
+msgid "_Save as…"
+msgstr "Į_rašyti taip…"
+
 #: src/adw-entry-row.ui:93
 msgid "Apply"
 msgstr "Pritaikyti"
@@ -71,11 +307,11 @@ msgstr "Slėpti tekstą"
 msgid "Show Text"
 msgstr "Rodyti tekstą"
 
-#: src/adw-password-entry-row.c:168
+#: src/adw-password-entry-row.c:169
 msgid "Caps Lock is on"
 msgstr "Įjungto didžiosios raidės"
 
-#: src/adw-password-entry-row.c:176
+#: src/adw-password-entry-row.c:177
 msgid "_Show Text"
 msgstr "_Rodyti tekstą"
 
@@ -98,3 +334,7 @@ msgstr "Nerasta rezultatų"
 #: src/adw-preferences-window.ui:140
 msgid "Try a different search."
 msgstr "Bandykite kitą paiešką."
+
+#: src/adw-tab.ui:88
+msgid "Close Tab"
+msgstr "Užverti kortelę"
diff -pruN 1.2~alpha-1/po/oc.po 1.2~beta-1/po/oc.po
--- 1.2~alpha-1/po/oc.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/oc.po	2022-08-05 21:51:59.000000000 +0000
@@ -7,58 +7,274 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libadwaita main\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2021-12-06 17:25+0000\n"
-"PO-Revision-Date: 2022-01-09 20:28+0100\n"
+"POT-Creation-Date: 2022-07-07 21:50+0000\n"
+"PO-Revision-Date: 2022-07-23 00:31+0200\n"
 "Last-Translator: Quentin PAGÈS\n"
 "Language-Team: Occitan <totenoc@gmail.com>\n"
 "Language: oc\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.1.1\n"
 
-#: src/adw-preferences-window.c:212
-msgid "Untitled page"
-msgstr "Pagina sens títol"
+#: src/adw-about-window.c:205
+msgid "GNU General Public License, version 2 or later"
+msgstr "Licéncia publica generala GNU, version 2 o ulteriora"
+
+#: src/adw-about-window.c:206
+msgid "GNU General Public License, version 3 or later"
+msgstr "Licéncia publica generala GNU, version 3 o ulteriora"
+
+#: src/adw-about-window.c:207
+msgid "GNU Lesser General Public License, version 2.1 or later"
+msgstr "Licéncia publica generala limitada GNU, version 2.1 o ulteriora"
+
+#: src/adw-about-window.c:208
+msgid "GNU Lesser General Public License, version 3 or later"
+msgstr "Licéncia publica generala limitada GNU, version 3 o ulteriora"
+
+#: src/adw-about-window.c:209
+msgid "BSD 2-Clause License"
+msgstr "Licéncia BSD a 2 clausas"
+
+#: src/adw-about-window.c:210
+msgid "The MIT License (MIT)"
+msgstr "La licéncia MIT"
+
+#: src/adw-about-window.c:211
+msgid "Artistic License 2.0"
+msgstr "Licéncia artistica 2.0"
+
+#: src/adw-about-window.c:212
+msgid "GNU General Public License, version 2 only"
+msgstr "Licéncia publica generala GNU, version 2 unicament"
+
+#: src/adw-about-window.c:213
+msgid "GNU General Public License, version 3 only"
+msgstr "Licéncia publica generala GNU, version 3 unicament"
+
+#: src/adw-about-window.c:214
+msgid "GNU Lesser General Public License, version 2.1 only"
+msgstr "Licéncia publica generala limitada GNU, version 2.1 unicament"
+
+#: src/adw-about-window.c:215
+msgid "GNU Lesser General Public License, version 3 only"
+msgstr "Licéncia publica generala limitada GNU, version 3 unicament"
+
+#: src/adw-about-window.c:216
+msgid "GNU Affero General Public License, version 3 or later"
+msgstr "Licéncia publica generala GNU Affero, version 3 o ulteriora"
+
+#: src/adw-about-window.c:217
+msgid "GNU Affero General Public License, version 3 only"
+msgstr "Licéncia publica generala GNU Affero, version 3 solament"
+
+#: src/adw-about-window.c:218
+msgid "BSD 3-Clause License"
+msgstr "Licéncia BSD a 3 clausas"
+
+#: src/adw-about-window.c:219
+msgid "Apache License, Version 2.0"
+msgstr "Licéncia Apache 2.0"
+
+#: src/adw-about-window.c:220
+msgid "Mozilla Public License 2.0"
+msgstr "Licéncia publica Mozilla 2.0"
+
+#: src/adw-about-window.c:527
+msgid "Code by"
+msgstr "Còdi per"
+
+#: src/adw-about-window.c:528
+msgid "Design by"
+msgstr "Concepcion per"
+
+#: src/adw-about-window.c:529
+msgid "Artwork by"
+msgstr "Grafisme per"
+
+#: src/adw-about-window.c:530
+msgid "Documentation by"
+msgstr "Documentacion per"
+
+#: src/adw-about-window.c:531
+msgid "Translated by"
+msgstr "Traduch per"
+
+#. Translators: this is the license preamble; the string at the end
+#. * contains the name of the license as link text.
+#.
+#: src/adw-about-window.c:558
+#, c-format
+msgid ""
+"This application comes with absolutely no warranty. See the <a href=\"%s\">"
+"%s</a> for details."
+msgstr ""
+"Aquesta aplicacion es provesida sens cap de garantida. Visitatz <a href=\"%s"
+"\">%s</a> Per mai de detalhs."
 
-#: src/adw-preferences-window.ui:8
-msgid "Preferences"
-msgstr "Preferéncias"
+#: src/adw-about-window.c:636
+msgid "This Application"
+msgstr "Aquesta aplicacion"
+
+#: src/adw-about-window.c:933
+#, c-format
+msgid "Version %s"
+msgstr "Version %s"
+
+#: src/adw-about-window.c:959
+msgid "Unable to parse release notes:"
+msgstr "Analisi impossibla de la nòta de version :"
+
+#: src/adw-about-window.c:965
+#, c-format
+msgid "Line: %d, character: %d"
+msgstr "Linha : %d caractèr : %d"
+
+#: src/adw-about-window.c:1234
+msgid "Copied to clipboard"
+msgstr "Copiat al quichapapièrs"
+
+#: src/adw-about-window.c:1269
+msgid "Unable to save debugging information"
+msgstr "Enregistrament impossible de las informacions de desbugatge"
+
+#: src/adw-about-window.c:1274
+msgid "Close"
+msgstr "Tampar"
+
+#: src/adw-about-window.c:1292
+msgid "Save debugging information"
+msgstr "Enregistrar las informacions de desbugatge"
+
+#: src/adw-about-window.c:1295
+msgid "_Save"
+msgstr "_Enregistrar"
+
+#: src/adw-about-window.c:1296
+msgid "_Cancel"
+msgstr "_Anullar"
+
+#: src/adw-about-window.ui:5
+msgid "About"
+msgstr "A prepaus"
+
+#: src/adw-about-window.ui:121
+msgid "_What’s New"
+msgstr "_Qué de nòu"
+
+#: src/adw-about-window.ui:140
+msgid "_Details"
+msgstr "_Detalhs"
+
+#: src/adw-about-window.ui:162 src/adw-about-window.ui:487
+msgid "_Website"
+msgstr "Site _Web"
 
-#: src/adw-preferences-window.ui:69
-msgid "Search"
-msgstr "Recercar"
+#: src/adw-about-window.ui:193
+msgid "_Support Questions"
+msgstr ""
 
-#: src/adw-preferences-window.ui:139
-msgid "No Results Found"
-msgstr "Cap de resultat pas trobat"
+#: src/adw-about-window.ui:215
+msgid "_Report an Issue"
+msgstr "_Senhalar una avaria"
+
+#: src/adw-about-window.ui:236
+msgid "_Troubleshooting"
+msgstr "_Resolucions de problèmas"
+
+#: src/adw-about-window.ui:267
+msgid "_Credits"
+msgstr "_Crèdits"
+
+#: src/adw-about-window.ui:284
+msgid "_Legal"
+msgstr "_Avís legal"
+
+#: src/adw-about-window.ui:301
+msgid "_Acknowledgements"
+msgstr "_Mercejaments"
+
+#: src/adw-about-window.ui:381
+msgid "What’s New"
+msgstr "Qué de nòu"
+
+#: src/adw-about-window.ui:386 src/adw-about-window.ui:442
+#: src/adw-about-window.ui:531 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653 src/adw-about-window.ui:700
+#: src/adw-about-window.ui:747
+msgid "Back"
+msgstr "Tornar"
+
+#: src/adw-about-window.ui:437
+msgid "Details"
+msgstr "Detalhs"
+
+#: src/adw-about-window.ui:526
+msgid "Troubleshooting"
+msgstr "Resolucions de problèmas"
 
-#: src/adw-preferences-window.ui:140
-msgid "Try a different search."
-msgstr "Ensajatz una recèrca diferenta."
+#: src/adw-about-window.ui:555
+msgid ""
+"To assist in troubleshooting, you can view your debugging information. "
+"Providing this information to the application developers can help diagnose "
+"any problems you encounter when you report an issue."
+msgstr ""
+
+#: src/adw-about-window.ui:566
+msgid "_Debugging Information"
+msgstr "_Informacions de desbugatge"
+
+#: src/adw-about-window.ui:601
+msgid "Credits"
+msgstr "Crèdits"
+
+#: src/adw-about-window.ui:648
+msgid "Legal"
+msgstr "Avís legal"
+
+#: src/adw-about-window.ui:695
+msgid "Acknowledgements"
+msgstr "Mercejaments"
+
+#: src/adw-about-window.ui:742
+msgid "Debugging Information"
+msgstr "Informacions de desbugatge"
+
+#: src/adw-about-window.ui:790
+msgid "_Copy Text"
+msgstr "_Copiar lo tèxte"
+
+#: src/adw-about-window.ui:797
+msgid "_Save as…"
+msgstr "_Enregistrar jos…"
+
+#: src/adw-entry-row.ui:93
+msgid "Apply"
+msgstr "Aplicar"
 
-#: src/inspector/adw-inspector-page.c:76
+#: src/adw-inspector-page.c:76
 msgid "No Preference"
 msgstr "Cap de preferéncia"
 
-#: src/inspector/adw-inspector-page.c:78
+#: src/adw-inspector-page.c:78
 msgid "Prefer Dark"
 msgstr "Preferir lo tèma escur"
 
-#: src/inspector/adw-inspector-page.c:80
+#: src/adw-inspector-page.c:80
 msgid "Prefer Light"
 msgstr "Preferir lo tèma clar"
 
 #. Translators: The name of the library, not the stylesheet
-#: src/inspector/adw-inspector-page.c:98
+#: src/adw-inspector-page.c:98
 msgid "Adwaita"
 msgstr "Adwaita"
 
-#: src/inspector/adw-inspector-page.ui:10
+#: src/adw-inspector-page.ui:10
 msgid "System Appearance"
 msgstr "Aparéncia del sistèma"
 
-#: src/inspector/adw-inspector-page.ui:11
+#: src/adw-inspector-page.ui:11
 msgid ""
 "Override settings for this application. They will be reset upon closing the "
 "inspector."
@@ -66,14 +282,50 @@ msgstr ""
 "Subrecargar los paramètres per aquesta aplicacion. Seràn restablits en "
 "tampant l’inspector."
 
-#: src/inspector/adw-inspector-page.ui:14
+#: src/adw-inspector-page.ui:14
 msgid "System Supports Color Schemes"
 msgstr "Lo sistèma gerís los esquèmas de colors"
 
-#: src/inspector/adw-inspector-page.ui:26
+#: src/adw-inspector-page.ui:26
 msgid "Preferred Color Scheme"
 msgstr "Preferir l’esquèma de colors del sistèma"
 
-#: src/inspector/adw-inspector-page.ui:43
+#: src/adw-inspector-page.ui:43
 msgid "High Contrast"
 msgstr "Contraste elevat"
+
+#: src/adw-password-entry-row.c:71
+msgid "Hide Text"
+msgstr "Amagar lo tèxte"
+
+#: src/adw-password-entry-row.c:75
+msgid "Show Text"
+msgstr "Afichar lo tèxte"
+
+#: src/adw-password-entry-row.c:169
+msgid "Caps Lock is on"
+msgstr "Verr. maj. es activat"
+
+#: src/adw-password-entry-row.c:177
+msgid "_Show Text"
+msgstr "_Afichar lo tèxte"
+
+#: src/adw-preferences-window.c:242
+msgid "Untitled page"
+msgstr "Pagina sens títol"
+
+#: src/adw-preferences-window.ui:8
+msgid "Preferences"
+msgstr "Preferéncias"
+
+#: src/adw-preferences-window.ui:69
+msgid "Search"
+msgstr "Recercar"
+
+#: src/adw-preferences-window.ui:139
+msgid "No Results Found"
+msgstr "Cap de resultat pas trobat"
+
+#: src/adw-preferences-window.ui:140
+msgid "Try a different search."
+msgstr "Ensajatz una recèrca diferenta."
diff -pruN 1.2~alpha-1/po/POTFILES.in 1.2~beta-1/po/POTFILES.in
--- 1.2~alpha-1/po/POTFILES.in	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/POTFILES.in	2022-08-05 21:51:59.000000000 +0000
@@ -8,3 +8,4 @@ src/adw-inspector-page.ui
 src/adw-password-entry-row.c
 src/adw-preferences-window.c
 src/adw-preferences-window.ui
+src/adw-tab.ui
diff -pruN 1.2~alpha-1/po/pt.po 1.2~beta-1/po/pt.po
--- 1.2~alpha-1/po/pt.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/pt.po	2022-08-05 21:51:59.000000000 +0000
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libhandy master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-07-07 21:50+0000\n"
-"PO-Revision-Date: 2022-07-08 14:28+0100\n"
+"POT-Creation-Date: 2022-08-01 14:50+0000\n"
+"PO-Revision-Date: 2022-08-01 19:18+0100\n"
 "Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n"
 "Language-Team: Portuguese <https://l10n.gnome.org/teams/pt/>\n"
 "Language: pt\n"
@@ -17,96 +17,96 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.1\n"
+"X-Generator: Poedit 3.1.1\n"
 
-#: src/adw-about-window.c:205
+#: src/adw-about-window.c:203
 msgid "GNU General Public License, version 2 or later"
 msgstr "Licença Pública Geral GNU (GPL), versão 2 ou posterior"
 
-#: src/adw-about-window.c:206
+#: src/adw-about-window.c:204
 msgid "GNU General Public License, version 3 or later"
 msgstr "Licença Pública Geral GNU (GPL), versão 3 ou posterior"
 
-#: src/adw-about-window.c:207
+#: src/adw-about-window.c:205
 msgid "GNU Lesser General Public License, version 2.1 or later"
 msgstr "Licença Pública Geral Reduzida GNU (LGPL), versão 2.1 ou posterior"
 
-#: src/adw-about-window.c:208
+#: src/adw-about-window.c:206
 msgid "GNU Lesser General Public License, version 3 or later"
 msgstr "Licença Pública Geral Reduzida GNU (LGPL), versão 3 ou posterior"
 
-#: src/adw-about-window.c:209
+#: src/adw-about-window.c:207
 msgid "BSD 2-Clause License"
 msgstr "Licença BSD 2-Cláusulas"
 
-#: src/adw-about-window.c:210
+#: src/adw-about-window.c:208
 msgid "The MIT License (MIT)"
 msgstr "A Licença do MIT (MIT)"
 
-#: src/adw-about-window.c:211
+#: src/adw-about-window.c:209
 msgid "Artistic License 2.0"
 msgstr "Licença Artística 2.0"
 
-#: src/adw-about-window.c:212
+#: src/adw-about-window.c:210
 msgid "GNU General Public License, version 2 only"
 msgstr "Licença Pública Geral GNU (GPL), apenas versão 2"
 
-#: src/adw-about-window.c:213
+#: src/adw-about-window.c:211
 msgid "GNU General Public License, version 3 only"
 msgstr "Licença Pública Geral GNU (GPL), apenas versão 3"
 
-#: src/adw-about-window.c:214
+#: src/adw-about-window.c:212
 msgid "GNU Lesser General Public License, version 2.1 only"
 msgstr "Licença Pública Geral Reduzida GNU (LGPL), apenas versão 2.1"
 
-#: src/adw-about-window.c:215
+#: src/adw-about-window.c:213
 msgid "GNU Lesser General Public License, version 3 only"
 msgstr "Licença Pública Geral Reduzida GNU (LGPL), apenas versão 3"
 
-#: src/adw-about-window.c:216
+#: src/adw-about-window.c:214
 msgid "GNU Affero General Public License, version 3 or later"
 msgstr "Licença Pública Geral GNU Affero (GPL), versão 3 ou posterior"
 
-#: src/adw-about-window.c:217
+#: src/adw-about-window.c:215
 msgid "GNU Affero General Public License, version 3 only"
 msgstr "Licença Pública Geral GNU Affero (GPL), apenas versão 3"
 
-#: src/adw-about-window.c:218
+#: src/adw-about-window.c:216
 msgid "BSD 3-Clause License"
 msgstr "Licença BSD 3-Cláusulas"
 
-#: src/adw-about-window.c:219
+#: src/adw-about-window.c:217
 msgid "Apache License, Version 2.0"
 msgstr "Licença Apache, versão 2.0"
 
-#: src/adw-about-window.c:220
+#: src/adw-about-window.c:218
 msgid "Mozilla Public License 2.0"
 msgstr "Licença Pública Mozilla 2.0"
 
-#: src/adw-about-window.c:527
+#: src/adw-about-window.c:526
 msgid "Code by"
 msgstr "Código por"
 
-#: src/adw-about-window.c:528
+#: src/adw-about-window.c:527
 msgid "Design by"
 msgstr "Design por"
 
-#: src/adw-about-window.c:529
+#: src/adw-about-window.c:528
 msgid "Artwork by"
 msgstr "Arte gráfica por"
 
-#: src/adw-about-window.c:530
+#: src/adw-about-window.c:529
 msgid "Documentation by"
 msgstr "Documentação por"
 
-#: src/adw-about-window.c:531
+#: src/adw-about-window.c:530
 msgid "Translated by"
 msgstr "Traduzido por"
 
 #. Translators: this is the license preamble; the string at the end
 #. * contains the name of the license as link text.
 #.
-#: src/adw-about-window.c:558
+#: src/adw-about-window.c:559
 #, c-format
 msgid ""
 "This application comes with absolutely no warranty. See the <a href=\"%s\">"
@@ -115,45 +115,45 @@ msgstr ""
 "Esta aplicação vem sem absolutamente nenhuma garantia. Veja os <a href=\"%s"
 "\">%s</a> detalhes."
 
-#: src/adw-about-window.c:636
+#: src/adw-about-window.c:637
 msgid "This Application"
 msgstr "Esta aplicação"
 
-#: src/adw-about-window.c:933
+#: src/adw-about-window.c:939
 #, c-format
 msgid "Version %s"
 msgstr "Versão %s"
 
-#: src/adw-about-window.c:959
+#: src/adw-about-window.c:965
 msgid "Unable to parse release notes:"
 msgstr "Não foi possível analisar as notas de lançamento:"
 
-#: src/adw-about-window.c:965
+#: src/adw-about-window.c:971
 #, c-format
 msgid "Line: %d, character: %d"
 msgstr "Linha: %d, carácter: %d"
 
-#: src/adw-about-window.c:1234
+#: src/adw-about-window.c:1264
 msgid "Copied to clipboard"
 msgstr "Copiado para a área de transferência"
 
-#: src/adw-about-window.c:1269
+#: src/adw-about-window.c:1299
 msgid "Unable to save debugging information"
 msgstr "Não foi possível guardar a informação de depuração"
 
-#: src/adw-about-window.c:1274
+#: src/adw-about-window.c:1304
 msgid "Close"
 msgstr "Fechar"
 
-#: src/adw-about-window.c:1292
+#: src/adw-about-window.c:1322
 msgid "Save debugging information"
 msgstr "Guardar informação de depuração"
 
-#: src/adw-about-window.c:1295
+#: src/adw-about-window.c:1325
 msgid "_Save"
 msgstr "_Guardar"
 
-#: src/adw-about-window.c:1296
+#: src/adw-about-window.c:1326
 msgid "_Cancel"
 msgstr "_Cancelar"
 
@@ -161,62 +161,62 @@ msgstr "_Cancelar"
 msgid "About"
 msgstr "Acerca"
 
-#: src/adw-about-window.ui:121
+#: src/adw-about-window.ui:123
 msgid "_What’s New"
 msgstr "_Novidades"
 
-#: src/adw-about-window.ui:140
+#: src/adw-about-window.ui:138
 msgid "_Details"
 msgstr "_Detalhes"
 
-#: src/adw-about-window.ui:162 src/adw-about-window.ui:487
+#: src/adw-about-window.ui:153 src/adw-about-window.ui:395
 msgid "_Website"
 msgstr "_Página web"
 
-#: src/adw-about-window.ui:193
+#: src/adw-about-window.ui:176
 msgid "_Support Questions"
 msgstr "Perguntas de _suporte"
 
-#: src/adw-about-window.ui:215
+#: src/adw-about-window.ui:192
 msgid "_Report an Issue"
 msgstr "_Reportar um problema"
 
-#: src/adw-about-window.ui:236
+#: src/adw-about-window.ui:207
 msgid "_Troubleshooting"
 msgstr "Resolução de _problemas"
 
-#: src/adw-about-window.ui:267
+#: src/adw-about-window.ui:226
 msgid "_Credits"
 msgstr "_Créditos"
 
-#: src/adw-about-window.ui:284
+#: src/adw-about-window.ui:241
 msgid "_Legal"
 msgstr "Aviso _legal"
 
-#: src/adw-about-window.ui:301
+#: src/adw-about-window.ui:256
 msgid "_Acknowledgements"
 msgstr "_Agradecimentos"
 
-#: src/adw-about-window.ui:381
+#: src/adw-about-window.ui:295
 msgid "What’s New"
 msgstr "Novidades"
 
-#: src/adw-about-window.ui:386 src/adw-about-window.ui:442
-#: src/adw-about-window.ui:531 src/adw-about-window.ui:606
-#: src/adw-about-window.ui:653 src/adw-about-window.ui:700
-#: src/adw-about-window.ui:747
+#: src/adw-about-window.ui:300 src/adw-about-window.ui:356
+#: src/adw-about-window.ui:437 src/adw-about-window.ui:512
+#: src/adw-about-window.ui:559 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653
 msgid "Back"
 msgstr "Recuar"
 
-#: src/adw-about-window.ui:437
+#: src/adw-about-window.ui:351
 msgid "Details"
 msgstr "Detalhes"
 
-#: src/adw-about-window.ui:526
+#: src/adw-about-window.ui:432
 msgid "Troubleshooting"
 msgstr "Resolução de problemas"
 
-#: src/adw-about-window.ui:555
+#: src/adw-about-window.ui:461
 msgid ""
 "To assist in troubleshooting, you can view your debugging information. "
 "Providing this information to the application developers can help diagnose "
@@ -227,31 +227,31 @@ msgstr ""
 "pode ajudar a diagnosticar quaisquer problemas que encontre ao reportar um "
 "problema."
 
-#: src/adw-about-window.ui:566
+#: src/adw-about-window.ui:472
 msgid "_Debugging Information"
 msgstr "Informação de _depuração"
 
-#: src/adw-about-window.ui:601
+#: src/adw-about-window.ui:507
 msgid "Credits"
 msgstr "Créditos"
 
-#: src/adw-about-window.ui:648
+#: src/adw-about-window.ui:554
 msgid "Legal"
 msgstr "Aviso legal"
 
-#: src/adw-about-window.ui:695
+#: src/adw-about-window.ui:601
 msgid "Acknowledgements"
 msgstr "Agradecimentos"
 
-#: src/adw-about-window.ui:742
+#: src/adw-about-window.ui:648
 msgid "Debugging Information"
 msgstr "Informação de depuração"
 
-#: src/adw-about-window.ui:790
+#: src/adw-about-window.ui:696
 msgid "_Copy Text"
 msgstr "_Copiar texto"
 
-#: src/adw-about-window.ui:797
+#: src/adw-about-window.ui:703
 msgid "_Save as…"
 msgstr "_Guardar como…"
 
@@ -336,6 +336,10 @@ msgstr "Nenhum resultado encontrado"
 msgid "Try a different search."
 msgstr "Tente uma pesquisa diferente."
 
+#: src/adw-tab.ui:88
+msgid "Close Tab"
+msgstr "Fechar separador"
+
 #~ msgid "This property does not apply when a custom title is set"
 #~ msgstr ""
 #~ "Esta propriedade não se aplica quando está definido um título "
diff -pruN 1.2~alpha-1/po/ru.po 1.2~beta-1/po/ru.po
--- 1.2~alpha-1/po/ru.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/ru.po	2022-08-05 21:51:59.000000000 +0000
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libadwaita main\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-07-07 16:52+0000\n"
-"PO-Revision-Date: 2022-07-07 22:18+0300\n"
+"POT-Creation-Date: 2022-08-01 14:50+0000\n"
+"PO-Revision-Date: 2022-08-01 18:26+0300\n"
 "Last-Translator: Aleksandr Melman <Alexmelman88@gmail.com>\n"
 "Language-Team: Russian <gnome-cyr@gnome.org>\n"
 "Language: ru\n"
@@ -17,96 +17,96 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 3.0.1\n"
+"X-Generator: Poedit 3.1\n"
 
-#: src/adw-about-window.c:205
+#: src/adw-about-window.c:203
 msgid "GNU General Public License, version 2 or later"
 msgstr "GNU General Public License, версии 2 или позднее"
 
-#: src/adw-about-window.c:206
+#: src/adw-about-window.c:204
 msgid "GNU General Public License, version 3 or later"
 msgstr "GNU General Public License, версии 3 или позднее"
 
-#: src/adw-about-window.c:207
+#: src/adw-about-window.c:205
 msgid "GNU Lesser General Public License, version 2.1 or later"
 msgstr "GNU Lesser General Public License, версии 2.1 или позднее"
 
-#: src/adw-about-window.c:208
+#: src/adw-about-window.c:206
 msgid "GNU Lesser General Public License, version 3 or later"
 msgstr "GNU Lesser General Public License, версии 3 или позднее"
 
-#: src/adw-about-window.c:209
+#: src/adw-about-window.c:207
 msgid "BSD 2-Clause License"
 msgstr "BSD 2-Clause License"
 
-#: src/adw-about-window.c:210
+#: src/adw-about-window.c:208
 msgid "The MIT License (MIT)"
 msgstr "The MIT License (MIT)"
 
-#: src/adw-about-window.c:211
+#: src/adw-about-window.c:209
 msgid "Artistic License 2.0"
 msgstr "Artistic License 2.0"
 
-#: src/adw-about-window.c:212
+#: src/adw-about-window.c:210
 msgid "GNU General Public License, version 2 only"
 msgstr "GNU General Public License, только версии 2"
 
-#: src/adw-about-window.c:213
+#: src/adw-about-window.c:211
 msgid "GNU General Public License, version 3 only"
 msgstr "GNU General Public License, только версии 3"
 
-#: src/adw-about-window.c:214
+#: src/adw-about-window.c:212
 msgid "GNU Lesser General Public License, version 2.1 only"
 msgstr "GNU Lesser General Public License, только версии 2.1"
 
-#: src/adw-about-window.c:215
+#: src/adw-about-window.c:213
 msgid "GNU Lesser General Public License, version 3 only"
 msgstr "GNU Lesser General Public License, только версии 3"
 
-#: src/adw-about-window.c:216
+#: src/adw-about-window.c:214
 msgid "GNU Affero General Public License, version 3 or later"
 msgstr "GNU Affero General Public License, версии 3 или позднее"
 
-#: src/adw-about-window.c:217
+#: src/adw-about-window.c:215
 msgid "GNU Affero General Public License, version 3 only"
 msgstr "GNU Affero General Public License, только версии 3"
 
-#: src/adw-about-window.c:218
+#: src/adw-about-window.c:216
 msgid "BSD 3-Clause License"
 msgstr "BSD 3-Clause License"
 
-#: src/adw-about-window.c:219
+#: src/adw-about-window.c:217
 msgid "Apache License, Version 2.0"
 msgstr "Apache License, версии 2.0"
 
-#: src/adw-about-window.c:220
+#: src/adw-about-window.c:218
 msgid "Mozilla Public License 2.0"
 msgstr "Mozilla Public License 2.0"
 
-#: src/adw-about-window.c:527
+#: src/adw-about-window.c:526
 msgid "Code by"
 msgstr "Код"
 
-#: src/adw-about-window.c:528
+#: src/adw-about-window.c:527
 msgid "Design by"
 msgstr "Проект"
 
-#: src/adw-about-window.c:529
+#: src/adw-about-window.c:528
 msgid "Artwork by"
 msgstr "Художественная работа"
 
-#: src/adw-about-window.c:530
+#: src/adw-about-window.c:529
 msgid "Documentation by"
 msgstr "Документация"
 
-#: src/adw-about-window.c:531
+#: src/adw-about-window.c:530
 msgid "Translated by"
 msgstr "Перевод"
 
 #. Translators: this is the license preamble; the string at the end
 #. * contains the name of the license as link text.
 #.
-#: src/adw-about-window.c:558
+#: src/adw-about-window.c:559
 #, c-format
 msgid ""
 "This application comes with absolutely no warranty. See the <a "
@@ -115,45 +115,45 @@ msgstr ""
 "Это приложение распространяется без каких-либо гарантий. Подробнее в <a "
 "href=\"%s\">%s</a>."
 
-#: src/adw-about-window.c:636
+#: src/adw-about-window.c:637
 msgid "This Application"
 msgstr "Данное приложение"
 
-#: src/adw-about-window.c:933
+#: src/adw-about-window.c:939
 #, c-format
 msgid "Version %s"
 msgstr "Версия %s"
 
-#: src/adw-about-window.c:959
+#: src/adw-about-window.c:965
 msgid "Unable to parse release notes:"
 msgstr "Невозможно разобрать примечания к выпуску:"
 
-#: src/adw-about-window.c:965
+#: src/adw-about-window.c:971
 #, c-format
 msgid "Line: %d, character: %d"
 msgstr "Строка: %d, символ: %d"
 
-#: src/adw-about-window.c:1234
+#: src/adw-about-window.c:1264
 msgid "Copied to clipboard"
 msgstr "Скопировано в буфер обмена"
 
-#: src/adw-about-window.c:1269
+#: src/adw-about-window.c:1299
 msgid "Unable to save debugging information"
 msgstr "Невозможно сохранить отладочную информацию"
 
-#: src/adw-about-window.c:1274
+#: src/adw-about-window.c:1304
 msgid "Close"
 msgstr "Закрыть"
 
-#: src/adw-about-window.c:1292
+#: src/adw-about-window.c:1322
 msgid "Save debugging information"
 msgstr "Сохранить отладочную информацию"
 
-#: src/adw-about-window.c:1295
+#: src/adw-about-window.c:1325
 msgid "_Save"
 msgstr "_Сохранить"
 
-#: src/adw-about-window.c:1296
+#: src/adw-about-window.c:1326
 msgid "_Cancel"
 msgstr "_Отменить"
 
@@ -161,62 +161,62 @@ msgstr "_Отменить"
 msgid "About"
 msgstr "О программе"
 
-#: src/adw-about-window.ui:121
+#: src/adw-about-window.ui:123
 msgid "_What’s New"
 msgstr "_Что нового"
 
-#: src/adw-about-window.ui:140
+#: src/adw-about-window.ui:138
 msgid "_Details"
 msgstr "_Подробности"
 
-#: src/adw-about-window.ui:162 src/adw-about-window.ui:487
+#: src/adw-about-window.ui:153 src/adw-about-window.ui:395
 msgid "_Website"
 msgstr "_Веб-сайт"
 
-#: src/adw-about-window.ui:193
+#: src/adw-about-window.ui:176
 msgid "_Support Questions"
 msgstr "_Вопросы поддержки"
 
-#: src/adw-about-window.ui:215
+#: src/adw-about-window.ui:192
 msgid "_Report an Issue"
 msgstr "_Сообщить о проблеме"
 
-#: src/adw-about-window.ui:236
+#: src/adw-about-window.ui:207
 msgid "_Troubleshooting"
 msgstr "_Устранение неполадок"
 
-#: src/adw-about-window.ui:267
+#: src/adw-about-window.ui:226
 msgid "_Credits"
 msgstr "_Участники"
 
-#: src/adw-about-window.ui:284
+#: src/adw-about-window.ui:241
 msgid "_Legal"
 msgstr "_Правовые сведения"
 
-#: src/adw-about-window.ui:301
+#: src/adw-about-window.ui:256
 msgid "_Acknowledgements"
 msgstr "_Благодарности"
 
-#: src/adw-about-window.ui:381
+#: src/adw-about-window.ui:295
 msgid "What’s New"
 msgstr "Что нового"
 
-#: src/adw-about-window.ui:386 src/adw-about-window.ui:442
-#: src/adw-about-window.ui:531 src/adw-about-window.ui:606
-#: src/adw-about-window.ui:653 src/adw-about-window.ui:700
-#: src/adw-about-window.ui:747
+#: src/adw-about-window.ui:300 src/adw-about-window.ui:356
+#: src/adw-about-window.ui:437 src/adw-about-window.ui:512
+#: src/adw-about-window.ui:559 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653
 msgid "Back"
 msgstr "Назад"
 
-#: src/adw-about-window.ui:437
+#: src/adw-about-window.ui:351
 msgid "Details"
 msgstr "Подробности"
 
-#: src/adw-about-window.ui:526
+#: src/adw-about-window.ui:432
 msgid "Troubleshooting"
 msgstr "Устранение неполадок"
 
-#: src/adw-about-window.ui:555
+#: src/adw-about-window.ui:461
 msgid ""
 "To assist in troubleshooting, you can view your debugging information. "
 "Providing this information to the application developers can help diagnose "
@@ -227,31 +227,31 @@ msgstr ""
 "помочь диагностировать любые проблемы, с которыми вы сталкиваетесь, когда "
 "сообщаете о проблеме."
 
-#: src/adw-about-window.ui:566
+#: src/adw-about-window.ui:472
 msgid "_Debugging Information"
 msgstr "_Отладочная информация"
 
-#: src/adw-about-window.ui:601
+#: src/adw-about-window.ui:507
 msgid "Credits"
 msgstr "Участники"
 
-#: src/adw-about-window.ui:648
+#: src/adw-about-window.ui:554
 msgid "Legal"
 msgstr "Правовые сведения"
 
-#: src/adw-about-window.ui:695
+#: src/adw-about-window.ui:601
 msgid "Acknowledgements"
 msgstr "Благодарности"
 
-#: src/adw-about-window.ui:742
+#: src/adw-about-window.ui:648
 msgid "Debugging Information"
 msgstr "Отладочная информация"
 
-#: src/adw-about-window.ui:790
+#: src/adw-about-window.ui:696
 msgid "_Copy Text"
 msgstr "_Копировать текст"
 
-#: src/adw-about-window.ui:797
+#: src/adw-about-window.ui:703
 msgid "_Save as…"
 msgstr "_Сохранить как…"
 
@@ -335,3 +335,7 @@ msgstr "Результатов не на
 #: src/adw-preferences-window.ui:140
 msgid "Try a different search."
 msgstr "Попробуйте другой поисковый запрос."
+
+#: src/adw-tab.ui:88
+msgid "Close Tab"
+msgstr "Закрыть вкладку"
diff -pruN 1.2~alpha-1/po/tr.po 1.2~beta-1/po/tr.po
--- 1.2~alpha-1/po/tr.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/tr.po	2022-08-05 21:51:59.000000000 +0000
@@ -1,23 +1,261 @@
 # Turkish translation for libadwaita.
+#
 # Copyright (C) 2021 libadwaita's COPYRIGHT HOLDER
 # This file is distributed under the same license as the libadwaita package.
+#
 # Muhammet Kara <muhammetk@gmail.com>, 2021.
 # Emin Tufan Çetin <etcetin@gmail.com>, 2022.
+# Sabri Ünal <libreajans@gmail.com>, 2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: libadwaita main\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-04-24 07:08+0000\n"
-"PO-Revision-Date: 2022-04-27 00:30+0300\n"
+"POT-Creation-Date: 2022-07-10 21:59+0000\n"
+"PO-Revision-Date: 2022-07-16 01:19+0300\n"
 "Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
 "Language-Team: Turkish <gnometurk@gnome.org>\n"
 "Language: tr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
-"X-Generator: Gtranslator 40.0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.1\n"
+
+#: src/adw-about-window.c:203
+msgid "GNU General Public License, version 2 or later"
+msgstr "GNU Genel Kamu Lisansı, sürüm 2 ya da sonrası"
+
+#: src/adw-about-window.c:204
+msgid "GNU General Public License, version 3 or later"
+msgstr "GNU Genel Kamu Lisansı, sürüm 3 ya da sonrası"
+
+#: src/adw-about-window.c:205
+msgid "GNU Lesser General Public License, version 2.1 or later"
+msgstr "Kısıtlı GNU Genel Kamu Lisansı, sürüm 2.1 ya da sonrası"
+
+#: src/adw-about-window.c:206
+msgid "GNU Lesser General Public License, version 3 or later"
+msgstr "Kısıtlı GNU Genel Kamu Lisansı, sürüm 3 ya da sonrası"
+
+#: src/adw-about-window.c:207
+msgid "BSD 2-Clause License"
+msgstr "BSD 2-Clause Lisansı"
+
+#: src/adw-about-window.c:208
+msgid "The MIT License (MIT)"
+msgstr "MIT Lisansı (MIT)"
+
+#: src/adw-about-window.c:209
+msgid "Artistic License 2.0"
+msgstr "Sanatsal Lisans 2.0"
+
+#: src/adw-about-window.c:210
+msgid "GNU General Public License, version 2 only"
+msgstr "GNU Genel Kamu Lisansı, yalnızca sürüm 2"
+
+#: src/adw-about-window.c:211
+msgid "GNU General Public License, version 3 only"
+msgstr "GNU Genel Kamu Lisansı, yalnızca sürüm 3"
+
+#: src/adw-about-window.c:212
+msgid "GNU Lesser General Public License, version 2.1 only"
+msgstr "GNU Kısıtlı Genel Kamu Lisansı, yalnızca sürüm 2.1"
+
+#: src/adw-about-window.c:213
+msgid "GNU Lesser General Public License, version 3 only"
+msgstr "GNU Kısıtlı Genel Kamu Lisansı, yalnızca sürüm 3"
+
+#: src/adw-about-window.c:214
+msgid "GNU Affero General Public License, version 3 or later"
+msgstr "GNU Affero Genel Kamu Lisansı, sürüm 3 ya da sonrası"
+
+#: src/adw-about-window.c:215
+msgid "GNU Affero General Public License, version 3 only"
+msgstr "GNU Affero Genel Kamu Lisansı, yalnızca sürüm 3"
+
+#: src/adw-about-window.c:216
+msgid "BSD 3-Clause License"
+msgstr "BSD 3-Clause Lisansı"
+
+#: src/adw-about-window.c:217
+msgid "Apache License, Version 2.0"
+msgstr "Apache Lisansı, Sürüm 2.0"
+
+#: src/adw-about-window.c:218
+msgid "Mozilla Public License 2.0"
+msgstr "Mozilla Kamu Lisansı 2.0"
+
+#: src/adw-about-window.c:519
+msgid "Code by"
+msgstr "Kodlayan"
+
+#: src/adw-about-window.c:520
+msgid "Design by"
+msgstr "Tasarlayan"
+
+#: src/adw-about-window.c:521
+msgid "Artwork by"
+msgstr "Grafikler"
+
+#: src/adw-about-window.c:522
+msgid "Documentation by"
+msgstr "Belgelendiren"
+
+#: src/adw-about-window.c:523
+msgid "Translated by"
+msgstr "Çeviren"
+
+#. Translators: this is the license preamble; the string at the end
+#. * contains the name of the license as link text.
+#.
+#: src/adw-about-window.c:550
+#, c-format
+msgid ""
+"This application comes with absolutely no warranty. See the <a href=\"%s\">"
+"%s</a> for details."
+msgstr ""
+"Bu program kesinlikle hiçbir garanti vermiyor. Ayrıntılar için <a href=\"%s\">"
+"%s</a> bağlantısına bakın."
+
+#: src/adw-about-window.c:628
+msgid "This Application"
+msgstr "Uygulama"
+
+#: src/adw-about-window.c:925
+#, c-format
+msgid "Version %s"
+msgstr "Sürüm %s"
+
+#: src/adw-about-window.c:951
+msgid "Unable to parse release notes:"
+msgstr "Sürüm notları ayrıştırılamadı:"
+
+#: src/adw-about-window.c:957
+#, c-format
+msgid "Line: %d, character: %d"
+msgstr "Satır: %d, karakter: %d"
+
+#: src/adw-about-window.c:1227
+msgid "Copied to clipboard"
+msgstr "Panoya kopyalandı"
+
+#: src/adw-about-window.c:1262
+msgid "Unable to save debugging information"
+msgstr "Hata ayıklama bilgisi kaydedilemedi"
+
+#: src/adw-about-window.c:1267
+msgid "Close"
+msgstr "Kapat"
+
+#: src/adw-about-window.c:1285
+msgid "Save debugging information"
+msgstr "Hata ayıklama bilgisini kaydet"
+
+#: src/adw-about-window.c:1288
+msgid "_Save"
+msgstr "_Kaydet"
+
+#: src/adw-about-window.c:1289
+msgid "_Cancel"
+msgstr "İptal _Et"
+
+#: src/adw-about-window.ui:5
+msgid "About"
+msgstr "Hakkında"
+
+#: src/adw-about-window.ui:160
+msgid "_What’s New"
+msgstr "Ye_nilikler"
+
+#: src/adw-about-window.ui:179
+msgid "_Details"
+msgstr "_Ayrıntılar"
+
+#: src/adw-about-window.ui:201 src/adw-about-window.ui:487
+msgid "_Website"
+msgstr "_Web Sitesi"
+
+#: src/adw-about-window.ui:232
+msgid "_Support Questions"
+msgstr "_Destek Soruları"
+
+#: src/adw-about-window.ui:254
+msgid "_Report an Issue"
+msgstr "Sorun _Bildir"
+
+#: src/adw-about-window.ui:275
+msgid "_Troubleshooting"
+msgstr "_Sorun Giderme"
+
+#: src/adw-about-window.ui:306
+msgid "_Credits"
+msgstr "_Oluşturanlar"
+
+#: src/adw-about-window.ui:323
+msgid "_Legal"
+msgstr "_Yasal"
+
+#: src/adw-about-window.ui:340
+msgid "_Acknowledgements"
+msgstr "_Teşekkürler"
+
+#: src/adw-about-window.ui:381
+msgid "What’s New"
+msgstr "Yenilikler"
+
+#: src/adw-about-window.ui:386 src/adw-about-window.ui:442
+#: src/adw-about-window.ui:531 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653 src/adw-about-window.ui:700
+#: src/adw-about-window.ui:747
+msgid "Back"
+msgstr "Geri"
+
+#: src/adw-about-window.ui:437
+msgid "Details"
+msgstr "Ayrıntılar"
+
+#: src/adw-about-window.ui:526
+msgid "Troubleshooting"
+msgstr "Sorun Giderme"
+
+#: src/adw-about-window.ui:555
+msgid ""
+"To assist in troubleshooting, you can view your debugging information. "
+"Providing this information to the application developers can help diagnose "
+"any problems you encounter when you report an issue."
+msgstr ""
+"Sorun gidermeye yardımcı olmak için hata ayıklama bilginizi görüntüleyebilirsiniz. "
+"Bu bilgiyi sorun bildirirken uygulama geliştiricilerine vermeniz durumunda "
+"sorunların saptanmasına yardımcı olursunuz."
+
+#: src/adw-about-window.ui:566
+msgid "_Debugging Information"
+msgstr "_Hata Ayıklama Bilgisi"
+
+#: src/adw-about-window.ui:601
+msgid "Credits"
+msgstr "Oluşturanlar"
+
+#: src/adw-about-window.ui:648
+msgid "Legal"
+msgstr "Yasal"
+
+#: src/adw-about-window.ui:695
+msgid "Acknowledgements"
+msgstr "Teşekkürler"
+
+#: src/adw-about-window.ui:742
+msgid "Debugging Information"
+msgstr "Hata Ayıklama Bilgisi"
+
+#: src/adw-about-window.ui:790
+msgid "_Copy Text"
+msgstr "_Metni Kopyala"
+
+#: src/adw-about-window.ui:797
+msgid "_Save as…"
+msgstr "Farklı K_aydet"
 
 #: src/adw-entry-row.ui:93
 msgid "Apply"
@@ -25,7 +263,7 @@ msgstr "Uygula"
 
 #: src/adw-inspector-page.c:76
 msgid "No Preference"
-msgstr "Tercih Yok"
+msgstr "Yeğsiz"
 
 #: src/adw-inspector-page.c:78
 msgid "Prefer Dark"
@@ -71,11 +309,11 @@ msgstr "Yazıyı Gizle"
 msgid "Show Text"
 msgstr "Yazıyı Göster"
 
-#: src/adw-password-entry-row.c:168
+#: src/adw-password-entry-row.c:169
 msgid "Caps Lock is on"
 msgstr "Caps Lock açık"
 
-#: src/adw-password-entry-row.c:176
+#: src/adw-password-entry-row.c:177
 msgid "_Show Text"
 msgstr "Yazıyı _Göster"
 
diff -pruN 1.2~alpha-1/po/uk.po 1.2~beta-1/po/uk.po
--- 1.2~alpha-1/po/uk.po	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/po/uk.po	2022-08-05 21:51:59.000000000 +0000
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libhandy master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n"
-"POT-Creation-Date: 2022-07-07 15:38+0000\n"
-"PO-Revision-Date: 2022-07-07 19:52+0300\n"
+"POT-Creation-Date: 2022-08-01 14:50+0000\n"
+"PO-Revision-Date: 2022-08-02 14:41+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
 "Language: uk\n"
@@ -19,144 +19,143 @@ msgstr ""
 "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 "X-Generator: Lokalize 20.12.0\n"
 
-#: src/adw-about-window.c:205
+#: src/adw-about-window.c:203
 msgid "GNU General Public License, version 2 or later"
 msgstr "Загальна громадська ліцензія GNU (GNU GPL), версія 2 або новіша"
 
-#: src/adw-about-window.c:206
+#: src/adw-about-window.c:204
 msgid "GNU General Public License, version 3 or later"
 msgstr "Загальна громадська ліцензія GNU (GNU GPL), версія 3 або новіша"
 
-#: src/adw-about-window.c:207
+#: src/adw-about-window.c:205
 msgid "GNU Lesser General Public License, version 2.1 or later"
 msgstr ""
 "Звужена загальна громадська ліцензія GNU (GNU LGPL), версія 2.1 або новіша"
 
-#: src/adw-about-window.c:208
+#: src/adw-about-window.c:206
 msgid "GNU Lesser General Public License, version 3 or later"
 msgstr ""
 "Звужена загальна громадська ліцензія GNU (GNU LGPL), версія 3 або новіша"
 
-#: src/adw-about-window.c:209
+#: src/adw-about-window.c:207
 msgid "BSD 2-Clause License"
 msgstr "Спрощена (2-Clause) ліцензія BSD"
 
-#: src/adw-about-window.c:210
+#: src/adw-about-window.c:208
 msgid "The MIT License (MIT)"
 msgstr "Ліцензія MIT (MIT)"
 
-#: src/adw-about-window.c:211
+#: src/adw-about-window.c:209
 msgid "Artistic License 2.0"
 msgstr "Артистична ліцензія 2.0"
 
-#: src/adw-about-window.c:212
+#: src/adw-about-window.c:210
 msgid "GNU General Public License, version 2 only"
 msgstr "Загальна громадська ліцензія GNU (GNU GPL), лише версії 2"
 
-#: src/adw-about-window.c:213
+#: src/adw-about-window.c:211
 msgid "GNU General Public License, version 3 only"
 msgstr "Загальна громадська ліцензія GNU (GNU GPL), лише версії 3"
 
-#: src/adw-about-window.c:214
+#: src/adw-about-window.c:212
 msgid "GNU Lesser General Public License, version 2.1 only"
 msgstr "Скорочена загальна громадська ліцензія GNU, лише версії 2.1"
 
-#: src/adw-about-window.c:215
+#: src/adw-about-window.c:213
 msgid "GNU Lesser General Public License, version 3 only"
 msgstr "Скорочена загальна громадська ліцензія GNU, лише версії 3"
 
-#: src/adw-about-window.c:216
+#: src/adw-about-window.c:214
 msgid "GNU Affero General Public License, version 3 or later"
 msgstr "Звужена загальна громадська ліцензія GNU Affero, версія 3 або новіша"
 
-#: src/adw-about-window.c:217
+#: src/adw-about-window.c:215
 msgid "GNU Affero General Public License, version 3 only"
 msgstr "Загальна громадська ліцензія Affero GNU (GNU GPL), лише версії 3"
 
-#: src/adw-about-window.c:218
+#: src/adw-about-window.c:216
 msgid "BSD 3-Clause License"
 msgstr "Спрощена (3-Clause) ліцензія BSD"
 
-#: src/adw-about-window.c:219
+#: src/adw-about-window.c:217
 msgid "Apache License, Version 2.0"
 msgstr "Ліцензія Apache, версія 2.0"
 
-#: src/adw-about-window.c:220
+#: src/adw-about-window.c:218
 msgid "Mozilla Public License 2.0"
 msgstr "Громадська ліцензія Mozilla 2.0"
 
-#: src/adw-about-window.c:527
+#: src/adw-about-window.c:526
 msgid "Code by"
 msgstr "Програмний код"
 
-#: src/adw-about-window.c:528
+#: src/adw-about-window.c:527
 msgid "Design by"
 msgstr "Дизайн"
 
-#: src/adw-about-window.c:529
+#: src/adw-about-window.c:528
 msgid "Artwork by"
 msgstr "Графіка"
 
-#: src/adw-about-window.c:530
+#: src/adw-about-window.c:529
 msgid "Documentation by"
 msgstr "Документація"
 
-#: src/adw-about-window.c:531
+#: src/adw-about-window.c:530
 msgid "Translated by"
 msgstr "Переклад"
 
 #. Translators: this is the license preamble; the string at the end
 #. * contains the name of the license as link text.
 #.
-#: src/adw-about-window.c:558
+#: src/adw-about-window.c:559
 #, c-format
 msgid ""
 "This application comes with absolutely no warranty. See the <a href=\"%s\">"
 "%s</a> for details."
 msgstr ""
-"Ця програма постачається БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ. Щоб дізнатися більше,"
-" відвідайте <a href=\"%s\">%s</a>."
+"Ця програма постачається БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ. Щоб дізнатися більше, "
+"відвідайте <a href=\"%s\">%s</a>."
 
-#: src/adw-about-window.c:636
-#| msgid "Application menu"
+#: src/adw-about-window.c:637
 msgid "This Application"
 msgstr "Ця програма"
 
-#: src/adw-about-window.c:933
+#: src/adw-about-window.c:939
 #, c-format
 msgid "Version %s"
 msgstr "Версія %s"
 
-#: src/adw-about-window.c:959
+#: src/adw-about-window.c:965
 msgid "Unable to parse release notes:"
 msgstr "Не вдалося обробити нотатки щодо випуску:"
 
-#: src/adw-about-window.c:965
+#: src/adw-about-window.c:971
 #, c-format
 msgid "Line: %d, character: %d"
 msgstr "Рядок: %d, символ: %d"
 
-#: src/adw-about-window.c:1234
+#: src/adw-about-window.c:1264
 msgid "Copied to clipboard"
 msgstr "Скопійовано до буфера обміну"
 
-#: src/adw-about-window.c:1269
+#: src/adw-about-window.c:1299
 msgid "Unable to save debugging information"
 msgstr "Не вдалося зберегти діагностичні дані"
 
-#: src/adw-about-window.c:1274
+#: src/adw-about-window.c:1304
 msgid "Close"
 msgstr "Закрити"
 
-#: src/adw-about-window.c:1292
+#: src/adw-about-window.c:1322
 msgid "Save debugging information"
 msgstr "Зберегти діагностичні дані"
 
-#: src/adw-about-window.c:1295
+#: src/adw-about-window.c:1325
 msgid "_Save"
 msgstr "З_берегти"
 
-#: src/adw-about-window.c:1296
+#: src/adw-about-window.c:1326
 msgid "_Cancel"
 msgstr "_Скасувати"
 
@@ -164,97 +163,96 @@ msgstr "_Скасувати"
 msgid "About"
 msgstr "Про програму"
 
-#: src/adw-about-window.ui:121
+#: src/adw-about-window.ui:123
 msgid "_What’s New"
 msgstr "_Що нового"
 
-#: src/adw-about-window.ui:140
+#: src/adw-about-window.ui:138
 msgid "_Details"
 msgstr "Подро_биці"
 
-#: src/adw-about-window.ui:162 src/adw-about-window.ui:487
+#: src/adw-about-window.ui:153 src/adw-about-window.ui:395
 msgid "_Website"
 msgstr "_Сайт"
 
-#: src/adw-about-window.ui:193
+#: src/adw-about-window.ui:176
 msgid "_Support Questions"
 msgstr "П_итання супроводу"
 
-#: src/adw-about-window.ui:215
+#: src/adw-about-window.ui:192
 msgid "_Report an Issue"
 msgstr "По_відомити про ваду"
 
-#: src/adw-about-window.ui:236
+#: src/adw-about-window.ui:207
 msgid "_Troubleshooting"
 msgstr "_Усунення проблем"
 
-#: src/adw-about-window.ui:267
+#: src/adw-about-window.ui:226
 msgid "_Credits"
 msgstr "_Подяки"
 
-#: src/adw-about-window.ui:284
+#: src/adw-about-window.ui:241
 msgid "_Legal"
 msgstr "_Юридичні відомості"
 
-#: src/adw-about-window.ui:301
+#: src/adw-about-window.ui:256
 msgid "_Acknowledgements"
 msgstr "_Відомості"
 
-#: src/adw-about-window.ui:381
+#: src/adw-about-window.ui:295
 msgid "What’s New"
 msgstr "Що нового?"
 
-#: src/adw-about-window.ui:386 src/adw-about-window.ui:442
-#: src/adw-about-window.ui:531 src/adw-about-window.ui:606
-#: src/adw-about-window.ui:653 src/adw-about-window.ui:700
-#: src/adw-about-window.ui:747
+#: src/adw-about-window.ui:300 src/adw-about-window.ui:356
+#: src/adw-about-window.ui:437 src/adw-about-window.ui:512
+#: src/adw-about-window.ui:559 src/adw-about-window.ui:606
+#: src/adw-about-window.ui:653
 msgid "Back"
 msgstr "Назад"
 
-#: src/adw-about-window.ui:437
+#: src/adw-about-window.ui:351
 msgid "Details"
 msgstr "Подробиці"
 
-#: src/adw-about-window.ui:526
+#: src/adw-about-window.ui:432
 msgid "Troubleshooting"
 msgstr "Усунення проблем"
 
-#: src/adw-about-window.ui:555
+#: src/adw-about-window.ui:461
 msgid ""
 "To assist in troubleshooting, you can view your debugging information. "
 "Providing this information to the application developers can help diagnose "
 "any problems you encounter when you report an issue."
 msgstr ""
-"Щоб полегшити усування проблем, ви можете переглянути діагностичні дані."
-" Надання цих даних розробникам програм у вашому звіті щодо вади може"
-" допомогти у визначенні джерела проблеми, з якою ви зіткнулися."
+"Щоб полегшити усування проблем, ви можете переглянути діагностичні дані. "
+"Надання цих даних розробникам програм у вашому звіті щодо вади може "
+"допомогти у визначенні джерела проблеми, з якою ви зіткнулися."
 
-#: src/adw-about-window.ui:566
+#: src/adw-about-window.ui:472
 msgid "_Debugging Information"
 msgstr "_Діагностичні дані"
 
-#: src/adw-about-window.ui:601
+#: src/adw-about-window.ui:507
 msgid "Credits"
 msgstr "Подяки"
 
-#: src/adw-about-window.ui:648
+#: src/adw-about-window.ui:554
 msgid "Legal"
 msgstr "Юридичні відомості"
 
-#: src/adw-about-window.ui:695
+#: src/adw-about-window.ui:601
 msgid "Acknowledgements"
 msgstr "Відомості"
 
-#: src/adw-about-window.ui:742
+#: src/adw-about-window.ui:648
 msgid "Debugging Information"
 msgstr "Діагностичні дані"
 
-#: src/adw-about-window.ui:790
-#| msgid "_Show Text"
+#: src/adw-about-window.ui:696
 msgid "_Copy Text"
 msgstr "_Копіювати текст"
 
-#: src/adw-about-window.ui:797
+#: src/adw-about-window.ui:703
 msgid "_Save as…"
 msgstr "З_берегти як…"
 
@@ -339,6 +337,11 @@ msgstr "Нічого не знайден
 msgid "Try a different search."
 msgstr "Спробуйте інші критерії пошуку."
 
+#: src/adw-tab.ui:88
+#| msgid "Close"
+msgid "Close Tab"
+msgstr "Закрити вкладку"
+
 #~ msgid "Icon name"
 #~ msgstr "Назва піктограми"
 
diff -pruN 1.2~alpha-1/src/adw-about-window.c 1.2~beta-1/src/adw-about-window.c
--- 1.2~alpha-1/src/adw-about-window.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-about-window.c	2022-08-05 21:51:59.000000000 +0000
@@ -16,8 +16,6 @@
 #include "adw-preferences-group.h"
 #include "adw-toast-overlay.h"
 
-#define HEADERBAR_STYLE_THRESHOLD 190
-
 /**
  * AdwAboutWindow:
  *
@@ -242,14 +240,33 @@ struct _AdwAboutWindow {
   GtkWidget *leaflet;
   GtkWidget *subpage_stack;
   GtkWidget *toast_overlay;
+  GtkWidget *main_scrolled_window;
+  GtkWidget *headerbar_stack;
+
+  GtkWidget *app_icon_image;
+  GtkWidget *app_name_label;
+  GtkWidget *developer_name_label;
+  GtkWidget *version_button;
+
+  GtkWidget *details_group;
+  GtkWidget *whats_new_row;
+  GtkWidget *comments_label;
   GtkWidget *website_row;
   GtkWidget *links_group;
   GtkWidget *details_website_row;
+  GtkWidget *details_row;
+  GtkTextBuffer *release_notes_buffer;
+
+  GtkWidget *support_group;
+  GtkWidget *support_row;
+  GtkWidget *issue_row;
+  GtkWidget *troubleshooting_row;
+  GtkWidget *debug_info_page;
+
+  GtkWidget *credits_legal_group;
   GtkWidget *credits_box;
   GtkWidget *legal_box;
   GtkWidget *acknowledgements_box;
-  GtkWidget *debug_info_page;
-  GtkTextBuffer *release_notes_buffer;
 
   char *application_icon;
   char *application_name;
@@ -276,7 +293,7 @@ struct _AdwAboutWindow {
   gboolean has_custom_links;
 };
 
-G_DEFINE_TYPE (AdwAboutWindow, adw_about_window, ADW_TYPE_WINDOW)
+G_DEFINE_FINAL_TYPE (AdwAboutWindow, adw_about_window, ADW_TYPE_WINDOW)
 
 enum {
   PROP_0,
@@ -328,46 +345,18 @@ free_legal_section (LegalSection *sectio
   g_free (section);
 }
 
-static gboolean
-boolean_or (AdwAboutWindow *self,
-            int             number,
-            ...)
-{
-  va_list args;
-
-  va_start (args, number);
-
-  for (gsize i = 0; i < number; i++)
-    if (va_arg (args, gboolean)) {
-      va_end (args);
-
-      return TRUE;
-    }
-
-  va_end (args);
-
-  return FALSE;
-}
-
-static gboolean
-string_is_not_empty (AdwAboutWindow *self,
-                     const char     *string)
-{
-  return string && string[0];
-}
-
-/* WARNING: Don't copy into your app. This is a hack which hardcodes pixels. */
-static char *
-get_headerbar_name (AdwAboutWindow *self,
-                    double          value)
+static void
+update_headerbar_cb (AdwAboutWindow *self)
 {
-  double threshold = 0;
+  GtkAdjustment *adj;
+  double value;
+  const char *name;
 
-  if (self->application_icon && *self->application_icon &&
-      self->application_name && *self->application_name)
-    threshold = HEADERBAR_STYLE_THRESHOLD;
+  adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->main_scrolled_window));
+  value = gtk_adjustment_get_value (adj);
+  name = g_strdup (value > 0 ? "regular" : "top");
 
-  return g_strdup (value > threshold ? "regular" : "top");
+  gtk_stack_set_visible_child_name (GTK_STACK (self->headerbar_stack), name);
 }
 
 static inline void
@@ -397,6 +386,15 @@ activate_link_default_cb (AdwAboutWindow
   return GDK_EVENT_STOP;
 }
 
+static void
+update_credits_legal_group (AdwAboutWindow *self)
+{
+  gtk_widget_set_visible (self->credits_legal_group,
+                          gtk_widget_get_visible (self->credits_box) ||
+                          gtk_widget_get_visible (self->legal_box) ||
+                          gtk_widget_get_visible (self->acknowledgements_box));
+}
+
 /* Adapted from text_buffer_new() in gtkaboutdialog.c */
 static void
 parse_person (char      *person,
@@ -541,6 +539,8 @@ update_credits (AdwAboutWindow *self)
 
   gtk_widget_set_visible (self->credits_box,
                           !!gtk_widget_get_first_child (self->credits_box));
+
+  update_credits_legal_group (self);
 }
 
 static char *
@@ -648,6 +648,8 @@ update_legal (AdwAboutWindow *self)
 
   gtk_widget_set_visible (self->legal_box,
                           !!gtk_widget_get_first_child (self->legal_box));
+
+  update_credits_legal_group (self);
 }
 
 typedef enum {
@@ -851,7 +853,7 @@ text_handler (GMarkupParseContext  *cont
   if (!regex) {
     GError *regex_error = NULL;
 
-    regex = g_regex_new ("\\s+", G_REGEX_OPTIMIZE, 0, &regex_error);
+    regex = g_regex_new ("\\s+", 0, 0, &regex_error);
 
     if (regex_error) {
       g_error ("Couldn't compile regex: %s", regex_error->message);
@@ -919,8 +921,11 @@ update_release_notes (AdwAboutWindow *se
 
   gtk_text_buffer_set_text (self->release_notes_buffer, "", -1);
 
-  if (!self->release_notes || !*self->release_notes)
+  if (!self->release_notes || !*self->release_notes) {
+    gtk_widget_hide (self->whats_new_row);
+
     return;
+  }
 
   pdata.buffer = self->release_notes_buffer;
   gtk_text_buffer_get_start_iter (self->release_notes_buffer, &pdata.iter);
@@ -970,6 +975,8 @@ update_release_notes (AdwAboutWindow *se
     g_error_free (error);
     g_free (position);
 
+    gtk_widget_show (self->whats_new_row);
+
     return;
   }
 
@@ -979,20 +986,41 @@ update_release_notes (AdwAboutWindow *se
   gtk_text_buffer_delete (self->release_notes_buffer, &pdata.iter, &end_iter);
 
   g_markup_parse_context_free (context);
+
+  gtk_widget_show (self->whats_new_row);
 }
 
 static void
-update_links (AdwAboutWindow *self)
+update_details (AdwAboutWindow *self)
 {
   gboolean has_website = self->website && *self->website;
   gboolean has_comments = self->comments && *self->comments;
+  gboolean has_release_notes = gtk_widget_get_visible (self->whats_new_row);
   gboolean show_details = has_comments || self->has_custom_links;
+  gboolean show_links = (has_website && has_comments) || self->has_custom_links;
 
+  gtk_widget_set_visible (self->comments_label, has_comments);
   gtk_widget_set_visible (self->website_row, has_website && !show_details);
-
   gtk_widget_set_visible (self->details_website_row, has_website && show_details);
-  gtk_widget_set_visible (self->links_group,
-                          (has_website && has_comments) || self->has_custom_links);
+  gtk_widget_set_visible (self->links_group, show_links);
+  gtk_widget_set_visible (self->details_row, has_comments || show_links);
+  gtk_widget_set_visible (self->details_group,
+                          has_website || has_comments ||
+                          show_links || has_release_notes);
+}
+
+static void
+update_support (AdwAboutWindow *self)
+{
+  gboolean has_support_url = self->support_url && *self->support_url;
+  gboolean has_issue_url = self->issue_url && *self->issue_url;
+  gboolean has_debug_info = self->debug_info && *self->debug_info;
+
+  gtk_widget_set_visible (self->support_row, has_support_url);
+  gtk_widget_set_visible (self->issue_row, has_issue_url);
+  gtk_widget_set_visible (self->troubleshooting_row, has_debug_info);
+  gtk_widget_set_visible (self->support_group,
+                          has_support_url || has_issue_url || has_debug_info);
 }
 
 static void
@@ -1818,18 +1846,34 @@ adw_about_window_class_init (AdwAboutWin
   gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, leaflet);
   gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, subpage_stack);
   gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, toast_overlay);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, main_scrolled_window);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, headerbar_stack);
+
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, app_icon_image);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, app_name_label);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, developer_name_label);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, version_button);
+
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, details_group);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, whats_new_row);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, comments_label);
   gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, website_row);
   gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, links_group);
   gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, details_website_row);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, details_row);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, release_notes_buffer);
+
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, support_group);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, support_row);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, issue_row);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, troubleshooting_row);
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, debug_info_page);
+
+  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, credits_legal_group);
   gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, credits_box);
   gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, legal_box);
   gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, acknowledgements_box);
-  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, debug_info_page);
-  gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, release_notes_buffer);
 
-  gtk_widget_class_bind_template_callback (widget_class, boolean_or);
-  gtk_widget_class_bind_template_callback (widget_class, string_is_not_empty);
-  gtk_widget_class_bind_template_callback (widget_class, get_headerbar_name);
   gtk_widget_class_bind_template_callback (widget_class, activate_link_cb);
 
   gtk_widget_class_install_action (widget_class, "about.back", NULL,
@@ -1855,6 +1899,7 @@ adw_about_window_class_init (AdwAboutWin
 static void
 adw_about_window_init (AdwAboutWindow *self)
 {
+  GtkAdjustment *adj;
   self->application_icon = g_strdup ("");
   self->application_name = g_strdup ("");
   self->developer_name = g_strdup ("");
@@ -1889,6 +1934,10 @@ adw_about_window_init (AdwAboutWindow *s
   gtk_text_buffer_create_tag (self->release_notes_buffer, "heading",
                               "weight", PANGO_WEIGHT_BOLD,
                               NULL);
+
+  adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->main_scrolled_window));
+
+  g_signal_connect_swapped (adj, "value-changed", G_CALLBACK (update_headerbar_cb), self);
 }
 
 /**
@@ -1948,6 +1997,9 @@ adw_about_window_set_application_icon (A
   g_free (self->application_icon);
   self->application_icon = g_strdup (application_icon);
 
+  gtk_widget_set_visible (self->app_icon_image,
+                          application_icon && *application_icon);
+
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APPLICATION_ICON]);
 }
 
@@ -1993,6 +2045,9 @@ adw_about_window_set_application_name (A
   g_free (self->application_name);
   self->application_name = g_strdup (application_name);
 
+  gtk_widget_set_visible (self->app_name_label,
+                          application_name && *application_name);
+
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APPLICATION_NAME]);
 }
 
@@ -2043,6 +2098,9 @@ adw_about_window_set_developer_name (Adw
   g_free (self->developer_name);
   self->developer_name = g_strdup (developer_name);
 
+  gtk_widget_set_visible (self->developer_name_label,
+                          developer_name && *developer_name);
+
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DEVELOPER_NAME]);
 }
 
@@ -2091,6 +2149,8 @@ adw_about_window_set_version (AdwAboutWi
   g_free (self->version);
   self->version = g_strdup (version);
 
+  gtk_widget_set_visible (self->version_button, version && *version);
+
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_VERSION]);
 }
 
@@ -2146,6 +2206,7 @@ adw_about_window_set_release_notes_versi
   self->release_notes_version = g_strdup (version);
 
   update_release_notes (self);
+  update_details (self);
 
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RELEASE_NOTES_VERSION]);
 }
@@ -2214,6 +2275,7 @@ adw_about_window_set_release_notes (AdwA
   self->release_notes = g_strdup (release_notes);
 
   update_release_notes (self);
+  update_details (self);
 
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RELEASE_NOTES]);
 }
@@ -2263,7 +2325,7 @@ adw_about_window_set_comments (AdwAboutW
   g_free (self->comments);
   self->comments = g_strdup (comments);
 
-  update_links (self);
+  update_details (self);
 
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_COMMENTS]);
 }
@@ -2313,7 +2375,7 @@ adw_about_window_set_website (AdwAboutWi
   g_free (self->website);
   self->website = g_strdup (website);
 
-  update_links (self);
+  update_details (self);
 
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WEBSITE]);
 }
@@ -2360,6 +2422,8 @@ adw_about_window_set_support_url (AdwAbo
   g_free (self->support_url);
   self->support_url = g_strdup (support_url);
 
+  update_support (self);
+
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SUPPORT_URL]);
 }
 
@@ -2405,6 +2469,8 @@ adw_about_window_set_issue_url (AdwAbout
   g_free (self->issue_url);
   self->issue_url = g_strdup (issue_url);
 
+  update_support (self);
+
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ISSUE_URL]);
 }
 
@@ -2452,8 +2518,7 @@ adw_about_window_add_link (AdwAboutWindo
 
   self->has_custom_links = TRUE;
 
-  update_links (self);
-
+  update_details (self);
 }
 
 /**
@@ -2506,6 +2571,8 @@ adw_about_window_set_debug_info (AdwAbou
   g_free (self->debug_info);
   self->debug_info = g_strdup (debug_info);
 
+  update_support (self);
+
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DEBUG_INFO]);
 }
 
@@ -2931,6 +2998,8 @@ adw_about_window_add_acknowledgement_sec
   add_credits_section (self->acknowledgements_box, name, (char **) people);
 
   gtk_widget_show (self->acknowledgements_box);
+
+  update_credits_legal_group (self);
 }
 
 /**
diff -pruN 1.2~alpha-1/src/adw-about-window.ui 1.2~beta-1/src/adw-about-window.ui
--- 1.2~alpha-1/src/adw-about-window.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-about-window.ui	2022-08-05 21:51:59.000000000 +0000
@@ -17,8 +17,40 @@
             <property name="can-unfold">False</property>
             <property name="width-request">360</property>
             <child>
-              <object class="GtkOverlay">
-                <property name="child">
+              <object class="GtkBox">
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkStack" id="headerbar_stack">
+                    <property name="transition-type">crossfade</property>
+                    <property name="transition-duration">150</property>
+                    <child>
+                      <object class="GtkStackPage">
+                        <property name="name">top</property>
+                        <property name="child">
+                          <object class="GtkHeaderBar">
+                            <property name="title-widget">
+                              <object class="AdwWindowTitle">
+                                <property name="visible">False</property>
+                              </object>
+                            </property>
+                            <style>
+                              <class name="flat"/>
+                            </style>
+                          </object>
+                        </property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkStackPage">
+                        <property name="name">regular</property>
+                        <property name="child">
+                          <object class="GtkHeaderBar"/>
+                        </property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
                   <object class="GtkScrolledWindow" id="main_scrolled_window">
                     <property name="hscrollbar-policy">never</property>
                     <property name="propagate-natural-width">True</property>
@@ -34,70 +66,46 @@
                             <property name="orientation">vertical</property>
                             <property name="vexpand">True</property>
                             <child>
-                              <object class="GtkImage">
-                                <binding name="visible">
-                                  <closure function="string_is_not_empty" type="gboolean">
-                                    <lookup name="application-icon">AdwAboutWindow</lookup>
-                                  </closure>
-                                </binding>
-                                <binding name="icon-name">
-                                  <lookup name="application-icon">AdwAboutWindow</lookup>
-                                </binding>
+                              <object class="GtkImage" id="app_icon_image">
+                                <property name="visible">False</property>
                                 <property name="pixel-size">128</property>
+                                <property name="icon-name" bind-source="AdwAboutWindow" bind-property="application-icon" bind-flags="sync-create"/>
                                 <style>
                                   <class name="icon-dropshadow"/>
                                 </style>
                               </object>
                             </child>
                             <child>
-                              <object class="GtkLabel">
+                              <object class="GtkLabel" id="app_name_label">
+                                <property name="visible">False</property>
                                 <property name="wrap">True</property>
                                 <property name="justify">center</property>
-                                <binding name="visible">
-                                  <closure function="string_is_not_empty" type="gboolean">
-                                    <lookup name="application-name">AdwAboutWindow</lookup>
-                                  </closure>
-                                </binding>
-                                <binding name="label">
-                                  <lookup name="application-name">AdwAboutWindow</lookup>
-                                </binding>
+                                <property name="label" bind-source="AdwAboutWindow" bind-property="application-name" bind-flags="sync-create"/>
                                 <style>
                                   <class name="title-1"/>
                                 </style>
                               </object>
                             </child>
                             <child>
-                              <object class="GtkLabel">
+                              <object class="GtkLabel" id="developer_name_label">
+                                <property name="visible">False</property>
                                 <property name="wrap">True</property>
                                 <property name="justify">center</property>
-                                <binding name="visible">
-                                  <closure function="string_is_not_empty" type="gboolean">
-                                    <lookup name="developer-name">AdwAboutWindow</lookup>
-                                  </closure>
-                                </binding>
-                                <binding name="label">
-                                  <lookup name="developer-name">AdwAboutWindow</lookup>
-                                </binding>
+                                <property name="label" bind-source="AdwAboutWindow" bind-property="developer-name" bind-flags="sync-create"/>
                               </object>
                             </child>
                             <child>
-                              <object class="GtkButton">
+                              <object class="GtkButton" id="version_button">
+                                <property name="visible">False</property>
                                 <property name="halign">center</property>
                                 <property name="action-name">about.copy-property</property>
                                 <property name="action-target">"version"</property>
                                 <property name="child">
                                   <object class="GtkLabel">
                                     <property name="ellipsize">end</property>
-                                    <binding name="label">
-                                      <lookup name="version">AdwAboutWindow</lookup>
-                                    </binding>
+                                    <property name="label" bind-source="AdwAboutWindow" bind-property="version" bind-flags="sync-create"/>
                                   </object>
                                 </property>
-                                <binding name="visible">
-                                  <closure function="string_is_not_empty" type="gboolean">
-                                    <lookup name="version">AdwAboutWindow</lookup>
-                                  </closure>
-                                </binding>
                                 <style>
                                   <class name="app-version"/>
                                 </style>
@@ -107,27 +115,16 @@
                               <object class="GtkBox">
                                 <property name="orientation">vertical</property>
                                 <child>
-                                  <object class="AdwPreferencesGroup">
-                                    <binding name="visible">
-                                      <closure function="boolean_or" type="gboolean">
-                                        <constant type="gint">3</constant>
-                                        <lookup name="visible">whats_new_row</lookup>
-                                        <lookup name="visible">details_row</lookup>
-                                        <lookup name="visible">website_row</lookup>
-                                      </closure>
-                                    </binding>
+                                  <object class="AdwPreferencesGroup" id="details_group">
+                                    <property name="visible">False</property>
                                     <child>
                                       <object class="AdwActionRow" id="whats_new_row">
+                                        <property name="visible">False</property>
                                         <property name="title" translatable="yes">_What’s New</property>
                                         <property name="use-underline">True</property>
                                         <property name="activatable">True</property>
                                         <property name="action-name">about.subpage</property>
                                         <property name="action-target">"whatsnew"</property>
-                                        <binding name="visible">
-                                          <closure function="string_is_not_empty" type="gboolean">
-                                            <lookup name="text">release_notes_buffer</lookup>
-                                          </closure>
-                                        </binding>
                                         <child>
                                           <object class="GtkImage">
                                             <property name="icon-name">go-next-symbolic</property>
@@ -137,18 +134,12 @@
                                     </child>
                                     <child>
                                       <object class="AdwActionRow" id="details_row">
+                                        <property name="visible">False</property>
                                         <property name="title" translatable="yes">_Details</property>
                                         <property name="use-underline">True</property>
                                         <property name="activatable">True</property>
                                         <property name="action-name">about.subpage</property>
                                         <property name="action-target">"details"</property>
-                                        <binding name="visible">
-                                          <closure function="boolean_or" type="gboolean">
-                                            <constant type="gint">2</constant>
-                                            <lookup name="visible">comments</lookup>
-                                            <lookup name="visible">links_group</lookup>
-                                          </closure>
-                                        </binding>
                                         <child>
                                           <object class="GtkImage">
                                             <property name="icon-name">go-next-symbolic</property>
@@ -164,9 +155,7 @@
                                         <property name="activatable">True</property>
                                         <property name="action-name">about.show-url-property</property>
                                         <property name="action-target">"website"</property>
-                                        <binding name="tooltip-text">
-                                          <lookup name="website">AdwAboutWindow</lookup>
-                                        </binding>
+                                        <property name="tooltip-text" bind-source="AdwAboutWindow" bind-property="website" bind-flags="sync-create"/>
                                         <child>
                                           <object class="GtkImage">
                                             <property name="icon-name">adw-external-link-symbolic</property>
@@ -178,30 +167,17 @@
                                 </child>
 
                                 <child>
-                                  <object class="AdwPreferencesGroup">
-                                    <binding name="visible">
-                                      <closure function="boolean_or" type="gboolean">
-                                        <constant type="gint">3</constant>
-                                        <lookup name="visible">support_row</lookup>
-                                        <lookup name="visible">issue_row</lookup>
-                                        <lookup name="visible">troubleshooting_row</lookup>
-                                      </closure>
-                                    </binding>
+                                  <object class="AdwPreferencesGroup" id="support_group">
+                                    <property name="visible">False</property>
                                     <child>
                                       <object class="AdwActionRow" id="support_row">
+                                        <property name="visible">False</property>
                                         <property name="activatable">True</property>
                                         <property name="title" translatable="yes">_Support Questions</property>
                                         <property name="use-underline">True</property>
                                         <property name="action-name">about.show-url-property</property>
                                         <property name="action-target">"support-url"</property>
-                                        <binding name="tooltip-text">
-                                          <lookup name="support-url">AdwAboutWindow</lookup>
-                                        </binding>
-                                        <binding name="visible">
-                                          <closure function="string_is_not_empty" type="gboolean">
-                                            <lookup name="support-url">AdwAboutWindow</lookup>
-                                          </closure>
-                                        </binding>
+                                        <property name="tooltip-text" bind-source="AdwAboutWindow" bind-property="support-url" bind-flags="sync-create"/>
                                         <child>
                                           <object class="GtkImage">
                                             <property name="icon-name">adw-external-link-symbolic</property>
@@ -211,19 +187,13 @@
                                     </child>
                                     <child>
                                       <object class="AdwActionRow" id="issue_row">
+                                        <property name="visible">False</property>
                                         <property name="activatable">True</property>
                                         <property name="title" translatable="yes">_Report an Issue</property>
                                         <property name="use-underline">True</property>
                                         <property name="action-name">about.show-url-property</property>
                                         <property name="action-target">"issue-url"</property>
-                                        <binding name="tooltip-text">
-                                          <lookup name="issue-url">AdwAboutWindow</lookup>
-                                        </binding>
-                                        <binding name="visible">
-                                          <closure function="string_is_not_empty" type="gboolean">
-                                            <lookup name="issue-url">AdwAboutWindow</lookup>
-                                          </closure>
-                                        </binding>
+                                        <property name="tooltip-text" bind-source="AdwAboutWindow" bind-property="issue-url" bind-flags="sync-create"/>
                                         <child>
                                           <object class="GtkImage">
                                             <property name="icon-name">adw-external-link-symbolic</property>
@@ -233,16 +203,12 @@
                                     </child>
                                     <child>
                                       <object class="AdwActionRow" id="troubleshooting_row">
+                                        <property name="visible">False</property>
                                         <property name="title" translatable="yes">_Troubleshooting</property>
                                         <property name="use-underline">True</property>
                                         <property name="activatable">True</property>
                                         <property name="action-name">about.subpage</property>
                                         <property name="action-target">"troubleshooting"</property>
-                                        <binding name="visible">
-                                          <closure function="string_is_not_empty" type="gboolean">
-                                            <lookup name="debug-info">AdwAboutWindow</lookup>
-                                          </closure>
-                                        </binding>
                                         <child>
                                           <object class="GtkImage">
                                             <property name="icon-name">go-next-symbolic</property>
@@ -253,15 +219,8 @@
                                   </object>
                                 </child>
                                 <child>
-                                  <object class="AdwPreferencesGroup">
-                                    <binding name="visible">
-                                      <closure function="boolean_or" type="gboolean">
-                                        <constant type="gint">3</constant>
-                                        <lookup name="visible">credits_box</lookup>
-                                        <lookup name="visible">legal_box</lookup>
-                                        <lookup name="visible">acknowledgements_box</lookup>
-                                      </closure>
-                                    </binding>
+                                  <object class="AdwPreferencesGroup" id="credits_legal_group">
+                                    <property name="visible">False</property>
                                     <child>
                                       <object class="AdwActionRow">
                                         <property name="title" translatable="yes">_Credits</property>
@@ -269,9 +228,7 @@
                                         <property name="activatable">True</property>
                                         <property name="action-name">about.subpage</property>
                                         <property name="action-target">"credits"</property>
-                                        <binding name="visible">
-                                          <lookup name="visible">credits_box</lookup>
-                                        </binding>
+                                        <property name="visible" bind-source="credits_box" bind-property="visible" bind-flags="sync-create"/>
                                         <child>
                                           <object class="GtkImage">
                                             <property name="icon-name">go-next-symbolic</property>
@@ -286,9 +243,7 @@
                                         <property name="activatable">True</property>
                                         <property name="action-name">about.subpage</property>
                                         <property name="action-target">"legal"</property>
-                                        <binding name="visible">
-                                          <lookup name="visible">legal_box</lookup>
-                                        </binding>
+                                        <property name="visible" bind-source="legal_box" bind-property="visible" bind-flags="sync-create"/>
                                         <child>
                                           <object class="GtkImage">
                                             <property name="icon-name">go-next-symbolic</property>
@@ -303,9 +258,7 @@
                                         <property name="activatable">True</property>
                                         <property name="action-name">about.subpage</property>
                                         <property name="action-target">"acknowledgements"</property>
-                                        <binding name="visible">
-                                          <lookup name="visible">acknowledgements_box</lookup>
-                                        </binding>
+                                        <property name="visible" bind-source="acknowledgements_box" bind-property="visible" bind-flags="sync-create"/>
                                         <child>
                                           <object class="GtkImage">
                                             <property name="icon-name">go-next-symbolic</property>
@@ -322,45 +275,6 @@
                       </object>
                     </property>
                   </object>
-                </property>
-                <child type="overlay">
-                  <object class="GtkStack" id="headerbar_stack">
-                    <property name="transition-type">crossfade</property>
-                    <property name="transition-duration">150</property>
-                    <property name="valign">start</property>
-                    <binding name="visible-child-name">
-                      <closure function="get_headerbar_name" type="gchararray">
-                        <lookup name="value" type="GtkAdjustment">
-                          <lookup name="vadjustment">main_scrolled_window</lookup>
-                        </lookup>
-                      </closure>
-                    </binding>
-                    <child>
-                      <object class="GtkStackPage">
-                        <property name="name">top</property>
-                        <property name="child">
-                          <object class="GtkHeaderBar">
-                            <property name="title-widget">
-                              <object class="AdwWindowTitle">
-                                <property name="visible">False</property>
-                              </object>
-                            </property>
-                            <style>
-                              <class name="flat"/>
-                            </style>
-                          </object>
-                        </property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkStackPage">
-                        <property name="name">regular</property>
-                        <property name="child">
-                          <object class="GtkHeaderBar"/>
-                        </property>
-                      </object>
-                    </child>
-                  </object>
                 </child>
               </object>
             </child>
@@ -459,20 +373,14 @@
                                   <object class="GtkBox">
                                     <property name="orientation">vertical</property>
                                     <child>
-                                      <object class="GtkLabel" id="comments">
+                                      <object class="GtkLabel" id="comments_label">
+                                        <property name="visible">False</property>
                                         <property name="use-markup">True</property>
                                         <property name="wrap">True</property>
                                         <property name="wrap-mode">word-char</property>
                                         <property name="xalign">0</property>
-                                        <binding name="label">
-                                          <lookup name="comments">AdwAboutWindow</lookup>
-                                        </binding>
+                                        <property name="label" bind-source="AdwAboutWindow" bind-property="comments" bind-flags="sync-create"/>
                                         <signal name="activate-link" handler="activate_link_cb" swapped="yes"/>
-                                        <binding name="visible">
-                                          <closure function="string_is_not_empty" type="gboolean">
-                                            <lookup name="comments">AdwAboutWindow</lookup>
-                                          </closure>
-                                        </binding>
                                         <style>
                                           <class name="body"/>
                                         </style>
@@ -489,9 +397,7 @@
                                             <property name="activatable">True</property>
                                             <property name="action-name">about.show-url-property</property>
                                             <property name="action-target">"website"</property>
-                                            <binding name="tooltip-text">
-                                              <lookup name="website">AdwAboutWindow</lookup>
-                                            </binding>
+                                            <property name="tooltip-text" bind-source="AdwAboutWindow" bind-property="website" bind-flags="sync-create"/>
                                             <child>
                                               <object class="GtkImage">
                                                 <property name="icon-name">adw-external-link-symbolic</property>
diff -pruN 1.2~alpha-1/src/adw-action-row.ui 1.2~beta-1/src/adw-action-row.ui
--- 1.2~alpha-1/src/adw-action-row.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-action-row.ui	2022-08-05 21:51:59.000000000 +0000
@@ -7,7 +7,7 @@
       <relation name="labelled-by">title</relation>
       <relation name="described-by">subtitle</relation>
     </accessibility>
-    <child>
+    <property name="child">
       <object class="GtkBox" id="header">
         <property name="valign">center</property>
         <property name="hexpand">False</property>
@@ -94,6 +94,6 @@
           </object>
         </child>
       </object>
-    </child>
+    </property>
   </template>
 </interface>
diff -pruN 1.2~alpha-1/src/adw-application-window.c 1.2~beta-1/src/adw-application-window.c
--- 1.2~alpha-1/src/adw-application-window.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-application-window.c	2022-08-05 21:51:59.000000000 +0000
@@ -204,6 +204,9 @@ adw_application_window_set_content (AdwA
   g_return_if_fail (ADW_IS_APPLICATION_WINDOW (self));
   g_return_if_fail (content == NULL || GTK_IS_WIDGET (content));
 
+  if (adw_application_window_get_content (self) == content)
+    return;
+
   adw_window_mixin_set_content (ADW_GET_WINDOW_MIXIN (self), content);
 
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CONTENT]);
diff -pruN 1.2~alpha-1/src/adw-avatar.c 1.2~beta-1/src/adw-avatar.c
--- 1.2~alpha-1/src/adw-avatar.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-avatar.c	2022-08-05 21:51:59.000000000 +0000
@@ -733,14 +733,20 @@ adw_avatar_draw_to_texture (AdwAvatar *s
   GtkNative *native;
   GskRenderer *renderer;
   int size;
+  graphene_matrix_t transform;
 
   g_return_val_if_fail (ADW_IS_AVATAR (self), NULL);
   g_return_val_if_fail (scale_factor > 0, NULL);
 
   size = self->size * scale_factor;
 
+  g_assert (gtk_widget_compute_transform (GTK_WIDGET (self),
+                                          self->gizmo,
+                                          &transform));
+
   snapshot = gtk_snapshot_new ();
   gtk_snapshot_scale (snapshot, scale_factor, scale_factor);
+  gtk_snapshot_transform_matrix (snapshot, &transform);
   GTK_WIDGET_GET_CLASS (self)->snapshot (GTK_WIDGET (self), snapshot);
 
   node = gtk_snapshot_free_to_node (snapshot);
diff -pruN 1.2~alpha-1/src/adw-combo-row.ui 1.2~beta-1/src/adw-combo-row.ui
--- 1.2~alpha-1/src/adw-combo-row.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-combo-row.ui	2022-08-05 21:51:59.000000000 +0000
@@ -33,20 +33,20 @@
             <style>
               <class name="menu"/>
             </style>
-            <child>
+            <property name="child">
               <object class="GtkScrolledWindow">
                 <property name="hscrollbar_policy">never</property>
                 <property name="max_content_height">400</property>
                 <property name="propagate_natural_width">True</property>
                 <property name="propagate_natural_height">True</property>
-                <child>
+                <property name="child">
                   <object class="GtkListView" id="list">
                     <property name="single-click-activate">True</property>
                     <signal name="activate" handler="row_activated_cb" swapped="true"/>
                   </object>
-                </child>
+                </property>
               </object>
-            </child>
+            </property>
           </object>
         </child>
       </object>
diff -pruN 1.2~alpha-1/src/adw-entry-row.c 1.2~beta-1/src/adw-entry-row.c
--- 1.2~alpha-1/src/adw-entry-row.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-entry-row.c	2022-08-05 21:51:59.000000000 +0000
@@ -80,6 +80,7 @@ typedef struct
   gboolean show_apply_button;
   gboolean text_changed;
   gboolean show_indicator;
+  gboolean activates_default;
 } AdwEntryRowPrivate;
 
 static void adw_entry_row_editable_init (GtkEditableInterface *iface);
@@ -97,7 +98,9 @@ enum {
   PROP_SHOW_APPLY_BUTTON,
   PROP_INPUT_HINTS,
   PROP_INPUT_PURPOSE,
+  PROP_ATTRIBUTES,
   PROP_ENABLE_EMOJI_COMPLETION,
+  PROP_ACTIVATES_DEFAULT,
   PROP_LAST_PROP,
 };
 
@@ -105,6 +108,7 @@ static GParamSpec *props[PROP_LAST_PROP]
 
 enum {
   SIGNAL_APPLY,
+  SIGNAL_ENTRY_ACTIVATED,
   SIGNAL_LAST_SIGNAL,
 };
 
@@ -217,7 +221,7 @@ pressed_cb (GtkGesture  *gesture,
     return;
   }
 
-  gtk_widget_grab_focus (GTK_WIDGET (priv->text));
+  gtk_text_grab_focus_without_selecting (GTK_TEXT (priv->text));
 
   gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_CLAIMED);
 }
@@ -241,8 +245,14 @@ text_activated_cb (AdwEntryRow *self)
 {
   AdwEntryRowPrivate *priv = adw_entry_row_get_instance_private (self);
 
-  if (gtk_widget_get_visible (priv->apply_button))
+  if (gtk_widget_get_visible (priv->apply_button)) {
     apply_button_clicked_cb (self);
+  } else {
+    if (priv->activates_default)
+      gtk_widget_activate_default (GTK_WIDGET (self));
+
+    g_signal_emit (self, signals[SIGNAL_ENTRY_ACTIVATED], 0);
+  }
 }
 
 static void
@@ -356,9 +366,15 @@ adw_entry_row_get_property (GObject
   case PROP_INPUT_PURPOSE:
     g_value_set_enum (value, adw_entry_row_get_input_purpose (self));
     break;
+  case PROP_ATTRIBUTES:
+    g_value_set_boxed (value, adw_entry_row_get_attributes (self));
+    break;
   case PROP_ENABLE_EMOJI_COMPLETION:
     g_value_set_boolean (value, adw_entry_row_get_enable_emoji_completion (self));
     break;
+  case PROP_ACTIVATES_DEFAULT:
+    g_value_set_boolean (value, adw_entry_row_get_activates_default (self));
+    break;
   default:
     G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
   }
@@ -393,9 +409,15 @@ adw_entry_row_set_property (GObject
   case PROP_INPUT_PURPOSE:
     adw_entry_row_set_input_purpose (self, g_value_get_enum (value));
     break;
+  case PROP_ATTRIBUTES:
+    adw_entry_row_set_attributes (self, g_value_get_boxed (value));
+    break;
   case PROP_ENABLE_EMOJI_COMPLETION:
     adw_entry_row_set_enable_emoji_completion (self, g_value_get_boolean (value));
     break;
+  case PROP_ACTIVATES_DEFAULT:
+    adw_entry_row_set_activates_default (self, g_value_get_boolean (value));
+    break;
   default:
     G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
   }
@@ -460,10 +482,10 @@ adw_entry_row_class_init (AdwEntryRowCla
    * Since: 1.2
    */
   props[PROP_INPUT_HINTS] =
-      g_param_spec_flags ("input-hints", NULL, NULL,
-                          GTK_TYPE_INPUT_HINTS,
-                          GTK_INPUT_HINT_NONE,
-                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+    g_param_spec_flags ("input-hints", NULL, NULL,
+                        GTK_TYPE_INPUT_HINTS,
+                        GTK_INPUT_HINT_NONE,
+                        G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
    * AdwEntryRow:input-purpose: (attributes org.gtk.Property.get=adw_entry_row_get_input_purpose org.gtk.Property.set=adw_entry_row_set_input_purpose)
@@ -475,10 +497,25 @@ adw_entry_row_class_init (AdwEntryRowCla
    * Since: 1.2
    */
   props[PROP_INPUT_PURPOSE] =
-      g_param_spec_enum ("input-purpose", NULL, NULL,
-                         GTK_TYPE_INPUT_PURPOSE,
-                         GTK_INPUT_PURPOSE_FREE_FORM,
-                         G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+    g_param_spec_enum ("input-purpose", NULL, NULL,
+                       GTK_TYPE_INPUT_PURPOSE,
+                       GTK_INPUT_PURPOSE_FREE_FORM,
+                       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
+
+  /**
+   * AdwEntryRow:attributes: (attributes org.gtk.Property.get=adw_entry_row_get_attributes org.gtk.Property.set=adw_entry_row_set_attributes)
+   *
+   * A list of Pango attributes to apply to the text of the embedded entry.
+   *
+   * The [struct@Pango.Attribute]'s `start_index` and `end_index` must refer to
+   * the [class@Gtk.EntryBuffer] text, i.e. without the preedit string.
+   *
+   * Since: 1.2
+   */
+  props[PROP_ATTRIBUTES] =
+    g_param_spec_boxed ("attributes", NULL, NULL,
+                        PANGO_TYPE_ATTR_LIST,
+                        G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
    * AdwEntryRow:enable-emoji-completion: (attributes org.gtk.Property.get=adw_entry_row_get_enable_emoji_completion org.gtk.Property.set=adw_entry_row_set_enable_emoji_completion)
@@ -491,9 +528,21 @@ adw_entry_row_class_init (AdwEntryRowCla
    * Since: 1.2
    */
   props[PROP_ENABLE_EMOJI_COMPLETION] =
-      g_param_spec_boolean ("enable-emoji-completion", NULL, NULL,
-                            FALSE,
-                            G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+    g_param_spec_boolean ("enable-emoji-completion", NULL, NULL,
+                          FALSE,
+                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
+
+  /**
+   * AdwEntryRow:activates-default: (attributes org.gtk.Property.get=adw_entry_row_get_activates_default org.gtk.Property.set=adw_entry_row_set_activates_default)
+   *
+   * Whether activating the embedded entry can activate the default widget.
+   *
+   * Since: 1.2
+   */
+  props[PROP_ACTIVATES_DEFAULT] =
+    g_param_spec_boolean ("activates-default", NULL, NULL,
+                          FALSE,
+                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   g_object_class_install_properties (object_class, PROP_LAST_PROP, props);
 
@@ -517,6 +566,22 @@ adw_entry_row_class_init (AdwEntryRowCla
                   G_TYPE_NONE,
                   0);
 
+  /**
+   * AdwEntryRow::entry-activated:
+   *
+   * Emitted when the embedded entry is activated.
+   *
+   * Since: 1.2
+   */
+  signals[SIGNAL_ENTRY_ACTIVATED] =
+    g_signal_new ("entry-activated",
+                  G_TYPE_FROM_CLASS (klass),
+                  G_SIGNAL_RUN_LAST,
+                  0,
+                  NULL, NULL, NULL,
+                  G_TYPE_NONE,
+                  0);
+
   gtk_widget_class_set_template_from_resource (widget_class,
                                                "/org/gnome/Adwaita/ui/adw-entry-row.ui");
   gtk_widget_class_bind_template_child_private (widget_class, AdwEntryRow, header);
@@ -808,6 +873,9 @@ adw_entry_row_set_input_hints (AdwEntryR
 
   priv = adw_entry_row_get_instance_private (self);
 
+  if (hints == adw_entry_row_get_input_hints (self))
+    return;
+
   gtk_text_set_input_hints (GTK_TEXT (priv->text), hints);
 
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INPUT_HINTS]);
@@ -856,12 +924,67 @@ adw_entry_row_set_input_purpose (AdwEntr
 
   priv = adw_entry_row_get_instance_private (self);
 
+  if (purpose == adw_entry_row_get_input_purpose (self))
+    return;
+
   gtk_text_set_input_purpose (GTK_TEXT (priv->text), purpose);
 
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_INPUT_PURPOSE]);
 }
 
 /**
+ * adw_entry_row_get_attributes: (attributes org.gtk.Method.get_property=attributes)
+ * @self: an entry row
+ *
+ * Gets Pango attributes applied to the text of the embedded entry.
+ *
+ * Returns: (nullable): the list of attributes
+ *
+ * Since: 1.2
+ */
+PangoAttrList *
+adw_entry_row_get_attributes (AdwEntryRow *self)
+{
+  AdwEntryRowPrivate *priv;
+
+  g_return_val_if_fail (ADW_IS_ENTRY_ROW (self), NULL);
+
+  priv = adw_entry_row_get_instance_private (self);
+
+  return gtk_text_get_attributes (GTK_TEXT (priv->text));
+}
+
+/**
+ * adw_entry_row_set_attributes: (attributes org.gtk.Method.set_property=attributes)
+ * @self: an entry row
+ * @attributes: (nullable): a list of attributes
+ *
+ * Sets Pango attributes to apply to the text of the embedded entry.
+ *
+ * The [struct@Pango.Attribute]'s `start_index` and `end_index` must refer to
+ * the [class@Gtk.EntryBuffer] text, i.e. without the preedit string.
+ *
+ * Since: 1.2
+ */
+void
+adw_entry_row_set_attributes (AdwEntryRow   *self,
+                              PangoAttrList *attributes)
+{
+  AdwEntryRowPrivate *priv;
+
+  g_return_if_fail (ADW_IS_ENTRY_ROW (self));
+
+  priv = adw_entry_row_get_instance_private (self);
+
+  if (attributes == adw_entry_row_get_attributes (self))
+    return;
+
+  gtk_text_set_attributes (GTK_TEXT (priv->text), attributes);
+
+  g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ATTRIBUTES]);
+}
+
+/**
  * adw_entry_row_get_enable_emoji_completion: (attributes org.gtk.Method.get_property=enable-emoji-completion)
  * @self: an entry row
  *
@@ -908,11 +1031,63 @@ adw_entry_row_set_enable_emoji_completio
 
   priv = adw_entry_row_get_instance_private (self);
 
+  enable_emoji_completion = !!enable_emoji_completion;
+
+  if (enable_emoji_completion == adw_entry_row_get_enable_emoji_completion (self))
+    return;
+
   gtk_text_set_enable_emoji_completion (GTK_TEXT (priv->text), enable_emoji_completion);
 
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ENABLE_EMOJI_COMPLETION]);
 }
 
+/**
+ * adw_entry_row_get_activates_default: (attributes org.gtk.Method.get_property=activates-default)
+ * @self: an entry row
+ *
+ * Gets whether activating the embedded entry can activate the default widget.
+ *
+ * Returns: whether to activate the default widget
+ */
+gboolean
+adw_entry_row_get_activates_default (AdwEntryRow *self)
+{
+  AdwEntryRowPrivate *priv;
+
+  g_return_val_if_fail (ADW_IS_ENTRY_ROW (self), FALSE);
+
+  priv = adw_entry_row_get_instance_private (self);
+
+  return priv->activates_default;
+}
+
+/**
+ * adw_entry_row_set_activates_default: (attributes org.gtk.Method.set_property=activates-default)
+ * @self: an entry row
+ * @activates: whether to activate the default widget
+ *
+ * Sets whether activating the embedded entry can activate the default widget.
+ *
+ * Since: 1.2
+ */
+void
+adw_entry_row_set_activates_default (AdwEntryRow *self,
+                                     gboolean     activates)
+{
+  AdwEntryRowPrivate *priv;
+
+  g_return_if_fail (ADW_IS_ENTRY_ROW (self));
+
+  priv = adw_entry_row_get_instance_private (self);
+
+  if (priv->activates_default == activates)
+    return;
+
+  priv->activates_default = activates;
+
+  g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ACTIVATES_DEFAULT]);
+}
+
 void
 adw_entry_row_set_indicator_icon_name (AdwEntryRow *self,
                                        const char  *icon_name)
diff -pruN 1.2~alpha-1/src/adw-entry-row.h 1.2~beta-1/src/adw-entry-row.h
--- 1.2~alpha-1/src/adw-entry-row.h	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-entry-row.h	2022-08-05 21:51:59.000000000 +0000
@@ -68,4 +68,16 @@ ADW_AVAILABLE_IN_1_2
 void     adw_entry_row_set_enable_emoji_completion (AdwEntryRow *self,
                                                     gboolean     enable_emoji_completion);
 
+ADW_AVAILABLE_IN_1_2
+PangoAttrList *adw_entry_row_get_attributes (AdwEntryRow   *self);
+ADW_AVAILABLE_IN_1_2
+void           adw_entry_row_set_attributes (AdwEntryRow   *self,
+                                             PangoAttrList *attributes);
+
+ADW_AVAILABLE_IN_1_2
+gboolean adw_entry_row_get_activates_default (AdwEntryRow *self);
+ADW_AVAILABLE_IN_1_2
+void     adw_entry_row_set_activates_default (AdwEntryRow *self,
+                                              gboolean     activates);
+
 G_END_DECLS
diff -pruN 1.2~alpha-1/src/adw-entry-row.ui 1.2~beta-1/src/adw-entry-row.ui
--- 1.2~alpha-1/src/adw-entry-row.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-entry-row.ui	2022-08-05 21:51:59.000000000 +0000
@@ -11,7 +11,7 @@
         <signal name="pressed" handler="pressed_cb"/>
       </object>
     </child>
-    <child>
+    <property name="child">
       <object class="GtkBox" id="header">
         <property name="valign">center</property>
         <style>
@@ -118,7 +118,7 @@
           </object>
         </child>
      </object>
-    </child>
+    </property>
     <style>
       <class name="entry"/>
     </style>
diff -pruN 1.2~alpha-1/src/adw-expander-row.ui 1.2~beta-1/src/adw-expander-row.ui
--- 1.2~alpha-1/src/adw-expander-row.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-expander-row.ui	2022-08-05 21:51:59.000000000 +0000
@@ -8,7 +8,7 @@
       <class name="empty"/>
       <class name="expander"/>
     </style>
-    <child>
+    <property name="child">
       <object class="GtkBox" id="box">
         <property name="orientation">vertical</property>
         <child>
@@ -64,7 +64,7 @@
           <object class="GtkRevealer">
             <property name="reveal-child" bind-source="AdwExpanderRow" bind-property="expanded" bind-flags="sync-create"/>
             <property name="transition-type">slide-up</property>
-            <child>
+            <property name="child">
               <object class="GtkListBox" id="list">
                 <property name="selection-mode">none</property>
                 <signal name="keynav-failed" handler="keynav_failed_cb" swapped="yes"/>
@@ -72,10 +72,10 @@
                   <class name="nested"/>
                 </style>
               </object>
-            </child>
+            </property>
           </object>
         </child>
       </object>
-    </child>
+    </property>
   </template>
 </interface>
diff -pruN 1.2~alpha-1/src/adw-fading-label.c 1.2~beta-1/src/adw-fading-label.c
--- 1.2~alpha-1/src/adw-fading-label.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-fading-label.c	2022-08-05 21:51:59.000000000 +0000
@@ -76,7 +76,7 @@ ensure_shader (AdwFadingLabel *self)
     /* If shaders aren't supported, the error doesn't matter and we just
      * silently fall back */
     if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED))
-      g_critical ("Couldn't compile shader: %s\n", error->message);
+      g_warning ("Couldn't compile shader: %s\n", error->message);
   }
 
   g_clear_error (&error);
@@ -150,7 +150,9 @@ adw_fading_label_snapshot (GtkWidget   *
 
   gsk_render_node_get_bounds (node, &bounds);
   bounds.origin.x = 0;
+  bounds.origin.y = floor (bounds.origin.y);
   bounds.size.width = width;
+  bounds.size.height = ceil (bounds.size.height);
 
   ensure_shader (self);
 
diff -pruN 1.2~alpha-1/src/adw-flap.c 1.2~beta-1/src/adw-flap.c
--- 1.2~alpha-1/src/adw-flap.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-flap.c	2022-08-05 21:51:59.000000000 +0000
@@ -73,7 +73,7 @@
  *
  * The `AdwFlap` implementation of the [iface@Gtk.Buildable] interface supports
  * setting the flap child by specifying “flap” as the “type” attribute of a
- * <child> element, and separator by specifying “separator”. Specifying
+ * `<child>` element, and separator by specifying “separator”. Specifying
  * “content” child type or omitting it results in setting the content child.
  *
  * ## CSS nodes
diff -pruN 1.2~alpha-1/src/adw-indicator-bin.c 1.2~beta-1/src/adw-indicator-bin.c
--- 1.2~alpha-1/src/adw-indicator-bin.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-indicator-bin.c	2022-08-05 21:51:59.000000000 +0000
@@ -78,7 +78,7 @@ ensure_shader (AdwIndicatorBin *self)
     /* If shaders aren't supported, the error doesn't matter and we just
      * silently fall back */
     if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED))
-      g_critical ("Couldn't compile shader: %s\n", error->message);
+      g_warning ("Couldn't compile shader: %s\n", error->message);
   }
 
   g_clear_error (&error);
diff -pruN 1.2~alpha-1/src/adw-message-dialog.c 1.2~beta-1/src/adw-message-dialog.c
--- 1.2~alpha-1/src/adw-message-dialog.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-message-dialog.c	2022-08-05 21:51:59.000000000 +0000
@@ -265,6 +265,16 @@ parent_unrealize_cb (AdwMessageDialog *s
 }
 
 static void
+parent_window_notify_cb (AdwMessageDialog *self)
+{
+  AdwMessageDialogPrivate *priv = adw_message_dialog_get_instance_private (self);
+
+  priv->parent_window = NULL;
+  priv->parent_width = -1;
+  priv->parent_height = -1;
+}
+
+static void
 set_parent (AdwMessageDialog *self,
             GtkWindow        *parent)
 {
@@ -283,11 +293,19 @@ set_parent (AdwMessageDialog *self,
 
     if (gtk_widget_get_realized (GTK_WIDGET (priv->parent_window)))
       parent_unrealize_cb (self);
+
+    g_object_weak_unref (G_OBJECT (priv->parent_window),
+                         (GWeakNotify) parent_window_notify_cb,
+                         self);
   }
 
   priv->parent_window = parent;
 
   if (priv->parent_window) {
+    g_object_weak_ref (G_OBJECT (priv->parent_window),
+                       (GWeakNotify) parent_window_notify_cb,
+                       self);
+
     if (gtk_widget_get_realized (GTK_WIDGET (priv->parent_window)))
       parent_realize_cb (self);
 
diff -pruN 1.2~alpha-1/src/adw-preferences-page.ui 1.2~beta-1/src/adw-preferences-page.ui
--- 1.2~alpha-1/src/adw-preferences-page.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-preferences-page.ui	2022-08-05 21:51:59.000000000 +0000
@@ -7,15 +7,10 @@
         <property name="hscrollbar-policy">never</property>
         <property name="propagate-natural-height">True</property>
         <property name="child">
-          <object class="GtkViewport">
-            <property name="scroll-to-focus">True</property>
+          <object class="AdwClamp">
             <property name="child">
-              <object class="AdwClamp">
-                <child>
-                  <object class="GtkBox" id="box">
-                    <property name="orientation">vertical</property>
-                  </object>
-                </child>
+              <object class="GtkBox" id="box">
+                <property name="orientation">vertical</property>
               </object>
             </property>
           </object>
diff -pruN 1.2~alpha-1/src/adw-preferences-window.ui 1.2~beta-1/src/adw-preferences-window.ui
--- 1.2~alpha-1/src/adw-preferences-window.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-preferences-window.ui	2022-08-05 21:51:59.000000000 +0000
@@ -11,9 +11,9 @@
     <style>
       <class name="preferences"/>
     </style>
-    <child>
+    <property name="content">
       <object class="AdwToastOverlay" id="toast_overlay">
-        <child>
+        <property name="child">
           <object class="AdwLeaflet" id="subpages_leaflet">
             <property name="can-navigate-back" bind-source="AdwPreferencesWindow" bind-property="can-navigate-back" bind-flags="sync-create"/>
             <property name="can-unfold">False</property>
@@ -50,13 +50,13 @@
                               <object class="AdwClamp">
                                 <property name="tightening-threshold">300</property>
                                 <property name="maximum-size">400</property>
-                                <child>
+                                <property name="child">
                                   <object class="GtkSearchEntry" id="search_entry">
                                     <signal name="search-started" handler="search_started_cb" swapped="yes"/>
                                     <signal name="search-changed" handler="search_changed_cb" swapped="yes"/>
                                     <signal name="stop-search" handler="stop_search_cb" swapped="yes"/>
                                   </object>
-                                </child>
+                                </property>
                               </object>
                             </property>
                           </object>
@@ -151,8 +151,8 @@
               </object>
             </child>
           </object>
-        </child>
+        </property>
       </object>
-    </child>
+    </property>
   </template>
 </interface>
diff -pruN 1.2~alpha-1/src/adw-shadow-helper.c 1.2~beta-1/src/adw-shadow-helper.c
--- 1.2~alpha-1/src/adw-shadow-helper.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-shadow-helper.c	2022-08-05 21:51:59.000000000 +0000
@@ -274,7 +274,7 @@ adw_shadow_helper_size_allocate (AdwShad
                          gsk_transform_translate (NULL, &GRAPHENE_POINT_INIT (x, y + height - shadow_size)));
     gtk_widget_allocate (self->border, MAX (width, border_size), border_size, baseline,
                          gsk_transform_translate (NULL, &GRAPHENE_POINT_INIT (x, y + height - border_size)));
-    gtk_widget_allocate (self->border, MAX (width, outline_size), outline_size, baseline,
+    gtk_widget_allocate (self->outline, MAX (width, outline_size), outline_size, baseline,
                          gsk_transform_translate (NULL, &GRAPHENE_POINT_INIT (x, y + height)));
     break;
   default:
diff -pruN 1.2~alpha-1/src/adw-split-button.c 1.2~beta-1/src/adw-split-button.c
--- 1.2~alpha-1/src/adw-split-button.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-split-button.c	2022-08-05 21:51:59.000000000 +0000
@@ -63,6 +63,7 @@ enum {
   PROP_MENU_MODEL,
   PROP_POPOVER,
   PROP_DIRECTION,
+  PROP_DROPDOWN_TOOLTIP,
 
   /* actionable properties */
   PROP_ACTION_NAME,
@@ -192,6 +193,9 @@ adw_split_button_get_property (GObject
   case PROP_DIRECTION:
     g_value_set_enum (value, adw_split_button_get_direction (self));
     break;
+  case PROP_DROPDOWN_TOOLTIP:
+    g_value_set_string (value, adw_split_button_get_dropdown_tooltip (self));
+    break;
   case PROP_ACTION_NAME:
     g_value_set_string (value, gtk_actionable_get_action_name (GTK_ACTIONABLE (self)));
     break;
@@ -234,6 +238,9 @@ adw_split_button_set_property (GObject
   case PROP_DIRECTION:
     adw_split_button_set_direction (self, g_value_get_enum (value));
     break;
+  case PROP_DROPDOWN_TOOLTIP:
+    adw_split_button_set_dropdown_tooltip (self, g_value_get_string (value));
+    break;
   case PROP_ACTION_NAME:
     gtk_actionable_set_action_name (GTK_ACTIONABLE (self), g_value_get_string (value));
     break;
@@ -391,6 +398,20 @@ adw_split_button_class_init (AdwSplitBut
                        GTK_ARROW_DOWN,
                        G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * AdwSplitButton:dropdown-tooltip: (attributes org.gtk.Property.get=adw_split_button_get_dropdown_tooltip org.gtk.Property.set=adw_split_button_set_dropdown_tooltip)
+   *
+   * The tooltip of the dropdown button.
+   *
+   * The tooltip can be marked up with the Pango text markup language.
+   *
+   * Since: 1.2
+   */
+  props[PROP_DROPDOWN_TOOLTIP] =
+    g_param_spec_string ("dropdown-tooltip", NULL, NULL,
+                         "",
+                         G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
+
   g_object_class_install_properties (object_class, LAST_PROP, props);
 
   g_object_class_override_property (object_class, PROP_ACTION_NAME, "action-name");
@@ -897,6 +918,54 @@ adw_split_button_set_direction (AdwSplit
 }
 
 /**
+ * adw_split_button_get_dropdown_tooltip: (attributes org.gtk.Method.get_property=dropdown-tooltip)
+ * @self: a split button
+ *
+ * Gets the tooltip of the dropdown button of @self.
+ *
+ * Returns: (transfer none): the dropdown tooltip of @self
+ *
+ * Since: 1.2
+ */
+const char *
+adw_split_button_get_dropdown_tooltip (AdwSplitButton *self)
+{
+  const char *tooltip;
+
+  g_return_val_if_fail (ADW_IS_SPLIT_BUTTON (self), NULL);
+
+  tooltip = gtk_widget_get_tooltip_markup (self->menu_button);
+
+  return tooltip ? tooltip : "";
+}
+
+/**
+ * adw_split_button_set_dropdown_tooltip: (attributes org.gtk.Method.set_property=dropdown-tooltip)
+ * @self: a split button
+ * @tooltip: the dropdown tooltip of @self
+ *
+ * Sets the tooltip of the dropdown button of @self.
+ *
+ * The tooltip can be marked up with the Pango text markup language.
+ *
+ * Since: 1.2
+ */
+void
+adw_split_button_set_dropdown_tooltip (AdwSplitButton *self,
+                                       const char     *tooltip)
+{
+  g_return_if_fail (ADW_IS_SPLIT_BUTTON (self));
+  g_return_if_fail (tooltip != NULL);
+
+  if (!g_strcmp0 (tooltip, adw_split_button_get_dropdown_tooltip (self)))
+    return;
+
+  gtk_widget_set_tooltip_markup (self->menu_button, tooltip);
+
+  g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DROPDOWN_TOOLTIP]);
+}
+
+/**
  * adw_split_button_popup:
  * @self: a split button
  *
diff -pruN 1.2~alpha-1/src/adw-split-button.h 1.2~beta-1/src/adw-split-button.h
--- 1.2~alpha-1/src/adw-split-button.h	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-split-button.h	2022-08-05 21:51:59.000000000 +0000
@@ -66,6 +66,12 @@ ADW_AVAILABLE_IN_ALL
 void         adw_split_button_set_direction (AdwSplitButton *self,
                                              GtkArrowType    direction);
 
+ADW_AVAILABLE_IN_1_2
+const char *adw_split_button_get_dropdown_tooltip (AdwSplitButton *self);
+ADW_AVAILABLE_IN_1_2
+void        adw_split_button_set_dropdown_tooltip (AdwSplitButton *self,
+                                                   const char     *tooltip);
+
 ADW_AVAILABLE_IN_ALL
 void adw_split_button_popup (AdwSplitButton *self);
 ADW_AVAILABLE_IN_ALL
diff -pruN 1.2~alpha-1/src/adw-status-page.ui 1.2~beta-1/src/adw-status-page.ui
--- 1.2~alpha-1/src/adw-status-page.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-status-page.ui	2022-08-05 21:51:59.000000000 +0000
@@ -11,71 +11,66 @@
         <property name="hscrollbar-policy">never</property>
         <property name="propagate-natural-height">True</property>
         <property name="child">
-          <object class="GtkViewport">
-            <property name="scroll-to-focus">True</property>
-            <property name="child">
-              <object class="GtkBox" id="toplevel_box">
-                <property name="orientation">vertical</property>
-                <property name="valign">center</property>
-                <child>
-                  <object class="AdwClamp">
+          <object class="GtkBox" id="toplevel_box">
+            <property name="orientation">vertical</property>
+            <property name="valign">center</property>
+            <child>
+              <object class="AdwClamp">
+                <property name="child">
+                  <object class="GtkBox">
+                    <property name="orientation">vertical</property>
+                    <property name="valign">center</property>
                     <child>
-                      <object class="GtkBox">
-                        <property name="orientation">vertical</property>
-                        <property name="valign">center</property>
-                        <child>
-                          <object class="GtkImage" id="image">
-                            <property name="accessible-role">presentation</property>
-                            <binding name="visible">
-                              <closure function="has_image" type="gboolean">
-                                <lookup name="icon-name">image</lookup>
-                                <lookup name="paintable">image</lookup>
-                              </closure>
-                            </binding>
-                            <style>
-                              <class name="icon"/>
-                            </style>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="title_label">
-                            <property name="wrap">True</property>
-                            <property name="wrap-mode">word-char</property>
-                            <property name="justify">center</property>
-                            <binding name="visible">
-                              <closure function="string_is_not_empty" type="gboolean">
-                                <lookup name="label">title_label</lookup>
-                              </closure>
-                            </binding>
-                            <style>
-                              <class name="title"/>
-                              <class name="title-1"/>
-                            </style>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="description_label">
-                            <property name="wrap">True</property>
-                            <property name="wrap-mode">word-char</property>
-                            <property name="justify">center</property>
-                            <property name="use-markup">True</property>
-                            <binding name="visible">
-                              <closure function="string_is_not_empty" type="gboolean">
-                                <lookup name="label">description_label</lookup>
-                              </closure>
-                            </binding>
-                            <style>
-                              <class name="body"/>
-                              <class name="description"/>
-                            </style>
-                          </object>
-                        </child>
+                      <object class="GtkImage" id="image">
+                        <property name="accessible-role">presentation</property>
+                        <binding name="visible">
+                          <closure function="has_image" type="gboolean">
+                            <lookup name="icon-name">image</lookup>
+                            <lookup name="paintable">image</lookup>
+                          </closure>
+                        </binding>
+                        <style>
+                          <class name="icon"/>
+                        </style>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="title_label">
+                        <property name="wrap">True</property>
+                        <property name="wrap-mode">word-char</property>
+                        <property name="justify">center</property>
+                        <binding name="visible">
+                          <closure function="string_is_not_empty" type="gboolean">
+                            <lookup name="label">title_label</lookup>
+                          </closure>
+                        </binding>
+                        <style>
+                          <class name="title"/>
+                          <class name="title-1"/>
+                        </style>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="description_label">
+                        <property name="wrap">True</property>
+                        <property name="wrap-mode">word-char</property>
+                        <property name="justify">center</property>
+                        <property name="use-markup">True</property>
+                        <binding name="visible">
+                          <closure function="string_is_not_empty" type="gboolean">
+                            <lookup name="label">description_label</lookup>
+                          </closure>
+                        </binding>
+                        <style>
+                          <class name="body"/>
+                          <class name="description"/>
+                        </style>
                       </object>
                     </child>
                   </object>
-                </child>
+                </property>
               </object>
-            </property>
+            </child>
           </object>
         </property>
       </object>
diff -pruN 1.2~alpha-1/src/adw-swipe-tracker.c 1.2~beta-1/src/adw-swipe-tracker.c
--- 1.2~alpha-1/src/adw-swipe-tracker.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-swipe-tracker.c	2022-08-05 21:51:59.000000000 +0000
@@ -15,7 +15,6 @@
 #define TOUCHPAD_BASE_DISTANCE_H 400
 #define TOUCHPAD_BASE_DISTANCE_V 300
 #define EVENT_HISTORY_THRESHOLD_MS 150
-#define SCROLL_MULTIPLIER 10
 #define MIN_ANIMATION_DURATION 100
 #define MAX_ANIMATION_DURATION 400
 #define VELOCITY_THRESHOLD_TOUCH 0.3
@@ -29,6 +28,12 @@
 #define DRAG_THRESHOLD_DISTANCE 16
 #define EPSILON 0.005
 
+#if GTK_CHECK_VERSION (4, 7, 0)
+#define SCROLL_MULTIPLIER 1
+#else
+#define SCROLL_MULTIPLIER 10
+#endif
+
 #define SIGN(x) ((x) > 0.0 ? 1.0 : ((x) < 0.0 ? -1.0 : 0.0))
 
 /**
@@ -670,6 +675,9 @@ handle_scroll_event (AdwSwipeTracker *se
   is_vertical = (self->orientation == GTK_ORIENTATION_VERTICAL);
   distance = is_vertical ? TOUCHPAD_BASE_DISTANCE_V : TOUCHPAD_BASE_DISTANCE_H;
 
+  if (!event || gdk_event_get_event_type (event) != GDK_SCROLL)
+    return GDK_EVENT_PROPAGATE;
+
   if (gdk_scroll_event_get_direction (event) != GDK_SCROLL_SMOOTH)
     return GDK_EVENT_PROPAGATE;
 
diff -pruN 1.2~alpha-1/src/adw-tab-bar.ui 1.2~beta-1/src/adw-tab-bar.ui
--- 1.2~alpha-1/src/adw-tab-bar.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-tab-bar.ui	2022-08-05 21:51:59.000000000 +0000
@@ -6,7 +6,7 @@
       <object class="GtkRevealer" id="revealer">
         <property name="transition-duration">200</property>
         <property name="transition-type">slide-down</property>
-        <child>
+        <property name="child">
           <object class="GtkBox">
             <style>
               <class name="box"/>
@@ -29,7 +29,7 @@
                 <style>
                   <class name="pinned"/>
                 </style>
-                <child>
+                <property name="child">
                   <object class="AdwTabBox" id="pinned_box">
                     <property name="pinned">True</property>
                     <property name="tab-bar">AdwTabBar</property>
@@ -37,7 +37,7 @@
                     <signal name="stop-kinetic-scrolling" handler="stop_kinetic_scrolling_cb" object="pinned_scrolled_window" swapped="true"/>
                     <signal name="extra-drag-drop" handler="extra_drag_drop_cb" swapped="true"/>
                   </object>
-                </child>
+                </property>
               </object>
             </child>
             <child>
@@ -47,14 +47,14 @@
                 <property name="overlay-scrolling">False</property>
                 <property name="hexpand">True</property>
                 <property name="min-content-width">100</property>
-                <child>
+                <property name="child">
                   <object class="AdwTabBox" id="box">
                     <property name="tab-bar">AdwTabBar</property>
                     <signal name="notify::resize-frozen" handler="notify_resize_frozen_cb" swapped="true"/>
                     <signal name="stop-kinetic-scrolling" handler="stop_kinetic_scrolling_cb" object="scrolled_window" swapped="true"/>
                     <signal name="extra-drag-drop" handler="extra_drag_drop_cb" swapped="true"/>
                   </object>
-                </child>
+                </property>
               </object>
             </child>
             <child>
@@ -66,7 +66,7 @@
               </object>
             </child>
           </object>
-        </child>
+        </property>
       </object>
     </child>
   </template>
diff -pruN 1.2~alpha-1/src/adw-tab-box.c 1.2~beta-1/src/adw-tab-box.c
--- 1.2~alpha-1/src/adw-tab-box.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-tab-box.c	2022-08-05 21:51:59.000000000 +0000
@@ -67,11 +67,13 @@ typedef struct {
   GtkWidget *container;
   GtkWidget *separator;
 
+  int final_pos;
+  int final_width;
+
   int unshifted_pos;
   int pos;
   int width;
   int last_width;
-  int display_width;
 
   double end_reorder_offset;
   double reorder_offset;
@@ -102,12 +104,13 @@ struct _AdwTabBox
   GList *tabs;
   int n_tabs;
 
-  GtkPopover *context_menu;
+  GtkWidget *context_menu;
 
   int allocated_width;
   int last_width;
   int end_padding;
   int initial_end_padding;
+  int final_end_padding;
   TabResizeMode tab_resize_mode;
   AdwAnimation *resize_animation;
 
@@ -146,13 +149,6 @@ struct _AdwTabBox
   guint reset_drop_target_tab_id;
   double drop_target_x;
 
-  struct {
-    TabInfo *info;
-    int pos;
-    guint duration;
-    gboolean keep_selected_visible;
-  } scheduled_scroll;
-
   AdwAnimation *scroll_animation;
   gboolean scroll_animation_done;
   double scroll_animation_from;
@@ -211,12 +207,13 @@ remove_and_free_tab_info (TabInfo *info)
 
 static inline int
 get_tab_position (AdwTabBox *self,
-                  TabInfo   *info)
+                  TabInfo   *info,
+                  gboolean   final)
 {
   if (info == self->reordered_tab)
     return self->reorder_window_x;
 
-  return info->pos;
+  return final ? info->final_pos : info->pos;
 }
 
 static inline TabInfo *
@@ -226,7 +223,7 @@ find_tab_info_at (AdwTabBox *self,
   GList *l;
 
   if (self->reordered_tab) {
-    int pos = get_tab_position (self, self->reordered_tab);
+    int pos = get_tab_position (self, self->reordered_tab, FALSE);
 
     if (pos <= x && x < pos + self->reordered_tab->width)
       return self->reordered_tab;
@@ -288,30 +285,43 @@ find_nth_alive_tab (AdwTabBox *self,
 }
 
 static inline int
-calculate_tab_width (TabInfo *info,
-                     int      base_width)
+calculate_tab_width (TabInfo  *info,
+                     int       base_width)
 {
   return (int) floor ((base_width + SPACING) * info->appear_progress) - SPACING;
 }
 
 static int
 get_base_tab_width (AdwTabBox *self,
-                    gboolean   target)
+                    gboolean   target_end_padding,
+                    gboolean   target_animations)
 {
   double max_progress = 0;
   double n = 0;
   double used_width;
   GList *l;
   int ret;
+  int end_padding = 0;
 
-  for (l = self->tabs; l; l = l->next) {
-    TabInfo *info = l->data;
+  if (target_animations) {
+    max_progress = 1;
+    n = self->n_tabs;
+
+    if (!target_end_padding)
+      end_padding = self->final_end_padding;
+  } else {
+    for (l = self->tabs; l; l = l->next) {
+      TabInfo *info = l->data;
+
+      max_progress = MAX (max_progress, info->appear_progress);
+      n += info->appear_progress;
+    }
 
-    max_progress = MAX (max_progress, info->appear_progress);
-    n += info->appear_progress;
+    if (!target_end_padding)
+      end_padding = self->end_padding;
   }
 
-  used_width = (self->allocated_width - (n + 1) * SPACING - (target ? 0 : self->end_padding)) * max_progress;
+  used_width = (self->allocated_width - (n + 1) * SPACING - end_padding) * max_progress;
 
   ret = (int) ceil (used_width / n);
 
@@ -360,7 +370,7 @@ calculate_tab_offset (AdwTabBox *self,
   if (!self->reordered_tab)
       return 0;
 
-  width = (target ? self->reordered_tab->display_width : self->reordered_tab->width) + SPACING;
+  width = (target ? self->reordered_tab->final_width : self->reordered_tab->width) + SPACING;
 
   if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
       width = -width;
@@ -376,13 +386,6 @@ get_visible_range (AdwTabBox *self,
   int min = SPACING;
   int max = self->allocated_width - SPACING;
 
-  if (self->pinned) {
-    if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
-      min -= SPACING;
-    else
-      max += SPACING;
-  }
-
   if (self->adjustment) {
     double value = gtk_adjustment_get_value (self->adjustment);
     double page_size = gtk_adjustment_get_page_size (self->adjustment);
@@ -391,6 +394,13 @@ get_visible_range (AdwTabBox *self,
     max = MIN (max, (int) ceil (value + page_size) - SPACING);
   }
 
+  if (self->pinned) {
+    if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
+      min -= SPACING;
+    else
+      max += SPACING;
+  }
+
   if (lower)
     *lower = min;
 
@@ -495,6 +505,24 @@ update_separators (AdwTabBox *self)
   }
 }
 
+/* Single tab style */
+
+static void
+update_single_tab_style (AdwTabBox *self)
+{
+  if (self->pinned)
+    return;
+
+  if (self->view &&
+      adw_tab_view_get_n_pages (self->view) <= 1 &&
+      adw_tab_view_get_n_pinned_pages (self->view) == 0 &&
+      self->expand_tabs &&
+      self->tab_resize_mode == TAB_RESIZE_NORMAL)
+    gtk_widget_add_css_class (GTK_WIDGET (self), "single-tab");
+  else
+    gtk_widget_remove_css_class (GTK_WIDGET (self), "single-tab");
+}
+
 /* Tab resize delay */
 
 static void
@@ -504,7 +532,7 @@ resize_animation_value_cb (double     va
   double target_end_padding = 0;
 
   if (!self->expand_tabs) {
-    int predicted_tab_width = get_base_tab_width (self, TRUE);
+    int predicted_tab_width = get_base_tab_width (self, TRUE, FALSE);
     GList *l;
 
     target_end_padding = self->allocated_width - SPACING;
@@ -527,6 +555,7 @@ static void
 resize_animation_done_cb (AdwTabBox *self)
 {
   self->end_padding = 0;
+  self->final_end_padding = 0;
   gtk_widget_queue_resize (GTK_WIDGET (self));
 }
 
@@ -548,7 +577,7 @@ set_tab_resize_mode (AdwTabBox     *self
       TabInfo *info = l->data;
 
       if (info->appear_animation)
-        info->last_width = info->display_width;
+        info->last_width = info->final_width;
       else
         info->last_width = info->width;
     }
@@ -567,6 +596,8 @@ set_tab_resize_mode (AdwTabBox     *self
 
   self->tab_resize_mode = mode;
 
+  update_single_tab_style (self);
+
   if (notify)
     g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RESIZE_FROZEN]);
 }
@@ -755,7 +786,7 @@ update_visible (AdwTabBox *self)
     if (!info->page)
       continue;
 
-    pos = get_tab_position (self, info);
+    pos = get_tab_position (self, info, FALSE);
 
     adw_tab_set_fully_visible (info->tab,
                                pos - SPACING >= value &&
@@ -782,12 +813,16 @@ get_scroll_animation_value (AdwTabBox *s
 
   g_assert (self->scroll_animation);
 
+  if (adw_animation_get_state (self->scroll_animation) != ADW_ANIMATION_PLAYING &&
+      adw_animation_get_state (self->scroll_animation) != ADW_ANIMATION_FINISHED)
+    return gtk_adjustment_get_value (self->adjustment);
+
   to = self->scroll_animation_offset;
 
   if (self->scroll_animation_tab) {
     double page_size = gtk_adjustment_get_page_size (self->adjustment);
 
-    to += get_tab_position (self, self->scroll_animation_tab);
+    to += get_tab_position (self, self->scroll_animation_tab, TRUE);
     to = CLAMP (to, 0, self->allocated_width - page_size);
   }
 
@@ -880,7 +915,7 @@ animate_scroll_relative (AdwTabBox *self
     current_value = self->scroll_animation_offset;
 
     if (self->scroll_animation_tab)
-      current_value += get_tab_position (self, self->scroll_animation_tab);
+      current_value += get_tab_position (self, self->scroll_animation_tab, TRUE);
   }
 
   animate_scroll (self, NULL, current_value + delta, duration);
@@ -901,19 +936,8 @@ scroll_to_tab_full (AdwTabBox *self,
 
   tab_width = info->width;
 
-  if (tab_width < 0) {
-    self->scheduled_scroll.info = info;
-    self->scheduled_scroll.pos = pos;
-    self->scheduled_scroll.duration = duration;
-    self->scheduled_scroll.keep_selected_visible = keep_selected_visible;
-
-    gtk_widget_queue_allocate (GTK_WIDGET (self));
-
-    return FALSE;
-  }
-
   if (info->appear_animation)
-    tab_width = info->display_width;
+    tab_width = info->final_width;
 
   value = gtk_adjustment_get_value (self->adjustment);
   page_size = gtk_adjustment_get_page_size (self->adjustment);
@@ -921,7 +945,7 @@ scroll_to_tab_full (AdwTabBox *self,
   padding = MIN (tab_width, page_size - tab_width) / 2.0;
 
   if (pos < 0)
-    pos = get_tab_position (self, info);
+    pos = get_tab_position (self, info, TRUE);
 
   if (pos - SPACING < value)
     animate_scroll (self, info, -padding, duration);
@@ -974,15 +998,16 @@ scroll_cb (AdwTabBox          *self,
 
 static void
 scroll_animation_cb (double     value,
-                     GtkWidget *self)
+                     AdwTabBox *self)
 {
-  gtk_widget_queue_resize (self);
+  gtk_widget_queue_resize (GTK_WIDGET (self));
 }
 
 static void
 scroll_animation_done_cb (AdwTabBox *self)
 {
   self->scroll_animation_done = TRUE;
+  gtk_widget_queue_resize (GTK_WIDGET (self));
 }
 
 /* Reordering */
@@ -1147,6 +1172,7 @@ animate_reorder_offset (AdwTabBox *self,
 {
   gboolean is_rtl = gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL;
   AdwAnimationTarget *target;
+  double start_offset;
 
   offset *= (is_rtl ? -1 : 1);
 
@@ -1154,6 +1180,7 @@ animate_reorder_offset (AdwTabBox *self,
     return;
 
   info->end_reorder_offset = offset;
+  start_offset = info->reorder_offset;
 
   if (info->reorder_animation)
     adw_animation_skip (info->reorder_animation);
@@ -1162,7 +1189,7 @@ animate_reorder_offset (AdwTabBox *self,
                                               reorder_offset_animation_value_cb,
                                               info, NULL);
   info->reorder_animation =
-    adw_timed_animation_new (GTK_WIDGET (self), info->reorder_offset, offset,
+    adw_timed_animation_new (GTK_WIDGET (self), start_offset, offset,
                              REORDER_ANIMATION_DURATION, target);
 
   g_signal_connect_swapped (info->reorder_animation, "done",
@@ -1238,7 +1265,7 @@ page_reordered_cb (AdwTabBox  *self,
   dest_tab = g_list_nth_data (self->tabs, self->reorder_index);
 
   if (info == self->selected_tab)
-    scroll_to_tab_full (self, self->selected_tab, dest_tab->pos, REORDER_ANIMATION_DURATION, FALSE);
+    scroll_to_tab_full (self, self->selected_tab, dest_tab->final_pos, REORDER_ANIMATION_DURATION, FALSE);
 
   animate_reordering (self, dest_tab);
 
@@ -1286,7 +1313,7 @@ update_drag_reodering (AdwTabBox *self)
 
   x = get_reorder_position (self);
 
-  width = self->reordered_tab->display_width;
+  width = self->reordered_tab->final_width;
 
   self->reorder_window_x = x;
 
@@ -1296,7 +1323,12 @@ update_drag_reodering (AdwTabBox *self)
 
   for (l = self->tabs; l; l = l->next) {
     TabInfo *info = l->data;
-    int center = info->unshifted_pos + info->width / 2;
+    int center;
+
+    if (is_rtl)
+      center = info->unshifted_pos - info->final_width / 2;
+    else
+      center = info->unshifted_pos + info->final_width / 2;
 
     if (info == self->reordered_tab)
       old_index = i;
@@ -1506,7 +1538,7 @@ reorder_begin_cb (AdwTabBox  *self,
 
   self->pressed_tab = find_tab_info_at (self, start_x);
 
-  self->drag_offset_x = start_x - get_tab_position (self, self->pressed_tab);
+  self->drag_offset_x = start_x - get_tab_position (self, self->pressed_tab, FALSE);
   self->drag_offset_y = start_y;
 
   if (!self->reorder_animation) {
@@ -1727,7 +1759,7 @@ allocate_tab (AdwGizmo *widget,
   TabInfo *info = g_object_get_data (G_OBJECT (widget), "info");
   GtkWidget *child = gtk_widget_get_first_child (GTK_WIDGET (widget));
   int allocated_width = gtk_widget_get_allocated_width (GTK_WIDGET (widget));
-  int width_diff = MAX (0, info->display_width - allocated_width);
+  int width_diff = MAX (0, info->final_width - allocated_width);
 
   gtk_widget_allocate (child, width + width_diff, height, baseline,
                        gsk_transform_translate (NULL, &GRAPHENE_POINT_INIT (-width_diff / 2, 0)));
@@ -2575,7 +2607,6 @@ tab_drag_enter_motion_cb (AdwTabBox
     self->indirect_reordering = TRUE;
 
     resize_drag_icon (source_tab_box, predict_tab_width (self, self->reorder_placeholder, TRUE));
-    self->reorder_placeholder->display_width = source_tab_box->drag_icon->target_width;
     adw_tab_set_inverted (source_tab_box->drag_icon->tab, self->inverted);
 
     self->drag_offset_x = source_tab_box->drag_icon->hotspot_x;
@@ -2750,7 +2781,7 @@ reset_setup_menu_cb (AdwTabBox *self)
 static void
 touch_menu_notify_visible_cb (AdwTabBox *self)
 {
-  if (!self->context_menu || gtk_widget_get_visible (GTK_WIDGET (self->context_menu)))
+  if (!self->context_menu || gtk_widget_get_visible (self->context_menu))
     return;
 
   self->hovering = FALSE;
@@ -2774,15 +2805,15 @@ do_popup (AdwTabBox *self,
   g_signal_emit_by_name (self->view, "setup-menu", info->page);
 
   if (!self->context_menu) {
-    self->context_menu = GTK_POPOVER (gtk_popover_menu_new_from_model (model));
-    gtk_widget_set_parent (GTK_WIDGET (self->context_menu), GTK_WIDGET (self));
-    gtk_popover_set_position (self->context_menu, GTK_POS_BOTTOM);
-    gtk_popover_set_has_arrow (self->context_menu, FALSE);
+    self->context_menu = gtk_popover_menu_new_from_model (model);
+    gtk_widget_set_parent (self->context_menu, GTK_WIDGET (self));
+    gtk_popover_set_position (GTK_POPOVER (self->context_menu), GTK_POS_BOTTOM);
+    gtk_popover_set_has_arrow (GTK_POPOVER (self->context_menu), FALSE);
 
     if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
-      gtk_widget_set_halign (GTK_WIDGET (self->context_menu), GTK_ALIGN_END);
+      gtk_widget_set_halign (self->context_menu, GTK_ALIGN_END);
     else
-      gtk_widget_set_halign (GTK_WIDGET (self->context_menu), GTK_ALIGN_START);
+      gtk_widget_set_halign (self->context_menu, GTK_ALIGN_START);
 
     g_signal_connect_object (self->context_menu, "notify::visible",
                              G_CALLBACK (touch_menu_notify_visible_cb), self,
@@ -2804,9 +2835,9 @@ do_popup (AdwTabBox *self,
   rect.width = 0;
   rect.height = 0;
 
-  gtk_popover_set_pointing_to (self->context_menu, &rect);
+  gtk_popover_set_pointing_to (GTK_POPOVER (self->context_menu), &rect);
 
-  gtk_popover_popup (self->context_menu);
+  gtk_popover_popup (GTK_POPOVER (self->context_menu));
 }
 
 static void
@@ -2851,7 +2882,7 @@ handle_click (AdwTabBox  *self,
   gboolean can_grab_focus;
 
   if (self->adjustment) {
-    int pos = get_tab_position (self, info);
+    int pos = get_tab_position (self, info, FALSE);
     double value = gtk_adjustment_get_value (self->adjustment);
     double upper = gtk_adjustment_get_upper (self->adjustment);
     double page_size = gtk_adjustment_get_page_size (self->adjustment);
@@ -2973,15 +3004,12 @@ released_cb (AdwTabBox  *self,
 /* Overrides */
 
 static void
-adw_tab_box_measure (GtkWidget      *widget,
-                     GtkOrientation  orientation,
-                     int             for_size,
-                     int            *minimum,
-                     int            *natural,
-                     int            *minimum_baseline,
-                     int            *natural_baseline)
+measure_tab_box (AdwTabBox      *self,
+                 GtkOrientation  orientation,
+                 int            *minimum,
+                 int            *natural,
+                 gboolean        animated)
 {
-  AdwTabBox *self = ADW_TAB_BOX (widget);
   int min, nat;
 
   if (self->n_tabs == 0) {
@@ -2991,12 +3019,6 @@ adw_tab_box_measure (GtkWidget      *wid
     if (natural)
       *natural = 0;
 
-    if (minimum_baseline)
-      *minimum_baseline = -1;
-
-    if (natural_baseline)
-      *natural_baseline = -1;
-
     return;
   }
 
@@ -3011,7 +3033,10 @@ adw_tab_box_measure (GtkWidget      *wid
       gtk_widget_measure (info->container, orientation, -1,
                           NULL, &child_width, NULL, NULL);
 
-      width += calculate_tab_width (info, child_width) + SPACING;
+      if (animated)
+        width += calculate_tab_width (info, child_width) + SPACING;
+      else
+        width += child_width + SPACING;
     }
 
     if (!self->pinned)
@@ -3057,6 +3082,20 @@ adw_tab_box_measure (GtkWidget      *wid
 
   if (natural)
     *natural = nat;
+}
+
+static void
+adw_tab_box_measure (GtkWidget      *widget,
+                     GtkOrientation  orientation,
+                     int             for_size,
+                     int            *minimum,
+                     int            *natural,
+                     int            *minimum_baseline,
+                     int            *natural_baseline)
+{
+  AdwTabBox *self = ADW_TAB_BOX (widget);
+
+  measure_tab_box (self, orientation, minimum, natural, TRUE);
 
   if (minimum_baseline)
     *minimum_baseline = -1;
@@ -3072,11 +3111,10 @@ adw_tab_box_size_allocate (GtkWidget *wi
                            int        baseline)
 {
   AdwTabBox *self = ADW_TAB_BOX (widget);
-  AdwAnimationState state;
   gboolean is_rtl;
   GList *l;
   GtkAllocation child_allocation;
-  int pos;
+  int pos, final_pos;
   double value;
   int indicator_size;
   GskTransform *transform;
@@ -3085,21 +3123,8 @@ adw_tab_box_size_allocate (GtkWidget *wi
                        &self->allocated_width, NULL, NULL, NULL);
   self->allocated_width = MAX (self->allocated_width, width);
 
-  value = gtk_adjustment_get_value (self->adjustment);
-
-  gtk_adjustment_configure (self->adjustment,
-                            value,
-                            0,
-                            self->allocated_width,
-                            width * 0.1,
-                            width * 0.9,
-                            width);
-
-  /* The value may have been changed during gtk_adjustment_configure() */
-  value = gtk_adjustment_get_value (self->adjustment);
-
   if (self->context_menu)
-    gtk_popover_present (self->context_menu);
+    gtk_popover_present (GTK_POPOVER (self->context_menu));
 
   if (!self->n_tabs)
     return;
@@ -3115,56 +3140,100 @@ adw_tab_box_size_allocate (GtkWidget *wi
                           NULL, &child_width, NULL, NULL);
 
       info->width = calculate_tab_width (info, child_width);
+      info->final_width = child_width;
     }
   } else if (self->tab_resize_mode == TAB_RESIZE_FIXED_TAB_WIDTH) {
     self->end_padding = self->allocated_width - SPACING;
+    self->final_end_padding = self->end_padding;
 
     for (l = self->tabs; l; l = l->next) {
       TabInfo *info = l->data;
 
       info->width = calculate_tab_width (info, info->last_width);
       self->end_padding -= info->width + SPACING;
+
+      info->final_width = info->last_width;
+      self->final_end_padding -= info->final_width + SPACING;
     }
   } else {
-    int tab_width = get_base_tab_width (self, FALSE);
+    int tab_width = get_base_tab_width (self, FALSE, FALSE);
+    int final_tab_width = get_base_tab_width (self, FALSE, TRUE);
     int excess = self->allocated_width - SPACING - self->end_padding;
+    int final_excess = excess;
 
     for (l = self->tabs; l; l = l->next) {
       TabInfo *info = l->data;
 
       info->width = calculate_tab_width (info, tab_width);
+      info->final_width = final_tab_width;
+
       excess -= info->width + SPACING;
+      final_excess -= info->final_width + SPACING;
     }
 
     /* Now spread excess width across the tabs */
     for (l = self->tabs; l; l = l->next) {
       TabInfo *info = l->data;
 
-      if (excess >= 0)
-          break;
+      if (excess >= 0 && final_excess >= 0)
+        break;
+
+      if (excess < 0) {
+        info->width--;
+        excess++;
+      }
 
-      info->width--;
-      excess++;
+      if (final_excess < 0) {
+        info->final_width--;
+        final_excess++;
+      }
     }
   }
 
   pos = is_rtl ? self->allocated_width - SPACING : SPACING;
+  final_pos = pos;
 
   for (l = self->tabs; l; l = l->next) {
     TabInfo *info = l->data;
-    GtkAllocation separator_allocation;
-    int separator_width;
-
-    if (!info->appear_animation)
-      info->display_width = info->width;
-    else if (info->page && info != self->reorder_placeholder)
-      info->display_width = predict_tab_width (self, info, FALSE);
 
-    info->unshifted_pos = pos;
+    info->unshifted_pos = final_pos;
     info->pos = pos + calculate_tab_offset (self, info, FALSE);
+    info->final_pos = final_pos + calculate_tab_offset (self, info, TRUE);
 
-    if (is_rtl)
+    if (is_rtl) {
       info->pos -= info->width;
+      info->final_pos -= info->final_width;
+    }
+
+    pos += (is_rtl ? -1 : 1) * (info->width + SPACING);
+    final_pos += (is_rtl ? -1 : 1) * (info->final_width + SPACING);
+  }
+
+  value = get_scroll_animation_value (self);
+
+  self->block_scrolling = TRUE;
+  gtk_adjustment_configure (self->adjustment,
+                            value,
+                            0,
+                            self->allocated_width,
+                            width * 0.1,
+                            width * 0.9,
+                            width);
+  self->block_scrolling = FALSE;
+
+  /* The value may have been changed during gtk_adjustment_configure() */
+  value = gtk_adjustment_get_value (self->adjustment);
+
+  if (self->scroll_animation_done) {
+    self->scroll_animation_tab = NULL;
+    self->scroll_animation_done = FALSE;
+    adw_animation_reset (self->scroll_animation);
+  }
+
+  for (l = self->tabs; l; l = l->next) {
+    TabInfo *info = l->data;
+    GtkAllocation separator_allocation;
+    int separator_width;
 
     child_allocation.x = ((info == self->reordered_tab) ? self->reorder_window_x : info->pos) - (int) floor (value);
     child_allocation.y = 0;
@@ -3187,31 +3256,6 @@ adw_tab_box_size_allocate (GtkWidget *wi
 
     gtk_widget_size_allocate (info->container, &child_allocation, baseline);
     gtk_widget_size_allocate (info->separator, &separator_allocation, baseline);
-
-    pos += (is_rtl ? -1 : 1) * (info->width + SPACING);
-  }
-
-  if (self->scheduled_scroll.info &&
-      scroll_to_tab_full (self,
-                          self->scheduled_scroll.info,
-                          self->scheduled_scroll.pos,
-                          self->scheduled_scroll.duration,
-                          self->scheduled_scroll.keep_selected_visible)) {
-    self->scheduled_scroll.info = NULL;
-  }
-
-  state = adw_animation_get_state (self->scroll_animation);
-  if (state == ADW_ANIMATION_PLAYING || state == ADW_ANIMATION_FINISHED) {
-    self->block_scrolling = TRUE;
-    gtk_adjustment_set_value (self->adjustment,
-                              get_scroll_animation_value (self));
-    self->block_scrolling = FALSE;
-
-    if (self->scroll_animation_done) {
-        self->scroll_animation_done = FALSE;
-        self->scroll_animation_tab = NULL;
-        adw_animation_reset (self->scroll_animation);
-    }
   }
 
   gtk_widget_measure (self->needs_attention_left, GTK_ORIENTATION_HORIZONTAL, -1,
@@ -3247,7 +3291,7 @@ ensure_shader (AdwTabBox *self)
     /* If shaders aren't supported, the error doesn't matter and we just
      * silently fall back */
     if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED))
-      g_critical ("Couldn't compile shader: %s\n", error->message);
+      g_warning ("Couldn't compile shader: %s\n", error->message);
   }
 
   g_clear_error (&error);
@@ -3271,7 +3315,7 @@ snapshot_tabs (AdwTabBox   *self,
   if (self->reordered_tab && gtk_widget_get_opacity (self->reordered_tab->container) > 0) {
     int clip_x, clip_width;
 
-    reordered_pos = get_tab_position (self, self->reordered_tab);
+    reordered_pos = get_tab_position (self, self->reordered_tab, FALSE);
     reordered_width = gtk_widget_get_allocated_width (self->reordered_tab->container);
 
     if (is_rtl) {
@@ -3290,7 +3334,7 @@ snapshot_tabs (AdwTabBox   *self,
     TabInfo *info = l->data;
     int pos, width;
 
-    pos = get_tab_position (self, info);
+    pos = get_tab_position (self, info, FALSE);
     width = gtk_widget_get_allocated_width (info->container);
 
     if (pos + width < scroll_start)
@@ -3407,7 +3451,7 @@ adw_tab_box_unrealize (GtkWidget *widget
 {
   AdwTabBox *self = ADW_TAB_BOX (widget);
 
-  g_clear_pointer ((GtkWidget **) &self->context_menu, gtk_widget_unparent);
+  g_clear_pointer (&self->context_menu, gtk_widget_unparent);
 
   GTK_WIDGET_CLASS (adw_tab_box_parent_class)->unrealize (widget);
 
@@ -3453,9 +3497,9 @@ adw_tab_box_direction_changed (GtkWidget
 
   if (self->context_menu) {
     if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
-      gtk_widget_set_halign (GTK_WIDGET (self->context_menu), GTK_ALIGN_END);
+      gtk_widget_set_halign (self->context_menu, GTK_ALIGN_END);
     else
-      gtk_widget_set_halign (GTK_WIDGET (self->context_menu), GTK_ALIGN_START);
+      gtk_widget_set_halign (self->context_menu, GTK_ALIGN_START);
   }
 }
 
@@ -3793,6 +3837,11 @@ adw_tab_box_set_view (AdwTabBox  *self,
     g_signal_connect_object (self->view, "page-reordered", G_CALLBACK (page_reordered_cb), self, G_CONNECT_SWAPPED);
 
     if (!self->pinned) {
+      g_signal_connect_object (self->view, "notify::n-pages", G_CALLBACK (update_single_tab_style), self, G_CONNECT_SWAPPED);
+      g_signal_connect_object (self->view, "notify::n-pinned-pages", G_CALLBACK (update_single_tab_style), self, G_CONNECT_SWAPPED);
+
+      update_single_tab_style (self);
+
       self->view_drop_target = GTK_EVENT_CONTROLLER (gtk_drop_target_new (ADW_TYPE_TAB_PAGE, GDK_ACTION_MOVE));
 
       g_signal_connect_object (self->view_drop_target, "drop", G_CALLBACK (view_drag_drop_cb), self, G_CONNECT_SWAPPED);
@@ -3937,6 +3986,8 @@ adw_tab_box_set_expand_tabs (AdwTabBox *
 
   self->expand_tabs = expand_tabs;
 
+  update_single_tab_style (self);
+
   gtk_widget_queue_resize (GTK_WIDGET (self));
 }
 
@@ -3969,4 +4020,3 @@ adw_tab_box_set_inverted (AdwTabBox *sel
     adw_tab_set_inverted (info->tab, inverted);
   }
 }
-
diff -pruN 1.2~alpha-1/src/adw-tab.c 1.2~beta-1/src/adw-tab.c
--- 1.2~alpha-1/src/adw-tab.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-tab.c	2022-08-05 21:51:59.000000000 +0000
@@ -346,7 +346,7 @@ ensure_shader (AdwTab *self)
     /* If shaders aren't supported, the error doesn't matter and we just
      * silently fall back */
     if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED))
-      g_critical ("Couldn't compile shader: %s\n", error->message);
+      g_warning ("Couldn't compile shader: %s\n", error->message);
   }
 
   g_clear_error (&error);
diff -pruN 1.2~alpha-1/src/adw-tab.ui 1.2~beta-1/src/adw-tab.ui
--- 1.2~alpha-1/src/adw-tab.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-tab.ui	2022-08-05 21:51:59.000000000 +0000
@@ -58,6 +58,11 @@
       <object class="GtkButton" id="indicator_btn">
         <property name="can-focus">False</property>
         <property name="valign">center</property>
+        <binding name="tooltip-markup">
+          <lookup name="indicator-tooltip" type="AdwTabPage">
+            <lookup name="page">AdwTab</lookup>
+          </lookup>
+        </binding>
         <signal name="clicked" handler="indicator_clicked_cb" swapped="true"/>
         <style>
           <class name="flat"/>
@@ -80,6 +85,7 @@
         <property name="can-focus">False</property>
         <property name="opacity">0</property>
         <property name="valign">center</property>
+        <property name="tooltip-text" translatable="yes">Close Tab</property>
         <property name="icon-name">window-close-symbolic</property>
         <signal name="clicked" handler="close_clicked_cb" swapped="true"/>
         <style>
diff -pruN 1.2~alpha-1/src/adw-tab-view.c 1.2~beta-1/src/adw-tab-view.c
--- 1.2~alpha-1/src/adw-tab-view.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-tab-view.c	2022-08-05 21:51:59.000000000 +0000
@@ -39,25 +39,19 @@ static GSList *tab_view_list;
  *
  * As such, it does not support disabling page reordering or detaching.
  *
- * `AdwTabView` adds the following shortcuts in the managed scope:
+ * `AdwTabView` adds a number of global page switching and reordering shortcuts.
+ * The [property@TabView:shortcuts] property can be used to manage them.
  *
- * * <kbd>Ctrl</kbd>+<kbd>Page Up</kbd> - switch to the previous page
- * * <kbd>Ctrl</kbd>+<kbd>Page Down</kbd> - switch to the next page
- * * <kbd>Ctrl</kbd>+<kbd>Home</kbd> - switch to the first page
- * * <kbd>Ctrl</kbd>+<kbd>End</kbd> - switch to the last page
- * * <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Page Up</kbd> - move the current page
- *     backward
- * * <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Page Down</kbd> - move the current
- *     page forward
- * * <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Home</kbd> - move the current page at
- *     the start
- * * <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>End</kbd> - move the current page at
- *      the end
- * * <kbd>Ctrl</kbd>+<kbd>Tab</kbd> - switch to the next page, with looping
- * * <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Tab</kbd> - switch to the previous
- *     page, with looping
- * * <kbd>Alt</kbd>+<kbd>1</kbd>⋯<kbd>9</kbd> - switch to pages 1-9
- * * <kbd>Alt</kbd>+<kbd>0</kbd> - switch to page 10
+ * See [flags@TabViewShortcuts] for the list of the available shortcuts. All of
+ * the shortcuts are enabled by default.
+ *
+ * [method@TabView.add_shortcuts] and [method@TabView.remove_shortcuts] can be
+ * used to manage shortcuts in a convenient way, for example:
+ *
+ * ```c
+ * adw_tab_view_remove_shortcuts (view, ADW_TAB_VIEW_SHORTCUT_CONTROL_HOME |
+ *                                      ADW_TAB_VIEW_SHORTCUT_CONTROL_END);
+ * ```
  *
  * ## CSS nodes
  *
@@ -72,6 +66,51 @@ static GSList *tab_view_list;
  * An auxiliary class used by [class@TabView].
  */
 
+/**
+ * AdwTabViewShortcuts:
+ * @ADW_TAB_VIEW_SHORTCUT_NONE: No shortcuts
+ * @ADW_TAB_VIEW_SHORTCUT_CONTROL_TAB:
+ *   <kbd>Ctrl</kbd>+<kbd>Tab</kbd> - switch to the next page, with looping
+ * @ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_TAB:
+ *   <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Tab</kbd> - switch to the previous
+ *   page, with looping
+ * @ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_UP:
+ *   <kbd>Ctrl</kbd>+<kbd>Page Up</kbd> - switch to the previous page
+ * @ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_DOWN:
+ *   <kbd>Ctrl</kbd>+<kbd>Page Down</kbd> - switch to the next page
+ * @ADW_TAB_VIEW_SHORTCUT_CONTROL_HOME:
+ *   <kbd>Ctrl</kbd>+<kbd>Home</kbd> - switch to the first page
+ * @ADW_TAB_VIEW_SHORTCUT_CONTROL_END:
+ *   <kbd>Ctrl</kbd>+<kbd>End</kbd> - switch to the last page
+ * @ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_PAGE_UP:
+ *   <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Page Up</kbd> - move the selected
+ *   page backward
+ * @ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_PAGE_DOWN:
+ *   <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Page Down</kbd> - move the selected
+ *   page forward
+ * @ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_HOME:
+ *   <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Home</kbd> - move the selected page
+ *   at the start
+ * @ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_END:
+ *   <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>End</kbd> - move the current page at
+ *   the end
+ * @ADW_TAB_VIEW_SHORTCUT_ALT_DIGITS:
+ *  <kbd>Alt</kbd>+<kbd>1</kbd>⋯<kbd>9</kbd> - switch to pages 1-9
+ * @ADW_TAB_VIEW_SHORTCUT_ALT_ZERO:
+ *  <kbd>Alt</kbd>+<kbd>0</kbd> - switch to page 10
+ * @ADW_TAB_VIEW_SHORTCUT_ALL_SHORTCUTS: All of the shortcuts
+ *
+ * Describes available shortcuts in an [class@TabView].
+ *
+ * Shortcuts can be set with [property@TabView:shortcuts], or added/removed
+ * individually with [method@TabView.add_shortcuts] and
+ * [method@TabView.remove_shortcuts].
+ *
+ * New values may be added to this enumeration over time.
+ *
+ * Since: 1.2
+ */
+
 struct _AdwTabPage
 {
   GObject parent_instance;
@@ -85,6 +124,7 @@ struct _AdwTabPage
   GIcon *icon;
   gboolean loading;
   GIcon *indicator_icon;
+  char *indicator_tooltip;
   gboolean indicator_activatable;
   gboolean needs_attention;
 
@@ -104,6 +144,7 @@ enum {
   PAGE_PROP_ICON,
   PAGE_PROP_LOADING,
   PAGE_PROP_INDICATOR_ICON,
+  PAGE_PROP_INDICATOR_TOOLTIP,
   PAGE_PROP_INDICATOR_ACTIVATABLE,
   PAGE_PROP_NEEDS_ATTENTION,
   LAST_PAGE_PROP
@@ -115,7 +156,7 @@ struct _AdwTabView
 {
   GtkWidget parent_instance;
 
-  GtkStack *stack;
+  GtkWidget *stack;
   GListStore *children;
 
   int n_pages;
@@ -123,6 +164,7 @@ struct _AdwTabView
   AdwTabPage *selected_page;
   GIcon *default_icon;
   GMenuModel *menu_model;
+  AdwTabViewShortcuts shortcuts;
 
   int transfer_count;
 
@@ -144,6 +186,7 @@ enum {
   PROP_SELECTED_PAGE,
   PROP_DEFAULT_ICON,
   PROP_MENU_MODEL,
+  PROP_SHORTCUTS,
   PROP_PAGES,
   LAST_PROP
 };
@@ -256,6 +299,7 @@ adw_tab_page_finalize (GObject *object)
   g_clear_pointer (&self->tooltip, g_free);
   g_clear_object (&self->icon);
   g_clear_object (&self->indicator_icon);
+  g_clear_pointer (&self->indicator_tooltip, g_free);
 
   G_OBJECT_CLASS (adw_tab_page_parent_class)->finalize (object);
 }
@@ -305,6 +349,10 @@ adw_tab_page_get_property (GObject    *o
     g_value_set_object (value, adw_tab_page_get_indicator_icon (self));
     break;
 
+  case PAGE_PROP_INDICATOR_TOOLTIP:
+    g_value_set_string (value, adw_tab_page_get_indicator_tooltip (self));
+    break;
+
   case PAGE_PROP_INDICATOR_ACTIVATABLE:
     g_value_set_boolean (value, adw_tab_page_get_indicator_activatable (self));
     break;
@@ -355,6 +403,10 @@ adw_tab_page_set_property (GObject
     adw_tab_page_set_indicator_icon (self, g_value_get_object (value));
     break;
 
+  case PAGE_PROP_INDICATOR_TOOLTIP:
+    adw_tab_page_set_indicator_tooltip (self, g_value_get_string (value));
+    break;
+
   case PAGE_PROP_INDICATOR_ACTIVATABLE:
     adw_tab_page_set_indicator_activatable (self, g_value_get_boolean (value));
     break;
@@ -509,6 +561,9 @@ adw_tab_page_class_init (AdwTabPageClass
    * If the page is pinned, the indicator will be shown instead of icon or
    * spinner.
    *
+   * [property@TabPage:indicator-tooltip] can be used to set the tooltip on the
+   * indicator icon.
+   *
    * If [property@TabPage:indicator-activatable] is set to `TRUE`, the
    * indicator icon can act as a button.
    *
@@ -520,6 +575,22 @@ adw_tab_page_class_init (AdwTabPageClass
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
+   * AdwTabPage:indicator-tooltip: (attributes org.gtk.Property.get=adw_tab_page_get_indicator_tooltip org.gtk.Property.set=adw_tab_page_set_indicator_tooltip)
+   *
+   * The tooltip of the indicator icon.
+   *
+   * The tooltip can be marked up with the Pango text markup language.
+   *
+   * See [property@TabPage:indicator-icon].
+   *
+   * Since: 1.2
+   */
+  page_props[PAGE_PROP_INDICATOR_TOOLTIP] =
+    g_param_spec_string ("indicator-tooltip", NULL, NULL,
+                         "",
+                         G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
+
+  /**
    * AdwTabPage:indicator-activatable: (attributes org.gtk.Property.get=adw_tab_page_get_indicator_activatable org.gtk.Property.set=adw_tab_page_set_indicator_activatable)
    *
    * Whether the indicator icon is activatable.
@@ -560,6 +631,7 @@ adw_tab_page_init (AdwTabPage *self)
 {
   self->title = g_strdup ("");
   self->tooltip = g_strdup ("");
+  self->indicator_tooltip = g_strdup ("");
 }
 
 #define ADW_TYPE_TAB_PAGES (adw_tab_pages_get_type ())
@@ -741,7 +813,7 @@ page_belongs_to_this_view (AdwTabView *s
   if (!page)
     return FALSE;
 
-  return gtk_widget_get_parent (page->child) == GTK_WIDGET (self->stack);
+  return gtk_widget_get_parent (page->child) == self->stack;
 }
 
 static inline gboolean
@@ -764,7 +836,7 @@ attach_page (AdwTabView *self,
 
   g_list_store_insert (self->children, position, page);
 
-  gtk_stack_add_child (self->stack, child);
+  gtk_stack_add_child (GTK_STACK (self->stack), child);
 
   g_object_freeze_notify (G_OBJECT (self));
 
@@ -807,7 +879,7 @@ set_selected_page (AdwTabView *self,
     if (notify_pages && self->pages)
       new_position = adw_tab_view_get_page_position (self, self->selected_page);
 
-    gtk_stack_set_visible_child (self->stack,
+    gtk_stack_set_visible_child (GTK_STACK (self->stack),
                                  adw_tab_page_get_child (selected_page));
     set_page_selected (self->selected_page, TRUE);
   }
@@ -900,7 +972,7 @@ detach_page (AdwTabView *self,
 
   g_object_thaw_notify (G_OBJECT (self));
 
-  gtk_stack_remove (self->stack, child);
+  gtk_stack_remove (GTK_STACK (self->stack), child);
 
   g_signal_emit (self, signals[SIGNAL_PAGE_DETACHED], 0, page, pos);
 
@@ -962,111 +1034,24 @@ close_page_cb (AdwTabView *self,
 }
 
 static gboolean
-select_page (AdwTabView       *self,
-             GtkDirectionType  direction,
-             gboolean          last)
-{
-  gboolean is_rtl, success = last;
-
-  if (!self->selected_page)
-    return FALSE;
-
-  is_rtl = gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL;
-
-  if (direction == GTK_DIR_LEFT)
-    direction = is_rtl ? GTK_DIR_TAB_FORWARD : GTK_DIR_TAB_BACKWARD;
-  else if (direction == GTK_DIR_RIGHT)
-    direction = is_rtl ? GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD;
-
-  if (direction == GTK_DIR_TAB_BACKWARD) {
-    if (last)
-      success = adw_tab_view_select_first_page (self);
-    else
-      success = adw_tab_view_select_previous_page (self);
-  } else if (direction == GTK_DIR_TAB_FORWARD) {
-    if (last)
-      success = adw_tab_view_select_last_page (self);
-    else
-      success = adw_tab_view_select_next_page (self);
-  }
-
-  gtk_widget_grab_focus (adw_tab_page_get_child (self->selected_page));
-
-  return success;
-}
-
-static gboolean
-reorder_page (AdwTabView       *self,
-              GtkDirectionType  direction,
-              gboolean          last)
-{
-  gboolean is_rtl, success = last;
-
-  if (!self->selected_page)
-    return FALSE;
-
-  is_rtl = gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL;
-
-  if (direction == GTK_DIR_LEFT)
-    direction = is_rtl ? GTK_DIR_TAB_FORWARD : GTK_DIR_TAB_BACKWARD;
-  else if (direction == GTK_DIR_RIGHT)
-    direction = is_rtl ? GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD;
-
-  if (direction == GTK_DIR_TAB_BACKWARD) {
-    if (last)
-      success = adw_tab_view_reorder_first (self, self->selected_page);
-    else
-      success = adw_tab_view_reorder_backward (self, self->selected_page);
-  } else if (direction == GTK_DIR_TAB_FORWARD) {
-    if (last)
-      success = adw_tab_view_reorder_last (self, self->selected_page);
-    else
-      success = adw_tab_view_reorder_forward (self, self->selected_page);
-  }
-
-  return success;
-}
-
-static inline gboolean
-handle_select_reorder_shortcuts (AdwTabView       *self,
-                                 guint             keyval,
-                                 GdkModifierType   state,
-                                 guint             keysym,
-                                 GtkDirectionType  direction,
-                                 gboolean          last)
-{
-  /* All keypad keysyms are aligned at the same order as non-keypad ones */
-  guint keypad_keysym = keysym - GDK_KEY_Left + GDK_KEY_KP_Left;
-  gboolean success = FALSE;
-
-  if (keyval != keysym && keyval != keypad_keysym)
-    return GDK_EVENT_PROPAGATE;
-
-  if (state == GDK_CONTROL_MASK)
-    success = select_page (self, direction, last);
-  else if (state == (GDK_CONTROL_MASK | GDK_SHIFT_MASK))
-    success = reorder_page (self, direction, last);
-  else
-    return GDK_EVENT_PROPAGATE;
-
-  if (!success)
-    gtk_widget_error_bell (GTK_WIDGET (self));
-
-  return GDK_EVENT_STOP;
-}
-
-static gboolean
 select_page_cb (GtkWidget  *widget,
                 GVariant   *args,
                 AdwTabView *self)
 {
+  AdwTabViewShortcuts mask;
   GtkDirectionType direction;
   gboolean last, loop, success = FALSE;
 
   if (!adw_tab_view_get_selected_page (self))
     return GDK_EVENT_PROPAGATE;
 
-  g_variant_get (args, "(hbb)", &direction, &last, &loop);
+  if (self->n_pages <= 1)
+    return GDK_EVENT_PROPAGATE;
+
+  g_variant_get (args, "(hhbb)", &mask, &direction, &last, &loop);
+
+  if (!(self->shortcuts & mask))
+    return GDK_EVENT_PROPAGATE;
 
   if (direction == GTK_DIR_TAB_BACKWARD) {
     if (last)
@@ -1099,18 +1084,19 @@ select_page_cb (GtkWidget  *widget,
   if (!success)
     gtk_widget_error_bell (GTK_WIDGET (self));
 
-  return success;
+  return GDK_EVENT_STOP;
 }
 
 static inline void
-add_switch_shortcut (AdwTabView         *self,
-                     GtkEventController *controller,
-                     guint               keysym,
-                     guint               keypad_keysym,
-                     GdkModifierType     modifiers,
-                     GtkDirectionType    direction,
-                     gboolean            last,
-                     gboolean            loop)
+add_switch_shortcut (AdwTabView          *self,
+                     GtkEventController  *controller,
+                     AdwTabViewShortcuts  mask,
+                     guint                keysym,
+                     guint                keypad_keysym,
+                     GdkModifierType      modifiers,
+                     GtkDirectionType     direction,
+                     gboolean             last,
+                     gboolean             loop)
 {
   GtkShortcutTrigger *trigger;
   GtkShortcutAction *action;
@@ -1121,7 +1107,7 @@ add_switch_shortcut (AdwTabView
   action = gtk_callback_action_new ((GtkShortcutFunc) select_page_cb, self, NULL);
   shortcut = gtk_shortcut_new (trigger, action);
 
-  gtk_shortcut_set_arguments (shortcut, g_variant_new ("(hbb)", direction, last, loop));
+  gtk_shortcut_set_arguments (shortcut, g_variant_new ("(hhbb)", mask, direction, last, loop));
   gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller),
                                         shortcut);
 }
@@ -1131,6 +1117,7 @@ reorder_page_cb (GtkWidget  *widget,
                  GVariant   *args,
                  AdwTabView *self)
 {
+  AdwTabViewShortcuts mask;
   GtkDirectionType direction;
   gboolean last, success = FALSE;
   AdwTabPage *page = adw_tab_view_get_selected_page (self);
@@ -1138,7 +1125,13 @@ reorder_page_cb (GtkWidget  *widget,
   if (!page)
     return GDK_EVENT_PROPAGATE;
 
-  g_variant_get (args, "(hb)", &direction, &last);
+  if (self->n_pages <= 1)
+    return GDK_EVENT_PROPAGATE;
+
+  g_variant_get (args, "(hhb)", &mask, &direction, &last);
+
+  if (!(self->shortcuts & mask))
+    return GDK_EVENT_PROPAGATE;
 
   if (direction == GTK_DIR_TAB_BACKWARD) {
     if (last)
@@ -1155,16 +1148,17 @@ reorder_page_cb (GtkWidget  *widget,
   if (!success)
     gtk_widget_error_bell (GTK_WIDGET (self));
 
-  return success;
+  return GDK_EVENT_STOP;
 }
 
 static inline void
-add_reorder_shortcut (AdwTabView         *self,
-                      GtkEventController *controller,
-                      guint               keysym,
-                      guint               keypad_keysym,
-                      GtkDirectionType    direction,
-                      gboolean            last)
+add_reorder_shortcut (AdwTabView          *self,
+                      GtkEventController  *controller,
+                      AdwTabViewShortcuts  mask,
+                      guint                keysym,
+                      guint                keypad_keysym,
+                      GtkDirectionType     direction,
+                      gboolean             last)
 {
   GtkShortcutTrigger *trigger;
   GtkShortcutAction *action;
@@ -1175,7 +1169,7 @@ add_reorder_shortcut (AdwTabView
   action = gtk_callback_action_new ((GtkShortcutFunc) reorder_page_cb, self, NULL);
   shortcut = gtk_shortcut_new (trigger, action);
 
-  gtk_shortcut_set_arguments (shortcut, g_variant_new ("(hb)", direction, last));
+  gtk_shortcut_set_arguments (shortcut, g_variant_new ("(hhb)", mask, direction, last));
   gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller),
                                         shortcut);
 }
@@ -1186,11 +1180,21 @@ select_nth_page_cb (GtkWidget  *widget,
                     AdwTabView *self)
 {
   gint8 n_page = g_variant_get_byte (args);
+  AdwTabViewShortcuts mask;
   AdwTabPage *page;
 
   if (n_page >= self->n_pages)
     return GDK_EVENT_PROPAGATE;
 
+  /* Pages are counted from 0, so page 9 represents Alt+0 */
+  if (n_page == 9)
+    mask = ADW_TAB_VIEW_SHORTCUT_ALT_ZERO;
+  else
+    mask = ADW_TAB_VIEW_SHORTCUT_ALT_DIGITS;
+
+  if (!(self->shortcuts & mask))
+    return GDK_EVENT_PROPAGATE;
+
   page = adw_tab_view_get_nth_page (self, n_page);
   if (adw_tab_view_get_selected_page (self) == page)
     return GDK_EVENT_PROPAGATE;
@@ -1228,34 +1232,44 @@ init_shortcuts (AdwTabView         *self
   int i;
 
   add_switch_shortcut (self, controller,
+                       ADW_TAB_VIEW_SHORTCUT_CONTROL_TAB,
                        GDK_KEY_Tab, GDK_KEY_KP_Tab, GDK_CONTROL_MASK,
                        GTK_DIR_TAB_FORWARD, FALSE, TRUE);
   add_switch_shortcut (self, controller,
+                       ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_TAB,
                        GDK_KEY_Tab, GDK_KEY_KP_Tab, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
                        GTK_DIR_TAB_BACKWARD, FALSE, TRUE);
   add_switch_shortcut (self, controller,
+                       ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_UP,
                        GDK_KEY_Page_Up, GDK_KEY_KP_Page_Up, GDK_CONTROL_MASK,
                        GTK_DIR_TAB_BACKWARD, FALSE, FALSE);
   add_switch_shortcut (self, controller,
+                       ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_DOWN,
                        GDK_KEY_Page_Down, GDK_KEY_KP_Page_Down, GDK_CONTROL_MASK,
                        GTK_DIR_TAB_FORWARD, FALSE, FALSE);
   add_switch_shortcut (self, controller,
+                       ADW_TAB_VIEW_SHORTCUT_CONTROL_HOME,
                        GDK_KEY_Home, GDK_KEY_KP_Home, GDK_CONTROL_MASK,
                        GTK_DIR_TAB_BACKWARD, TRUE, FALSE);
   add_switch_shortcut (self, controller,
+                       ADW_TAB_VIEW_SHORTCUT_CONTROL_END,
                        GDK_KEY_End, GDK_KEY_KP_End, GDK_CONTROL_MASK,
                        GTK_DIR_TAB_FORWARD, TRUE, FALSE);
 
   add_reorder_shortcut (self, controller,
+                        ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_PAGE_UP,
                         GDK_KEY_Page_Up, GDK_KEY_KP_Page_Up,
                         GTK_DIR_TAB_BACKWARD, FALSE);
   add_reorder_shortcut (self, controller,
+                        ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_PAGE_DOWN,
                         GDK_KEY_Page_Down, GDK_KEY_KP_Page_Down,
                         GTK_DIR_TAB_FORWARD, FALSE);
   add_reorder_shortcut (self, controller,
+                        ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_HOME,
                         GDK_KEY_Home, GDK_KEY_KP_Home,
                         GTK_DIR_TAB_BACKWARD, TRUE);
   add_reorder_shortcut (self, controller,
+                        ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_END,
                         GDK_KEY_End, GDK_KEY_KP_End,
                         GTK_DIR_TAB_FORWARD,  TRUE);
 
@@ -1283,7 +1297,7 @@ adw_tab_view_dispose (GObject *object)
 
   g_clear_object (&self->children);
 
-  g_clear_pointer ((GtkWidget **) &self->stack, gtk_widget_unparent);
+  g_clear_pointer (&self->stack, gtk_widget_unparent);
 
   G_OBJECT_CLASS (adw_tab_view_parent_class)->dispose (object);
 }
@@ -1338,6 +1352,10 @@ adw_tab_view_get_property (GObject    *o
     g_value_set_object (value, adw_tab_view_get_menu_model (self));
     break;
 
+  case PROP_SHORTCUTS:
+    g_value_set_flags (value, adw_tab_view_get_shortcuts (self));
+    break;
+
   case PROP_PAGES:
     g_value_take_object (value, adw_tab_view_get_pages (self));
     break;
@@ -1368,6 +1386,10 @@ adw_tab_view_set_property (GObject
     adw_tab_view_set_menu_model (self, g_value_get_object (value));
     break;
 
+  case PROP_SHORTCUTS:
+    adw_tab_view_set_shortcuts (self, g_value_get_flags (value));
+    break;
+
   default:
     G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
   }
@@ -1481,6 +1503,25 @@ adw_tab_view_class_init (AdwTabViewClass
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
+   * AdwTabView:shortcuts: (attributes org.gtk.Property.get=adw_tab_view_get_shortcuts org.gtk.Property.set=adw_tab_view_set_shortcuts)
+   *
+   * The enabled shortcuts.
+   *
+   * See [flags@TabViewShortcuts] for the list of the available shortcuts. All
+   * of the shortcuts are enabled by default.
+   *
+   * [method@TabView.add_shortcuts] and [method@TabView.remove_shortcuts]
+   * provide a convenient way to manage individual shortcuts.
+   *
+   * Since: 1.2
+   */
+  props[PROP_SHORTCUTS] =
+    g_param_spec_flags ("shortcuts", NULL, NULL,
+                        ADW_TYPE_TAB_VIEW_SHORTCUTS,
+                        ADW_TAB_VIEW_SHORTCUT_ALL_SHORTCUTS,
+                        G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
+
+  /**
    * AdwTabView:pages: (attributes org.gtk.Property.get=adw_tab_view_get_pages)
    *
    * A selection model with the tab view's pages.
@@ -1700,10 +1741,11 @@ adw_tab_view_init (AdwTabView *self)
 
   self->children = g_list_store_new (ADW_TYPE_TAB_PAGE);
   self->default_icon = G_ICON (g_themed_icon_new ("adw-tab-icon-missing-symbolic"));
+  self->shortcuts = ADW_TAB_VIEW_SHORTCUT_ALL_SHORTCUTS;
 
-  self->stack = GTK_STACK (gtk_stack_new ());
-  gtk_widget_show (GTK_WIDGET (self->stack));
-  gtk_widget_set_parent (GTK_WIDGET (self->stack), GTK_WIDGET (self));
+  self->stack = gtk_stack_new ();
+  gtk_widget_show (self->stack);
+  gtk_widget_set_parent (self->stack, GTK_WIDGET (self));
 
   g_object_bind_property (self, "is-transferring-page",
                           self->stack, "can-target",
@@ -1712,8 +1754,9 @@ adw_tab_view_init (AdwTabView *self)
   tab_view_list = g_slist_prepend (tab_view_list, self);
 
   controller = gtk_shortcut_controller_new ();
+  gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE);
   gtk_shortcut_controller_set_scope (GTK_SHORTCUT_CONTROLLER (controller),
-                                     GTK_SHORTCUT_SCOPE_MANAGED);
+                                     GTK_SHORTCUT_SCOPE_GLOBAL);
 
   init_shortcuts (self, controller);
 
@@ -2028,6 +2071,53 @@ adw_tab_page_set_indicator_icon (AdwTabP
 }
 
 /**
+ * adw_tab_page_get_indicator_tooltip: (attributes org.gtk.Method.get_property=indicator-tooltip)
+ * @self: a tab page
+ *
+ * Gets the tooltip of the indicator icon of @self.
+ *
+ * Returns: (transfer none): the indicator tooltip of @self
+ *
+ * Since: 1.2
+ */
+const char *
+adw_tab_page_get_indicator_tooltip (AdwTabPage *self)
+{
+  g_return_val_if_fail (ADW_IS_TAB_PAGE (self), NULL);
+
+  return self->indicator_tooltip;
+}
+
+/**
+ * adw_tab_page_set_indicator_tooltip: (attributes org.gtk.Method.set_property=indicator-tooltip)
+ * @self: a tab page
+ * @tooltip: the indicator tooltip of @self
+ *
+ * Sets the tooltip of the indicator icon of @self.
+ *
+ * The tooltip can be marked up with the Pango text markup language.
+ *
+ * See [property@TabPage:indicator-icon].
+ *
+ * Since: 1.2
+ */
+void
+adw_tab_page_set_indicator_tooltip (AdwTabPage *self,
+                                    const char *tooltip)
+{
+  g_return_if_fail (ADW_IS_TAB_PAGE (self));
+  g_return_if_fail (tooltip != NULL);
+
+  if (!g_strcmp0 (tooltip, self->indicator_tooltip))
+    return;
+
+  g_clear_pointer (&self->indicator_tooltip, g_free);
+  self->indicator_tooltip = g_strdup (tooltip ? tooltip : "");
+
+  g_object_notify_by_pspec (G_OBJECT (self), page_props[PAGE_PROP_INDICATOR_TOOLTIP]);
+}
+
+/**
  * adw_tab_page_get_indicator_activatable: (attributes org.gtk.Method.get_property=indicator-activatable)
  * @self: a tab page
  *
@@ -2439,6 +2529,96 @@ adw_tab_view_set_menu_model (AdwTabView
 }
 
 /**
+ * adw_tab_view_get_shortcuts: (attributes org.gtk.Method.get_property=shortcuts)
+ * @self: a tab view
+ *
+ * Gets the enabled shortcuts for @self.
+ *
+ * Returns: the shortcut mask
+ *
+ * Since: 1.2
+ */
+AdwTabViewShortcuts
+adw_tab_view_get_shortcuts (AdwTabView *self)
+{
+  g_return_val_if_fail (ADW_IS_TAB_VIEW (self), 0);
+
+  return self->shortcuts;
+}
+
+/**
+ * adw_tab_view_set_shortcuts: (attributes org.gtk.Method.set_property=shortcuts)
+ * @self: a tab view
+ * @shortcuts: the new shortcuts
+ *
+ * Sets the enabled shortcuts for @self.
+ *
+ * See [flags@TabViewShortcuts] for the list of the available shortcuts. All of
+ * the shortcuts are enabled by default.
+ *
+ * [method@TabView.add_shortcuts] and [method@TabView.remove_shortcuts] provide
+ * a convenient way to manage individual shortcuts.
+ *
+ * Since: 1.2
+ */
+void
+adw_tab_view_set_shortcuts (AdwTabView          *self,
+                            AdwTabViewShortcuts  shortcuts)
+{
+  g_return_if_fail (ADW_IS_TAB_VIEW (self));
+  g_return_if_fail (shortcuts <= ADW_TAB_VIEW_SHORTCUT_ALL_SHORTCUTS);
+
+  if (self->shortcuts == shortcuts)
+    return;
+
+  self->shortcuts = shortcuts;
+
+  g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SHORTCUTS]);
+}
+
+/**
+ * adw_tab_view_add_shortcuts:
+ * @self: a tab view
+ * @shortcuts: the shortcuts to add
+ *
+ * Adds @shortcuts for @self.
+ *
+ * See [property@TabView:shortcuts] for details.
+ *
+ * Since: 1.2
+ */
+void
+adw_tab_view_add_shortcuts (AdwTabView          *self,
+                            AdwTabViewShortcuts  shortcuts)
+{
+  g_return_if_fail (ADW_IS_TAB_VIEW (self));
+  g_return_if_fail (shortcuts <= ADW_TAB_VIEW_SHORTCUT_ALL_SHORTCUTS);
+
+  adw_tab_view_set_shortcuts (self, self->shortcuts | shortcuts);
+}
+
+/**
+ * adw_tab_view_remove_shortcuts:
+ * @self: a tab view
+ * @shortcuts: the shortcuts to reomve
+ *
+ * Removes @shortcuts from @self.
+ *
+ * See [property@TabView:shortcuts] for details.
+ *
+ * Since: 1.2
+ */
+void
+adw_tab_view_remove_shortcuts (AdwTabView          *self,
+                               AdwTabViewShortcuts  shortcuts)
+{
+  g_return_if_fail (ADW_IS_TAB_VIEW (self));
+  g_return_if_fail (shortcuts <= ADW_TAB_VIEW_SHORTCUT_ALL_SHORTCUTS);
+
+  adw_tab_view_set_shortcuts (self, self->shortcuts & ~shortcuts);
+}
+
+/**
  * adw_tab_view_set_page_pinned:
  * @self: a tab view
  * @page: a page of @self
@@ -2533,7 +2713,7 @@ adw_tab_view_get_page (AdwTabView *self,
 
   g_return_val_if_fail (ADW_IS_TAB_VIEW (self), NULL);
   g_return_val_if_fail (GTK_IS_WIDGET (child), NULL);
-  g_return_val_if_fail (gtk_widget_get_parent (child) == GTK_WIDGET (self->stack), NULL);
+  g_return_val_if_fail (gtk_widget_get_parent (child) == self->stack, NULL);
 
   for (i = 0; i < self->n_pages; i++) {
     AdwTabPage *page = adw_tab_view_get_nth_page (self, i);
diff -pruN 1.2~alpha-1/src/adw-tab-view.h 1.2~beta-1/src/adw-tab-view.h
--- 1.2~alpha-1/src/adw-tab-view.h	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-tab-view.h	2022-08-05 21:51:59.000000000 +0000
@@ -15,9 +15,27 @@
 #include "adw-version.h"
 
 #include <gtk/gtk.h>
+#include "adw-enums.h"
 
 G_BEGIN_DECLS
 
+typedef enum /*< flags >*/ {
+  ADW_TAB_VIEW_SHORTCUT_NONE                    = 0,
+  ADW_TAB_VIEW_SHORTCUT_CONTROL_TAB             = 1 << 0,
+  ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_TAB       = 1 << 1,
+  ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_UP         = 1 << 2,
+  ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_DOWN       = 1 << 3,
+  ADW_TAB_VIEW_SHORTCUT_CONTROL_HOME            = 1 << 4,
+  ADW_TAB_VIEW_SHORTCUT_CONTROL_END             = 1 << 5,
+  ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_PAGE_UP   = 1 << 6,
+  ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_PAGE_DOWN = 1 << 7,
+  ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_HOME      = 1 << 8,
+  ADW_TAB_VIEW_SHORTCUT_CONTROL_SHIFT_END       = 1 << 9,
+  ADW_TAB_VIEW_SHORTCUT_ALT_DIGITS              = 1 << 10,
+  ADW_TAB_VIEW_SHORTCUT_ALT_ZERO                = 1 << 11,
+  ADW_TAB_VIEW_SHORTCUT_ALL_SHORTCUTS           = 0xFFF
+} AdwTabViewShortcuts;
+
 #define ADW_TYPE_TAB_PAGE (adw_tab_page_get_type())
 
 ADW_AVAILABLE_IN_ALL
@@ -65,6 +83,12 @@ ADW_AVAILABLE_IN_ALL
 void   adw_tab_page_set_indicator_icon (AdwTabPage *self,
                                         GIcon      *indicator_icon);
 
+ADW_AVAILABLE_IN_1_2
+const char *adw_tab_page_get_indicator_tooltip (AdwTabPage *self);
+ADW_AVAILABLE_IN_1_2
+void        adw_tab_page_set_indicator_tooltip (AdwTabPage *self,
+                                                const char *tooltip);
+
 ADW_AVAILABLE_IN_ALL
 gboolean adw_tab_page_get_indicator_activatable (AdwTabPage *self);
 ADW_AVAILABLE_IN_ALL
@@ -116,6 +140,18 @@ ADW_AVAILABLE_IN_ALL
 void        adw_tab_view_set_menu_model (AdwTabView *self,
                                          GMenuModel *menu_model);
 
+ADW_AVAILABLE_IN_1_2
+AdwTabViewShortcuts adw_tab_view_get_shortcuts    (AdwTabView          *self);
+ADW_AVAILABLE_IN_1_2
+void                adw_tab_view_set_shortcuts    (AdwTabView          *self,
+                                                   AdwTabViewShortcuts  shortcuts);
+ADW_AVAILABLE_IN_1_2
+void                adw_tab_view_add_shortcuts    (AdwTabView          *self,
+                                                   AdwTabViewShortcuts  shortcuts);
+ADW_AVAILABLE_IN_1_2
+void                adw_tab_view_remove_shortcuts (AdwTabView          *self,
+                                                   AdwTabViewShortcuts  shortcuts);
+
 ADW_AVAILABLE_IN_ALL
 void adw_tab_view_set_page_pinned (AdwTabView *self,
                                    AdwTabPage *page,
diff -pruN 1.2~alpha-1/src/adw-toast.c 1.2~beta-1/src/adw-toast.c
--- 1.2~alpha-1/src/adw-toast.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-toast.c	2022-08-05 21:51:59.000000000 +0000
@@ -179,6 +179,7 @@ static GParamSpec *props[LAST_PROP];
 
 enum {
   SIGNAL_DISMISSED,
+  SIGNAL_BUTTON_CLICKED,
   SIGNAL_LAST_SIGNAL,
 };
 
@@ -434,6 +435,23 @@ adw_toast_class_init (AdwToastClass *kla
                   0,
                   NULL, NULL, NULL,
                   G_TYPE_NONE, 0);
+
+  /**
+   * AdwToast::button-clicked:
+   *
+   * Emitted after the button has been clicked.
+   *
+   * It can be used as an alternative to setting an action.
+   *
+   * Since: 1.2
+   */
+  signals[SIGNAL_BUTTON_CLICKED] =
+    g_signal_new ("button-clicked",
+                  G_TYPE_FROM_CLASS (klass),
+                  G_SIGNAL_RUN_LAST,
+                  0,
+                  NULL, NULL, NULL,
+                  G_TYPE_NONE, 0);
 }
 
 static void
diff -pruN 1.2~alpha-1/src/adw-toast-widget.c 1.2~beta-1/src/adw-toast-widget.c
--- 1.2~alpha-1/src/adw-toast-widget.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-toast-widget.c	2022-08-05 21:51:59.000000000 +0000
@@ -104,6 +104,8 @@ action_clicked_cb (AdwToastWidget *self)
 {
   end_timeout (self);
 
+  g_signal_emit_by_name (self->toast, "button-clicked");
+
   /* Keep the widget alive through the idle. Otherwise it may be immediately
    * destroyed if animations are disabled */
   g_idle_add (G_SOURCE_FUNC (close_idle_cb), g_object_ref (self));
diff -pruN 1.2~alpha-1/src/adw-view-stack.c 1.2~beta-1/src/adw-view-stack.c
--- 1.2~alpha-1/src/adw-view-stack.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-view-stack.c	2022-08-05 21:51:59.000000000 +0000
@@ -683,7 +683,8 @@ static AdwViewStackPage *
 add_internal (AdwViewStack *self,
               GtkWidget    *child,
               const char   *name,
-              const char   *title)
+              const char   *title,
+              const char   *icon_name)
 {
   AdwViewStackPage *page;
 
@@ -693,7 +694,7 @@ add_internal (AdwViewStack *self,
   page->widget = g_object_ref (child);
   page->name = g_strdup (name);
   page->title = g_strdup (title);
-  page->icon_name = NULL;
+  page->icon_name = g_strdup (icon_name);
   page->needs_attention = FALSE;
   page->last_focus = NULL;
 
@@ -988,7 +989,7 @@ adw_view_stack_buildable_add_child (GtkB
   if (ADW_IS_VIEW_STACK_PAGE (child))
     add_page (self, ADW_VIEW_STACK_PAGE (child));
   else if (GTK_IS_WIDGET (child))
-    add_internal (self, GTK_WIDGET (child), NULL, NULL);
+    add_internal (self, GTK_WIDGET (child), NULL, NULL, NULL);
   else
     parent_buildable_iface->add_child (buildable, builder, child, type);
 }
@@ -1376,7 +1377,7 @@ adw_view_stack_add (AdwViewStack   *self
   g_return_val_if_fail (ADW_IS_VIEW_STACK (self), NULL);
   g_return_val_if_fail (GTK_IS_WIDGET (child), NULL);
 
-  return add_internal (self, child, NULL, NULL);
+  return add_internal (self, child, NULL, NULL, NULL);
 }
 
 /**
@@ -1401,7 +1402,7 @@ adw_view_stack_add_named (AdwViewStack
   g_return_val_if_fail (ADW_IS_VIEW_STACK (self), NULL);
   g_return_val_if_fail (GTK_IS_WIDGET (child), NULL);
 
-  return add_internal (self, child, name, NULL);
+  return add_internal (self, child, name, NULL, NULL);
 }
 
 /**
@@ -1429,7 +1430,37 @@ adw_view_stack_add_titled (AdwViewStack
   g_return_val_if_fail (ADW_IS_VIEW_STACK (self), NULL);
   g_return_val_if_fail (GTK_IS_WIDGET (child), NULL);
 
-  return add_internal (self, child, name, title);
+  return add_internal (self, child, name, title, NULL);
+}
+
+/**
+ * adw_view_stack_add_titled_with_icon:
+ * @self: a view stack
+ * @child: the widget to add
+ * @name: (nullable): the name for @child
+ * @title: a human-readable title for @child
+ * @icon_name: an icon name for @child
+ *
+ * Adds a child to @self.
+ *
+ * The child is identified by the @name. The @title and @icon_name will be used
+ * by [class@ViewSwitcher] to represent @child.
+ *
+ * Returns: (transfer none): the `AdwViewStackPage` for @child
+ *
+ * Since: 1.2
+ */
+AdwViewStackPage *
+adw_view_stack_add_titled_with_icon (AdwViewStack *self,
+                                     GtkWidget    *child,
+                                     const char   *name,
+                                     const char   *title,
+                                     const char   *icon_name)
+{
+  g_return_val_if_fail (ADW_IS_VIEW_STACK (self), NULL);
+  g_return_val_if_fail (GTK_IS_WIDGET (child), NULL);
+
+  return add_internal (self, child, name, title, icon_name);
 }
 
 /**
diff -pruN 1.2~alpha-1/src/adw-view-stack.h 1.2~beta-1/src/adw-view-stack.h
--- 1.2~alpha-1/src/adw-view-stack.h	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-view-stack.h	2022-08-05 21:51:59.000000000 +0000
@@ -91,6 +91,12 @@ AdwViewStackPage *adw_view_stack_add_tit
                                              GtkWidget    *child,
                                              const char   *name,
                                              const char   *title);
+ADW_AVAILABLE_IN_1_2
+AdwViewStackPage *adw_view_stack_add_titled_with_icon (AdwViewStack *self,
+                                                       GtkWidget    *child,
+                                                       const char   *name,
+                                                       const char   *title,
+                                                       const char   *icon_name);
 
 ADW_AVAILABLE_IN_ALL
 void adw_view_stack_remove (AdwViewStack *self,
diff -pruN 1.2~alpha-1/src/adw-view-switcher-bar.c 1.2~beta-1/src/adw-view-switcher-bar.c
--- 1.2~alpha-1/src/adw-view-switcher-bar.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-view-switcher-bar.c	2022-08-05 21:51:59.000000000 +0000
@@ -36,17 +36,17 @@
  *
  * ```xml
  * <object class="GtkWindow">
- *   <child type="titlebar">
+ *   <property name="titlebar">
  *     <object class="AdwHeaderBar">
  *       <property name="centering-policy">strict</property>
- *       <child type="title">
+ *       <property name="title-widget">
  *         <object class="AdwViewSwitcherTitle" id="title">
  *           <property name="stack">stack</property>
  *         </object>
- *       </child>
+ *       </property>
  *     </object>
- *   </child>
- *   <child>
+ *   </property>
+ *   <property>
  *     <object class="GtkBox">
  *       <property name="orientation">vertical</property>
  *       <child>
@@ -61,7 +61,7 @@
  *         </object>
  *       </child>
  *     </object>
- *   </child>
+ *   </property>
  * </object>
  * ```
  *
diff -pruN 1.2~alpha-1/src/adw-view-switcher-button.ui 1.2~beta-1/src/adw-view-switcher-button.ui
--- 1.2~alpha-1/src/adw-view-switcher-button.ui	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-view-switcher-button.ui	2022-08-05 21:51:59.000000000 +0000
@@ -5,7 +5,7 @@
     <style>
       <class name="flat"/>
     </style>
-    <child>
+    <property name="child">
       <object class="GtkStack" id="stack">
         <property name="hhomogeneous">False</property>
         <property name="vhomogeneous">False</property>
@@ -80,7 +80,7 @@
           </object>
         </child>
       </object>
-    </child>
+    </property>
     <child>
       <object class="GtkDropControllerMotion">
         <signal name="enter" handler="drag_enter_cb" swapped="yes"/>
diff -pruN 1.2~alpha-1/src/adw-view-switcher-title.c 1.2~beta-1/src/adw-view-switcher-title.c
--- 1.2~alpha-1/src/adw-view-switcher-title.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-view-switcher-title.c	2022-08-05 21:51:59.000000000 +0000
@@ -43,17 +43,17 @@
  *
  * ```xml
  * <object class="GtkWindow">
- *   <child type="titlebar">
+ *   <property name="titlebar">
  *     <object class="AdwHeaderBar">
  *       <property name="centering-policy">strict</property>
- *       <child type="title">
+ *       <property name="title-widget">
  *         <object class="AdwViewSwitcherTitle" id="title">
  *           <property name="stack">stack</property>
  *         </object>
  *       </child>
  *     </object>
- *   </child>
- *   <child>
+ *   </property>
+ *   <property>
  *     <object class="GtkBox">
  *       <property name="orientation">vertical</property>
  *       <child>
@@ -68,7 +68,7 @@
  *         </object>
  *       </child>
  *     </object>
- *   </child>
+ *   </property>
  * </object>
  * ```
  *
diff -pruN 1.2~alpha-1/src/adw-window.c 1.2~beta-1/src/adw-window.c
--- 1.2~alpha-1/src/adw-window.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/adw-window.c	2022-08-05 21:51:59.000000000 +0000
@@ -214,6 +214,9 @@ adw_window_set_content (AdwWindow *self,
   g_return_if_fail (ADW_IS_WINDOW (self));
   g_return_if_fail (content == NULL || GTK_IS_WIDGET (content));
 
+  if (adw_window_get_content (self) == content)
+    return;
+
   adw_window_mixin_set_content (ADW_GET_WINDOW_MIXIN (self), content);
 
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CONTENT]);
diff -pruN 1.2~alpha-1/src/glsl/fade.glsl 1.2~beta-1/src/glsl/fade.glsl
--- 1.2~alpha-1/src/glsl/fade.glsl	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/glsl/fade.glsl	2022-08-05 21:51:59.000000000 +0000
@@ -18,10 +18,10 @@ mainImage (out vec4 fragColor,
   fragColor = GskTexture (u_texture1, uv);
 
   progress = fragCoord.x - offsetLeft;
-  progress = min (max (progress / widthLeft, 0), 1);
-  fragColor *= (1 + strengthLeft * (progress - 1));
+  progress = min (max (progress / widthLeft, 0.0), 1.0);
+  fragColor *= (1.0 + strengthLeft * (progress - 1.0));
 
   progress = resolution.x - offsetRight - fragCoord.x;
-  progress = min (max (progress / widthRight, 0), 1);
-  fragColor *= (1 + strengthRight * (progress - 1));
+  progress = min (max (progress / widthRight, 0.0), 1.0);
+  fragColor *= (1.0 + strengthRight * (progress - 1.0));
 }
diff -pruN 1.2~alpha-1/src/glsl/mask.glsl 1.2~beta-1/src/glsl/mask.glsl
--- 1.2~alpha-1/src/glsl/mask.glsl	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/glsl/mask.glsl	2022-08-05 21:51:59.000000000 +0000
@@ -10,5 +10,5 @@ mainImage (out vec4 fragColor,
   vec4 source = GskTexture (u_texture1, uv);
   vec4 mask = GskTexture (u_texture2, uv);
 
-  fragColor = source * (1 - mask.w);
+  fragColor = source * (1.0 - mask.a);
 }
diff -pruN 1.2~alpha-1/src/meson.build 1.2~beta-1/src/meson.build
--- 1.2~alpha-1/src/meson.build	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/meson.build	2022-08-05 21:51:59.000000000 +0000
@@ -20,6 +20,7 @@ adw_public_enum_headers = [
   'adw-navigation-direction.h',
   'adw-style-manager.h',
   'adw-squeezer.h',
+  'adw-tab-view.h',
   'adw-toast.h',
   'adw-view-switcher.h',
 ]
diff -pruN 1.2~alpha-1/src/stylesheet/base.css 1.2~beta-1/src/stylesheet/base.css
--- 1.2~alpha-1/src/stylesheet/base.css	2022-07-09 22:13:14.038742300 +0000
+++ 1.2~beta-1/src/stylesheet/base.css	2022-08-05 21:58:56.481396700 +0000
@@ -109,7 +109,7 @@ avatar.contrasted { color: white; }
 
 avatar.image { background: none; }
 
-notebook > header > tabs > arrow, colorswatch#add-color-button > overlay, button { min-height: 24px; min-width: 16px; padding: 5px 10px; border-radius: 6px; font-weight: bold; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+notebook > header > tabs > arrow, colorswatch#add-color-button > overlay, button { min-height: 24px; min-width: 16px; padding: 5px 10px; border-radius: 6px; font-weight: bold; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 notebook > header > tabs > arrow, colorswatch#add-color-button > overlay, button { outline: 0 solid transparent; outline-offset: 4px; }
 
@@ -151,7 +151,7 @@ notebook > header > tabs > arrow.arrow-b
 
 dropdown:drop(active) button.combo, combobox:drop(active) button.combo, infobar .close:drop(active), searchbar > revealer > box .close:drop(active), actionbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), searchbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), .toolbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), headerbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), actionbar > revealer > box button.arrow-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.arrow-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.arrow-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.arrow-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-text-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-text-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-text-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-text-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.up:drop(active):not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.down:drop(active):not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), button.sidebar-button:drop(active), window.dialog.message.csd .dialog-action-area > button:drop(active), popover.menu box.circular-buttons button.circular.image-button.model:drop(active), popover.menu box.inline-buttons button.image-button.model:drop(active), button.emoji-section.image-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), calendar > header > button:drop(active), actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button:drop(active), searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button:drop(active), .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button:drop(active), headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button:drop(active), splitbutton.flat > button:drop(active), splitbutton.flat > menubutton > button:drop(active), menubutton.flat > button:drop(active), button.flat:drop(active), menubutton.osd > button:drop(active), button.osd:drop(active), notebook > header > tabs > arrow:drop(active), colorswatch#add-color-button > overlay:drop(active), button:drop(active) { color: @accent_bg_color; box-shadow: inset 0 0 0 2px @accent_bg_color; }
 
-menubutton.osd > button, button.osd { min-width: 32px; min-height: 32px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: rgba(255, 255, 255, 0.9); background-color: rgba(0, 0, 0, 0.65); }
+menubutton.osd > button, button.osd { min-width: 32px; min-height: 32px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: rgba(255, 255, 255, 0.9); background-color: rgba(0, 0, 0, 0.65); }
 
 menubutton.osd > button, button.osd { outline: 0 solid transparent; outline-offset: 5px; }
 
@@ -167,7 +167,7 @@ menubutton.osd > button:checked:hover, b
 
 menubutton.osd > button.keyboard-activating:checked, menubutton.osd > button:checked:active, button.osd.keyboard-activating:checked, button.osd:checked:active { background-color: alpha(mix(black,currentColor,0.35),0.65); }
 
-actionbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), splitbutton.suggested-action > button, splitbutton.suggested-action > menubutton > button, splitbutton.destructive-action > button, splitbutton.destructive-action > menubutton > button, splitbutton.opaque > button, splitbutton.opaque > menubutton > button, menubutton.suggested-action > button, menubutton.destructive-action > button, menubutton.opaque > button, button.suggested-action, button.destructive-action, button.opaque { box-shadow: none; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+actionbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), splitbutton.suggested-action > button, splitbutton.suggested-action > menubutton > button, splitbutton.destructive-action > button, splitbutton.destructive-action > menubutton > button, splitbutton.opaque > button, splitbutton.opaque > menubutton > button, menubutton.suggested-action > button, menubutton.destructive-action > button, menubutton.opaque > button, button.suggested-action, button.destructive-action, button.opaque { box-shadow: none; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 actionbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), splitbutton.suggested-action > button, splitbutton.suggested-action > menubutton > button, splitbutton.destructive-action > button, splitbutton.destructive-action > menubutton > button, splitbutton.opaque > button, splitbutton.opaque > menubutton > button, menubutton.suggested-action > button, menubutton.destructive-action > button, menubutton.opaque > button, button.suggested-action, button.destructive-action, button.opaque { outline: 0 solid transparent; outline-offset: 5px; }
 
@@ -195,7 +195,7 @@ button.suggested-action { color: @accent
 
 button.suggested-action, button.suggested-action:checked { background-color: @accent_bg_color; }
 
-infobar .close, searchbar > revealer > box .close, actionbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.up:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.down:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), button.sidebar-button, notebook > header > tabs > arrow, window.dialog.message.csd .dialog-action-area > button, popover.menu box.circular-buttons button.circular.image-button.model, popover.menu box.inline-buttons button.image-button.model, button.emoji-section.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), calendar > header > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, splitbutton.flat > button, splitbutton.flat > menubutton > button, menubutton.flat > button, button.flat { background: transparent; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); box-shadow: none; }
+infobar .close, searchbar > revealer > box .close, actionbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.up:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.down:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), button.sidebar-button, notebook > header > tabs > arrow, window.dialog.message.csd .dialog-action-area > button, popover.menu box.circular-buttons button.circular.image-button.model, popover.menu box.inline-buttons button.image-button.model, button.emoji-section.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), calendar > header > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, splitbutton.flat > button, splitbutton.flat > menubutton > button, menubutton.flat > button, button.flat { background: transparent; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); box-shadow: none; }
 
 infobar .close, searchbar > revealer > box .close, actionbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.up:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.down:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), button.sidebar-button, notebook > header > tabs > arrow, window.dialog.message.csd .dialog-action-area > button, popover.menu box.circular-buttons button.circular.image-button.model, popover.menu box.inline-buttons button.image-button.model, button.emoji-section.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), calendar > header > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, splitbutton.flat > button, splitbutton.flat > menubutton > button, menubutton.flat > button, button.flat { outline: 0 solid transparent; outline-offset: 4px; }
 
@@ -231,7 +231,7 @@ button.emoji-section.image-button:not(.r
 
 menubutton.pill > button, button.pill { padding: 10px 32px; border-radius: 9999px; }
 
-button.card { background-color: @card_bg_color; background-clip: padding-box; font-weight: inherit; padding: 0; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+button.card { background-color: @card_bg_color; background-clip: padding-box; font-weight: inherit; padding: 0; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 button.card:hover { background-image: image(alpha(currentColor,0.03)); }
 
@@ -289,7 +289,7 @@ menubutton arrow.right { -gtk-icon-sourc
 
 splitbutton { border-radius: 6px; }
 
-splitbutton, splitbutton > separator { transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: background; }
+splitbutton, splitbutton > separator { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: background; }
 
 splitbutton > separator { margin-top: 6px; margin-bottom: 6px; background: none; }
 
@@ -524,7 +524,7 @@ emoji-completion-row:focus, emoji-comple
 
 emoji-completion-row:active { background-color: alpha(currentColor,0.16); }
 
-spinbutton, entry { min-height: 34px; padding-left: 9px; padding-right: 9px; border-radius: 6px; border-spacing: 6px; background-color: alpha(currentColor,0.1); background-clip: padding-box; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); caret-color: currentColor; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
+spinbutton, entry { min-height: 34px; padding-left: 9px; padding-right: 9px; border-radius: 6px; border-spacing: 6px; background-color: alpha(currentColor,0.1); background-clip: padding-box; caret-color: currentColor; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 spinbutton, entry { outline: 0 solid transparent; outline-offset: 4px; }
 
@@ -620,9 +620,9 @@ expander-widget > box > title > expander
 
 expander-widget > box > title:hover > expander, expander-widget > box > title:active > expander { opacity: 1; }
 
-placesview .server-list-button > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(0turn); }
+placesview .server-list-button > image { transition: -gtk-icon-transform 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(0turn); }
 
-placesview .server-list-button:checked > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(-0.5turn); }
+placesview .server-list-button:checked > image { -gtk-icon-transform: rotate(-0.5turn); }
 
 placesview > actionbar > revealer > box > box { border-spacing: 6px; }
 
@@ -648,9 +648,9 @@ headerbar > windowhandle > box { padding
 
 headerbar > windowhandle > box, headerbar > windowhandle > box > box.start, headerbar > windowhandle > box > box.end { border-spacing: 6px; }
 
-headerbar:backdrop { background-color: @headerbar_backdrop_color; transition: 200ms ease-out; }
+headerbar:backdrop { background-color: @headerbar_backdrop_color; transition: background-color 200ms ease-out; }
 
-headerbar:backdrop > windowhandle { filter: opacity(0.5); transition: 200ms ease-out; }
+headerbar:backdrop > windowhandle { filter: opacity(0.5); transition: filter 200ms ease-out; }
 
 headerbar.default-decoration { min-height: 37px; }
 
@@ -677,7 +677,7 @@ windowcontrols { border-spacing: 3px; }
 
 windowcontrols > button { min-width: 24px; padding: 5px; margin: 0; box-shadow: none; }
 
-windowcontrols > button > image { background-color: alpha(currentColor,0.1); border-radius: 100%; padding: 2px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+windowcontrols > button > image { background-color: alpha(currentColor,0.1); border-radius: 100%; padding: 2px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 windowcontrols > button, windowcontrols > button:hover, windowcontrols > button:active { background: none; }
 
@@ -983,7 +983,7 @@ row.combo listview.inline, row.combo lis
 row.combo popover > contents { min-width: 120px; }
 
 /****************** AdwExpanderRow * */
-list.content > row, list.content > row.expander row.header, list.boxed-list > row, list.boxed-list > row.expander row.header, row.expander list.nested > row { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); border-bottom: 1px solid @card_shade_color; }
+list.content > row, list.content > row.expander row.header, list.boxed-list > row, list.boxed-list > row.expander row.header, row.expander list.nested > row { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background-color 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), border-radius 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); border-bottom: 1px solid @card_shade_color; }
 
 list.content > row, list.content > row.expander row.header, list.boxed-list > row, list.boxed-list > row.expander row.header, row.expander list.nested > row { outline: 0 solid transparent; outline-offset: 5px; }
 
@@ -1003,7 +1003,7 @@ row.expander > box > list { background:
 
 row.expander list.nested { background-color: alpha(@card_shade_color,0.5); color: inherit; }
 
-row.expander image.expander-row-arrow { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+row.expander image.expander-row-arrow { transition: -gtk-icon-transform 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 row.expander image.expander-row-arrow:dir(ltr) { margin-left: 6px; }
 
@@ -1201,9 +1201,7 @@ video image.osd { min-width: 64px; min-h
 statusbar { padding: 6px 10px 6px 10px; }
 
 /****************** AdwAboutWindow * */
-window.about .main-page scrollbar.vertical { margin-top: 47px; background: none; box-shadow: none; }
-
-window.about .main-page > viewport > clamp > box { margin: 12px; margin-top: 59px; border-spacing: 6px; }
+window.about .main-page > viewport > clamp > box { margin: 12px; border-spacing: 6px; }
 
 window.about .main-page > viewport > clamp > box > box { margin-top: 18px; border-spacing: 18px; margin-bottom: 6px; }
 
@@ -1245,7 +1243,7 @@ shortcut > .keycap, list.content, list.b
 
 .osd .card:focus:focus-visible, .card.osd:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.5); }
 
-.card.activatable { transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+.card.activatable { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 .card.activatable:hover { background-image: image(alpha(currentColor,0.03)); }
 
@@ -1437,13 +1435,11 @@ scale > trough > highlight, progressbar
 
 scale { min-height: 10px; min-width: 10px; padding: 12px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 
-scale > trough { outline: 0 solid transparent; outline-offset: 16px; }
-
-scale:focus:focus-visible > trough { outline-color: alpha(@accent_color,0.5); outline-width: 2px; outline-offset: 10px; }
+scale > trough > slider { outline: 0 solid transparent; outline-offset: 6px; }
 
-scale > trough { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+scale:focus:focus-visible > trough > slider { outline-color: alpha(@accent_color,0.5); outline-width: 2px; outline-offset: 0; }
 
-scale > trough > slider { background-color: mix(white,@view_bg_color,0.2); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); outline: 1px solid rgba(0, 0, 0, 0.1); border-radius: 100%; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: background, border, box-shadow; min-width: 20px; min-height: 20px; margin: -8px; }
+scale > trough > slider { background-color: mix(white,@view_bg_color,0.2); box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2); border-radius: 100%; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); min-width: 20px; min-height: 20px; margin: -8px; }
 
 scale:hover > trough, scale:active > trough { background-color: alpha(currentColor,0.2); }
 
@@ -1457,7 +1453,7 @@ scale:hover > trough > slider, scale:act
 
 scale:disabled { filter: opacity(0.5); }
 
-scale:disabled > trough > slider { box-shadow: 0 2px 4px transparent; outline-color: rgba(0, 0, 0, 0.2); }
+scale:disabled > trough > slider { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px transparent; outline-color: rgba(0, 0, 0, 0.2); }
 
 scale.fine-tune { padding: 9px; }
 
@@ -1467,9 +1463,9 @@ scale.fine-tune.vertical { min-width: 16
 
 scale.fine-tune > trough > slider { margin: -5px; }
 
-scale.marks-before:not(.marks-after) > trough > slider, scale.marks-after:not(.marks-before) > trough > slider { transform: rotate(45deg); box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); }
+scale.marks-before:not(.marks-after) > trough > slider, scale.marks-after:not(.marks-before) > trough > slider { transform: rotate(45deg); box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 1px 1px 4px rgba(0, 0, 0, 0.2); }
 
-scale.marks-before:not(.marks-after) > trough > slider:disabled, scale.marks-after:not(.marks-before) > trough > slider:disabled { box-shadow: 1px 1px 4px transparent; }
+scale.marks-before:not(.marks-after) > trough > slider:disabled, scale.marks-after:not(.marks-before) > trough > slider:disabled { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 1px 1px 4px transparent; }
 
 scale.horizontal > marks { color: alpha(currentColor,0.55); }
 
@@ -1489,8 +1485,12 @@ scale.horizontal.fine-tune > marks.botto
 
 scale.horizontal.fine-tune > marks indicator { min-height: 3px; }
 
+scale.horizontal.marks-before { padding-top: 0; }
+
 scale.horizontal.marks-before > trough > slider { border-top-left-radius: 0; }
 
+scale.horizontal.marks-after { padding-bottom: 0; }
+
 scale.horizontal.marks-after > trough > slider { border-bottom-right-radius: 0; }
 
 scale.horizontal.marks-before.marks-after > trough > slider { border-radius: 100%; }
@@ -1513,8 +1513,12 @@ scale.vertical.fine-tune > marks.bottom
 
 scale.vertical.fine-tune > marks indicator { min-height: 3px; }
 
+scale.vertical.marks-before { padding-left: 0; }
+
 scale.vertical.marks-before > trough > slider { border-bottom-left-radius: 0; }
 
+scale.vertical.marks-after { padding-right: 0; }
+
 scale.vertical.marks-after > trough > slider { border-top-right-radius: 0; }
 
 scale.color { padding: 0; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
@@ -1770,6 +1774,8 @@ tabbar tab:hover { background-color: alp
 
 tabbar tab:active { background-color: alpha(currentColor,0.16); }
 
+tabbar tabbox.single-tab tab, tabbar tabbox.single-tab tab:hover, tabbar tabbox.single-tab tab:active { background: none; }
+
 tabbar .start-action, tabbar .end-action { padding: 5px; }
 
 tabbar .start-action:dir(ltr), tabbar .end-action:dir(rtl) { padding-right: 0; }
@@ -1778,9 +1784,9 @@ tabbar .start-action:dir(rtl), tabbar .e
 
 tabbar:not(.inline) .box { background-color: @headerbar_bg_color; color: @headerbar_fg_color; padding-bottom: 1px; box-shadow: inset 0 -1px @headerbar_shade_color; }
 
-tabbar:not(.inline):backdrop .box { background-color: @headerbar_backdrop_color; transition: 200ms ease-out; }
+tabbar:not(.inline):backdrop .box { background-color: @headerbar_backdrop_color; transition: background-color 200ms ease-out; }
 
-tabbar:not(.inline):backdrop .box > scrolledwindow, tabbar:not(.inline):backdrop .box > .start-action, tabbar:not(.inline):backdrop .box > .end-action { filter: opacity(0.5); transition: 200ms ease-out; }
+tabbar:not(.inline):backdrop .box > scrolledwindow, tabbar:not(.inline):backdrop .box > .start-action, tabbar:not(.inline):backdrop .box > .end-action { filter: opacity(0.5); transition: filter 200ms ease-out; }
 
 dnd tab { background-color: @headerbar_bg_color; background-image: image(alpha(currentColor,0.19)); color: @headerbar_fg_color; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03), 0 1px 3px 1px rgba(0, 0, 0, 0.07), 0 2px 6px 2px rgba(0, 0, 0, 0.03); margin: 25px; }
 
@@ -1827,9 +1833,9 @@ actionbar > revealer > box popover.menu
 /**************** GtkSearchBar * */
 searchbar:not(.inline) > revealer > box { background-color: @headerbar_bg_color; color: @headerbar_fg_color; box-shadow: inset 0 -1px @headerbar_shade_color; padding-bottom: 1px; }
 
-searchbar:not(.inline) > revealer > box:backdrop { background-color: @headerbar_backdrop_color; transition: 200ms ease-out; }
+searchbar:not(.inline) > revealer > box:backdrop { background-color: @headerbar_backdrop_color; transition: background-color 200ms ease-out; }
 
-searchbar:not(.inline) > revealer > box:backdrop > * { filter: opacity(0.5); transition: 200ms ease-out; }
+searchbar:not(.inline) > revealer > box:backdrop > * { filter: opacity(0.5); transition: filter 200ms ease-out; }
 
 searchbar > revealer > box { padding: 0px 6px; border-spacing: 6px; }
 
@@ -1840,12 +1846,14 @@ actionbar > revealer > box { background-
 
 actionbar > revealer > box, actionbar > revealer > box > box.start, actionbar > revealer > box > box.end { border-spacing: 6px; }
 
-actionbar > revealer > box:backdrop { background-color: @headerbar_backdrop_color; transition: 200ms ease-out; }
+actionbar > revealer > box:backdrop { background-color: @headerbar_backdrop_color; transition: background-color 200ms ease-out; }
 
-actionbar > revealer > box:backdrop > * { filter: opacity(0.5); transition: 200ms ease-out; }
+actionbar > revealer > box:backdrop > * { filter: opacity(0.5); transition: filter 200ms ease-out; }
 
 /************** GtkInfoBar * */
-infobar > revealer > box { padding: 8px 8px 9px 8px; border-spacing: 12px; box-shadow: inset 0 -1px @shade_color; }
+infobar > revealer > box { padding: 6px; padding-bottom: 7px; border-spacing: 6px; box-shadow: inset 0 -1px @shade_color; }
+
+infobar > revealer > box > box { border-spacing: 6px; }
 
 infobar.action:hover > revealer > box { background-image: image(alpha(currentColor,0.05)); }
 
@@ -1935,6 +1943,8 @@ columnview.view acceleditor > label, tre
 
 treeview.view > header > button { padding-left: 4px; padding-right: 4px; border-bottom: 1px solid alpha(currentColor,0.15); }
 
+treeview.navigation-sidebar { padding: 0; }
+
 /******************************************************** Data Tables                                          * treeview like tables with individual focusable cells * https://gitlab.gnome.org/GNOME/gtk/-/issues/2929     * */
 columnview > listview > row { padding: 0; }
 
@@ -2039,7 +2049,7 @@ window { border-width: 0px; }
 
 window.csd { box-shadow: 0 1px 3px 3px transparent, 0 2px 8px 2px rgba(0, 0, 0, 0.13), 0 3px 20px 10px rgba(0, 0, 0, 0.09), 0 6px 32px 16px rgba(0, 0, 0, 0.04), 0 0 0 1px rgba(0, 0, 0, 0.05); margin: 0px; border-radius: 12px; outline: 1px solid rgba(255, 255, 255, 0.07); outline-offset: -1px; }
 
-window.csd:backdrop { box-shadow: 0 1px 3px 3px rgba(0, 0, 0, 0.09), 0 2px 14px 5px rgba(0, 0, 0, 0.05), 0 4px 28px 12px rgba(0, 0, 0, 0.03), 0 6px 32px 16px transparent, 0 0 0 1px rgba(0, 0, 0, 0.02); transition: 200ms ease-out; }
+window.csd:backdrop { box-shadow: 0 1px 3px 3px rgba(0, 0, 0, 0.09), 0 2px 14px 5px rgba(0, 0, 0, 0.05), 0 4px 28px 12px rgba(0, 0, 0, 0.03), 0 6px 32px 16px transparent, 0 0 0 1px rgba(0, 0, 0, 0.02); transition: box-shadow 200ms ease-out; }
 
 window.csd.dialog.message { box-shadow: 0 2px 8px 2px rgba(0, 0, 0, 0.07), 0 3px 20px 10px rgba(0, 0, 0, 0.05), 0 6px 32px 16px rgba(0, 0, 0, 0.02), 0 0 0 1px rgba(0, 0, 0, 0.05); }
 
diff -pruN 1.2~alpha-1/src/stylesheet/base-hc.css 1.2~beta-1/src/stylesheet/base-hc.css
--- 1.2~alpha-1/src/stylesheet/base-hc.css	2022-07-09 22:13:14.271742800 +0000
+++ 1.2~beta-1/src/stylesheet/base-hc.css	2022-08-05 21:58:56.653397300 +0000
@@ -109,7 +109,7 @@ avatar.contrasted { color: white; }
 
 avatar.image { background: none; }
 
-notebook > header > tabs > arrow, colorswatch#add-color-button > overlay, button { min-height: 24px; min-width: 16px; padding: 5px 10px; border-radius: 6px; font-weight: bold; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+notebook > header > tabs > arrow, colorswatch#add-color-button > overlay, button { min-height: 24px; min-width: 16px; padding: 5px 10px; border-radius: 6px; font-weight: bold; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 notebook > header > tabs > arrow, colorswatch#add-color-button > overlay, button { outline: 0 solid transparent; outline-offset: 4px; }
 
@@ -151,7 +151,7 @@ notebook > header > tabs > arrow.arrow-b
 
 dropdown:drop(active) button.combo, combobox:drop(active) button.combo, infobar .close:drop(active), searchbar > revealer > box .close:drop(active), actionbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), searchbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), .toolbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), headerbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), actionbar > revealer > box button.arrow-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.arrow-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.arrow-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.arrow-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-text-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-text-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-text-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-text-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.up:drop(active):not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.down:drop(active):not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), button.sidebar-button:drop(active), window.dialog.message.csd .dialog-action-area > button:drop(active), popover.menu box.circular-buttons button.circular.image-button.model:drop(active), popover.menu box.inline-buttons button.image-button.model:drop(active), button.emoji-section.image-button:drop(active):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), calendar > header > button:drop(active), actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button:drop(active), actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button:drop(active), searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button:drop(active), .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button:drop(active), headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button:drop(active), splitbutton.flat > button:drop(active), splitbutton.flat > menubutton > button:drop(active), menubutton.flat > button:drop(active), button.flat:drop(active), menubutton.osd > button:drop(active), button.osd:drop(active), notebook > header > tabs > arrow:drop(active), colorswatch#add-color-button > overlay:drop(active), button:drop(active) { color: @accent_bg_color; box-shadow: inset 0 0 0 2px @accent_bg_color; }
 
-menubutton.osd > button, button.osd { min-width: 32px; min-height: 32px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: rgba(255, 255, 255, 0.9); background-color: rgba(0, 0, 0, 0.65); box-shadow: 0 0 0 1px currentColor; }
+menubutton.osd > button, button.osd { min-width: 32px; min-height: 32px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: rgba(255, 255, 255, 0.9); background-color: rgba(0, 0, 0, 0.65); box-shadow: 0 0 0 1px currentColor; }
 
 menubutton.osd > button, button.osd { outline: 0 solid transparent; outline-offset: 5px; }
 
@@ -167,7 +167,7 @@ menubutton.osd > button:checked:hover, b
 
 menubutton.osd > button.keyboard-activating:checked, menubutton.osd > button:checked:active, button.osd.keyboard-activating:checked, button.osd:checked:active { background-color: alpha(mix(black,currentColor,0.35),0.65); }
 
-actionbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), splitbutton.suggested-action > button, splitbutton.suggested-action > menubutton > button, splitbutton.destructive-action > button, splitbutton.destructive-action > menubutton > button, splitbutton.opaque > button, splitbutton.opaque > menubutton > button, menubutton.suggested-action > button, menubutton.destructive-action > button, menubutton.opaque > button, button.suggested-action, button.destructive-action, button.opaque { box-shadow: none; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+actionbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), splitbutton.suggested-action > button, splitbutton.suggested-action > menubutton > button, splitbutton.destructive-action > button, splitbutton.destructive-action > menubutton > button, splitbutton.opaque > button, splitbutton.opaque > menubutton > button, menubutton.suggested-action > button, menubutton.destructive-action > button, menubutton.opaque > button, button.suggested-action, button.destructive-action, button.opaque { box-shadow: none; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 actionbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.suggested-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.destructive-action > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar menubutton.opaque > button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), splitbutton.suggested-action > button, splitbutton.suggested-action > menubutton > button, splitbutton.destructive-action > button, splitbutton.destructive-action > menubutton > button, splitbutton.opaque > button, splitbutton.opaque > menubutton > button, menubutton.suggested-action > button, menubutton.destructive-action > button, menubutton.opaque > button, button.suggested-action, button.destructive-action, button.opaque { outline: 0 solid transparent; outline-offset: 5px; }
 
@@ -195,7 +195,7 @@ button.suggested-action { color: @accent
 
 button.suggested-action, button.suggested-action:checked { background-color: @accent_bg_color; }
 
-infobar .close, searchbar > revealer > box .close, actionbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.up:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.down:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), button.sidebar-button, notebook > header > tabs > arrow, window.dialog.message.csd .dialog-action-area > button, popover.menu box.circular-buttons button.circular.image-button.model, popover.menu box.inline-buttons button.image-button.model, button.emoji-section.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), calendar > header > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, splitbutton.flat > button, splitbutton.flat > menubutton > button, menubutton.flat > button, button.flat { background: transparent; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); box-shadow: none; }
+infobar .close, searchbar > revealer > box .close, actionbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.up:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.down:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), button.sidebar-button, notebook > header > tabs > arrow, window.dialog.message.csd .dialog-action-area > button, popover.menu box.circular-buttons button.circular.image-button.model, popover.menu box.inline-buttons button.image-button.model, button.emoji-section.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), calendar > header > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, splitbutton.flat > button, splitbutton.flat > menubutton > button, menubutton.flat > button, button.flat { background: transparent; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); box-shadow: none; }
 
 infobar .close, searchbar > revealer > box .close, actionbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar menubutton.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.arrow-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), actionbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), searchbar > revealer > box button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), .toolbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), headerbar button.image-text-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.up:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), spinbutton > button.image-button.down:not(.flat):not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), button.sidebar-button, notebook > header > tabs > arrow, window.dialog.message.csd .dialog-action-area > button, popover.menu box.circular-buttons button.circular.image-button.model, popover.menu box.inline-buttons button.image-button.model, button.emoji-section.image-button:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque), calendar > header > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > button, actionbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, searchbar > revealer > box splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, .toolbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, headerbar splitbutton:not(.raised):not(.suggested-action):not(.destructive-action):not(.opaque) > menubutton > button, splitbutton.flat > button, splitbutton.flat > menubutton > button, menubutton.flat > button, button.flat { outline: 0 solid transparent; outline-offset: 4px; }
 
@@ -233,7 +233,7 @@ button.emoji-section.image-button:not(.r
 
 menubutton.pill > button, button.pill { padding: 10px 32px; border-radius: 9999px; }
 
-button.card { background-color: @card_bg_color; background-clip: padding-box; font-weight: inherit; padding: 0; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+button.card { background-color: @card_bg_color; background-clip: padding-box; font-weight: inherit; padding: 0; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 button.card:hover { background-image: image(alpha(currentColor,0.03)); }
 
@@ -291,7 +291,7 @@ menubutton arrow.right { -gtk-icon-sourc
 
 splitbutton { border-radius: 6px; }
 
-splitbutton, splitbutton > separator { transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: background; }
+splitbutton, splitbutton > separator { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: background; }
 
 splitbutton > separator { margin-top: 6px; margin-bottom: 6px; background: none; }
 
@@ -532,7 +532,7 @@ emoji-completion-row:active { background
 
 emoji-completion-row:focus, emoji-completion-row:hover, emoji-completion-row:active { box-shadow: inset 0 0 0 1px alpha(currentColor,0.5); }
 
-spinbutton, entry { min-height: 34px; padding-left: 9px; padding-right: 9px; border-radius: 6px; border-spacing: 6px; background-color: alpha(currentColor,0.1); background-clip: padding-box; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); caret-color: currentColor; box-shadow: inset 0 0 0 1px alpha(currentColor,0.5); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
+spinbutton, entry { min-height: 34px; padding-left: 9px; padding-right: 9px; border-radius: 6px; border-spacing: 6px; background-color: alpha(currentColor,0.1); background-clip: padding-box; caret-color: currentColor; box-shadow: inset 0 0 0 1px alpha(currentColor,0.5); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 spinbutton, entry { outline: 0 solid transparent; outline-offset: 4px; }
 
@@ -628,9 +628,9 @@ expander-widget > box > title > expander
 
 expander-widget > box > title:hover > expander, expander-widget > box > title:active > expander { opacity: 1; }
 
-placesview .server-list-button > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(0turn); }
+placesview .server-list-button > image { transition: -gtk-icon-transform 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(0turn); }
 
-placesview .server-list-button:checked > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(-0.5turn); }
+placesview .server-list-button:checked > image { -gtk-icon-transform: rotate(-0.5turn); }
 
 placesview > actionbar > revealer > box > box { border-spacing: 6px; }
 
@@ -656,9 +656,9 @@ headerbar > windowhandle > box { padding
 
 headerbar > windowhandle > box, headerbar > windowhandle > box > box.start, headerbar > windowhandle > box > box.end { border-spacing: 6px; }
 
-headerbar:backdrop { background-color: @headerbar_backdrop_color; transition: 200ms ease-out; }
+headerbar:backdrop { background-color: @headerbar_backdrop_color; transition: background-color 200ms ease-out; }
 
-headerbar:backdrop > windowhandle { filter: opacity(0.5); transition: 200ms ease-out; }
+headerbar:backdrop > windowhandle { filter: opacity(0.5); transition: filter 200ms ease-out; }
 
 headerbar.default-decoration { min-height: 37px; }
 
@@ -685,7 +685,7 @@ windowcontrols { border-spacing: 3px; }
 
 windowcontrols > button { min-width: 24px; padding: 5px; margin: 0; box-shadow: none; }
 
-windowcontrols > button > image { background-color: alpha(currentColor,0.1); border-radius: 100%; padding: 2px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); box-shadow: inset 0 0 0 1px alpha(currentColor,0.5); }
+windowcontrols > button > image { background-color: alpha(currentColor,0.1); border-radius: 100%; padding: 2px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); box-shadow: inset 0 0 0 1px alpha(currentColor,0.5); }
 
 windowcontrols > button, windowcontrols > button:hover, windowcontrols > button:active { background: none; }
 
@@ -991,7 +991,7 @@ row.combo listview.inline, row.combo lis
 row.combo popover > contents { min-width: 120px; }
 
 /****************** AdwExpanderRow * */
-list.content > row, list.content > row.expander row.header, list.boxed-list > row, list.boxed-list > row.expander row.header, row.expander list.nested > row { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); border-bottom: 1px solid alpha(currentColor,0.5); }
+list.content > row, list.content > row.expander row.header, list.boxed-list > row, list.boxed-list > row.expander row.header, row.expander list.nested > row { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background-color 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), border-radius 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); border-bottom: 1px solid alpha(currentColor,0.5); }
 
 list.content > row, list.content > row.expander row.header, list.boxed-list > row, list.boxed-list > row.expander row.header, row.expander list.nested > row { outline: 0 solid transparent; outline-offset: 5px; }
 
@@ -1011,7 +1011,7 @@ row.expander > box > list { background:
 
 row.expander list.nested { background-color: alpha(@card_shade_color,0.5); color: inherit; }
 
-row.expander image.expander-row-arrow { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+row.expander image.expander-row-arrow { transition: -gtk-icon-transform 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 row.expander image.expander-row-arrow:dir(ltr) { margin-left: 6px; }
 
@@ -1213,9 +1213,7 @@ video image.osd { min-width: 64px; min-h
 statusbar { padding: 6px 10px 6px 10px; }
 
 /****************** AdwAboutWindow * */
-window.about .main-page scrollbar.vertical { margin-top: 47px; background: none; box-shadow: none; }
-
-window.about .main-page > viewport > clamp > box { margin: 12px; margin-top: 59px; border-spacing: 6px; }
+window.about .main-page > viewport > clamp > box { margin: 12px; border-spacing: 6px; }
 
 window.about .main-page > viewport > clamp > box > box { margin-top: 18px; border-spacing: 18px; margin-bottom: 6px; }
 
@@ -1257,7 +1255,7 @@ shortcut > .keycap, list.content, list.b
 
 .osd .card:focus:focus-visible, .card.osd:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.5); }
 
-.card.activatable { transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+.card.activatable { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 
 .card.activatable:hover { background-image: image(alpha(currentColor,0.03)); }
 
@@ -1449,13 +1447,11 @@ scale > trough > highlight, progressbar
 
 scale { min-height: 10px; min-width: 10px; padding: 12px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 
-scale > trough { outline: 0 solid transparent; outline-offset: 16px; }
-
-scale:focus:focus-visible > trough { outline-color: alpha(@accent_color,0.8); outline-width: 2px; outline-offset: 10px; }
+scale > trough > slider { outline: 0 solid transparent; outline-offset: 6px; }
 
-scale > trough { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
+scale:focus:focus-visible > trough > slider { outline-color: alpha(@accent_color,0.8); outline-width: 2px; outline-offset: 0; }
 
-scale > trough > slider { background-color: mix(white,@view_bg_color,0.2); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); outline: 1px solid rgba(0, 0, 0, 0.1); border-radius: 100%; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: background, border, box-shadow; min-width: 20px; min-height: 20px; margin: -8px; }
+scale > trough > slider { background-color: mix(white,@view_bg_color,0.2); box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.35), 0 2px 4px rgba(0, 0, 0, 0.2); border-radius: 100%; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); min-width: 20px; min-height: 20px; margin: -8px; }
 
 scale:hover > trough, scale:active > trough { background-color: alpha(currentColor,0.4); }
 
@@ -1469,7 +1465,7 @@ scale:hover > trough > slider, scale:act
 
 scale:disabled { filter: opacity(0.4); }
 
-scale:disabled > trough > slider { box-shadow: 0 2px 4px transparent; outline-color: rgba(0, 0, 0, 0.5); }
+scale:disabled > trough > slider { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.35), 0 2px 4px transparent; outline-color: rgba(0, 0, 0, 0.5); }
 
 scale.fine-tune { padding: 9px; }
 
@@ -1479,9 +1475,9 @@ scale.fine-tune.vertical { min-width: 16
 
 scale.fine-tune > trough > slider { margin: -5px; }
 
-scale.marks-before:not(.marks-after) > trough > slider, scale.marks-after:not(.marks-before) > trough > slider { transform: rotate(45deg); box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); }
+scale.marks-before:not(.marks-after) > trough > slider, scale.marks-after:not(.marks-before) > trough > slider { transform: rotate(45deg); box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.35), 1px 1px 4px rgba(0, 0, 0, 0.2); }
 
-scale.marks-before:not(.marks-after) > trough > slider:disabled, scale.marks-after:not(.marks-before) > trough > slider:disabled { box-shadow: 1px 1px 4px transparent; }
+scale.marks-before:not(.marks-after) > trough > slider:disabled, scale.marks-after:not(.marks-before) > trough > slider:disabled { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.35), 1px 1px 4px transparent; }
 
 scale.horizontal > marks { color: alpha(currentColor,0.9); }
 
@@ -1501,8 +1497,12 @@ scale.horizontal.fine-tune > marks.botto
 
 scale.horizontal.fine-tune > marks indicator { min-height: 3px; }
 
+scale.horizontal.marks-before { padding-top: 0; }
+
 scale.horizontal.marks-before > trough > slider { border-top-left-radius: 0; }
 
+scale.horizontal.marks-after { padding-bottom: 0; }
+
 scale.horizontal.marks-after > trough > slider { border-bottom-right-radius: 0; }
 
 scale.horizontal.marks-before.marks-after > trough > slider { border-radius: 100%; }
@@ -1525,8 +1525,12 @@ scale.vertical.fine-tune > marks.bottom
 
 scale.vertical.fine-tune > marks indicator { min-height: 3px; }
 
+scale.vertical.marks-before { padding-left: 0; }
+
 scale.vertical.marks-before > trough > slider { border-bottom-left-radius: 0; }
 
+scale.vertical.marks-after { padding-right: 0; }
+
 scale.vertical.marks-after > trough > slider { border-top-right-radius: 0; }
 
 scale.color { padding: 0; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
@@ -1788,6 +1792,8 @@ tabbar tab:hover { background-color: alp
 
 tabbar tab:active { background-color: alpha(currentColor,0.16); }
 
+tabbar tabbox.single-tab tab, tabbar tabbox.single-tab tab:hover, tabbar tabbox.single-tab tab:active { background: none; box-shadow: none; }
+
 tabbar .start-action, tabbar .end-action { padding: 5px; }
 
 tabbar .start-action:dir(ltr), tabbar .end-action:dir(rtl) { padding-right: 0; }
@@ -1796,9 +1802,9 @@ tabbar .start-action:dir(rtl), tabbar .e
 
 tabbar:not(.inline) .box { background-color: @headerbar_bg_color; color: @headerbar_fg_color; padding-bottom: 1px; box-shadow: inset 0 -1px alpha(@headerbar_border_color,0.5); }
 
-tabbar:not(.inline):backdrop .box { background-color: @headerbar_backdrop_color; transition: 200ms ease-out; }
+tabbar:not(.inline):backdrop .box { background-color: @headerbar_backdrop_color; transition: background-color 200ms ease-out; }
 
-tabbar:not(.inline):backdrop .box > scrolledwindow, tabbar:not(.inline):backdrop .box > .start-action, tabbar:not(.inline):backdrop .box > .end-action { filter: opacity(0.5); transition: 200ms ease-out; }
+tabbar:not(.inline):backdrop .box > scrolledwindow, tabbar:not(.inline):backdrop .box > .start-action, tabbar:not(.inline):backdrop .box > .end-action { filter: opacity(0.5); transition: filter 200ms ease-out; }
 
 dnd tab { background-color: @headerbar_bg_color; background-image: image(alpha(currentColor,0.19)); color: @headerbar_fg_color; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03), 0 1px 3px 1px rgba(0, 0, 0, 0.07), 0 2px 6px 2px rgba(0, 0, 0, 0.03); outline: 1px solid alpha(currentColor,0.5); outline-offset: -1px; margin: 25px; }
 
@@ -1845,9 +1851,9 @@ actionbar > revealer > box popover.menu
 /**************** GtkSearchBar * */
 searchbar:not(.inline) > revealer > box { background-color: @headerbar_bg_color; color: @headerbar_fg_color; box-shadow: inset 0 -1px alpha(@headerbar_border_color,0.5); padding-bottom: 1px; }
 
-searchbar:not(.inline) > revealer > box:backdrop { background-color: @headerbar_backdrop_color; transition: 200ms ease-out; }
+searchbar:not(.inline) > revealer > box:backdrop { background-color: @headerbar_backdrop_color; transition: background-color 200ms ease-out; }
 
-searchbar:not(.inline) > revealer > box:backdrop > * { filter: opacity(0.5); transition: 200ms ease-out; }
+searchbar:not(.inline) > revealer > box:backdrop > * { filter: opacity(0.5); transition: filter 200ms ease-out; }
 
 searchbar > revealer > box { padding: 0px 6px; border-spacing: 6px; }
 
@@ -1858,12 +1864,14 @@ actionbar > revealer > box { background-
 
 actionbar > revealer > box, actionbar > revealer > box > box.start, actionbar > revealer > box > box.end { border-spacing: 6px; }
 
-actionbar > revealer > box:backdrop { background-color: @headerbar_backdrop_color; transition: 200ms ease-out; }
+actionbar > revealer > box:backdrop { background-color: @headerbar_backdrop_color; transition: background-color 200ms ease-out; }
 
-actionbar > revealer > box:backdrop > * { filter: opacity(0.5); transition: 200ms ease-out; }
+actionbar > revealer > box:backdrop > * { filter: opacity(0.5); transition: filter 200ms ease-out; }
 
 /************** GtkInfoBar * */
-infobar > revealer > box { padding: 8px 8px 9px 8px; border-spacing: 12px; box-shadow: inset 0 -1px alpha(currentColor,0.5); }
+infobar > revealer > box { padding: 6px; padding-bottom: 7px; border-spacing: 6px; box-shadow: inset 0 -1px alpha(currentColor,0.5); }
+
+infobar > revealer > box > box { border-spacing: 6px; }
 
 infobar.action:hover > revealer > box { background-image: image(alpha(currentColor,0.05)); }
 
@@ -1955,6 +1963,8 @@ columnview.view acceleditor > label, tre
 
 treeview.view > header > button { padding-left: 4px; padding-right: 4px; border-bottom: 1px solid alpha(currentColor,0.5); }
 
+treeview.navigation-sidebar { padding: 0; }
+
 /******************************************************** Data Tables                                          * treeview like tables with individual focusable cells * https://gitlab.gnome.org/GNOME/gtk/-/issues/2929     * */
 columnview > listview > row { padding: 0; }
 
@@ -2065,7 +2075,7 @@ window { border-width: 0px; }
 
 window.csd { box-shadow: 0 1px 3px 3px transparent, 0 2px 8px 2px rgba(0, 0, 0, 0.13), 0 3px 20px 10px rgba(0, 0, 0, 0.09), 0 6px 32px 16px rgba(0, 0, 0, 0.04), 0 0 0 1px rgba(0, 0, 0, 0.8); margin: 0px; border-radius: 12px; outline: 1px solid rgba(255, 255, 255, 0.3); outline-offset: -1px; }
 
-window.csd:backdrop { box-shadow: 0 1px 3px 3px rgba(0, 0, 0, 0.09), 0 2px 14px 5px rgba(0, 0, 0, 0.05), 0 4px 28px 12px rgba(0, 0, 0, 0.03), 0 6px 32px 16px transparent, 0 0 0 1px rgba(0, 0, 0, 0.8); transition: 200ms ease-out; }
+window.csd:backdrop { box-shadow: 0 1px 3px 3px rgba(0, 0, 0, 0.09), 0 2px 14px 5px rgba(0, 0, 0, 0.05), 0 4px 28px 12px rgba(0, 0, 0, 0.03), 0 6px 32px 16px transparent, 0 0 0 1px rgba(0, 0, 0, 0.8); transition: box-shadow 200ms ease-out; }
 
 window.csd.dialog.message { box-shadow: 0 2px 8px 2px rgba(0, 0, 0, 0.07), 0 3px 20px 10px rgba(0, 0, 0, 0.05), 0 6px 32px 16px rgba(0, 0, 0, 0.02), 0 0 0 1px rgba(0, 0, 0, 0.8); }
 
diff -pruN 1.2~alpha-1/src/stylesheet/_common.scss 1.2~beta-1/src/stylesheet/_common.scss
--- 1.2~alpha-1/src/stylesheet/_common.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/_common.scss	2022-08-05 21:51:59.000000000 +0000
@@ -1,7 +1,7 @@
 $ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
 $backdrop_transition: 200ms ease-out;
-$button_transition: all 200ms $ease-out-quad;
 $focus_transition: outline-width 200ms $ease-out-quad, outline-offset 200ms $ease-out-quad;
+$button_transition: $focus_transition, background 200ms $ease-out-quad;
 $button_radius: 6px;
 $card_radius: $button_radius + 6;
 $menu_radius: 6px;
diff -pruN 1.2~alpha-1/src/stylesheet/defaults-dark.css 1.2~beta-1/src/stylesheet/defaults-dark.css
--- 1.2~alpha-1/src/stylesheet/defaults-dark.css	2022-07-09 22:13:14.279742700 +0000
+++ 1.2~beta-1/src/stylesheet/defaults-dark.css	2022-08-05 21:58:56.662397400 +0000
@@ -17,7 +17,7 @@
 @define-color window_bg_color #242424;
 @define-color window_fg_color white;
 @define-color view_bg_color #1e1e1e;
-@define-color view_fg_color #ffffff;
+@define-color view_fg_color white;
 @define-color headerbar_bg_color #303030;
 @define-color headerbar_fg_color white;
 @define-color headerbar_border_color white;
diff -pruN 1.2~alpha-1/src/stylesheet/defaults-light.css 1.2~beta-1/src/stylesheet/defaults-light.css
--- 1.2~alpha-1/src/stylesheet/defaults-light.css	2022-07-09 22:13:14.276742700 +0000
+++ 1.2~beta-1/src/stylesheet/defaults-light.css	2022-08-05 21:58:56.658397200 +0000
@@ -7,17 +7,17 @@
 @define-color destructive_color @red_4;
 @define-color success_bg_color @green_4;
 @define-color success_fg_color white;
-@define-color success_color @green_5;
+@define-color success_color #1b8553;
 @define-color warning_bg_color @yellow_5;
 @define-color warning_fg_color rgba(0, 0, 0, 0.8);
-@define-color warning_color #ae7b03;
+@define-color warning_color #9c6e03;
 @define-color error_bg_color @red_3;
 @define-color error_fg_color white;
 @define-color error_color @red_4;
 @define-color window_bg_color #fafafa;
 @define-color window_fg_color rgba(0, 0, 0, 0.8);
 @define-color view_bg_color #ffffff;
-@define-color view_fg_color #000000;
+@define-color view_fg_color rgba(0, 0, 0, 0.8);
 @define-color headerbar_bg_color #ebebeb;
 @define-color headerbar_fg_color rgba(0, 0, 0, 0.8);
 @define-color headerbar_border_color rgba(0, 0, 0, 0.8);
diff -pruN 1.2~alpha-1/src/stylesheet/_defaults.scss 1.2~beta-1/src/stylesheet/_defaults.scss
--- 1.2~alpha-1/src/stylesheet/_defaults.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/_defaults.scss	2022-08-05 21:51:59.000000000 +0000
@@ -21,11 +21,11 @@
 // Levelbars, entries, labels and infobars. These don't need text colors
 @define-color success_bg_color #{if($variant == 'dark', "@green_5", "@green_4")};
 @define-color success_fg_color white;
-@define-color success_color #{if($variant == 'dark', "@green_1", "@green_5")};
+@define-color success_color #{if($variant == 'dark', "@green_1", "#1b8553")};
 
 @define-color warning_bg_color #{if($variant == 'dark', #cd9309, "@yellow_5")};
 @define-color warning_fg_color #{transparentize(black, .2)};
-@define-color warning_color #{if($variant == 'dark', "@yellow_2", #ae7b03)};
+@define-color warning_color #{if($variant == 'dark', "@yellow_2", #9c6e03)};
 
 @define-color error_bg_color #{if($variant == 'dark', "@red_4", "@red_3")};
 @define-color error_fg_color white;
@@ -37,7 +37,7 @@
 
 // Views - e.g. text view or tree view
 @define-color view_bg_color #{if($variant == 'light', #ffffff, #1e1e1e)};
-@define-color view_fg_color #{if($variant == 'light', #000000, #ffffff)};
+@define-color view_fg_color #{if($variant == 'light', transparentize(black, .2), white)};
 
 // Header bar, search bar, tab bar
 @define-color headerbar_bg_color #{if($variant == 'light', #ebebeb, #303030)};
diff -pruN 1.2~alpha-1/src/stylesheet/widgets/_entries.scss 1.2~beta-1/src/stylesheet/widgets/_entries.scss
--- 1.2~alpha-1/src/stylesheet/widgets/_entries.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/widgets/_entries.scss	2022-08-05 21:51:59.000000000 +0000
@@ -8,7 +8,6 @@ entry {
     border-spacing: 6px;
     background-color: $button_color;
     background-clip: padding-box;
-    transition: all 200ms $ease-out-quad;
     caret-color: currentColor;
 
     @if $contrast == 'high' {
@@ -16,6 +15,7 @@ entry {
     }
 
     @include focus-ring($focus-state: ':focus-within');
+    transition: $focus-transition;
 
     .osd &:focus-within {
       outline-color: $osd_focus_color;
diff -pruN 1.2~alpha-1/src/stylesheet/widgets/_file-chooser.scss 1.2~beta-1/src/stylesheet/widgets/_file-chooser.scss
--- 1.2~alpha-1/src/stylesheet/widgets/_file-chooser.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/widgets/_file-chooser.scss	2022-08-05 21:51:59.000000000 +0000
@@ -1,11 +1,10 @@
 placesview {
   .server-list-button > image {
-    transition: 200ms $ease-out-quad;
+    transition: -gtk-icon-transform 200ms $ease-out-quad;
     -gtk-icon-transform: rotate(0turn);
   }
 
   .server-list-button:checked > image {
-    transition: 200ms $ease-out-quad;
     -gtk-icon-transform: rotate(-0.5turn);
   }
 
diff -pruN 1.2~alpha-1/src/stylesheet/widgets/_header-bar.scss 1.2~beta-1/src/stylesheet/widgets/_header-bar.scss
--- 1.2~alpha-1/src/stylesheet/widgets/_header-bar.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/widgets/_header-bar.scss	2022-08-05 21:51:59.000000000 +0000
@@ -23,14 +23,13 @@ headerbar {
 
   &:backdrop {
     background-color: $headerbar_backdrop_color;
-
-    transition: $backdrop_transition;
+    transition: background-color $backdrop_transition;
 
     > windowhandle {
       // opacity looks weird with GtkSwitch, but filter works fine
       filter: opacity(0.5);
 
-      transition: $backdrop_transition;
+      transition: filter $backdrop_transition;
     }
   }
 
diff -pruN 1.2~alpha-1/src/stylesheet/widgets/_lists.scss 1.2~beta-1/src/stylesheet/widgets/_lists.scss
--- 1.2~alpha-1/src/stylesheet/widgets/_lists.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/widgets/_lists.scss	2022-08-05 21:51:59.000000000 +0000
@@ -216,7 +216,9 @@ row.combo {
     outline-color: $osd_focus_color;
   }
 
-  transition: 200ms $ease-out-quad;
+  transition: $focus_transition,
+              background-color 200ms $ease-out-quad,
+              border-radius 200ms $ease-out-quad;
   border-bottom: 1px solid if($contrast == 'high', $border_color, $card_shade_color);
 
   &:not(:selected).activatable {
@@ -259,7 +261,7 @@ row.expander {
   image.expander-row-arrow {
     @extend .dim-label;
 
-    transition: 200ms $ease-out-quad;
+    transition: -gtk-icon-transform 200ms $ease-out-quad;
     @include margin-start(6px);
 
     &:dir(ltr) {
diff -pruN 1.2~alpha-1/src/stylesheet/widgets/_misc.scss 1.2~beta-1/src/stylesheet/widgets/_misc.scss
--- 1.2~alpha-1/src/stylesheet/widgets/_misc.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/widgets/_misc.scss	2022-08-05 21:51:59.000000000 +0000
@@ -102,17 +102,8 @@ statusbar {
 
 window.about {
   .main-page {
-    scrollbar.vertical {
-      // Keep in sync with header bar height
-      // WARNING: Don't copy into your app. This is a hack which hardcodes pixels. 
-      margin-top: 47px;
-      background: none;
-      box-shadow: none;
-    }
-
     > viewport > clamp > box {
       margin: 12px;
-      margin-top: 59px; // 12px + 47px
       border-spacing: 6px;
 
       > box {
diff -pruN 1.2~alpha-1/src/stylesheet/widgets/_scale.scss 1.2~beta-1/src/stylesheet/widgets/_scale.scss
--- 1.2~alpha-1/src/stylesheet/widgets/_scale.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/widgets/_scale.scss	2022-08-05 21:51:59.000000000 +0000
@@ -1,3 +1,5 @@
+$_slider_border_color: transparentize(black, if($contrast == 'high', .65, .9));
+
 %scale_trough {
   border-radius: 99px;
   background-color: $trough_color;
@@ -22,10 +24,9 @@ scale {
   min-width: 10px;
   padding: 12px;
 
-  @include focus-ring("> trough", $offset: 10px);
+  @include focus-ring("> trough > slider", $offset: 0);
 
   > trough {
-    transition: $focus_transition;
     @extend %scale_trough;
 
     // the colored part of the backing bit
@@ -39,12 +40,10 @@ scale {
 
     > slider {
       background-color: $slider_color;
-      box-shadow: 0 2px 4px transparentize(black, .8);
-      outline: 1px solid transparentize(black, .9);
+      box-shadow: 0 0 0 1px $_slider_border_color, 0 2px 4px transparentize(black, .8);
 
       border-radius: 100%;
-      transition: $button_transition;
-      transition-property: background, border, box-shadow;
+      transition: $focus_transition;
 
       // the slider is inside the trough, so to have make it bigger there's a negative margin
       min-width: 20px;
@@ -82,7 +81,7 @@ scale {
     filter: opacity($disabled_opacity);
 
     > trough > slider {
-      box-shadow: 0 2px 4px transparent;
+      box-shadow: 0 0 0 1px $_slider_border_color, 0 2px 4px transparent;
       outline-color: transparentize(black, if($contrast == 'high', .5, .8));
     }
   }
@@ -117,10 +116,10 @@ scale {
 
       // Adjust box-shadow for the 45deg rotation, for 0px 2px we ideally want
       // 1/√2px 1/√2px, round that to 1px 1px
-      box-shadow: 1px 1px 4px transparentize(black, .8);
+      box-shadow: 0 0 0 1px $_slider_border_color, 1px 1px 4px transparentize(black, .8);
 
       &:disabled {
-        box-shadow: 1px 1px 4px transparent;
+        box-shadow: 0 0 0 1px $_slider_border_color, 1px 1px 4px transparent;
       }
     }
   }
@@ -148,12 +147,20 @@ scale {
       indicator { min-height: ($_marks_length - 3px); }
     }
 
-    &.marks-before > trough > slider {
-      border-top-left-radius: 0;
+    &.marks-before {
+      padding-top: 0;
+
+       > trough > slider {
+        border-top-left-radius: 0;
+      }
     }
 
-    &.marks-after > trough > slider {
-      border-bottom-right-radius: 0;
+    &.marks-after {
+      padding-bottom: 0;
+
+      > trough > slider {
+        border-bottom-right-radius: 0;
+      }
     }
 
     &.marks-before.marks-after > trough > slider {
@@ -184,12 +191,20 @@ scale {
       indicator { min-height: ($_marks_length - 3px); }
     }
 
-    &.marks-before > trough > slider {
-      border-bottom-left-radius: 0;
+    &.marks-before {
+      padding-left: 0;
+
+      > trough > slider {
+        border-bottom-left-radius: 0;
+      }
     }
 
-    &.marks-after > trough > slider {
-      border-top-right-radius: 0;
+    &.marks-after {
+      padding-right: 0;
+
+      > trough > slider {
+        border-top-right-radius: 0;
+      }
     }
   }
 
diff -pruN 1.2~alpha-1/src/stylesheet/widgets/_tab-view.scss 1.2~beta-1/src/stylesheet/widgets/_tab-view.scss
--- 1.2~alpha-1/src/stylesheet/widgets/_tab-view.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/widgets/_tab-view.scss	2022-08-05 21:51:59.000000000 +0000
@@ -51,6 +51,16 @@ tabbar {
     &:active { background-color: $view_active_color; }
   }
 
+  tabbox.single-tab tab {
+    &, &:hover, &:active {
+      background: none;
+
+      @if $contrast == 'high' {
+        box-shadow: none;
+      }
+    }
+  }
+
   .start-action,
   .end-action {
     padding: 5px;
@@ -76,13 +86,13 @@ tabbar {
 
     &:backdrop .box {
       background-color: $headerbar_backdrop_color;
-      transition: $backdrop_transition;
+      transition: background-color $backdrop_transition;
 
       > scrolledwindow,
       > .start-action,
       > .end-action {
         filter: opacity(0.5);
-        transition: $backdrop_transition;
+        transition: filter $backdrop_transition;
       }
     }
   }
diff -pruN 1.2~alpha-1/src/stylesheet/widgets/_toolbars.scss 1.2~beta-1/src/stylesheet/widgets/_toolbars.scss
--- 1.2~alpha-1/src/stylesheet/widgets/_toolbars.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/widgets/_toolbars.scss	2022-08-05 21:51:59.000000000 +0000
@@ -146,11 +146,11 @@ searchbar {
 
     &:backdrop {
       background-color: $headerbar_backdrop_color;
-      transition: $backdrop_transition;
+      transition: background-color $backdrop_transition;
 
       > * {
         filter: opacity(.5);
-        transition: $backdrop_transition;
+        transition: filter $backdrop_transition;
       }
     }
   }
@@ -189,11 +189,11 @@ actionbar > revealer > box {
 
   &:backdrop {
     background-color: $headerbar_backdrop_color;
-    transition: $backdrop_transition;
+    transition: background-color $backdrop_transition;
 
     > * {
       filter: opacity(.5);
-      transition: $backdrop_transition;
+      transition: filter $backdrop_transition;
     }
   }
 }
@@ -204,9 +204,14 @@ actionbar > revealer > box {
 
 infobar {
   > revealer > box {
-    padding: 8px 8px 9px 8px;
-    border-spacing: 12px;
-    box-shadow: inset 0 -1px if($contrast == 'high', $border_color, $shade_color),
+    padding: 6px;
+    padding-bottom: 7px;
+    border-spacing: 6px;
+    box-shadow: inset 0 -1px if($contrast == 'high', $border_color, $shade_color);
+
+    > box {
+      border-spacing: 6px;
+    }
   }
 
   &.action:hover > revealer > box {
diff -pruN 1.2~alpha-1/src/stylesheet/widgets/_trees.scss 1.2~beta-1/src/stylesheet/widgets/_trees.scss
--- 1.2~alpha-1/src/stylesheet/widgets/_trees.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/widgets/_trees.scss	2022-08-05 21:51:59.000000000 +0000
@@ -126,6 +126,10 @@ treeview.view > header > button {
   border-bottom: 1px solid $border_color;
 }
 
+treeview.navigation-sidebar {
+  padding: 0;
+}
+
 /********************************************************
  * Data Tables                                          *
  * treeview like tables with individual focusable cells *
diff -pruN 1.2~alpha-1/src/stylesheet/widgets/_window.scss 1.2~beta-1/src/stylesheet/widgets/_window.scss
--- 1.2~alpha-1/src/stylesheet/widgets/_window.scss	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/src/stylesheet/widgets/_window.scss	2022-08-05 21:51:59.000000000 +0000
@@ -24,7 +24,7 @@ window {
                   0 4px 28px 12px transparentize(black, 0.97),
                   0 6px 32px 16px transparent,
                   0 0 0 1px transparentize(black, if($contrast == 'high', .2, .98));
-      transition: $backdrop_transition;
+      transition: box-shadow $backdrop_transition;
     }
 
     &.dialog.message {
diff -pruN 1.2~alpha-1/tests/test-about-window.c 1.2~beta-1/tests/test-about-window.c
--- 1.2~alpha-1/tests/test-about-window.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/tests/test-about-window.c	2022-08-05 21:51:59.000000000 +0000
@@ -79,10 +79,12 @@ test_adw_about_window_create (void)
   g_assert_cmpstr (adw_about_window_get_support_url (window), ==, "https://example.org");
   g_assert_cmpstr (adw_about_window_get_debug_info (window), ==, "Debug");
   g_assert_cmpstr (adw_about_window_get_debug_info_filename (window), ==, "debug.txt");
+#if GLIB_CHECK_VERSION (2, 68, 0)
   g_assert_cmpstrv (adw_about_window_get_developers (window), developers);
   g_assert_cmpstrv (adw_about_window_get_designers (window), designers);
   g_assert_cmpstrv (adw_about_window_get_artists (window), artists);
   g_assert_cmpstrv (adw_about_window_get_documenters (window), documenters);
+#endif
   g_assert_cmpstr (adw_about_window_get_translator_credits (window), ==, "translator-credits");
   g_assert_cmpstr (adw_about_window_get_copyright (window), ==, "© 2022 Angela Avery");
   g_assert_cmpuint (adw_about_window_get_license_type (window), ==, GTK_LICENSE_GPL_3_0);
diff -pruN 1.2~alpha-1/tests/test-split-button.c 1.2~beta-1/tests/test-split-button.c
--- 1.2~alpha-1/tests/test-split-button.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/tests/test-split-button.c	2022-08-05 21:51:59.000000000 +0000
@@ -272,6 +272,33 @@ test_adw_split_button_direction (void)
   g_assert_finalize_object (button);
 }
 
+static void
+test_adw_split_button_dropdown_tooltip (void)
+{
+  AdwSplitButton *button = g_object_ref_sink (ADW_SPLIT_BUTTON (adw_split_button_new ()));
+  char *tooltip;
+
+  g_assert_nonnull (button);
+
+  notified = 0;
+  g_signal_connect (button, "notify::dropdown-tooltip", G_CALLBACK (notify_cb), NULL);
+
+  g_object_get (button, "dropdown-tooltip", &tooltip, NULL);
+  g_assert_cmpstr (tooltip, ==, "");
+  g_assert_cmpint (notified, ==, 0);
+
+  adw_split_button_set_dropdown_tooltip (button, "Some tooltip");
+  g_assert_cmpstr (adw_split_button_get_dropdown_tooltip (button), ==, "Some tooltip");
+  g_assert_cmpint (notified, ==, 1);
+
+  g_object_set (button, "dropdown-tooltip", "Some other tooltip", NULL);
+  g_assert_cmpstr (adw_split_button_get_dropdown_tooltip (button), ==, "Some other tooltip");
+  g_assert_cmpint (notified, ==, 2);
+
+  g_free (tooltip);
+  g_assert_finalize_object (button);
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -286,6 +313,7 @@ main (int   argc,
   g_test_add_func ("/Adwaita/SplitButton/menu_model", test_adw_split_button_menu_model);
   g_test_add_func ("/Adwaita/SplitButton/popover", test_adw_split_button_popover);
   g_test_add_func ("/Adwaita/SplitButton/direction", test_adw_split_button_direction);
+  g_test_add_func ("/Adwaita/SplitButton/dropdown_tooltip", test_adw_split_button_dropdown_tooltip);
 
   return g_test_run ();
 }
diff -pruN 1.2~alpha-1/tests/test-tab-view.c 1.2~beta-1/tests/test-tab-view.c
--- 1.2~alpha-1/tests/test-tab-view.c	2022-07-09 21:56:59.000000000 +0000
+++ 1.2~beta-1/tests/test-tab-view.c	2022-08-05 21:51:59.000000000 +0000
@@ -216,6 +216,41 @@ test_adw_tab_view_menu_model (void)
 }
 
 static void
+test_adw_tab_view_shortcuts (void)
+{
+  AdwTabView *view = g_object_ref_sink (ADW_TAB_VIEW (adw_tab_view_new ()));
+  AdwTabViewShortcuts shortcuts;
+
+  g_assert_nonnull (view);
+
+  notified = 0;
+  g_signal_connect (view, "notify::shortcuts", G_CALLBACK (notify_cb), NULL);
+
+  g_object_get (view, "shortcuts", &shortcuts, NULL);
+  g_assert_cmpint (shortcuts, ==, ADW_TAB_VIEW_SHORTCUT_ALL_SHORTCUTS);
+  g_assert_cmpint (notified, ==, 0);
+
+  adw_tab_view_set_shortcuts (view, ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_UP);
+  g_assert_cmpint (adw_tab_view_get_shortcuts (view), ==, ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_UP);
+  g_assert_cmpint (notified, ==, 1);
+
+  g_object_set (view, "shortcuts", ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_DOWN, NULL);
+  g_assert_cmpint (adw_tab_view_get_shortcuts (view), ==, ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_DOWN);
+  g_assert_cmpint (notified, ==, 2);
+
+  adw_tab_view_add_shortcuts (view, ADW_TAB_VIEW_SHORTCUT_CONTROL_HOME);
+  g_assert_cmpint (adw_tab_view_get_shortcuts (view), ==, ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_DOWN |
+                                                          ADW_TAB_VIEW_SHORTCUT_CONTROL_HOME);
+  g_assert_cmpint (notified, ==, 3);
+
+  adw_tab_view_remove_shortcuts (view, ADW_TAB_VIEW_SHORTCUT_CONTROL_PAGE_DOWN);
+  g_assert_cmpint (adw_tab_view_get_shortcuts (view), ==, ADW_TAB_VIEW_SHORTCUT_CONTROL_HOME);
+  g_assert_cmpint (notified, ==, 4);
+
+  g_assert_finalize_object (view);
+}
+
+static void
 test_adw_tab_view_get_page (void)
 {
   AdwTabView *view = g_object_ref_sink (ADW_TAB_VIEW (adw_tab_view_new ()));
@@ -1090,6 +1125,37 @@ test_adw_tab_page_indicator_icon (void)
 }
 
 static void
+test_adw_tab_page_indicator_tooltip (void)
+{
+  AdwTabView *view = g_object_ref_sink (ADW_TAB_VIEW (adw_tab_view_new ()));
+  AdwTabPage *page;
+  char *tooltip;
+
+  g_assert_nonnull (view);
+
+  page = adw_tab_view_append (view, gtk_button_new ());
+  g_assert_nonnull (page);
+
+  notified = 0;
+  g_signal_connect (page, "notify::indicator-tooltip", G_CALLBACK (notify_cb), NULL);
+
+  g_object_get (page, "indicator-tooltip", &tooltip, NULL);
+  g_assert_cmpstr (tooltip, ==, "");
+  g_assert_cmpint (notified, ==, 0);
+
+  adw_tab_page_set_indicator_tooltip (page, "Some tooltip");
+  g_assert_cmpstr (adw_tab_page_get_indicator_tooltip (page), ==, "Some tooltip");
+  g_assert_cmpint (notified, ==, 1);
+
+  g_object_set (page, "indicator-tooltip", "Some other tooltip", NULL);
+  g_assert_cmpstr (adw_tab_page_get_indicator_tooltip (page), ==, "Some other tooltip");
+  g_assert_cmpint (notified, ==, 2);
+
+  g_free (tooltip);
+  g_assert_finalize_object (view);
+}
+
+static void
 test_adw_tab_page_indicator_activatable (void)
 {
   AdwTabView *view = g_object_ref_sink (ADW_TAB_VIEW (adw_tab_view_new ()));
@@ -1230,6 +1296,7 @@ main (int   argc,
   g_test_add_func ("/Adwaita/TabView/n_pinned_pages", test_adw_tab_view_n_pinned_pages);
   g_test_add_func ("/Adwaita/TabView/default_icon", test_adw_tab_view_default_icon);
   g_test_add_func ("/Adwaita/TabView/menu_model", test_adw_tab_view_menu_model);
+  g_test_add_func ("/Adwaita/TabView/shortcuts", test_adw_tab_view_shortcuts);
   g_test_add_func ("/Adwaita/TabView/get_page", test_adw_tab_view_get_page);
   g_test_add_func ("/Adwaita/TabView/select", test_adw_tab_view_select);
   g_test_add_func ("/Adwaita/TabView/add_basic", test_adw_tab_view_add_basic);
@@ -1251,6 +1318,7 @@ main (int   argc,
   g_test_add_func ("/Adwaita/TabPage/icon", test_adw_tab_page_icon);
   g_test_add_func ("/Adwaita/TabPage/loading", test_adw_tab_page_loading);
   g_test_add_func ("/Adwaita/TabPage/indicator_icon", test_adw_tab_page_indicator_icon);
+  g_test_add_func ("/Adwaita/TabPage/indicator_tooltip", test_adw_tab_page_indicator_tooltip);
   g_test_add_func ("/Adwaita/TabPage/indicator_activatable", test_adw_tab_page_indicator_activatable);
   g_test_add_func ("/Adwaita/TabPage/needs_attention", test_adw_tab_page_needs_attention);
 
