[gnome-builder] editor: format document titles with spacing around /
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] editor: format document titles with spacing around /
- Date: Wed, 16 Sep 2015 04:22:50 +0000 (UTC)
commit f7f4736adefe9929e2fe65f84de34c5aae8ea86b
Author: Christian Hergert <christian hergert me>
Date: Tue Sep 15 21:22:33 2015 -0700
editor: format document titles with spacing around /
Once we get a path bar, it will look similar to this, but with slightly
different styling on directories and such. But this is a stop gap until
that widget arrives.
src/editor/gb-editor-view-private.h | 1 +
src/editor/gb-editor-view.c | 43 +++++++++++++++++++++++++++++++++++
2 files changed, 44 insertions(+), 0 deletions(-)
---
diff --git a/src/editor/gb-editor-view-private.h b/src/editor/gb-editor-view-private.h
index 9ad13a6..4691200 100644
--- a/src/editor/gb-editor-view-private.h
+++ b/src/editor/gb-editor-view-private.h
@@ -36,6 +36,7 @@ struct _GbEditorView
GbEditorDocument *document;
PeasExtensionSet *extensions;
GSettings *settings;
+ gchar *title;
GbEditorFrame *frame1;
GbEditorFrame *frame2;
diff --git a/src/editor/gb-editor-view.c b/src/editor/gb-editor-view.c
index e0e2569..f371c59 100644
--- a/src/editor/gb-editor-view.c
+++ b/src/editor/gb-editor-view.c
@@ -202,14 +202,54 @@ gb_editor_view__buffer_changed_on_volume (GbEditorView *self,
}
}
+static const gchar *
+gb_editor_view_get_title (GbView *view)
+{
+ return ((GbEditorView *)view)->title;
+}
+
static void
gb_editor_view__buffer_notify_title (GbEditorView *self,
GParamSpec *pspec,
IdeBuffer *buffer)
{
+ const gchar *title;
+ gchar **parts;
+ gboolean needs_prefix;
+ gchar *str;
+
g_assert (GB_IS_EDITOR_VIEW (self));
g_assert (GB_IS_EDITOR_DOCUMENT (buffer));
+ g_free (self->title);
+
+ title = ide_buffer_get_title (buffer);
+
+ if (title == NULL)
+ {
+ /* translators: this shouldn't ever happen */
+ self->title = g_strdup ("untitled");
+ return;
+ }
+
+ if ((needs_prefix = (title [0] == G_DIR_SEPARATOR)))
+ title++;
+
+ parts = g_strsplit (title, G_DIR_SEPARATOR_S, 0);
+ str = g_strjoinv (" "G_DIR_SEPARATOR_S" ", parts);
+
+ if (needs_prefix)
+ {
+ self->title = g_strdup_printf (G_DIR_SEPARATOR_S" %s", str);
+ g_free (str);
+ }
+ else
+ {
+ self->title = str;
+ }
+
+ g_strfreev (parts);
+
g_object_notify (G_OBJECT (self), "title");
}
@@ -299,6 +339,7 @@ gb_editor_view_set_document (GbEditorView *self,
g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_DOCUMENT]);
gb_editor_view__buffer_notify_language (self, NULL, document);
+ gb_editor_view__buffer_notify_title (self, NULL, IDE_BUFFER (document));
gb_editor_view_actions_update (self);
}
@@ -492,6 +533,7 @@ gb_editor_view_finalize (GObject *object)
{
GbEditorView *self = (GbEditorView *)object;
+ g_clear_pointer (&self->title, g_free);
g_clear_object (&self->extensions);
g_clear_object (&self->document);
g_clear_object (&self->settings);
@@ -555,6 +597,7 @@ gb_editor_view_class_init (GbEditorViewClass *klass)
view_class->create_split = gb_editor_view_create_split;
view_class->get_document = gb_editor_view_get_document;
+ view_class->get_title = gb_editor_view_get_title;
view_class->get_modified = gb_editor_view_get_modified;
view_class->set_split_view = gb_editor_view_set_split_view;
view_class->set_back_forward_list = gb_editor_view_set_back_forward_list;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]