[gnome-games] display-header-bar: Don't subclass GtkStack



commit 46fdf1f0d3ba36a43ae0df44cdccec6461f36a73
Author: Alexander Mikhaylenko <exalm7659 gmail com>
Date:   Mon Aug 19 21:32:10 2019 +0500

    display-header-bar: Don't subclass GtkStack

 data/ui/display-header-bar.ui  | 277 +++++++++++++++++++++--------------------
 src/ui/display-header-bar.vala |   8 +-
 2 files changed, 146 insertions(+), 139 deletions(-)
---
diff --git a/data/ui/display-header-bar.ui b/data/ui/display-header-bar.ui
index 0aa3d53a..8a659bd8 100644
--- a/data/ui/display-header-bar.ui
+++ b/data/ui/display-header-bar.ui
@@ -1,178 +1,183 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="3.24"/>
-  <template class="GamesDisplayHeaderBar" parent="GtkStack">
+  <template class="GamesDisplayHeaderBar" parent="GtkBin">
     <property name="visible">True</property>
     <signal name="notify::is-fullscreen" handler="on_fullscreen_changed"/>
     <signal name="notify::can-fullscreen" handler="on_fullscreen_changed"/>
     <child>
-      <object class="GtkHeaderBar" id="ingame_header_bar">
+      <object class="GtkStack" id="stack">
         <property name="visible">True</property>
-        <property name="title" translatable="yes">Games</property>
-        <property name="show_close_button">True</property>
         <child>
-          <object class="GtkButton" id="back">
+          <object class="GtkHeaderBar" id="ingame_header_bar">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="valign">center</property>
-            <property name="use-underline">True</property>
-            <signal name="clicked" handler="on_back_clicked"/>
-            <style>
-              <class name="image-button"/>
-            </style>
-            <child internal-child="accessible">
-              <object class="AtkObject" id="a11y-back">
-                <property name="accessible-name" translatable="yes">Back</property>
-              </object>
-            </child>
+            <property name="title" translatable="yes">Games</property>
+            <property name="show_close_button">True</property>
             <child>
-              <object class="GtkImage" id="back_image">
+              <object class="GtkButton" id="back">
                 <property name="visible">True</property>
-                <property name="icon-name">go-previous-symbolic</property>
-                <property name="icon-size">1</property>
+                <property name="can_focus">False</property>
+                <property name="valign">center</property>
+                <property name="use-underline">True</property>
+                <signal name="clicked" handler="on_back_clicked"/>
+                <style>
+                  <class name="image-button"/>
+                </style>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="a11y-back">
+                    <property name="accessible-name" translatable="yes">Back</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImage" id="back_image">
+                    <property name="visible">True</property>
+                    <property name="icon-name">go-previous-symbolic</property>
+                    <property name="icon-size">1</property>
+                  </object>
+                </child>
               </object>
             </child>
-          </object>
-        </child>
-        <child>
-          <object class="GtkButton" id="restore">
-            <property name="visible">False</property>
-            <property name="can_focus">False</property>
-            <property name="valign">center</property>
-            <property name="use-underline">True</property>
-            <property name="margin-start">7</property>
-            <signal name="clicked" handler="on_restore_clicked"/>
-            <style>
-              <class name="image-button"/>
-              <class name="titlebutton"/>
-            </style>
-            <child internal-child="accessible">
-              <object class="AtkObject" id="a11y-restore">
-                <property name="accessible-name" translatable="yes">Restore</property>
+            <child>
+              <object class="GtkButton" id="restore">
+                <property name="visible">False</property>
+                <property name="can_focus">False</property>
+                <property name="valign">center</property>
+                <property name="use-underline">True</property>
+                <property name="margin-start">7</property>
+                <signal name="clicked" handler="on_restore_clicked"/>
+                <style>
+                  <class name="image-button"/>
+                  <class name="titlebutton"/>
+                </style>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="a11y-restore">
+                    <property name="accessible-name" translatable="yes">Restore</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImage" id="restore_image">
+                    <property name="visible">True</property>
+                    <property name="icon-name">view-restore-symbolic</property>
+                    <property name="icon-size">1</property>
+                  </object>
+                </child>
               </object>
+              <packing>
+                <property name="pack-type">end</property>
+              </packing>
             </child>
             <child>
-              <object class="GtkImage" id="restore_image">
+              <object class="GtkMenuButton" id="secondary_menu_button">
+                <property name="popover">secondary_menu</property>
+                <property name="use-underline">True</property>
                 <property name="visible">True</property>
-                <property name="icon-name">view-restore-symbolic</property>
-                <property name="icon-size">1</property>
+                <property name="valign">center</property>
+                <property name="can-focus">False</property>
+                <style>
+                  <class name="image-button"/>
+                </style>
+                <child>
+                  <object class="GtkImage">
+                    <property name="visible">True</property>
+                    <property name="icon-name">view-more-symbolic</property>
+                    <property name="icon-size">1</property>
+                  </object>
+                </child>
               </object>
+              <packing>
+                <property name="pack-type">end</property>
+              </packing>
             </child>
-          </object>
-          <packing>
-            <property name="pack-type">end</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkMenuButton" id="secondary_menu_button">
-            <property name="popover">secondary_menu</property>
-            <property name="use-underline">True</property>
-            <property name="visible">True</property>
-            <property name="valign">center</property>
-            <property name="can-focus">False</property>
-            <style>
-              <class name="image-button"/>
-            </style>
             <child>
-              <object class="GtkImage">
-                <property name="visible">True</property>
-                <property name="icon-name">view-more-symbolic</property>
-                <property name="icon-size">1</property>
+              <object class="GtkButton" id="fullscreen">
+                <property name="visible">False</property>
+                <property name="can_focus">False</property>
+                <property name="valign">center</property>
+                <property name="use-underline">True</property>
+                <signal name="clicked" handler="on_fullscreen_clicked"/>
+                <style>
+                  <class name="image-button"/>
+                </style>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="a11y-fullscreen">
+                    <property name="accessible-name" translatable="yes">Fullscreen</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImage" id="fullscreen_image">
+                    <property name="visible">True</property>
+                    <property name="icon-name">view-fullscreen-symbolic</property>
+                    <property name="icon-size">1</property>
+                  </object>
+                </child>
               </object>
+              <packing>
+                <property name="pack-type">end</property>
+              </packing>
             </child>
-          </object>
-          <packing>
-            <property name="pack-type">end</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="fullscreen">
-            <property name="visible">False</property>
-            <property name="can_focus">False</property>
-            <property name="valign">center</property>
-            <property name="use-underline">True</property>
-            <signal name="clicked" handler="on_fullscreen_clicked"/>
-            <style>
-              <class name="image-button"/>
-            </style>
-            <child internal-child="accessible">
-              <object class="AtkObject" id="a11y-fullscreen">
-                <property name="accessible-name" translatable="yes">Fullscreen</property>
-              </object>
+            <child>
+              <object class="GamesMediaMenuButton" id="media_button"/>
+              <packing>
+                <property name="pack-type">end</property>
+              </packing>
             </child>
             <child>
-              <object class="GtkImage" id="fullscreen_image">
+              <object class="GamesInputModeSwitcher" id="input_mode_switcher">
                 <property name="visible">True</property>
-                <property name="icon-name">view-fullscreen-symbolic</property>
-                <property name="icon-size">1</property>
               </object>
+              <packing>
+                <property name="pack-type">end</property>
+              </packing>
             </child>
           </object>
-          <packing>
-            <property name="pack-type">end</property>
-          </packing>
         </child>
         <child>
-          <object class="GamesMediaMenuButton" id="media_button"/>
-          <packing>
-            <property name="pack-type">end</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GamesInputModeSwitcher" id="input_mode_switcher">
-            <property name="visible">True</property>
-          </object>
-          <packing>
-            <property name="pack-type">end</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <child>
-      <object class="GtkHeaderBar" id="savestates_header_bar">
-        <property name="visible">True</property>
-        <child>
-          <object class="GtkButton" id="savestates_load_btn">
-            <property name="sensitive">False</property>
-            <property name="visible">True</property>
-            <property name="valign">center</property>
-            <property name="use-underline">True</property>
-            <property name="label" translatable="yes">_Load</property>
-            <signal name="clicked" handler="on_savestates_load_clicked"/>
-            <style>
-              <class name="suggested-action"/>
-            </style>
-          </object>
-          <packing>
-            <property name="pack-type">end</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="savestates_back">
+          <object class="GtkHeaderBar" id="savestates_header_bar">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="valign">center</property>
-            <property name="use-underline">True</property>
-            <signal name="clicked" handler="on_back_clicked"/>
-            <style>
-              <class name="image-button"/>
-            </style>
-            <child internal-child="accessible">
-              <object class="AtkObject" id="a11y-savestates-back">
-                <property name="accessible-name" translatable="yes">Back</property>
+            <child>
+              <object class="GtkButton" id="savestates_load_btn">
+                <property name="sensitive">False</property>
+                <property name="visible">True</property>
+                <property name="valign">center</property>
+                <property name="use-underline">True</property>
+                <property name="label" translatable="yes">_Load</property>
+                <signal name="clicked" handler="on_savestates_load_clicked"/>
+                <style>
+                  <class name="suggested-action"/>
+                </style>
               </object>
+              <packing>
+                <property name="pack-type">end</property>
+              </packing>
             </child>
             <child>
-              <object class="GtkImage">
+              <object class="GtkButton" id="savestates_back">
                 <property name="visible">True</property>
-                <property name="icon-name">go-previous-symbolic</property>
-                <property name="icon-size">1</property>
+                <property name="can_focus">False</property>
+                <property name="valign">center</property>
+                <property name="use-underline">True</property>
+                <signal name="clicked" handler="on_back_clicked"/>
+                <style>
+                  <class name="image-button"/>
+                </style>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="a11y-savestates-back">
+                    <property name="accessible-name" translatable="yes">Back</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImage">
+                    <property name="visible">True</property>
+                    <property name="icon-name">go-previous-symbolic</property>
+                    <property name="icon-size">1</property>
+                  </object>
+                </child>
               </object>
+              <packing>
+                <property name="pack-type">start</property>
+              </packing>
             </child>
           </object>
-          <packing>
-            <property name="pack-type">start</property>
-          </packing>
         </child>
       </object>
     </child>
diff --git a/src/ui/display-header-bar.vala b/src/ui/display-header-bar.vala
index 3742183a..859aed55 100644
--- a/src/ui/display-header-bar.vala
+++ b/src/ui/display-header-bar.vala
@@ -1,7 +1,7 @@
 // This file is part of GNOME Games. License: GPL-3.0+.
 
 [GtkTemplate (ui = "/org/gnome/Games/ui/display-header-bar.ui")]
-private class Games.DisplayHeaderBar : Gtk.Stack {
+private class Games.DisplayHeaderBar : Gtk.Bin {
        public signal void back ();
 
        [GtkChild]
@@ -74,6 +74,8 @@ private class Games.DisplayHeaderBar : Gtk.Stack {
                }
        }
 
+       [GtkChild]
+       private Gtk.Stack stack;
        [GtkChild]
        private Gtk.HeaderBar ingame_header_bar;
        [GtkChild]
@@ -136,9 +138,9 @@ private class Games.DisplayHeaderBar : Gtk.Stack {
 
        private void on_savestates_list_revealed_changed () {
                if (savestates_list_state.is_revealed)
-                       set_visible_child (savestates_header_bar);
+                       stack.visible_child = savestates_header_bar;
                else
-                       set_visible_child (ingame_header_bar);
+                       stack.visible_child = ingame_header_bar;
        }
 
        private void on_selected_savestate_changed () {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]