[gnome-builder] gui: remove buttons from IdeFrameHeader menu



commit ff3556c03b82d70612f1069e9b75341a45eeff00
Author: Pavlo Solntsev <p sun fun gmail com>
Date:   Wed Apr 3 13:43:44 2019 -0500

    gui: remove buttons from IdeFrameHeader menu
    
     - Buttons removed from Popover
     - The popover is visible if only at least one file is opened.
    
    Fixes #273

 src/libide/gui/ide-frame-header.c  | 26 ++++++++++++++
 src/libide/gui/ide-frame-header.ui | 71 --------------------------------------
 2 files changed, 26 insertions(+), 71 deletions(-)
---
diff --git a/src/libide/gui/ide-frame-header.c b/src/libide/gui/ide-frame-header.c
index 9943fd10e..99a67ea87 100644
--- a/src/libide/gui/ide-frame-header.c
+++ b/src/libide/gui/ide-frame-header.c
@@ -276,6 +276,23 @@ create_document_row (gpointer item,
   return GTK_WIDGET (row);
 }
 
+static void
+ide_frame_header_model_changed (IdeFrameHeader *self,
+                                guint           position,
+                                guint           removed,
+                                guint           added,
+                                GListModel     *model)
+{
+  guint size;
+
+  g_assert (IDE_IS_FRAME_HEADER (self));
+  g_assert (G_IS_LIST_MODEL (model));
+
+  size = g_list_model_get_n_items (model);
+
+  gtk_widget_set_sensitive (GTK_WIDGET (self->title_button), size > 0);
+}
+
 void
 _ide_frame_header_set_pages (IdeFrameHeader *self,
                                     GListModel           *model)
@@ -287,6 +304,13 @@ _ide_frame_header_set_pages (IdeFrameHeader *self,
                            model,
                            create_document_row,
                            self, NULL);
+
+  /* We need to watch our model for any new document added or removed */
+  g_signal_connect_object (model,
+                           "items-changed",
+                           G_CALLBACK (ide_frame_header_model_changed),
+                           self,
+                           G_CONNECT_SWAPPED);
 }
 
 static void
@@ -704,6 +728,8 @@ ide_frame_header_init (IdeFrameHeader *self)
                            G_CALLBACK (ide_frame_header_view_row_activated),
                            self, 0);
 
+  gtk_widget_set_sensitive (GTK_WIDGET (self->title_button), FALSE);
+
   G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
   gtk_container_set_reallocate_redraws (GTK_CONTAINER (self), TRUE);
   G_GNUC_END_IGNORE_DEPRECATIONS;
diff --git a/src/libide/gui/ide-frame-header.ui b/src/libide/gui/ide-frame-header.ui
index a9a8b776d..e5cf3848a 100644
--- a/src/libide/gui/ide-frame-header.ui
+++ b/src/libide/gui/ide-frame-header.ui
@@ -38,77 +38,6 @@
             </child>
           </object>
         </child>
-        <child>
-          <object class="GtkBox">
-            <property name="homogeneous">true</property>
-            <property name="spacing">6</property>
-            <property name="visible">true</property>
-            <child>
-              <object class="GtkButton">
-                <property name="tooltip-text" translatable="yes">Open file</property>
-                <property name="action-name">editor.open-file</property>
-                <property name="visible">true</property>
-                <style>
-                  <class name="image-button"/>
-                </style>
-                <child>
-                  <object class="GtkImage">
-                    <property name="icon-name">document-open-symbolic</property>
-                    <property name="visible">true</property>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkButton">
-                <property name="visible">true</property>
-                <property name="tooltip-text" translatable="yes">New file</property>
-                <property name="action-name">editor.new-file</property>
-                <style>
-                  <class name="image-button"/>
-                </style>
-                <child>
-                  <object class="GtkImage">
-                    <property name="icon-name">document-new-symbolic</property>
-                    <property name="visible">true</property>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkButton">
-                <property name="tooltip-text" translatable="yes">New terminal</property>
-                <property name="action-name">win.new-terminal</property>
-                <property name="visible">true</property>
-                <style>
-                  <class name="image-button"/>
-                </style>
-                <child>
-                  <object class="GtkImage">
-                    <property name="icon-name">utilities-terminal-symbolic</property>
-                    <property name="visible">true</property>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkButton">
-                <property name="tooltip-text" translatable="yes">New documentation</property>
-                <property name="action-name">devhelp.new-view</property>
-                <property name="visible">true</property>
-                <style>
-                  <class name="image-button"/>
-                </style>
-                <child>
-                  <object class="GtkImage">
-                    <property name="icon-name">org.gnome.Devhelp-symbolic</property>
-                    <property name="visible">true</property>
-                  </object>
-                </child>
-              </object>
-            </child>
-          </object>
-        </child>
       </object>
     </child>
   </object>


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