[gnome-weather] Use the header bar as the window titlebar



commit 2bb7bee1c10df02b453f4eab4b181d28e4152230
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Sun Jun 2 17:04:08 2013 +0200

    Use the header bar as the window titlebar
    
    This way, we follow the new 3.10 design and we don't lose the X
    button when maximized.

 data/window.ui |  199 +++++++++++++++++++++++++++++++------------------------
 src/window.js  |   10 ++-
 2 files changed, 120 insertions(+), 89 deletions(-)
---
diff --git a/data/window.ui b/data/window.ui
index dd3e683..f37848f 100644
--- a/data/window.ui
+++ b/data/window.ui
@@ -53,114 +53,139 @@
       <class name="selection-menu"/>
     </style>
   </object>
-  <object class="GtkGrid" id="main-panel">
+  <object class="GtkHeaderBar" id="header-bar">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="orientation">vertical</property>
+    <property name="vexpand">False</property>
     <child>
-      <object class="GtkHeaderBar" id="header-bar">
+      <object class="GtkButton" id="new-button">
         <property name="visible">True</property>
-        <property name="vexpand">False</property>
-        <child>
-          <object class="GtkButton" id="new-button">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="label" translatable="yes">New</property>
-            <property name="action-name">win.new-location</property>
-            <property name="valign">center</property>
-            <style>
-              <class name="text-button"/>
-            </style>
-          </object>
-          <packing>
-            <property name="pack_type">start</property>
-          </packing>
-        </child>
+        <property name="can_focus">True</property>
+        <property name="label" translatable="yes">New</property>
+        <property name="action-name">win.new-location</property>
+        <property name="valign">center</property>
+        <style>
+          <class name="text-button"/>
+        </style>
+      </object>
+      <packing>
+        <property name="pack_type">start</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkButton" id="world-button">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="label" translatable="yes">World Weather</property>
+        <property name="valign">center</property>
+        <style>
+          <class name="text-button"/>
+        </style>
+      </object>
+      <packing>
+        <property name="pack_type">start</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkButton" id="select-button">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="action-name">win.selection-mode</property>
+        <property name="action-target">true</property>
+        <property name="valign">center</property>
+        <style>
+          <class name="image-button"/>
+        </style>
         <child>
-          <object class="GtkButton" id="world-button">
+          <object class="GtkImage" id="select-button-image">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="label" translatable="yes">World Weather</property>
-            <property name="valign">center</property>
-            <style>
-              <class name="text-button"/>
-            </style>
+            <property name="can_focus">False</property>
+            <property name="icon-name">object-select-symbolic</property>
+            <property name="icon-size">1</property>
           </object>
-          <packing>
-            <property name="pack_type">start</property>
-          </packing>
         </child>
-        <child>
-          <object class="GtkButton" id="select-button">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="action-name">win.selection-mode</property>
-            <property name="action-target">true</property>
-            <property name="valign">center</property>
-            <style>
-              <class name="image-button"/>
-            </style>
-            <child>
-              <object class="GtkImage" id="select-button-image">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="icon-name">object-select-symbolic</property>
-                <property name="icon-size">1</property>
-              </object>
-            </child>
+      </object>
+      <packing>
+        <property name="pack_type">end</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkButton" id="done-button">
+        <property name="visible">True</property>
+        <property name="no_show_all">True</property>
+        <property name="can_focus">True</property>
+        <property name="label" translatable="yes">Cancel</property>
+        <property name="valign">center</property>
+        <property name="action-name">win.selection-mode</property>
+        <property name="action-target">false</property>
+        <style>
+          <class name="text-button"/>
+          <class name="suggested-action"/>
+        </style>
           </object>
           <packing>
             <property name="pack_type">end</property>
           </packing>
-        </child>
+    </child>
+    <child>
+      <object class="GtkButton" id="refresh-button">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="action-name">win.refresh</property>
+        <property name="valign">center</property>
+        <style>
+              <class name="image-button"/>
+        </style>
         <child>
-          <object class="GtkButton" id="done-button">
+          <object class="GtkImage" id="refresh-button-image">
             <property name="visible">True</property>
-            <property name="no_show_all">True</property>
-            <property name="can_focus">True</property>
-            <property name="label" translatable="yes">Cancel</property>
-            <property name="valign">center</property>
-            <property name="action-name">win.selection-mode</property>
-            <property name="action-target">false</property>
-            <style>
-              <class name="text-button"/>
-              <class name="suggested-action"/>
-            </style>
+            <property name="can_focus">False</property>
+            <property name="icon-name">view-refresh-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="GtkSeparator" id="close-button-separator">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <property name="valign">fill</property>
+      </object>
+      <packing>
+        <property name="pack_type">end</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkButton" id="close-button">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="valign">center</property>
+        <property name="relief">none</property>
+        <property name="action-name">win.close</property>
+        <style>
+          <class name="image-button"/>
+        </style>
         <child>
-          <object class="GtkButton" id="refresh-button">
+          <object class="GtkImage" id="close-button-image">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="action-name">win.refresh</property>
-            <property name="valign">center</property>
-            <style>
-              <class name="image-button"/>
-            </style>
-            <child>
-              <object class="GtkImage" id="refresh-button-image">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="icon-name">view-refresh-symbolic</property>
-                <property name="icon-size">1</property>
-              </object>
-            </child>
+            <property name="can_focus">False</property>
+            <property name="icon_name">window-close-symbolic</property>
+            <property name="icon_size">1</property>
           </object>
-          <packing>
-            <property name="pack_type">end</property>
-          </packing>
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">0</property>
-        <property name="width">1</property>
-        <property name="height">1</property>
+        <property name="pack_type">end</property>
       </packing>
     </child>
+  </object>
+  <object class="GtkGrid" id="main-panel">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="orientation">vertical</property>
     <child>
       <object class="GtkStack" id="main-stack">
         <property name="transition-type">crossfade</property>
@@ -173,7 +198,7 @@
       </object>
       <packing>
         <property name="left-attach">0</property>
-        <property name="top-attach">1</property>
+        <property name="top-attach">0</property>
         <property name="width">1</property>
         <property name="height">1</property>
       </packing>
@@ -206,7 +231,7 @@
       </object>
       <packing>
         <property name="left-attach">0</property>
-        <property name="top-attach">2</property>
+        <property name="top-attach">1</property>
         <property name="width">1</property>
         <property name="height">1</property>
       </packing>
diff --git a/src/window.js b/src/window.js
index 815b243..64ee7b9 100644
--- a/src/window.js
+++ b/src/window.js
@@ -83,8 +83,7 @@ const MainWindow = new Lang.Class({
     Extends: Gtk.ApplicationWindow,
 
     _init: function(params) {
-        params = Params.fill(params, { hide_titlebar_when_maximized: true,
-                                       width_request: 700,
+        params = Params.fill(params, { width_request: 700,
                                        height_request: 520 });
         this.parent(params);
 
@@ -98,6 +97,8 @@ const MainWindow = new Lang.Class({
                             activate: this._newLocation },
                           { name: 'about',
                             activate: this._showAbout },
+                          { name: 'close',
+                            activate: this._close },
                           { name: 'new-location',
                             activate: this._newLocation },
                           { name: 'selection-mode',
@@ -118,6 +119,7 @@ const MainWindow = new Lang.Class({
 
         let grid = builder.get_object('main-panel');
         this._header = builder.get_object('header-bar');
+        this.set_titlebar(this._header);
 
         let newButton = builder.get_object('new-button');
         this._pageWidgets[Page.WORLD].push(newButton);
@@ -320,5 +322,9 @@ const MainWindow = new Lang.Class({
         }
 
         this._worldView.iconView.selection_mode = false;
+    },
+
+    _close: function() {
+        this.destroy();
     }
 });


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