[gnome-builder/editor-layout] track dirty state on editor tab



commit c502554fc499d1f8bb69393be788e26f761ac5e8
Author: Christian Hergert <christian hergert me>
Date:   Sun Nov 30 04:59:26 2014 -0800

    track dirty state on editor tab

 src/editor/gb-editor-tab.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)
---
diff --git a/src/editor/gb-editor-tab.c b/src/editor/gb-editor-tab.c
index 5985403..e04c9ee 100644
--- a/src/editor/gb-editor-tab.c
+++ b/src/editor/gb-editor-tab.c
@@ -438,6 +438,21 @@ gb_editor_tab_on_notify_location (GbEditorTab   *tab,
 }
 
 static void
+gb_editor_tab_on_modified_changed (GbEditorTab   *tab,
+                                   GtkTextBuffer *buffer)
+{
+  gboolean modified;
+
+  g_return_if_fail (GB_IS_EDITOR_TAB (tab));
+
+  modified = gtk_text_buffer_get_modified (buffer);
+  gb_tab_set_dirty (GB_TAB (tab), modified);
+
+  /* notify helper for tab labels wanting to render dirty tabs specially */
+  g_object_notify (G_OBJECT (tab), "title");
+}
+
+static void
 gb_editor_tab_constructed (GObject *object)
 {
   GbEditorTabPrivate *priv;
@@ -454,6 +469,12 @@ gb_editor_tab_constructed (GObject *object)
                                  NULL);
   gb_editor_frame_set_document (priv->frame, priv->document);
 
+  g_signal_connect_object (priv->document,
+                           "modified-changed",
+                           G_CALLBACK (gb_editor_tab_on_modified_changed),
+                           tab,
+                           G_CONNECT_SWAPPED);
+
   file = gb_editor_document_get_file (priv->document);
   g_signal_connect_object (file,
                            "notify::location",


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