summaryrefslogtreecommitdiff
path: root/src/gtkext/gtkblockview.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gtkext/gtkblockview.c')
-rw-r--r--src/gtkext/gtkblockview.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/gtkext/gtkblockview.c b/src/gtkext/gtkblockview.c
index 1c7ba43..2b72ff4 100644
--- a/src/gtkext/gtkblockview.c
+++ b/src/gtkext/gtkblockview.c
@@ -43,6 +43,10 @@ struct _GtkBlockViewClass
{
GtkBufferViewClass parent; /* A laisser en premier */
+ /* Signaux */
+
+ void (* highlight_changed) (GtkBlockView *);
+
};
@@ -99,6 +103,14 @@ static void gtk_block_view_class_init(GtkBlockViewClass *class)
buffer_class->notify_caret = (notify_caret_relocation_fc)gtk_block_view_notify_caret_relocation;
+ g_signal_new("highlight-changed",
+ GTK_TYPE_BLOCK_VIEW,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(GtkBlockViewClass, highlight_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
}
@@ -143,8 +155,15 @@ static void gtk_block_view_init(GtkBlockView *view)
static bool gtk_block_view_notify_caret_relocation(GtkBlockView *view, const GdkRectangle *area, const vmpa2t *addr)
{
- return g_buffer_view_highlight_segments(GTK_BUFFER_VIEW(view)->buffer_view, area->x, area->y,
- GTK_VIEW_PANEL(view)->display);
+ bool result; /* Bilan à retourner */
+
+ result = g_buffer_view_highlight_segments(GTK_BUFFER_VIEW(view)->buffer_view, area->x, area->y,
+ GTK_VIEW_PANEL(view)->display);
+
+ if (result)
+ g_signal_emit_by_name(view, "highlight-changed");
+
+ return result;
}
@@ -260,7 +279,7 @@ static void gtk_block_view_attach_binary(GtkBlockView *view, GLoadedBinary *bina
GBufferView *bview; /* Vue sur ce même tampon */
buffer = g_loaded_binary_get_disassembled_buffer(binary);
- bview = g_buffer_view_new(buffer);
+ bview = g_buffer_view_new(buffer, NULL);
gtk_buffer_view_attach_buffer(GTK_BUFFER_VIEW(view), bview);