[gnome-builder] debugger: only add debugger breakpoints when useful
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] debugger: only add debugger breakpoints when useful
- Date: Sat, 2 Sep 2017 20:56:13 +0000 (UTC)
commit 41c65dea6f9e4f5ac10901b0b42ca284de8b7a44
Author: Christian Hergert <chergert redhat com>
Date: Sat Sep 2 13:55:56 2017 -0700
debugger: only add debugger breakpoints when useful
If no debugger supports the language, then we can certainly hide the
debugger breakpoints.
libide/debugger/ide-debugger-editor-view-addin.c | 68 ++++++++++++---------
1 files changed, 39 insertions(+), 29 deletions(-)
---
diff --git a/libide/debugger/ide-debugger-editor-view-addin.c
b/libide/debugger/ide-debugger-editor-view-addin.c
index cb72e80..5464634 100644
--- a/libide/debugger/ide-debugger-editor-view-addin.c
+++ b/libide/debugger/ide-debugger-editor-view-addin.c
@@ -40,14 +40,9 @@ ide_debugger_editor_view_addin_load (IdeEditorViewAddin *addin,
IdeEditorView *view)
{
IdeDebuggerEditorViewAddin *self = (IdeDebuggerEditorViewAddin *)addin;
- g_autoptr(IdeDebuggerBreakpoints) breakpoints = NULL;
IdeDebugManager *debug_manager;
- IdeSourceView *source_view;
- GtkSourceGutter *gutter;
+ const gchar *language;
IdeContext *context;
- IdeBuffer *buffer;
- IdeFile *file;
- GFile *gfile;
IDE_ENTRY;
@@ -58,24 +53,35 @@ ide_debugger_editor_view_addin_load (IdeEditorViewAddin *addin,
context = ide_widget_get_context (GTK_WIDGET (view));
debug_manager = ide_context_get_debug_manager (context);
-
- buffer = ide_editor_view_get_buffer (view);
- file = ide_buffer_get_file (buffer);
- gfile = ide_file_get_file (file);
-
- /* Install the breakpoints gutter */
- breakpoints = ide_debug_manager_get_breakpoints_for_file (debug_manager, gfile);
- source_view = ide_editor_view_get_view (view);
- gutter = gtk_source_view_get_gutter (GTK_SOURCE_VIEW (source_view), GTK_TEXT_WINDOW_LEFT);
- self->renderer = g_object_new (IDE_TYPE_DEBUGGER_GUTTER_RENDERER,
- "debug-manager", debug_manager,
- "breakpoints", breakpoints,
- "size", 16,
- "xpad", 1,
- NULL);
- gtk_source_gutter_insert (gutter, GTK_SOURCE_GUTTER_RENDERER (self->renderer), -100);
-
- /* TODO: Monitor IdeBuffer:file? */
+ language = ide_editor_view_get_language_id (view);
+
+ if (ide_debug_manager_supports_language (debug_manager, language))
+ {
+ g_autoptr(IdeDebuggerBreakpoints) breakpoints = NULL;
+ IdeSourceView *source_view;
+ IdeBuffer *buffer;
+ IdeFile *file;
+ GFile *gfile;
+
+ GtkSourceGutter *gutter;
+ buffer = ide_editor_view_get_buffer (view);
+ file = ide_buffer_get_file (buffer);
+ gfile = ide_file_get_file (file);
+
+ /* Install the breakpoints gutter */
+ breakpoints = ide_debug_manager_get_breakpoints_for_file (debug_manager, gfile);
+ source_view = ide_editor_view_get_view (view);
+ gutter = gtk_source_view_get_gutter (GTK_SOURCE_VIEW (source_view), GTK_TEXT_WINDOW_LEFT);
+ self->renderer = g_object_new (IDE_TYPE_DEBUGGER_GUTTER_RENDERER,
+ "debug-manager", debug_manager,
+ "breakpoints", breakpoints,
+ "size", 16,
+ "xpad", 1,
+ NULL);
+ gtk_source_gutter_insert (gutter, GTK_SOURCE_GUTTER_RENDERER (self->renderer), -100);
+
+ /* TODO: Monitor IdeBuffer:file? */
+ }
IDE_EXIT;
}
@@ -85,17 +91,21 @@ ide_debugger_editor_view_addin_unload (IdeEditorViewAddin *addin,
IdeEditorView *view)
{
IdeDebuggerEditorViewAddin *self = (IdeDebuggerEditorViewAddin *)addin;
- IdeSourceView *source_view;
- GtkSourceGutter *gutter;
IDE_ENTRY;
g_assert (IDE_IS_DEBUGGER_EDITOR_VIEW_ADDIN (self));
g_assert (IDE_IS_EDITOR_VIEW (view));
- source_view = ide_editor_view_get_view (view);
- gutter = gtk_source_view_get_gutter (GTK_SOURCE_VIEW (source_view), GTK_TEXT_WINDOW_LEFT);
- gtk_source_gutter_remove (gutter, GTK_SOURCE_GUTTER_RENDERER (self->renderer));
+ if (self->renderer != NULL)
+ {
+ IdeSourceView *source_view;
+ GtkSourceGutter *gutter;
+
+ source_view = ide_editor_view_get_view (view);
+ gutter = gtk_source_view_get_gutter (GTK_SOURCE_VIEW (source_view), GTK_TEXT_WINDOW_LEFT);
+ gtk_source_gutter_remove (gutter, GTK_SOURCE_GUTTER_RENDERER (self->renderer));
+ }
self->renderer = NULL;
self->view = NULL;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]