[gnome-maps] MainWindow: move to CSD



commit 912c9f104d76e8bc5a7cb309173100150a3bfac6
Author: Mattias Bengtsson <mattias jc bengtsson gmail com>
Date:   Tue Aug 6 01:37:53 2013 +0200

    MainWindow: move to CSD
    
    Move maps to be client side decorated (CSD), that is: Gtk+ will draw the
    window decorations instead of relying on the window manager for drawing
    them.
    
    This move has been made by a few other apps in GNOME already (like
    devhelp) and is mandatory for making us work in the wayland tech demo
    that will be released in 3.10.
    
    This is done by just moving the GdHeaderBar inside a special child to
    window with the attribute type = titlebar and that will be your new title
    bar. I also added a close button like the other apps do, which will help
    people close the app even when maximised.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=705537

 src/main-window.ui |   94 +++++++++++++++++++++++++++++++++++-----------------
 src/mainWindow.js  |    3 ++
 2 files changed, 66 insertions(+), 31 deletions(-)
---
diff --git a/src/main-window.ui b/src/main-window.ui
index ac97d3b..bc62cf3 100644
--- a/src/main-window.ui
+++ b/src/main-window.ui
@@ -19,46 +19,78 @@
     <property name="width_request">600</property>
     <property name="height_request">500</property>
     <property name="window_position">center</property>
-    <property name="hide_titlebar_when_maximized">True</property>
     <property name="title" translatable="yes">Maps</property>
-    <child>
-      <object class="GtkGrid" id="window-content">
+    <child type="titlebar">
+      <object class="GdHeaderBar" id="header-bar">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
+        <property name="can_focus">False</property>
+        <child type="title">
+          <object class="GdTaggedEntry" id="search-entry">
+            <property name="visible">True</property>
+            <property name="width_request">500</property>
+          </object>
+        </child>
         <child>
-          <object class="GdHeaderBar" id="header-bar">
+          <object class="GdHeaderToggleButton" id="track-user-button">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child type="title">
-              <object class="GdTaggedEntry" id="search-entry">
-                <property name="visible">True</property>
-                <property name="width_request">500</property>
-              </object>
-            </child>
-            <child>
-              <object class="GdHeaderToggleButton" id="track-user-button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="symbolic-icon-name">find-location-symbolic</property>
-                <property name="action_name">win.track-user-location</property>
-              </object>
-              <packing>
-                <property name="pack_type">start</property>
-              </packing>
-            </child>
+            <property name="can_focus">True</property>
+            <property name="symbolic-icon-name">find-location-symbolic</property>
+            <property name="action_name">win.track-user-location</property>
+          </object>
+          <packing>
+            <property name="pack_type">start</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GdHeaderMenuButton" id="layer-menu-button">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="symbolic-icon-name">emblem-system-symbolic</property>
+            <property name="menu-model">map-type-menu</property>
+            <property name="action_name">win.map-type-menu</property>
+          </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="valign">center</property>
+            <property name="relief">none</property>
+            <property name="action_name">win.close</property>
+            <style>
+              <class name="image-button"/>
+            </style>
             <child>
-              <object class="GdHeaderMenuButton" id="layer-menu-button">
+              <object class="GtkImage" id="close-image">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="symbolic-icon-name">emblem-system-symbolic</property>
-                <property name="menu-model">map-type-menu</property>
-                <property name="action_name">win.map-type-menu</property>
+                <property name="icon_size">1</property>
+                <property name="icon_name">window-close-symbolic</property>
               </object>
-              <packing>
-                <property name="pack_type">end</property>
-              </packing>
             </child>
           </object>
+          <packing>
+            <property name="pack_type">end</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <child>
+      <object class="GtkGrid" id="window-content">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <child>
         </child>
       </object>
     </child>
diff --git a/src/mainWindow.js b/src/mainWindow.js
index 65b5f3f..1b5fcb5 100644
--- a/src/mainWindow.js
+++ b/src/mainWindow.js
@@ -73,6 +73,9 @@ const MainWindow = new Lang.Class({
     _initActions: function() {
         Utils.initActions(this.window, [
             {
+                properties: { name: 'close' },
+                signalHandlers: { activate: this.window.close.bind(this.window) }
+            }, {
                 properties: { name: 'about' },
                 signalHandlers: { activate: this._onAboutActivate }
             }, {


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