[gnome-builder] buffer: add failure tracking to buffer
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] buffer: add failure tracking to buffer
- Date: Wed, 13 Dec 2017 09:35:10 +0000 (UTC)
commit 0a2c73528c8f16e78f02a348fe0b207907232382
Author: Christian Hergert <chergert redhat com>
Date: Wed Dec 13 01:23:26 2017 -0800
buffer: add failure tracking to buffer
We can use this to ensure we set failure state on the view.
src/libide/buffers/ide-buffer.c | 57 +++++++++++++++++++++++++++++++++++++++
src/libide/buffers/ide-buffer.h | 6 +++-
2 files changed, 62 insertions(+), 1 deletions(-)
---
diff --git a/src/libide/buffers/ide-buffer.c b/src/libide/buffers/ide-buffer.c
index 4c664f4..ddd3aa2 100644
--- a/src/libide/buffers/ide-buffer.c
+++ b/src/libide/buffers/ide-buffer.c
@@ -86,6 +86,7 @@ typedef struct
IdeExtensionSetAdapter *symbol_resolvers_adapter;
PeasExtensionSet *addins;
gchar *title;
+ GError *failure;
DzlSignalGroup *file_signals;
@@ -112,6 +113,7 @@ typedef struct
guint loading : 1;
guint mtime_set : 1;
guint read_only : 1;
+ guint failed : 1;
} IdeBufferPrivate;
typedef struct
@@ -132,6 +134,7 @@ enum {
PROP_BUSY,
PROP_CHANGED_ON_VOLUME,
PROP_CONTEXT,
+ PROP_FAILED,
PROP_FILE,
PROP_HAS_DIAGNOSTICS,
PROP_HIGHLIGHT_DIAGNOSTICS,
@@ -1401,6 +1404,8 @@ ide_buffer_dispose (GObject *object)
dzl_clear_source (&priv->reclamation_handler);
dzl_clear_source (&priv->check_modified_timeout);
+ g_clear_pointer (&priv->failure, g_error_free);
+
if (priv->context != NULL)
{
IdeBufferManager *buffer_manager = ide_context_get_buffer_manager (priv->context);
@@ -1489,6 +1494,10 @@ ide_buffer_get_property (GObject *object,
g_value_set_object (value, ide_buffer_get_context (self));
break;
+ case PROP_FAILED:
+ g_value_set_boolean (value, ide_buffer_get_failed (self));
+ break;
+
case PROP_FILE:
g_value_set_object (value, ide_buffer_get_file (self));
break;
@@ -1589,6 +1598,20 @@ ide_buffer_class_init (IdeBufferClass *klass)
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS));
+ /**
+ * IdeBuffer:failed:
+ *
+ * The "failed" property is set to %TRUE if the buffer failed to load.
+ *
+ * Since: 3.28
+ */
+ properties [PROP_FAILED] =
+ g_param_spec_boolean ("failed",
+ "Failed",
+ "If the buffer has failed in loading.",
+ FALSE,
+ (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
properties [PROP_FILE] =
g_param_spec_object ("file",
"File",
@@ -3145,3 +3168,37 @@ _ide_buffer_get_addins (IdeBuffer *self)
return priv->addins;
}
+
+gboolean
+ide_buffer_get_failed (IdeBuffer *self)
+{
+ IdeBufferPrivate *priv = ide_buffer_get_instance_private (self);
+
+ g_return_val_if_fail (IDE_IS_BUFFER (self), FALSE);
+
+ return priv->failed;
+}
+
+void
+_ide_buffer_set_failure (IdeBuffer *self,
+ const GError *error)
+{
+ IdeBufferPrivate *priv = ide_buffer_get_instance_private (self);
+
+ g_return_if_fail (IDE_IS_BUFFER (self));
+
+ priv->failed = !!error;
+ g_clear_pointer (&priv->failure, g_error_free);
+ priv->failure = g_error_copy (error);
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_FAILED]);
+}
+
+const GError *
+ide_buffer_get_failure (IdeBuffer *self)
+{
+ IdeBufferPrivate *priv = ide_buffer_get_instance_private (self);
+
+ g_return_val_if_fail (IDE_IS_BUFFER (self), NULL);
+
+ return priv->failure;
+}
diff --git a/src/libide/buffers/ide-buffer.h b/src/libide/buffers/ide-buffer.h
index bc0084e..28e1683 100644
--- a/src/libide/buffers/ide-buffer.h
+++ b/src/libide/buffers/ide-buffer.h
@@ -156,8 +156,12 @@ IDE_AVAILABLE_IN_ALL
void ide_buffer_release (IdeBuffer *self);
IDE_AVAILABLE_IN_ALL
gchar *ide_buffer_get_word_at_iter (IdeBuffer *self,
- const GtkTextIter *iter);
+ const GtkTextIter *iter);
IDE_AVAILABLE_IN_ALL
void ide_buffer_sync_to_unsaved_files (IdeBuffer *self);
+IDE_AVAILABLE_IN_3_28
+gboolean ide_buffer_get_failed (IdeBuffer *self);
+IDE_AVAILABLE_IN_3_28
+const GError *ide_buffer_get_failure (IdeBuffer *self);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]