=== modified file 'src/bridge.c' --- src/bridge.c 2009-12-25 18:44:55 +0000 +++ src/bridge.c 2010-06-03 20:28:00 +0000 @@ -409,7 +409,14 @@ void b_toggle_breakpoint (void) { - gui_editor_toggle_mark (app->editor); + GtkTextMark *insert; + GtkTextIter *iter; + + insert = gtk_text_buffer_get_insert (GTK_TEXT_BUFFER(app->editor->buffer)); + gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER(app->editor->buffer), iter, insert); + gint line_no = gtk_text_iter_get_line (iter); + + gui_editor_toggle_mark (app->editor, line_no); } AsmSource * === modified file 'src/callbacks.c' --- src/callbacks.c 2010-05-31 11:36:18 +0000 +++ src/callbacks.c 2010-06-03 20:31:01 +0000 @@ -628,3 +628,15 @@ text[strlen (text)] = 'h'; gtk_entry_set_text (GTK_ENTRY (entry), text); } +void +on_line_mark_activated (GtkSourceView *view, + GtkTextIter *iter, + GdkEventButton *event, + gpointer editor) +{ + if (event->button == 1 && event->type == GDK_BUTTON_PRESS) + { + gint line_no = gtk_text_iter_get_line (iter); + gui_editor_toggle_mark((GUIEditor *)editor,line_no); + } +} === modified file 'src/callbacks.h' --- src/callbacks.h 2010-05-31 11:36:18 +0000 +++ src/callbacks.h 2010-06-03 20:25:40 +0000 @@ -21,6 +21,7 @@ #include #include #include +#include gboolean @@ -127,3 +128,4 @@ G_MODULE_EXPORT void on_mem_list_start_changed (GtkEntry *entry, gpointer user_data); +G_MODULE_EXPORT void on_line_mark_activated (GtkSourceView *view, GtkTextIter *iter, GdkEventButton *event, gpointer editor); === modified file 'src/gui-editor.c' --- src/gui-editor.c 2009-12-29 11:57:46 +0000 +++ src/gui-editor.c 2010-06-03 21:00:05 +0000 @@ -19,6 +19,7 @@ */ #include "gui-editor.h" +#include "callbacks.h" GUIEditor * gui_editor_new (void) @@ -34,6 +35,10 @@ self->widget = gtk_source_view_new_with_buffer (GTK_SOURCE_BUFFER(self->buffer)); + g_signal_connect ((gpointer) self->widget, "line-mark-activated", + G_CALLBACK (on_line_mark_activated), + self); + self->scroll = gtk_scrolled_window_new (NULL, NULL); gtk_container_add (GTK_CONTAINER (self->scroll), self->widget); @@ -157,27 +162,21 @@ } void -gui_editor_toggle_mark (GUIEditor * self) +gui_editor_toggle_mark (GUIEditor * self, gint line_no) { g_assert (self); - gint y_buf; GtkTextIter line_start, line_end; - GtkTextMark *insert; GSList *marker_list; GtkSourceMark *marker; - insert = gtk_text_buffer_get_insert (GTK_TEXT_BUFFER(self->buffer)); - gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER(self->buffer), &(self->iter), insert); - y_buf = gtk_text_iter_get_line(&(self->iter)); - /* get line bounds */ - gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (self->buffer), &line_start, y_buf); + gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (self->buffer), &line_start, line_no); line_end = line_start; gtk_text_iter_forward_to_line_end (&line_end); /* get the breakpoint markers already in the line */ - marker_list = gtk_source_buffer_get_source_marks_at_line (self->buffer, y_buf, MARKER_BREAKPOINT); + marker_list = gtk_source_buffer_get_source_marks_at_line (self->buffer, line_no, MARKER_BREAKPOINT); if (marker_list != NULL && g_slist_length(marker_list)!=0) { @@ -187,7 +186,7 @@ else { /* no marker found -> create one */ - marker = gtk_source_buffer_create_source_mark (self->buffer, NULL, MARKER_BREAKPOINT, &(self->iter)); + marker = gtk_source_buffer_create_source_mark (self->buffer, NULL, MARKER_BREAKPOINT, &(line_start)); } g_slist_free (marker_list); @@ -371,4 +370,3 @@ return pixbuf; } - === modified file 'src/gui-editor.h' --- src/gui-editor.h 2009-12-22 18:49:35 +0000 +++ src/gui-editor.h 2010-06-03 20:25:40 +0000 @@ -80,7 +80,7 @@ void gui_editor_set_mark (GUIEditor * self, guint line_no, gboolean set); void gui_editor_set_highlight (GUIEditor * self, guint line_no, gboolean set); -void gui_editor_toggle_mark (GUIEditor * self); +void gui_editor_toggle_mark (GUIEditor * self, gint line_no); void gui_editor_clear_all_highlights(GUIEditor *self);