[gnome-builder] symbol-tree: update symbol tree upon save signal
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] symbol-tree: update symbol tree upon save signal
- Date: Wed, 26 Oct 2016 21:02:57 +0000 (UTC)
commit 5c47a8a57a525c480ed13408c786db74f60090b5
Author: Christian Hergert <chergert redhat com>
Date: Wed Oct 26 14:02:05 2016 -0700
symbol-tree: update symbol tree upon save signal
plugins/symbol-tree/symbol-tree-panel.c | 42 +++++++++++++++++++++++++++++++
1 files changed, 42 insertions(+), 0 deletions(-)
---
diff --git a/plugins/symbol-tree/symbol-tree-panel.c b/plugins/symbol-tree/symbol-tree-panel.c
index b4ac9fd..2f03e13 100644
--- a/plugins/symbol-tree/symbol-tree-panel.c
+++ b/plugins/symbol-tree/symbol-tree-panel.c
@@ -324,6 +324,45 @@ symbol_tree__search_entry_changed (SymbolTreePanel *self,
}
static void
+symbol_tree_panel_buffer_saved (SymbolTreePanel *self,
+ IdeBuffer *buffer,
+ IdeBufferManager *buffer_manager)
+{
+ g_assert (SYMBOL_IS_TREE_PANEL (self));
+ g_assert (IDE_IS_BUFFER (buffer));
+ g_assert (IDE_IS_BUFFER_MANAGER (buffer_manager));
+
+ /* Pop the cache if our current file was saved */
+ if (buffer == self->last_document)
+ {
+ egg_task_cache_evict (self->symbols_cache, buffer);
+ refresh_tree (self);
+ }
+}
+
+static void
+symbol_tree_panel_context_set (GtkWidget *widget,
+ IdeContext *context)
+{
+ SymbolTreePanel *self = (SymbolTreePanel *)widget;
+ IdeBufferManager *buffer_manager;
+
+ g_assert (SYMBOL_IS_TREE_PANEL (self));
+ g_assert (!context || IDE_IS_CONTEXT (context));
+
+ if (context == NULL)
+ return;
+
+ buffer_manager = ide_context_get_buffer_manager (context);
+
+ g_signal_connect_object (buffer_manager,
+ "buffer-saved",
+ G_CALLBACK (symbol_tree_panel_buffer_saved),
+ self,
+ G_CONNECT_SWAPPED);
+}
+
+static void
symbol_tree_panel_finalize (GObject *object)
{
SymbolTreePanel *self = (SymbolTreePanel *)object;
@@ -385,6 +424,9 @@ symbol_tree_panel_init (SymbolTreePanel *self)
G_CALLBACK (symbol_tree__search_entry_changed),
self,
G_CONNECT_SWAPPED);
+
+ ide_widget_set_context_handler (GTK_WIDGET (self),
+ symbol_tree_panel_context_set);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]