Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Fri, 08 Jun 2012 16:37:19 Commit: 66850521254776ac36a51051d1a6295e2eac8c82 https://github.com/geany/geany-plugins/commit/66850521254776ac36a51051d1a629...
Log Message: ----------- debugger: Don't mix declaration and code for C89 compliance
Modified Paths: -------------- debugger/src/bptree.c debugger/src/breakpoints.c debugger/src/callbacks.c debugger/src/cell_renderers/cellrendererbreakicon.c debugger/src/cell_renderers/cellrendererframeicon.c debugger/src/dbm_gdb.c debugger/src/dconfig.c debugger/src/debug.c debugger/src/dpaned.c debugger/src/envtree.c debugger/src/keys.c debugger/src/plugin.c debugger/src/stree.c debugger/src/tpage.c debugger/src/vtree.c debugger/src/watch_model.c debugger/src/wtree.c
Modified: debugger/src/bptree.c 164 files changed, 89 insertions(+), 75 deletions(-) =================================================================== @@ -84,7 +84,6 @@ enum GtkTreeRowReference* get_unselected_sibling(GtkTreePath *path) { GtkTreeRowReference *sibling = NULL; - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
/* move down find first unselected sibling */ @@ -156,18 +155,18 @@ static gboolean on_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean key { gboolean show = FALSE; int bx, by; - gtk_tree_view_convert_widget_to_bin_window_coords(GTK_TREE_VIEW(widget), x, y, &bx, &by); - GtkTreePath *tpath = NULL; GtkTreeViewColumn *column = NULL; + + gtk_tree_view_convert_widget_to_bin_window_coords(GTK_TREE_VIEW(widget), x, y, &bx, &by); if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bx, by, &tpath, &column, NULL, NULL)) { if (1 == gtk_tree_path_get_depth(tpath) && column == gtk_tree_view_get_column(GTK_TREE_VIEW(widget), FILEPATH)) { GtkTreeIter iter; - gtk_tree_model_get_iter(model, &iter, tpath); - gchar *path = NULL; + + gtk_tree_model_get_iter(model, &iter, tpath); gtk_tree_model_get(model, &iter, FILEPATH, &path, -1);
gtk_tooltip_set_text(tooltip, path); @@ -189,9 +188,11 @@ static void on_render_filename(GtkTreeViewColumn *tree_column, GtkCellRenderer * GtkTreeIter *iter, gpointer data) { gchar *path = NULL; + GtkTreePath *tpath; + gtk_tree_model_get(model, iter, FILEPATH, &path, -1);
- GtkTreePath *tpath = gtk_tree_model_get_path(model, iter); + tpath = gtk_tree_model_get_path(model, iter); if (1 != gtk_tree_path_get_depth(tpath)) { g_object_set(cell, "text", path, NULL); @@ -258,21 +259,20 @@ void on_render(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeMod */ static void on_row_double_click(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data) { + GtkTreeIter iter, parent_iter; + gchar *file; + int line; + if (1 == gtk_tree_path_get_depth(path)) { return; } - GtkTreeIter iter; gtk_tree_model_get_iter ( model, &iter, path); - - gchar *file; - int line; - GtkTreeIter parent_iter; gtk_tree_model_iter_parent(model, &parent_iter, &iter); gtk_tree_model_get ( @@ -298,26 +298,25 @@ static void on_row_double_click(GtkTreeView *tree_view, GtkTreePath *path, GtkTr */ void on_condition_changed(GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer user_data) { - GtkTreeIter iter; - GtkTreePath *tree_path = gtk_tree_path_new_from_string (path); + gchar *file; + int line; + gchar* oldcondition; + GtkTreeIter iter, parent_iter; + GtkTreePath *tree_path = gtk_tree_path_new_from_string (path);
gtk_tree_model_get_iter ( model, &iter, tree_path); - GtkTreeIter parent_iter; gtk_tree_model_iter_parent(model, &parent_iter, &iter);
- gchar *file; gtk_tree_model_get ( model, &parent_iter, FILEPATH, &file, -1); - int line; - gchar* oldcondition; gtk_tree_model_get ( model, &iter, @@ -338,30 +337,31 @@ void on_condition_changed(GtkCellRendererText *renderer, gchar *path, gchar *new */ void on_hitscount_changed(GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer user_data) { + GtkTreeIter iter, parent_iter; + GtkTreePath *tree_path; + gchar *file; + int line; + gint oldcount; int count = atoi(new_text); + if (!count && strcmp(new_text, "0")) return;
- GtkTreeIter iter; - GtkTreePath *tree_path = gtk_tree_path_new_from_string (path); + tree_path = gtk_tree_path_new_from_string (path);
gtk_tree_model_get_iter ( model, &iter, tree_path);
- GtkTreeIter parent_iter; gtk_tree_model_iter_parent(model, &parent_iter, &iter);
- gchar *file; gtk_tree_model_get ( model, &parent_iter, FILEPATH, &file, -1);
- int line; - gint oldcount; gtk_tree_model_get ( model, &iter, @@ -381,19 +381,22 @@ void on_hitscount_changed(GtkCellRendererText *renderer, gchar *path, gchar *new */ void on_enable_for_file(GtkCellRendererToggle *cell_renderer, gchar *path, gpointer user_data) { + GtkTreeIter iter; + GtkTreePath *tree_path; + gboolean current_state; + /* do not process event is page is readonly (debug is running) */ if (readonly) return; - GtkTreeIter iter; - GtkTreePath *tree_path = gtk_tree_path_new_from_string (path); + tree_path = gtk_tree_path_new_from_string (path); gtk_tree_model_get_iter ( model, &iter, tree_path);
- gboolean current_state = gtk_cell_renderer_toggle_get_active(cell_renderer); + current_state = gtk_cell_renderer_toggle_get_active(cell_renderer);
/* check if this is a file row */ if(1 == gtk_tree_path_get_depth(tree_path)) @@ -418,12 +421,14 @@ void on_enable_for_file(GtkCellRendererToggle *cell_renderer, gchar *path, gpoin */ void on_enable_break(CellRendererBreakIcon *cell_renderer, gchar *path, gpointer user_data) { + GtkTreeIter iter; + GtkTreePath *tree_path; + /* do not process event is page is readonly (debug is running) */ if (readonly) return; - GtkTreeIter iter; - GtkTreePath *tree_path = gtk_tree_path_new_from_string (path); + tree_path = gtk_tree_path_new_from_string (path); gtk_tree_model_get_iter ( model, @@ -433,11 +438,11 @@ void on_enable_break(CellRendererBreakIcon *cell_renderer, gchar *path, gpointer /* check if this is not a file row */ if(1 != gtk_tree_path_get_depth(tree_path)) { - GtkTreeIter parent_iter; - gtk_tree_model_iter_parent(model, &parent_iter, &iter); - gchar *file; int line; + GtkTreeIter parent_iter; + + gtk_tree_model_iter_parent(model, &parent_iter, &iter);
gtk_tree_model_get ( model, @@ -463,24 +468,28 @@ void on_enable_break(CellRendererBreakIcon *cell_renderer, gchar *path, gpointer */ static gboolean on_key_pressed(GtkWidget *widget, GdkEvent *event, gpointer user_data) { + guint keyval = ((GdkEventKey*)event)->keyval; + GtkTreeSelection *selection; + GList *rows; + /* do not process event is page is readonly (debug is running) */ if (readonly) return FALSE;
- guint keyval = ((GdkEventKey*)event)->keyval; - /* get selected rows */ - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); - GList *rows = gtk_tree_selection_get_selected_rows(selection, &model); + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); + rows = gtk_tree_selection_get_selected_rows(selection, &model); rows = g_list_sort(rows, (GCompareFunc)gtk_tree_path_compare);
if (keyval == GDK_Delete && rows && g_list_length(rows)) { + GList *breaks, *iter; + GtkTreeRowReference *new_selection = NULL; + GtkTreePath *first_path = (GtkTreePath*)rows->data; + /* "delete selected rows" */
/* get new selection */ - GtkTreeRowReference *new_selection = NULL; - GtkTreePath *first_path = (GtkTreePath*)rows->data; if (gtk_tree_path_get_depth(first_path) > 1) { new_selection = get_unselected_sibling(first_path); @@ -498,13 +507,12 @@ static gboolean on_key_pressed(GtkWidget *widget, GdkEvent *event, gpointer user /* collect GList of breakpoints to remove if file row is met - add all unselected breaks to the list as well */ - GList *iter = rows; - GList *breaks = NULL; - while (iter) + breaks = NULL; + for (iter = rows; iter; iter = iter->next) { GtkTreePath *path = (GtkTreePath*)iter->data; - GtkTreeIter titer; + gtk_tree_model_get_iter(model, &titer, path); if (1 == gtk_tree_path_get_depth(path)) @@ -518,11 +526,12 @@ static gboolean on_key_pressed(GtkWidget *widget, GdkEvent *event, gpointer user { gchar *file = NULL; gint line; + breakpoint *bp;
gtk_tree_model_get(model, &titer, FILEPATH, &file, -1); gtk_tree_model_get(model, &citer, LINE, &line, -1);
- breakpoint *bp = breaks_lookup_breakpoint(file, line); + bp = breaks_lookup_breakpoint(file, line); breaks = g_list_append(breaks, bp); @@ -534,21 +543,22 @@ static gboolean on_key_pressed(GtkWidget *widget, GdkEvent *event, gpointer user else { GtkTreeIter piter; + gchar *file = NULL; + gint line; + breakpoint *bp; + gtk_tree_model_iter_parent(model, &piter, &titer); - gchar *file = NULL; gtk_tree_model_get(model, &piter, FILEPATH, &file, -1);
- gint line; gtk_tree_model_get(model, &titer, LINE, &line, -1);
- breakpoint *bp = breaks_lookup_breakpoint(file, line); + bp = breaks_lookup_breakpoint(file, line); breaks = g_list_append(breaks, bp); g_free(file); } - iter = iter->next; } if (1 == g_list_length(breaks)) @@ -594,6 +604,10 @@ static gboolean on_key_pressed(GtkWidget *widget, GdkEvent *event, gpointer user */ gboolean bptree_init(move_to_line_cb cb) { + GtkTreeSelection *selection; + GtkTreeViewColumn *column; + GtkCellRenderer *renderer; + /* save double click callback */ on_break_clicked = cb; @@ -622,7 +636,7 @@ gboolean bptree_init(move_to_line_cb cb) gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), 1); gtk_widget_set_has_tooltip(GTK_WIDGET(tree), TRUE); /* multiple selection */ - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); /* connect signals */ @@ -631,33 +645,32 @@ gboolean bptree_init(move_to_line_cb cb) g_signal_connect(G_OBJECT(tree), "query-tooltip", G_CALLBACK (on_query_tooltip), NULL);
/* creating columns */ - GtkTreeViewColumn *column;
/* icon, file */ - GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); + renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new(); gtk_tree_view_column_pack_end(column, renderer, TRUE); gtk_tree_view_column_set_cell_data_func(column, renderer, on_render_filename, NULL, NULL); - + /* enable for file */ - GtkCellRenderer *file_enable_renderer = cell_renderer_toggle_new (); - g_signal_connect (G_OBJECT(file_enable_renderer), "toggled", G_CALLBACK(on_enable_for_file), NULL); - gtk_tree_view_column_pack_end(column, file_enable_renderer, FALSE); - gtk_tree_view_column_set_attributes(column, file_enable_renderer, "active", ENABLED, NULL); - gtk_tree_view_column_set_cell_data_func(column, file_enable_renderer, on_render_enable_for_file, NULL, NULL); + renderer = cell_renderer_toggle_new (); + g_signal_connect (G_OBJECT(renderer), "toggled", G_CALLBACK(on_enable_for_file), NULL); + gtk_tree_view_column_pack_end(column, renderer, FALSE); + gtk_tree_view_column_set_attributes(column, renderer, "active", ENABLED, NULL); + gtk_tree_view_column_set_cell_data_func(column, renderer, on_render_enable_for_file, NULL, NULL);
/* enable breakpoint */ - GtkCellRenderer *break_enable_renderer = cell_renderer_break_icon_new (); - g_signal_connect (G_OBJECT(break_enable_renderer), "clicked", G_CALLBACK(on_enable_break), NULL); + renderer = cell_renderer_break_icon_new (); + g_signal_connect (G_OBJECT(renderer), "clicked", G_CALLBACK(on_enable_break), NULL);
- g_object_set(break_enable_renderer, "pixbuf_enabled", (gpointer)break_pixbuf, NULL); - g_object_set(break_enable_renderer, "pixbuf_disabled", (gpointer)break_disabled_pixbuf, NULL); - g_object_set(break_enable_renderer, "pixbuf_conditional", (gpointer)break_condition_pixbuf, NULL); - g_object_set(break_enable_renderer, "pixbuf_file", (gpointer)break_pixbuf, NULL); + g_object_set(renderer, "pixbuf_enabled", (gpointer)break_pixbuf, NULL); + g_object_set(renderer, "pixbuf_disabled", (gpointer)break_disabled_pixbuf, NULL); + g_object_set(renderer, "pixbuf_conditional", (gpointer)break_condition_pixbuf, NULL); + g_object_set(renderer, "pixbuf_file", (gpointer)break_pixbuf, NULL); - gtk_tree_view_column_pack_end(column, break_enable_renderer, FALSE); - gtk_tree_view_column_set_attributes(column, break_enable_renderer, "enabled", ENABLED, "condition", CONDITION, "hitscount", HITSCOUNT, NULL); - gtk_tree_view_column_set_cell_data_func(column, break_enable_renderer, on_render_enable_break, NULL, NULL); + gtk_tree_view_column_pack_end(column, renderer, FALSE); + gtk_tree_view_column_set_attributes(column, renderer, "enabled", ENABLED, "condition", CONDITION, "hitscount", HITSCOUNT, NULL); + gtk_tree_view_column_set_cell_data_func(column, renderer, on_render_enable_break, NULL, NULL);
gtk_tree_view_column_set_title(column, _("Location")); gtk_tree_view_column_set_resizable (column, TRUE); @@ -675,9 +688,8 @@ gboolean bptree_init(move_to_line_cb cb) /* hits count */ hcount_renderer = gtk_cell_renderer_spin_new (); - GtkAdjustment* adj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 100000.0, 1.0, 2.0, 2.0)); g_object_set (hcount_renderer, - "adjustment", adj, + "adjustment", gtk_adjustment_new (0.0, 0.0, 100000.0, 1.0, 2.0, 2.0), "digits", 0, NULL); g_signal_connect (G_OBJECT (hcount_renderer), "edited", G_CALLBACK (on_hitscount_changed), NULL); column = gtk_tree_view_column_new_with_attributes (_("Hit count"), hcount_renderer, "text", HITSCOUNT, NULL); @@ -721,9 +733,10 @@ void bptree_destroy(void) */ void bptree_set_enabled(breakpoint *bp) { + GtkTreeIter parent; + gtk_tree_store_set(store, &(bp->iter), ENABLED, bp->enabled, -1);
- GtkTreeIter parent; gtk_tree_model_iter_parent(model, &parent, &(bp->iter)); update_file_node(&parent); } @@ -756,7 +769,7 @@ void bptree_set_condition(breakpoint* bp) */ gchar* bptree_get_condition(breakpoint *bp) { - gchar *condition; + gchar *condition; gtk_tree_model_get ( model, &(bp->iter), @@ -785,17 +798,20 @@ void bptree_set_readonly(gboolean value) */ void bptree_add_breakpoint(breakpoint* bp) { - GtkTreeIter file_iter; + GtkTreeIter file_iter, iter, child, *sibling = NULL; GtkTreeRowReference *file_reference = (GtkTreeRowReference*)g_hash_table_lookup(files, bp->file); + if (!file_reference) { + GtkTreePath *file_path; + gtk_tree_store_prepend (store, &file_iter, NULL); gtk_tree_store_set (store, &file_iter, FILEPATH, bp->file, ENABLED, TRUE, -1);
- GtkTreePath *file_path = gtk_tree_model_get_path(model, &file_iter); + file_path = gtk_tree_model_get_path(model, &file_iter); file_reference = gtk_tree_row_reference_new(model, file_path); gtk_tree_path_free(file_path);
@@ -809,7 +825,6 @@ void bptree_add_breakpoint(breakpoint* bp) } /* lookup where to insert new row */ - GtkTreeIter child, *sibling = NULL; if(gtk_tree_model_iter_children(model, &child, &file_iter)) { do @@ -829,11 +844,10 @@ void bptree_add_breakpoint(breakpoint* bp) while(gtk_tree_model_iter_next(model, &child)); } - GtkTreeIter iter; gtk_tree_store_insert_before(store, &iter, &file_iter, sibling); - bp->iter = iter; - - bptree_update_breakpoint(bp); + bp->iter = iter; + + bptree_update_breakpoint(bp); }
/*
Modified: debugger/src/breakpoints.c 40 files changed, 25 insertions(+), 15 deletions(-) =================================================================== @@ -96,12 +96,14 @@ static void on_add(breakpoint *bp) } static void on_remove(breakpoint *bp) { + GTree *tree; + /* remove marker */ markers_remove_breakpoint(bp); /* remove from breakpoints tab */ bptree_remove_breakpoint(bp); /* remove from internal storage */ - GTree *tree = g_hash_table_lookup(files, bp->file); + tree = g_hash_table_lookup(files, bp->file); g_tree_remove(tree, GINT_TO_POINTER(bp->line)); } static void on_set_hits_count(breakpoint *bp) @@ -360,17 +362,19 @@ void breaks_destroy(void) */ void breaks_add(const char* file, int line, char* condition, int enabled, int hitscount) { + GTree *tree; + breakpoint* bp; + enum dbs state = debug_get_state(); + /* do not process async break manipulation on modules that do not support async interuppt */ - enum dbs state = debug_get_state(); if (DBS_RUNNING == state && !debug_supports_async_breaks()) return; /* allocate memory */ - breakpoint* bp = break_new_full(file, line, condition, enabled, hitscount); + bp = break_new_full(file, line, condition, enabled, hitscount); /* check whether GTree for this file exists and create if doesn't */ - GTree *tree; if (!(tree = g_hash_table_lookup(files, bp->file))) { char *newfile = g_strdup(bp->file); @@ -402,14 +406,15 @@ void breaks_add(const char* file, int line, char* condition, int enabled, int hi */ void breaks_remove(const char* file, int line) { + breakpoint* bp = NULL; + enum dbs state = debug_get_state(); + /* do not process async break manipulation on modules that do not support async interuppt */ - enum dbs state = debug_get_state(); if (DBS_RUNNING == state && !debug_supports_async_breaks()) return;
/* lookup for breakpoint */ - breakpoint* bp = NULL; if (!(bp = breaks_lookup_breakpoint(file, line))) return;
@@ -472,13 +477,15 @@ void breaks_remove_all(void) */ void breaks_set_enabled_for_file(const char *file, gboolean enabled) { + GList *breaks; + enum dbs state = debug_get_state(); + /* do not process async break manipulation on modules that do not support async interuppt */ - enum dbs state = debug_get_state(); if (DBS_RUNNING == state && !debug_supports_async_breaks()) return;
- GList *breaks = breaks_get_for_document(file); + breaks = breaks_get_for_document(file);
/* handle switching instantly if debugger is idle or stopped and request debug module interruption overwise */ @@ -502,14 +509,15 @@ void breaks_set_enabled_for_file(const char *file, gboolean enabled) */ void breaks_switch(const char* file, int line) { + breakpoint* bp = NULL; + enum dbs state = debug_get_state(); + /* do not process async break manipulation on modules that do not support async interuppt */ - enum dbs state = debug_get_state(); if (DBS_RUNNING == state && !debug_supports_async_breaks()) return;
/* lookup for breakpoint */ - breakpoint* bp = NULL; if (!(bp = breaks_lookup_breakpoint(file, line))) return; @@ -538,14 +546,15 @@ void breaks_switch(const char* file, int line) */ void breaks_set_hits_count(const char* file, int line, int count) { + breakpoint* bp = NULL; + enum dbs state = debug_get_state(); + /* do not process async break manipulation on modules that do not support async interuppt */ - enum dbs state = debug_get_state(); if (DBS_RUNNING == state && !debug_supports_async_breaks()) return;
/* lookup for breakpoint */ - breakpoint* bp = NULL; if (!(bp = breaks_lookup_breakpoint(file, line))) return; @@ -574,14 +583,15 @@ void breaks_set_hits_count(const char* file, int line, int count) */ void breaks_set_condition(const char* file, int line, const char* condition) { + breakpoint* bp = NULL; + enum dbs state = debug_get_state(); + /* do not process async break manipulation on modules that do not support async interuppt */ - enum dbs state = debug_get_state(); if (DBS_RUNNING == state && !debug_supports_async_breaks()) return;
/* lookup for breakpoint */ - breakpoint* bp = NULL; if (!(bp = breaks_lookup_breakpoint(file, line))) return; @@ -637,9 +647,9 @@ void breaks_move_to_line(const char* file, int line_from, int line_to) break_state breaks_get_state(const char* file, int line) { break_state bs = BS_NOT_SET; + GTree *tree; /* first look for the tree for the given file */ - GTree *tree; if ( (tree = g_hash_table_lookup(files, file)) ) { breakpoint *bp = g_tree_lookup(tree, GINT_TO_POINTER(line));
Modified: debugger/src/callbacks.c 15 files changed, 10 insertions(+), 5 deletions(-) =================================================================== @@ -188,13 +188,17 @@ gboolean on_editor_notify( { case SCN_MARGINCLICK: { + char* file; + int line; + break_state bs; + if (!editor->document->real_path || 1 != nt->margin) break; - char* file = editor->document->file_name; - int line = sci_get_line_from_position(editor->sci, nt->position) + 1; + file = editor->document->file_name; + line = sci_get_line_from_position(editor->sci, nt->position) + 1;
- break_state bs = breaks_get_state(file, line); + bs = breaks_get_state(file, line); if (BS_NOT_SET == bs) breaks_add(file, line, NULL, TRUE, 0); else if (BS_ENABLED == bs) @@ -208,12 +212,13 @@ gboolean on_editor_notify( } case SCN_DWELLSTART: { + GString *word; + if (DBS_STOPPED != debug_get_state ()) break;
/* get a word under the cursor */ - GString *word = get_word_at_position(editor->sci, nt->position); - + word = get_word_at_position(editor->sci, nt->position); if (word->len) { gchar *calltip = debug_get_calltip_for_expression(word->str);
Modified: debugger/src/cell_renderers/cellrendererbreakicon.c 4 files changed, 2 insertions(+), 2 deletions(-) =================================================================== @@ -278,12 +278,12 @@ static gint cell_renderer_break_icon_activate(GtkCellRenderer *cell, GdkEvent *e */ static void cell_renderer_break_icon_init (CellRendererBreakIcon *cell) { + GtkCellRenderer *cell_renderer = (GtkCellRenderer*)cell; + cell->enabled = TRUE; cell->condition = NULL; cell->hitscount = 0; - GtkCellRenderer *cell_renderer = (GtkCellRenderer*)cell; - cell_renderer->mode = GTK_CELL_RENDERER_MODE_ACTIVATABLE;
cell->pixbuf_enabled = cell->pixbuf_disabled = cell->pixbuf_conditional = cell->pixbuf_file = 0;
Modified: debugger/src/cell_renderers/cellrendererframeicon.c 4 files changed, 2 insertions(+), 2 deletions(-) =================================================================== @@ -222,10 +222,10 @@ static void cell_renderer_frame_icon_render(GtkCellRenderer *cell, GdkDrawable * */ static void cell_renderer_frame_icon_init (CellRendererFrameIcon *cell) { - cell->active_frame = FALSE; - GtkCellRenderer *cell_renderer = (GtkCellRenderer*)cell; + cell->active_frame = FALSE; + cell_renderer->mode = GTK_CELL_RENDERER_MODE_ACTIVATABLE;
cell->pixbuf_active = cell->pixbuf_highlighted = 0;
Modified: debugger/src/dbm_gdb.c 284 files changed, 159 insertions(+), 125 deletions(-) =================================================================== @@ -317,13 +317,17 @@ static gboolean on_read_async_output(GIOChannel * src, GIOCondition cond, gpoint { /* got some result */
+ GList *lines; + GList *commands = (GList*)data; + gchar *coma; + g_source_remove(gdb_id_out);
- GList *lines = read_until_prompt(); + lines = read_until_prompt(); g_list_foreach(lines, (GFunc)g_free, NULL); g_list_free (lines);
- gchar* coma = strchr(line, ','); + coma = strchr(line, ','); if (coma) { *coma = '\0'; @@ -332,16 +336,16 @@ static gboolean on_read_async_output(GIOChannel * src, GIOCondition cond, gpoint else coma = line + strlen(line); - GList *commands = (GList*)data; - if (!strcmp(line, "^done")) { /* command completed succesfully - run next command if exists */ if (commands->next) { /* if there are commads left */ + queue_item *item; + commands = commands->next; - queue_item *item = (queue_item*)commands->data; + item = (queue_item*)commands->data;
/* send message to debugger messages window */ if (item->message) @@ -411,11 +415,12 @@ static gboolean on_read_from_gdb(GIOChannel * src, GIOCondition cond, gpointer d { gchar *line; gsize length; + gboolean prompt; if (G_IO_STATUS_NORMAL != g_io_channel_read_line(src, &line, NULL, &length, NULL)) return TRUE;
- gboolean prompt = !strcmp(line, GDB_PROMPT); + prompt = !strcmp(line, GDB_PROMPT); *(line + length) = '\0';
@@ -440,14 +445,18 @@ static gboolean on_read_from_gdb(GIOChannel * src, GIOCondition cond, gpointer d } else if (g_str_has_prefix(line, "=thread-created")) { + int thread_id; + *(strrchr(line, ',') - 1) = '\0'; - int thread_id = atoi(line + strlen("=thread-created,id="")); + thread_id = atoi(line + strlen("=thread-created,id="")); dbg_cbs->add_thread(thread_id); } else if (g_str_has_prefix(line, "=thread-exited")) { + int thread_id; + *(strrchr(line, ',') - 1) = '\0'; - int thread_id = atoi(line + strlen("=thread-exited,id="")); + thread_id = atoi(line + strlen("=thread-exited,id="")); dbg_cbs->remove_thread(thread_id); } else if (g_str_has_prefix(line, "=library-loaded") || g_str_has_prefix(line, "=library-unloaded")) @@ -470,14 +479,17 @@ static gboolean on_read_from_gdb(GIOChannel * src, GIOCondition cond, gpointer d dbg_cbs->set_run(); else if (!strcmp(line, "*stopped")) { + char *reason; + /* removing read callback (will pulling all output left manually) */ g_source_remove(gdb_id_out);
/* looking for a reason to stop */ - char *next = NULL; - char *reason = strstr(record, "reason=""); + reason = strstr(record, "reason=""); if (reason) { + char *next; + reason += strlen("reason=""); next = strstr(reason, """) + 1; *(next - 1) = '\0'; @@ -538,9 +550,12 @@ static gboolean on_read_from_gdb(GIOChannel * src, GIOCondition cond, gpointer d { if (stop_reason == SR_EXITED_WITH_CODE) { - gchar *code = strstr(reason + strlen(reason) + 1,"exit-code="") + strlen("exit-code=""); + gchar *code; + gchar *message; + + code = strstr(reason + strlen(reason) + 1,"exit-code="") + strlen("exit-code=""); *(strchr(code, '"')) = '\0'; - gchar *message = g_strdup_printf(_("Program exited with code "%i""), (int)(char)strtol(code, NULL, 8)); + message = g_strdup_printf(_("Program exited with code "%i""), (int)(char)strtol(code, NULL, 8)); dbg_cbs->report_error(message);
g_free(message); @@ -552,6 +567,9 @@ static gboolean on_read_from_gdb(GIOChannel * src, GIOCondition cond, gpointer d } else if (g_str_has_prefix (line, "^error")) { + GList *lines, *iter; + char *msg; + /* removing read callback (will pulling all output left manually) */ g_source_remove(gdb_id_out);
@@ -565,21 +583,18 @@ static gboolean on_read_from_gdb(GIOChannel * src, GIOCondition cond, gpointer d }
/* get message */ - char *msg = strstr(line, "msg="") + strlen("msg=""); + msg = strstr(line, "msg="") + strlen("msg=""); *strrchr(msg, '"') = '\0'; msg = g_strcompress(msg); /* reading until prompt */ - GList *lines = read_until_prompt(); - GList *iter = lines; - while(iter) + lines = read_until_prompt(); + for (iter = lines; iter; iter = iter->next) { gchar *l = (gchar*)iter->data; if (strcmp(l, GDB_PROMPT)) colorize_message(l); g_free(l); - - iter = iter->next; } g_list_free (lines);
@@ -619,6 +634,8 @@ void exec_async_command(const gchar* command) */ result_class exec_sync_command(const gchar* command, gboolean wait4prompt, gchar** command_record) { + GList *lines, *iter; + result_class rc;
#ifdef DEBUG_OUTPUT dbg_cbs->send_message(command, "red"); @@ -630,21 +647,18 @@ result_class exec_sync_command(const gchar* command, gboolean wait4prompt, gchar if (!wait4prompt) return RC_DONE; - GList *lines = read_until_prompt(); + lines = read_until_prompt();
#ifdef DEBUG_OUTPUT - GList *line = lines; - while (line) + for (iter = lines; iter; iter = iter->next) { - dbg_cbs->send_message((gchar*)line->data, "red"); - line = line->next; + dbg_cbs->send_message((gchar*)iter->data, "red"); } #endif
- result_class rc = RC_ERROR; - GList *iter = lines; + rc = RC_ERROR;
- while (iter) + for (iter = lines; iter; iter = iter->next) { gchar *line = (gchar*)iter->data;
@@ -683,9 +697,7 @@ result_class exec_sync_command(const gchar* command, gboolean wait4prompt, gchar { colorize_message (line); } - - iter = iter->next; - } + } g_list_foreach(lines, (GFunc)g_free, NULL); g_list_free(lines); @@ -699,13 +711,18 @@ result_class exec_sync_command(const gchar* command, gboolean wait4prompt, gchar gboolean run(const gchar* file, const gchar* commandline, GList* env, GList *witer, GList *biter, const gchar* terminal_device, dbg_callbacks* callbacks) { GError *err = NULL; + const gchar *exclude[] = { "LANG", NULL }; + gchar **gdb_env = utils_copy_environment(exclude, "LANG", "C", NULL); + gchar *working_directory = g_path_get_dirname(file); + GList *lines, *iter; + GList *commands = NULL; + GString *command; + int bp_index; + queue_item *item;
dbg_cbs = callbacks;
/* spawn GDB */ - const gchar *exclude[] = { "LANG", NULL }; - gchar **gdb_env = utils_copy_environment(exclude, "LANG", "C", NULL); - gchar *working_directory = g_path_get_dirname(file); if (!g_spawn_async_with_pipes(working_directory, (gchar**)gdb_args, gdb_env, GDB_SPAWN_FLAGS, NULL, NULL, &gdb_pid, &gdb_in, &gdb_out, NULL, &err)) @@ -730,16 +747,14 @@ gboolean run(const gchar* file, const gchar* commandline, GList* env, GList *wit gdb_ch_out = g_io_channel_unix_new(gdb_out);
/* reading starting gdb messages */ - GList *lines = read_until_prompt(); - GList *line = lines; - while (line) + lines = read_until_prompt(); + for (iter = lines; iter; iter = iter->next) { - gchar *unescaped = g_strcompress((gchar*)line->data); + gchar *unescaped = g_strcompress((gchar*)iter->data); if (strlen(unescaped)) { - colorize_message((gchar*)line->data); + colorize_message((gchar*)iter->data); } - line = line->next; } g_list_foreach(lines, (GFunc)g_free, NULL); g_list_free(lines); @@ -756,10 +771,9 @@ gboolean run(const gchar* file, const gchar* commandline, GList* env, GList *wit }
/* collect commands */ - GList *commands = NULL;
/* loading file */ - GString *command = g_string_new(""); + command = g_string_new(""); g_string_printf(command, "-file-exec-and-symbols "%s"", file); commands = add_to_queue(commands, _("~"Loading target file.\n""), command->str, _("Error loading file"), FALSE); g_string_free(command, TRUE); @@ -786,14 +800,15 @@ gboolean run(const gchar* file, const gchar* commandline, GList* env, GList *wit g_string_free(command, TRUE);
/* set passed evironment */ - GList *iter = env; + iter = env; while (iter) { - gchar *name = (gchar*)iter->data; + gchar *name, *value; + + name = (gchar*)iter->data; iter = iter->next; - - gchar *value = (gchar*)iter->data; - + value = (gchar*)iter->data; + command = g_string_new(""); g_string_printf(command, "-gdb-set environment %s=%s", name, value);
@@ -804,14 +819,15 @@ gboolean run(const gchar* file, const gchar* commandline, GList* env, GList *wit }
/* set breaks */ - int bp_index = 1; + bp_index = 1; while (biter) { breakpoint *bp = (breakpoint*)biter->data; + GString *error_message = g_string_new(""); + command = g_string_new(""); g_string_printf(command, "-break-insert -f "\"%s\":%i"", bp->file, bp->line);
- GString *error_message = g_string_new(""); g_string_printf(error_message, _("Breakpoint at %s:%i cannot be set\nDebugger message: %s"), bp->file, bp->line, "%s"); commands = add_to_queue(commands, NULL, command->str, error_message->str, TRUE); @@ -855,7 +871,7 @@ gboolean run(const gchar* file, const gchar* commandline, GList* env, GList *wit /* connect read callback to the output chanel */ gdb_id_out = g_io_add_watch(gdb_ch_out, G_IO_IN, on_read_async_output, commands);
- queue_item *item = (queue_item*)commands->data; + item = (queue_item*)commands->data;
/* send message to debugger messages window */ if (item->message) @@ -933,27 +949,32 @@ void execute_until(const gchar *file, int line) */ int get_break_number(char* file, int line) { - gchar* record; + gchar *record, *bstart; + exec_sync_command("-break-list", TRUE, &record); - - gchar* bstart = record; + bstart = record; + while ( (bstart = strstr(bstart, "bkpt=")) ) { + gchar *fname, *file_quoted; + int num, bline; + gboolean break_found; + bstart += strlen("bkpt={number=""); *strchr(bstart, '"') = '\0'; - int num = atoi(bstart); + num = atoi(bstart); bstart += strlen(bstart) + 1; bstart = strstr(bstart, "original-location="") + strlen("original-location=""); *strchr(bstart, ':') = '\0'; - gchar *fname = bstart; + fname = bstart; bstart += strlen(bstart) + 1; *strchr(bstart, '"') = '\0'; - int bline = atoi(bstart); + bline = atoi(bstart); - gchar *file_quoted = g_strdup_printf("\"%s\"", file); - int break_found = !strcmp(fname, file_quoted) && bline == line; + file_quoted = g_strdup_printf("\"%s\"", file); + break_found = !strcmp(fname, file_quoted) && bline == line; g_free(file_quoted);
if (break_found) @@ -978,8 +999,11 @@ gboolean set_break(breakpoint* bp, break_set_activity bsa) if (BSA_NEW_BREAK == bsa) { /* new breakpoint */ + + char *pos; + int number; gchar *record = NULL; - + /* 1. insert breakpoint */ sprintf (command, "-break-insert "\"%s\":%i"", bp->file, bp->line); if (RC_DONE != exec_sync_command(command, TRUE, &record)) @@ -993,9 +1017,9 @@ gboolean set_break(breakpoint* bp, break_set_activity bsa) } } /* lookup break-number */ - char *pos = strstr(record, "number="") + strlen("number=""); + pos = strstr(record, "number="") + strlen("number=""); *strchr(pos, '"') = '\0'; - int number = atoi(pos); + number = atoi(pos); g_free(record); /* 2. set hits count if differs from 0 */ if (bp->hitscount) @@ -1048,9 +1072,11 @@ gboolean remove_break(breakpoint* bp) int number = get_break_number(bp->file, bp->line); if (-1 != number) { + result_class rc; gchar command[100]; + sprintf(command, "-break-delete %i", number); - result_class rc = exec_sync_command(command, TRUE, NULL); + rc = exec_sync_command(command, TRUE, NULL); return RC_DONE == rc; } @@ -1086,20 +1112,24 @@ void set_active_frame(int frame_number) GList* get_stack(void) { gchar* record = NULL; - result_class rc = exec_sync_command("-stack-list-frames", TRUE, &record); + GList *stack = NULL; + gchar **frames, **next; + result_class rc; + + rc = exec_sync_command("-stack-list-frames", TRUE, &record); if (RC_DONE != rc) return NULL; - - GList *stack = NULL;
- gchar **frames = g_strsplit(record, "frame=", 0); - gchar **next = frames + 1; + frames = g_strsplit(record, "frame=", 0); + next = frames + 1; while (*next) { frame *f = frame_new(); + int line; + gchar *pos, *fullname, *file, *from; /* adresss */ - gchar* pos = strstr(*next, "addr="") + strlen("addr=""); + pos = strstr(*next, "addr="") + strlen("addr=""); *strchr(pos, '"') = '\0'; f->address = g_strdup(pos); pos += strlen(pos) + 1; @@ -1111,9 +1141,9 @@ GList* get_stack(void) pos += strlen(pos) + 1;
/* file: fullname | file | from */ - char* fullname = strstr(pos, "fullname=""); - char* file = strstr(pos, "file=""); - char* from = strstr(pos, "from=""); + fullname = strstr(pos, "fullname=""); + file = strstr(pos, "file=""); + from = strstr(pos, "from=""); if (fullname) { @@ -1148,7 +1178,7 @@ GList* get_stack(void) f->have_source = fullname ? TRUE : FALSE;
/* line */ - int line = 0; + line = 0; pos = strstr(pos, "line=""); if (pos) { @@ -1181,6 +1211,9 @@ gchar* unescape_hex_values(gchar *src) gchar *slash; while ( (slash = strstr(src, "\x")) ) { + char hex[4] = { 0, 0, 0, '\0' }; + wchar_t wc; + /* append what has been missed unescaping it in advance */ if (slash - src) @@ -1192,10 +1225,9 @@ gchar* unescape_hex_values(gchar *src) g_free(unescaped); }
- char hex[4] = { 0, 0, 0, '\0' }; strncpy(hex, slash + 2, 3); - wchar_t wc = (wchar_t)strtol(hex, NULL, 16); - + wc = (wchar_t)strtol(hex, NULL, 16); + if (iswalpha(wc)) { gchar mb[5]; @@ -1321,13 +1353,16 @@ void get_variables (GList *vars) gchar *varname = var->internal->str; gchar *record = NULL; gchar *pos; + gchar *expression; + int numchild; + gchar *value;
/* path expression */ sprintf(command, "-var-info-path-expression "%s"", varname); exec_sync_command(command, TRUE, &record); pos = strstr(record, "path_expr="") + strlen("path_expr=""); *(strrchr(pos, '"')) = '\0'; - gchar *expression = unescape(pos); + expression = unescape(pos); g_string_assign(var->expression, expression); g_free(expression); g_free(record); @@ -1337,7 +1372,7 @@ void get_variables (GList *vars) exec_sync_command(command, TRUE, &record); pos = strstr(record, "numchild="") + strlen("numchild=""); *(strchr(pos, '"')) = '\0'; - int numchild = atoi(pos); + numchild = atoi(pos); var->has_children = numchild > 0; g_free(record);
@@ -1354,7 +1389,7 @@ void get_variables (GList *vars) } pos += + strlen("value=""); *(strrchr(pos, '"')) = '\0'; - gchar *value = unescape(pos); + value = unescape(pos); g_string_assign(var->value, value); g_free(value); g_free(record); @@ -1376,6 +1411,10 @@ void get_variables (GList *vars) */ void update_files(void) { + GHashTable *ht = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL); + gchar *record = NULL; + gchar *pos; + if (files) { /* free previous list */ @@ -1384,11 +1423,8 @@ void update_files(void) files = NULL; }
- GHashTable *ht = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL); - - gchar *record = NULL; exec_sync_command("-file-list-exec-source-files", TRUE, &record); - gchar *pos = record; + pos = record; while ( (pos = strstr(pos, "fullname="")) ) { pos += strlen("fullname=""); @@ -1412,10 +1448,11 @@ void update_files(void) void update_watches(void) { gchar command[1000]; + GList *updating = NULL; + GList *iter;
/* delete all GDB variables */ - GList *iter = watches; - while (iter) + for (iter = watches; iter; iter = iter->next) { variable *var = (variable*)iter->data; @@ -1427,22 +1464,19 @@ void update_watches(void) /* reset all variables fields */ variable_reset(var); - - iter = iter->next; } /* create GDB variables, adding successfully created variables to the list then passed for updatind */ - GList *updating = NULL; - iter = watches; - while (iter) + for (iter = watches; iter; iter = iter->next) { variable *var = (variable*)iter->data; - - /* try to create variable */ - gchar *record = NULL; + gchar *record = NULL; + gchar *pos; + gchar *escaped;
- gchar *escaped = g_strescape(var->name->str, NULL); + /* try to create variable */ + escaped = g_strescape(var->name->str, NULL); sprintf(command, "-var-create - * "%s"", escaped); g_free(escaped);
@@ -1451,14 +1485,13 @@ void update_watches(void) /* do not include to updating list, move to next watch */ var->evaluated = FALSE; g_string_assign(var->internal, ""); - g_free(record); - iter = iter->next; + g_free(record); continue; } /* find and assign internal name */ - gchar *pos = strstr(record, "name="") + strlen("name=""); + pos = strstr(record, "name="") + strlen("name=""); *strchr(pos, '"') = '\0'; g_string_assign(var->internal, pos); g_free(record); @@ -1467,8 +1500,6 @@ void update_watches(void)
/* add to updating list */ updating = g_list_append(updating, var); - - iter = iter->next; } /* update watches */ @@ -1484,17 +1515,17 @@ void update_watches(void) void update_autos(void) { gchar command[1000]; + GList *unevaluated = NULL, *iter; + const char *gdb_commands[2]; + int i;
/* remove all previous GDB variables for autos */ - GList *iter = autos; - while (iter) + for (iter = autos; iter; iter = iter->next) { variable *var = (variable*)iter->data; sprintf(command, "-var-delete %s", var->internal->str); exec_sync_command(command, TRUE, NULL); - - iter = iter->next; }
g_list_foreach(autos, (GFunc)variable_free, NULL); @@ -1502,29 +1533,30 @@ void update_autos(void) autos = NULL; /* add current autos to the list */ - GList *unevaluated = NULL; - const char *gdb_commands[] = { g_strdup_printf("-stack-list-arguments 0 %i %i", active_frame, active_frame), "-stack-list-locals 0" }; - int i, size = sizeof (gdb_commands) / sizeof(char*); - for (i = 0; i < size; i++) + gdb_commands[0] = g_strdup_printf("-stack-list-arguments 0 %i %i", active_frame, active_frame); + gdb_commands[1] = "-stack-list-locals 0"; + for (i = 0; i < sizeof (gdb_commands) / sizeof(*gdb_commands); i++) { - gchar *record = NULL; + gchar *record = NULL, *pos; + result_class rc = exec_sync_command(gdb_commands[i], TRUE, &record); if (RC_DONE != rc) break;
- gchar *pos = record; + pos = record; while ((pos = strstr(pos, "name=""))) { + variable *var; + gchar *create_record = NULL, *escaped; + pos += strlen("name=""); *(strchr(pos, '"')) = '\0';
- variable *var = variable_new(pos, i ? VT_LOCAL : VT_ARGUMENT); + var = variable_new(pos, i ? VT_LOCAL : VT_ARGUMENT);
/* create new gdb variable */ - gchar *create_record = NULL; - - gchar *escaped = g_strescape(pos, NULL); + escaped = g_strescape(pos, NULL); sprintf(command, "-var-create - * "%s"", escaped); g_free(escaped);
@@ -1594,6 +1626,7 @@ GList* get_children (gchar* path) result_class rc; gchar *record = NULL; gchar *pos = NULL; + int numchild;
/* children number */ sprintf(command, "-var-info-num-children "%s"", path); @@ -1602,7 +1635,7 @@ GList* get_children (gchar* path) return NULL; pos = strstr(record, "numchild="") + strlen("numchild=""); *(strchr(pos, '"')) = '\0'; - int numchild = atoi(pos); + numchild = atoi(pos); g_free(record); if (!numchild) return NULL; @@ -1616,6 +1649,7 @@ GList* get_children (gchar* path) while ( (pos = strstr(pos, "child={")) ) { gchar *name, *internal; + variable *var; /* name */ pos = strstr(pos, "name="") + strlen("name=""); @@ -1629,7 +1663,7 @@ GList* get_children (gchar* path) name = g_strcompress(pos); - variable *var = variable_new2(name, internal, VT_CHILD); + var = variable_new2(name, internal, VT_CHILD); var->evaluated = TRUE; pos += strlen(pos) + 1; @@ -1652,14 +1686,14 @@ GList* get_children (gchar* path) variable* add_watch(gchar* expression) { gchar command[1000]; - + gchar *record = NULL, *escaped, *pos; + GList *vars = NULL; variable *var = variable_new(expression, VT_WATCH); + watches = g_list_append(watches, var);
/* try to create a variable */ - gchar *record = NULL; - - gchar *escaped = g_strescape(expression, NULL); + escaped = g_strescape(expression, NULL); sprintf(command, "-var-create - * "%s"", escaped); g_free(escaped);
@@ -1669,12 +1703,12 @@ variable* add_watch(gchar* expression) return var; } - gchar *pos = strstr(record, "name="") + strlen("name=""); + pos = strstr(record, "name="") + strlen("name=""); *strchr(pos, '"') = '\0'; g_string_assign(var->internal, pos); var->evaluated = TRUE;
- GList *vars = g_list_append(NULL, var); + vars = g_list_append(NULL, var); get_variables(vars);
g_free(record); @@ -1709,11 +1743,12 @@ void remove_watch(gchar* internal) */ gchar *evaluate_expression(gchar *expression) { - gchar *record = NULL; - + gchar *record = NULL, *pos; char command[1000]; + result_class rc; + sprintf (command, "-data-evaluate-expression "%s"", expression); - result_class rc = exec_sync_command(command, TRUE, &record); + rc = exec_sync_command(command, TRUE, &record); if (RC_DONE != rc) { @@ -1721,11 +1756,10 @@ gchar *evaluate_expression(gchar *expression) return NULL; }
- gchar *pos = strstr(record, "value="") + strlen("value=""); + pos = strstr(record, "value="") + strlen("value=""); *(strrchr(pos, '"')) = '\0'; - gchar *retval = unescape(pos); - - return retval; + + return unescape(pos); }
/*
Modified: debugger/src/dconfig.c 108 files changed, 61 insertions(+), 47 deletions(-) =================================================================== @@ -81,14 +81,16 @@ */ GKeyFile *create_copy_keyfile(GKeyFile *keyfile) { - gchar *path; + gchar *path, *config_data; + GKeyFile *copy; + close(g_file_open_tmp(NULL, &path, NULL)); - gchar *config_data = g_key_file_to_data(keyfile, NULL, NULL); + config_data = g_key_file_to_data(keyfile, NULL, NULL); g_file_set_contents(path, config_data, -1, NULL); g_free(config_data); - GKeyFile *copy = g_key_file_new(); + copy = g_key_file_new(); g_key_file_load_from_file(copy, path, G_KEY_FILE_NONE, NULL);
g_remove(path); @@ -102,9 +104,11 @@ GKeyFile *create_copy_keyfile(GKeyFile *keyfile) */ void debug_load_from_keyfile(GKeyFile *keyfile) { + gchar *value; + int i, count; + debug_config_loading = TRUE; - gchar *value; /* target */ tpage_set_target(value = g_key_file_get_string(keyfile, DEBUGGER_GROUP, "target", NULL)); g_free(value); @@ -115,16 +119,14 @@ void debug_load_from_keyfile(GKeyFile *keyfile) tpage_set_commandline(value = g_key_file_get_string(keyfile, DEBUGGER_GROUP, "arguments", NULL)); g_free(value);
- int i; - /* environment */ - int envcount = g_key_file_get_integer(keyfile, DEBUGGER_GROUP, "envvar_count", NULL); - for (i = 0; i < envcount; i++) + count = g_key_file_get_integer(keyfile, DEBUGGER_GROUP, "envvar_count", NULL); + for (i = 0; i < count; i++) { gchar *env_name_id = g_strdup_printf("envvar_%i_name", i); gchar *env_value_id = g_strdup_printf("envvar_%i_value", i); - gchar *name = g_key_file_get_string(keyfile, DEBUGGER_GROUP, env_name_id, NULL); + value = g_key_file_get_string(keyfile, DEBUGGER_GROUP, env_value_id, NULL);
tpage_add_environment(name, value); @@ -137,8 +139,8 @@ void debug_load_from_keyfile(GKeyFile *keyfile) }
/* watches */ - int wcount = g_key_file_get_integer(keyfile, DEBUGGER_GROUP, "watches_count", NULL); - for (i = 0; i < wcount; i++) + count = g_key_file_get_integer(keyfile, DEBUGGER_GROUP, "watches_count", NULL); + for (i = 0; i < count; i++) { gchar *watch_id = g_strdup_printf("watch_%i", i); wtree_add_watch(value = g_key_file_get_string(keyfile, DEBUGGER_GROUP, watch_id, NULL)); @@ -147,8 +149,8 @@ void debug_load_from_keyfile(GKeyFile *keyfile) }
/* breakpoints */ - int bcount = g_key_file_get_integer(keyfile, DEBUGGER_GROUP, "breaks_count", NULL); - for (i = 0; i < bcount; i++) + count = g_key_file_get_integer(keyfile, DEBUGGER_GROUP, "breaks_count", NULL); + for (i = 0; i < count; i++) { gchar *break_file_id = g_strdup_printf("break_%i_file", i); gchar *break_line_id = g_strdup_printf("break_%i_line", i); @@ -183,6 +185,9 @@ void debug_load_from_keyfile(GKeyFile *keyfile) */ void save_to_keyfile(GKeyFile *keyfile) { + GList *_env, *watches, *_breaks, *iter; + int env_index, watch_index, bp_index; + g_key_file_remove_group(keyfile, DEBUGGER_GROUP, NULL); g_key_file_set_string(keyfile, DEBUGGER_GROUP, "target", tpage_get_target()); @@ -190,19 +195,20 @@ void save_to_keyfile(GKeyFile *keyfile) g_key_file_set_string(keyfile, DEBUGGER_GROUP, "arguments", tpage_get_commandline()); /* environment */ - GList *_env = tpage_get_environment(); + _env = tpage_get_environment(); g_key_file_set_integer(keyfile, DEBUGGER_GROUP, "envvar_count", g_list_length(_env) / 2); - GList *iter = _env; - int env_index = 0; + iter = _env; + env_index = 0; while(iter) { - gchar *name = (gchar*)iter->data; - iter = iter->next; - gchar *value = (gchar*)iter->data; - + gchar *name, *value; gchar *env_name_id = g_strdup_printf("envvar_%i_name", env_index); gchar *env_value_id = g_strdup_printf("envvar_%i_value", env_index); - + + name = (gchar*)iter->data; + iter = iter->next; + value = (gchar*)iter->data; + g_key_file_set_string(keyfile, DEBUGGER_GROUP, env_name_id, name); g_key_file_set_string(keyfile, DEBUGGER_GROUP, env_value_id, value);
@@ -216,13 +222,12 @@ void save_to_keyfile(GKeyFile *keyfile) g_list_free(_env); /* watches */ - GList *watches = wtree_get_watches(); + watches = wtree_get_watches(); g_key_file_set_integer(keyfile, DEBUGGER_GROUP, "watches_count", g_list_length(watches)); - int watch_index = 0; - GList *biter = watches; - while (biter) + watch_index = 0; + for (iter = watches; iter; iter = iter->next) { - gchar *watch = (gchar*)biter->data; + gchar *watch = (gchar*)iter->data; gchar *watch_id = g_strdup_printf("watch_%i", watch_index); g_key_file_set_string(keyfile, DEBUGGER_GROUP, watch_id, watch); @@ -230,19 +235,17 @@ void save_to_keyfile(GKeyFile *keyfile) g_free(watch_id);
watch_index++; - biter = biter->next; } g_list_foreach(watches, (GFunc)g_free, NULL); g_list_free(watches);
/* breakpoints */ - GList *_breaks = breaks_get_all(); + _breaks = breaks_get_all(); g_key_file_set_integer(keyfile, DEBUGGER_GROUP, "breaks_count", g_list_length(_breaks)); - int bp_index = 0; - biter = _breaks; - while (biter) + bp_index = 0; + for (iter = _breaks; iter; iter = iter->next) { - breakpoint *bp = (breakpoint*)biter->data; + breakpoint *bp = (breakpoint*)iter->data; gchar *break_file_id = g_strdup_printf("break_%i_file", bp_index); gchar *break_line_id = g_strdup_printf("break_%i_line", bp_index); @@ -261,9 +264,8 @@ void save_to_keyfile(GKeyFile *keyfile) g_free(break_condition_id); g_free(break_hits_id); g_free(break_enabled_id); - + bp_index++; - biter = biter->next; } g_list_free(_breaks); } @@ -284,6 +286,8 @@ static gpointer saving_thread_func(gpointer data) (debug_config_changed && DEBUG_STORE_PLUGIN == dstore) ) { + gchar *config_data; + /* if all saving is going to be done to a plugin keyfile */ if (debug_config_changed) { @@ -291,7 +295,7 @@ static gpointer saving_thread_func(gpointer data) debug_config_changed = FALSE; } - gchar *config_data = g_key_file_to_data(keyfile_plugin, NULL, NULL); + config_data = g_key_file_to_data(keyfile_plugin, NULL, NULL); g_file_set_contents(plugin_config_path, config_data, -1, NULL); g_free(config_data);
@@ -300,10 +304,12 @@ static gpointer saving_thread_func(gpointer data) if (debug_config_changed && DEBUG_STORE_PROJECT == dstore) { + gchar *config_data; + /* if debug is saved into a project and has been changed */ save_to_keyfile(keyfile_project);
- gchar *config_data = g_key_file_to_data(keyfile_project, NULL, NULL); + config_data = g_key_file_to_data(keyfile_project, NULL, NULL); g_file_set_contents(geany_data->app->project->file_name, config_data, -1, NULL); g_free(config_data); @@ -339,9 +345,10 @@ void config_set_debug_changed(void) */ void config_set_panel(int config_part, gpointer config_value, ...) { + va_list ap; + g_mutex_lock(change_config_mutex); - va_list ap; va_start(ap, config_value); while(config_part) @@ -418,16 +425,18 @@ void config_set_debug_defaults(GKeyFile *keyfile) */ void config_set_panel_defaults(GKeyFile *keyfile) { - g_key_file_set_boolean(keyfile_plugin, "tabbed_mode", "enabled", FALSE); - int all_tabs[] = { TID_TARGET, TID_BREAKS, TID_AUTOS, TID_WATCH, TID_STACK, TID_TERMINAL, TID_MESSAGES }; + int left_tabs[] = { TID_TARGET, TID_BREAKS, TID_AUTOS, TID_WATCH }; + int right_tabs[] = { TID_STACK, TID_TERMINAL, TID_MESSAGES }; + + g_key_file_set_boolean(keyfile_plugin, "tabbed_mode", "enabled", FALSE); + /* all tabs */ g_key_file_set_integer_list(keyfile, "one_panel_mode", "tabs", all_tabs, sizeof(all_tabs) / sizeof(int)); g_key_file_set_integer(keyfile, "one_panel_mode", "selected_tab_index", 0); - - int left_tabs[] = { TID_TARGET, TID_BREAKS, TID_AUTOS, TID_WATCH }; + /* left tabs */ g_key_file_set_integer_list(keyfile, "two_panels_mode", "left_tabs", left_tabs, sizeof(left_tabs) / sizeof(int)); g_key_file_set_integer(keyfile, "two_panels_mode", "left_selected_tab_index", 0); - int right_tabs[] = { TID_STACK, TID_TERMINAL, TID_MESSAGES }; + /* right tabs */ g_key_file_set_integer_list(keyfile, "two_panels_mode", "right_tabs", right_tabs, sizeof(right_tabs) / sizeof(int)); g_key_file_set_integer(keyfile, "two_panels_mode", "right_selected_tab_index", 0);
@@ -449,8 +458,10 @@ void config_init(void) keyfile_plugin = g_key_file_new(); if (!g_key_file_load_from_file(keyfile_plugin, plugin_config_path, G_KEY_FILE_NONE, NULL)) { + gchar *data; + config_set_panel_defaults(keyfile_plugin); - gchar *data = g_key_file_to_data(keyfile_plugin, NULL, NULL); + data = g_key_file_to_data(keyfile_plugin, NULL, NULL); g_file_set_contents(plugin_config_path, data, -1, NULL); g_free(data); } @@ -524,20 +535,23 @@ int config_get_right_selected_tab_index(void) */ void config_set_debug_store(debug_store store) { + GKeyFile *keyfile; + dstore = store;
tpage_clear(); wtree_remove_all(); breaks_remove_all();
- GKeyFile *keyfile = DEBUG_STORE_PROJECT == dstore ? keyfile_project : keyfile_plugin; - + keyfile = DEBUG_STORE_PROJECT == dstore ? keyfile_project : keyfile_plugin; if (!g_key_file_has_group(keyfile, DEBUGGER_GROUP)) { + gchar *data, *file; + config_set_debug_defaults(keyfile); - gchar *data = g_key_file_to_data(keyfile, NULL, NULL); + data = g_key_file_to_data(keyfile, NULL, NULL);
- gchar *file = DEBUG_STORE_PROJECT == dstore ? geany_data->app->project->file_name : plugin_config_path; + file = DEBUG_STORE_PROJECT == dstore ? geany_data->app->project->file_name : plugin_config_path; g_file_set_contents(file, data, -1, NULL);
g_free(data);
Modified: debugger/src/debug.c 123 files changed, 74 insertions(+), 49 deletions(-) =================================================================== @@ -219,32 +219,36 @@ static void on_watch_changed(GtkCellRendererText *renderer, gchar *path, gchar * { /* get iterator to the changed row */ GtkTreeIter iter; + gchar *oldvalue; + gchar *internal = NULL; + GtkTreePath *empty_path; GtkTreePath *tree_path = gtk_tree_path_new_from_string (path); + gboolean is_empty_row; + gchar *striped; + gtk_tree_model_get_iter ( gtk_tree_view_get_model(GTK_TREE_VIEW(wtree)), &iter, tree_path); /* get oldvalue */ - gchar* oldvalue; gtk_tree_model_get ( wmodel, &iter, W_NAME, &oldvalue, - -1); - gchar *internal = NULL; - gtk_tree_model_get ( + -1); + gtk_tree_model_get ( wmodel, &iter, W_INTERNAL, &internal, -1);
/* check if it is empty row */ - GtkTreePath *empty_path = wtree_empty_path(); - gboolean is_empty_row = !gtk_tree_path_compare (tree_path, empty_path); + empty_path = wtree_empty_path(); + is_empty_row = !gtk_tree_path_compare (tree_path, empty_path); gtk_tree_path_free(empty_path);
- gchar *striped = g_strstrip(g_strdup(new_text)); + striped = g_strstrip(g_strdup(new_text)); if (!strlen(striped) && !is_empty_row && dialogs_show_question(_("Delete variable?"))) @@ -272,8 +276,10 @@ static void on_watch_changed(GtkCellRendererText *renderer, gchar *path, gchar * /* if debug is active - remove old watch and add new one */ if (DBS_STOPPED == debug_state) { + variable *newvar; + active_module->remove_watch(internal); - variable *newvar = active_module->add_watch(striped); + newvar = active_module->add_watch(striped); change_watch(GTK_TREE_VIEW(wtree), is_empty_row ? &newiter : &iter, newvar); } @@ -306,14 +312,16 @@ static void on_watch_dragged_callback(GtkWidget *wgt, GdkDragContext *context, i { /* string that is dragged */ gchar *expression = (gchar*)seldata->data; - - /* lookup for where the text has been dropped */ GtkTreePath *path = NULL; GtkTreeViewDropPosition pos; + GtkTreePath *empty_path; + GtkTreeIter newvar; + + /* lookup for where the text has been dropped */ gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(wtree), x, y, &path, &pos);
/* if dropped into last row - insert before it */ - GtkTreePath *empty_path = wtree_empty_path(); + empty_path = wtree_empty_path(); if (!gtk_tree_path_compare(empty_path, path)) pos = GTK_TREE_VIEW_DROP_BEFORE; gtk_tree_path_free(empty_path); @@ -327,7 +335,6 @@ static void on_watch_dragged_callback(GtkWidget *wgt, GdkDragContext *context, i } /* insert new row */ - GtkTreeIter newvar; if (path) { GtkTreeIter sibling; @@ -362,18 +369,21 @@ static void on_watch_dragged_callback(GtkWidget *wgt, GdkDragContext *context, i */ static gboolean on_watch_key_pressed_callback(GtkWidget *widget, GdkEvent *event, gpointer user_data) { + GtkTreeSelection *selection; + GList *rows; + GtkTreePath *empty_path; + /* handling only Delete button pressing * that means "delete selected rows" */ - int keyval = ((GdkEventKey*)event)->keyval; - if (keyval != GDK_Delete) + if (((GdkEventKey*)event)->keyval != GDK_Delete) return FALSE;
/* get selected rows */ - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(wtree)); - GList *rows = gtk_tree_selection_get_selected_rows(selection, &wmodel); + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(wtree)); + rows = gtk_tree_selection_get_selected_rows(selection, &wmodel); /* empty row path */ - GtkTreePath *empty_path = wtree_empty_path(); + empty_path = wtree_empty_path();
/* check whether only empty row was selected */ if (1 != gtk_tree_selection_count_selected_rows(selection) || @@ -381,6 +391,7 @@ static gboolean on_watch_key_pressed_callback(GtkWidget *widget, GdkEvent *even { /* path reference to select after deleteing finishes */ GtkTreeRowReference *reference_to_select = NULL; + GtkTreePath *path_to_select;
/* get references to the rows */ GList *references = NULL; @@ -411,6 +422,7 @@ static gboolean on_watch_key_pressed_callback(GtkWidget *widget, GdkEvent *even current reference was already deleted */ if (gtk_tree_row_reference_valid(reference)) { + GtkTreeIter titer; GtkTreePath *path = gtk_tree_row_reference_get_path(reference);
if (!reference_to_select) @@ -428,7 +440,6 @@ static gboolean on_watch_key_pressed_callback(GtkWidget *widget, GdkEvent *even }
/* get iterator */ - GtkTreeIter titer; gtk_tree_model_get_iter(wmodel, &titer, path);
/* remove from the debug session, if it's active */ @@ -467,7 +478,7 @@ static gboolean on_watch_key_pressed_callback(GtkWidget *widget, GdkEvent *even
/* set selection */ gtk_tree_selection_unselect_all(selection); - GtkTreePath *path_to_select = gtk_tree_row_reference_get_path(reference_to_select); + path_to_select = gtk_tree_row_reference_get_path(reference_to_select); gtk_tree_selection_select_path(selection, path_to_select); gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widget), path_to_select, NULL, TRUE, 0.5, 0.5); gtk_tree_path_free(path_to_select); @@ -500,11 +511,11 @@ gboolean on_watch_button_pressed_callback(GtkWidget *treeview, GdkEventButton *e GTK_TREE_VIEW(treeview), (int)event->x, (int)event->y, &path, NULL, NULL, NULL)) { + gchar *expression = NULL; GtkTreeIter iter; GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview)); gtk_tree_model_get_iter (model, &iter, path);
- gchar *expression = NULL; gtk_tree_model_get(model, &iter, W_EXPRESSION, &expression, -1); @@ -556,8 +567,10 @@ static void on_watch_expanded_callback(GtkTreeView *tree, GtkTreeIter *iter, Gtk if (only_stub) { - /* if item has not been expanded before */ + GList *children; gchar *internal; + + /* if item has not been expanded before */ gtk_tree_model_get ( model, iter, @@ -565,7 +578,7 @@ static void on_watch_expanded_callback(GtkTreeView *tree, GtkTreeIter *iter, Gtk -1); /* get children list */ - GList *children = active_module->get_children(internal); + children = active_module->get_children(internal); /* remove stub and add children */ expand_stub(tree, iter, children); @@ -634,6 +647,8 @@ static void on_debugger_run (void) */ static void on_debugger_stopped (int thread_id) { + GList *iter, *files, *autos, *watches; + /* update debug state */ debug_state = DBS_STOPPED;
@@ -671,18 +686,15 @@ static void on_debugger_stopped (int thread_id)
/* get current stack trace and put in the tree view */ stack = active_module->get_stack(); - - GList *iter = stack; - while (iter) + for (iter = stack; iter; iter = iter->next) { frame *f = (frame*)iter->data; stree_add(f); - iter = g_list_next(iter); } stree_select_first_frame(TRUE);
/* files */ - GList *files = active_module->get_files(); + files = active_module->get_files(); /* remove from list and make writable those files, that are not in the current list */ iter = read_only_pages; @@ -690,6 +702,8 @@ static void on_debugger_stopped (int thread_id) { if (!g_list_find_custom(files, iter->data, (GCompareFunc)g_strcmp0)) { + GList *next; + /* set document writable */ GeanyDocument *doc = document_find_by_real_path((const gchar*)iter->data); if (doc) @@ -698,7 +712,7 @@ static void on_debugger_stopped (int thread_id) /* free file name */ g_free(iter->data); /* save next item pointer */ - GList *next = iter->next; + next = iter->next; /* remove current item */ read_only_pages = g_list_delete_link(read_only_pages, iter);
@@ -729,11 +743,11 @@ static void on_debugger_stopped (int thread_id) g_list_free(files);
/* autos */ - GList *autos = active_module->get_autos(); + autos = active_module->get_autos(); update_variables(GTK_TREE_VIEW(atree), NULL, autos); /* watches */ - GList *watches = active_module->get_watches(); + watches = active_module->get_watches(); update_variables(GTK_TREE_VIEW(wtree), NULL, watches);
if (stack) @@ -763,6 +777,10 @@ static void on_debugger_stopped (int thread_id) */ static void on_debugger_exited (int code) { + GtkTextIter start, end; + GtkTextBuffer *buffer; + GList *iter; + /* remove marker for current instruction if was set */ if (stack) { @@ -785,8 +803,7 @@ static void on_debugger_exited (int code) vte_terminal_reset(VTE_TERMINAL(terminal), TRUE, TRUE);
/* clear debug messages window */ - GtkTextIter start, end; - GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(debugger_messages_textview)); + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(debugger_messages_textview)); gtk_text_buffer_get_bounds(buffer, &start, &end); gtk_text_buffer_delete(buffer, &start, &end);
@@ -798,8 +815,7 @@ static void on_debugger_exited (int code) bptree_set_readonly(FALSE); /* set files that was readonly during debug writable */ - GList *iter = read_only_pages; - while (iter) + for (iter = read_only_pages; iter; iter = iter->next) { GeanyDocument *doc = document_find_by_real_path((const gchar*)iter->data); if (doc) @@ -807,8 +823,6 @@ static void on_debugger_exited (int code)
/* free file name */ g_free(iter->data); - - iter = iter->next; } g_list_free(read_only_pages); read_only_pages = NULL; @@ -902,6 +916,7 @@ static void on_thread_added (int thread_id) */ static void on_select_frame(int frame_number) { + GList *autos, *watches; frame *f = (frame*)g_list_nth(stack, active_module->get_active_frame())->data; markers_remove_current_instruction(f->file, f->line); markers_add_frame(f->file, f->line); @@ -912,11 +927,11 @@ static void on_select_frame(int frame_number) g_hash_table_remove_all(calltips); /* autos */ - GList *autos = active_module->get_autos(); + autos = active_module->get_autos(); update_variables(GTK_TREE_VIEW(atree), NULL, autos); /* watches */ - GList *watches = active_module->get_watches(); + watches = active_module->get_watches(); update_variables(GTK_TREE_VIEW(wtree), NULL, watches);
f = (frame*)g_list_nth(stack, frame_number)->data; @@ -930,6 +945,13 @@ static void on_select_frame(int frame_number) */ void debug_init(void) { + GtkWidget *scrollbar; + GtkWidget *hbox; + GKeyFile *config; + gchar *configfile; + gchar *font; + GtkTextBuffer *buffer; + /* create watch page */ wtree = wtree_init(on_watch_expanded_callback, on_watch_dragged_callback, @@ -979,11 +1001,11 @@ void debug_init(void) grantpt(pty_master); unlockpt(pty_master); vte_terminal_set_pty(VTE_TERMINAL(terminal), pty_master); - GtkWidget *scrollbar = gtk_vscrollbar_new(GTK_ADJUSTMENT(VTE_TERMINAL(terminal)->adjustment)); + scrollbar = gtk_vscrollbar_new(GTK_ADJUSTMENT(VTE_TERMINAL(terminal)->adjustment)); GTK_WIDGET_UNSET_FLAGS(scrollbar, GTK_CAN_FOCUS); tab_terminal = gtk_frame_new(NULL); gtk_frame_set_shadow_type (GTK_FRAME(tab_terminal), GTK_SHADOW_NONE); - GtkWidget *hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(tab_terminal), hbox); gtk_box_pack_start(GTK_BOX(hbox), terminal, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), scrollbar, FALSE, FALSE, 0); @@ -992,10 +1014,10 @@ void debug_init(void) gtk_widget_set_size_request(GTK_WIDGET(terminal), 10, 10); vte_terminal_set_size(VTE_TERMINAL(terminal), 30, 1); /* set terminal font. */ - GKeyFile *config = g_key_file_new(); - gchar *configfile = g_strconcat(geany_data->app->configdir, G_DIR_SEPARATOR_S, "geany.conf", NULL); + config = g_key_file_new(); + configfile = g_strconcat(geany_data->app->configdir, G_DIR_SEPARATOR_S, "geany.conf", NULL); g_key_file_load_from_file(config, configfile, G_KEY_FILE_NONE, NULL); - gchar *font = utils_get_setting_string(config, "VTE", "font", "Monospace 10"); + font = utils_get_setting_string(config, "VTE", "font", "Monospace 10"); vte_terminal_set_font_from_string (VTE_TERMINAL(terminal), font); /* debug messages page */ @@ -1011,7 +1033,7 @@ void debug_init(void) gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(tab_messages), debugger_messages_textview); /* create tex tags */ - GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(debugger_messages_textview)); + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(debugger_messages_textview)); gtk_text_buffer_create_tag(buffer, "black", "foreground", "#000000", NULL); gtk_text_buffer_create_tag(buffer, "grey", "foreground", "#AAAAAA", NULL); gtk_text_buffer_create_tag(buffer, "red", "foreground", "#FF0000", NULL); @@ -1108,16 +1130,19 @@ void debug_run(void) { if (DBS_IDLE == debug_state) { - gchar *target = g_strstrip(tpage_get_target()); + gchar *target, *commandline; + GList *env, *watches, *breaks; + + target = g_strstrip(tpage_get_target()); if (!strlen(target)) { g_free(target); return; } - gchar *commandline = tpage_get_commandline(); - GList *env = tpage_get_environment(); - GList *watches = get_root_items(GTK_TREE_VIEW(wtree)); - GList *breaks = breaks_get_all(); + commandline = tpage_get_commandline(); + env = tpage_get_environment(); + watches = get_root_items(GTK_TREE_VIEW(wtree)); + breaks = breaks_get_all();
/* init selected debugger module */ active_module = modules[tpage_get_debug_module_index()].module;
Modified: debugger/src/dpaned.c 68 files changed, 39 insertions(+), 29 deletions(-) =================================================================== @@ -93,9 +93,11 @@ */ static void on_size_allocate(GtkWidget *widget,GdkRectangle *allocation, gpointer user_data) { + int position; + DISCONNECT_ALLOCATED_PAGE_SIGNALS();
- int position = (allocation->width - 2 * HPANED_BORDER_WIDTH) * 0.5; + position = (allocation->width - 2 * HPANED_BORDER_WIDTH) * 0.5; gtk_paned_set_position(GTK_PANED(hpaned), position); }
@@ -106,9 +108,11 @@ static void on_page_added(GtkNotebook *notebook, GtkWidget *child, guint page_nu { gboolean is_left = (GTK_NOTEBOOK(debug_notebook_left) == notebook); gboolean is_tabbed = config_get_tabbed(); - - int *tabs = NULL; + int *tabs = NULL, *array, *new_tabs; gsize length; + GtkWidget *page; + tab_id id; + int config_part;
if (!is_tabbed) tabs = config_get_tabs(&length); @@ -117,16 +121,15 @@ static void on_page_added(GtkNotebook *notebook, GtkWidget *child, guint page_nu else tabs = config_get_right_tabs(&length); - int *array = g_malloc((length + 2) * sizeof(int)); - int *new_tabs = array + 1; + array = g_malloc((length + 2) * sizeof(int)); + new_tabs = array + 1; memcpy(new_tabs, tabs, length * sizeof(int)); memmove(new_tabs + page_num + 1, new_tabs + page_num, (length - page_num) * sizeof(int));
- GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(is_left ? debug_notebook_left : debug_notebook_right), page_num); - tab_id id = tabs_get_tab_id(page); + page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(is_left ? debug_notebook_left : debug_notebook_right), page_num); + id = tabs_get_tab_id(page); new_tabs[page_num] = id; - int config_part; if (!is_tabbed) config_part = CP_OT_TABS; else if (is_left) @@ -149,9 +152,15 @@ static void on_page_reordered(GtkNotebook *notebook, GtkWidget *child, guint pag { gboolean is_left = (GTK_NOTEBOOK(debug_notebook_left) == notebook); gboolean is_tabbed = config_get_tabbed(); - int *tabs = NULL; gsize length; + int prev_index; + GtkWidget *page; + tab_id id; + int i, min, max; + int config_part_tabs; + int config_part_selected_index; + int *array;
if (!is_tabbed) tabs = config_get_tabs(&length); @@ -160,9 +169,8 @@ static void on_page_reordered(GtkNotebook *notebook, GtkWidget *child, guint pag else tabs = config_get_right_tabs(&length);
- int prev_index; - GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(is_left ? debug_notebook_left : debug_notebook_right), page_num); - tab_id id = tabs_get_tab_id(page); + page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(is_left ? debug_notebook_left : debug_notebook_right), page_num); + id = tabs_get_tab_id(page); for (prev_index = 0; prev_index < length; prev_index++) { if (id == tabs[prev_index]) @@ -171,7 +179,8 @@ static void on_page_reordered(GtkNotebook *notebook, GtkWidget *child, guint pag } }
- int i, min = MIN(prev_index, page_num), max = MAX(prev_index, page_num); + min = MIN(prev_index, page_num); + max = MAX(prev_index, page_num); for (i = min; i < max; i++) { int tmp = tabs[i]; @@ -179,8 +188,6 @@ static void on_page_reordered(GtkNotebook *notebook, GtkWidget *child, guint pag tabs[i + 1] = tmp; } - int config_part_tabs; - int config_part_selected_index; if (!is_tabbed) { config_part_tabs = CP_OT_TABS; @@ -197,7 +204,7 @@ static void on_page_reordered(GtkNotebook *notebook, GtkWidget *child, guint pag config_part_selected_index = CP_TT_RSELECTED; } - int *array = g_malloc((length + 1) * sizeof(int)); + array = g_malloc((length + 1) * sizeof(int)); array[0] = length; memcpy(array + 1, tabs, length * sizeof(int)); @@ -218,9 +225,9 @@ static void on_page_removed(GtkNotebook *notebook, GtkWidget *child, guint page_ { gboolean is_left = (GTK_NOTEBOOK(debug_notebook_left) == notebook); gboolean is_tabbed = config_get_tabbed(); - int *tabs = NULL; gsize length; + int config_part;
if (!is_tabbed) tabs = config_get_tabs(&length); @@ -233,7 +240,6 @@ static void on_page_removed(GtkNotebook *notebook, GtkWidget *child, guint page_ memmove(tabs + 1, tabs, (length - 1) * sizeof(int)); tabs[0] = length - 1; - int config_part; if (!is_tabbed) config_part = CP_OT_TABS; else if (is_left) @@ -291,8 +297,7 @@ void dpaned_init(void) gtk_paned_add1(GTK_PANED(hpaned), debug_notebook_left); gtk_paned_add2(GTK_PANED(hpaned), debug_notebook_right);
- gboolean is_tabbed = config_get_tabbed(); - if (is_tabbed) + if (config_get_tabbed()) { gsize length; int *tab_ids, i; @@ -330,12 +335,13 @@ void dpaned_init(void) } else { + gsize i, length; + int *tab_ids; + g_object_ref(debug_notebook_right); gtk_container_remove(GTK_CONTAINER(hpaned), debug_notebook_right); - gsize length; - int *tab_ids = config_get_tabs(&length); - int i; + tab_ids = config_get_tabs(&length); for (i = 0; i < length; i++) { GtkWidget *tab = tabs_get_tab((tab_id)tab_ids[i]); @@ -379,12 +385,14 @@ void dpaned_set_tabbed(gboolean tabbed) if (!tabbed) { + gsize length; + int *tab_ids; + int i; + g_object_ref(debug_notebook_right); gtk_container_remove(GTK_CONTAINER(hpaned), debug_notebook_right); - gsize length; - int *tab_ids = config_get_tabs(&length); - int i; + tab_ids = config_get_tabs(&length); for (i = 0; i < length; i++) { GtkWidget *tab = tabs_get_tab((tab_id)tab_ids[i]); @@ -405,12 +413,14 @@ void dpaned_set_tabbed(gboolean tabbed) } else { + gsize length; + int i; + int *tab_ids; + gtk_paned_add2(GTK_PANED(hpaned), debug_notebook_right); g_object_unref(debug_notebook_right);
- gsize length; - int *tab_ids = config_get_right_tabs(&length); - int i; + tab_ids = config_get_right_tabs(&length); for (i = 0; i < length; i++) { GtkWidget *tab = tabs_get_tab((tab_id)tab_ids[i]);
Modified: debugger/src/envtree.c 44 files changed, 25 insertions(+), 19 deletions(-) =================================================================== @@ -75,10 +75,12 @@ enum */ static void add_empty_row(void) { + GtkTreeIter empty; + GtkTreePath *path; + if (empty_row) gtk_tree_row_reference_free(empty_row); - GtkTreeIter empty; gtk_list_store_append (store, &empty); gtk_list_store_set (store, &empty, NAME, "", @@ -86,7 +88,7 @@ static void add_empty_row(void) -1);
/* remeber reference */ - GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &empty); + path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &empty); empty_row = gtk_tree_row_reference_new(GTK_TREE_MODEL(store), path); gtk_tree_path_free(path); } @@ -110,13 +112,14 @@ static void delete_selected_rows(void) if (1 != gtk_tree_selection_count_selected_rows(selection) || gtk_tree_path_compare((GtkTreePath*)rows->data, empty_path)) { + GtkTreePath *path; /* get references to the selected rows and find out what to select after deletion */ GList *references = NULL; GList *iter = rows; while (iter) { - GtkTreePath *path = (GtkTreePath*)iter->data; + path = (GtkTreePath*)iter->data; if (!reference_to_select) { /* select upper sibling of the upper @@ -145,10 +148,10 @@ static void delete_selected_rows(void) iter = references; while (iter) { + GtkTreeIter titer; GtkTreeRowReference *reference = (GtkTreeRowReference*)iter->data; - GtkTreePath *path = gtk_tree_row_reference_get_path(reference); + path = gtk_tree_row_reference_get_path(reference);
- GtkTreeIter titer; gtk_tree_model_get_iter(model, &titer, path); gtk_list_store_remove(store, &titer);
@@ -158,7 +161,7 @@ static void delete_selected_rows(void)
/* set selection */ gtk_tree_selection_unselect_all(selection); - GtkTreePath *path = gtk_tree_row_reference_get_path(reference_to_select); + path = gtk_tree_row_reference_get_path(reference_to_select); gtk_tree_selection_select_path(selection, path); gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(tree), path, NULL, TRUE, 0.5, 0.5); gtk_tree_path_free(path); @@ -183,13 +186,15 @@ static void delete_selected_rows(void) */ static gboolean on_envtree_keypressed(GtkWidget *widget, GdkEvent *event, gpointer user_data) { + guint keyval; + /* do not allow deleting while debugging */ if(page_read_only) return FALSE; /* handling only Delete button pressing that means "delete selected rows" */ - guint keyval = ((GdkEventKey*)event)->keyval; + keyval = ((GdkEventKey*)event)->keyval; if (GDK_Delete == keyval) { @@ -231,10 +236,10 @@ static void on_render_value(GtkTreeViewColumn *tree_column, */ static void on_value_changed(GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer user_data) { + gchar *striped; GtkTreeIter iter; GtkTreePath *tree_path = gtk_tree_path_new_from_string (path); - - GtkTreePath *empty_path = gtk_tree_row_reference_get_path(empty_row); + GtkTreePath *empty_path = gtk_tree_row_reference_get_path(empty_row); gboolean empty = !gtk_tree_path_compare(tree_path, empty_path); gtk_tree_path_free(empty_path);
@@ -243,8 +248,7 @@ static void on_value_changed(GtkCellRendererText *renderer, gchar *path, gchar * &iter, tree_path); - gchar *striped = g_strstrip(g_strdup(new_text)); - + striped = g_strstrip(g_strdup(new_text)); if (!strlen(striped)) { /* if new value is empty string, if it's a new row - do nothig @@ -336,10 +340,10 @@ static void on_value_editing_cancelled(GtkCellRenderer *renderer, gpointer user_ */ static void on_name_changed(GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer user_data) { + gchar *oldvalue, *striped; GtkTreeIter iter; GtkTreePath *tree_path = gtk_tree_path_new_from_string (path); GtkTreePath *empty_path = gtk_tree_row_reference_get_path(empty_row); - gboolean empty = !gtk_tree_path_compare(tree_path, empty_path);
gtk_tree_model_get_iter ( @@ -347,15 +351,13 @@ static void on_name_changed(GtkCellRendererText *renderer, gchar *path, gchar *n &iter, tree_path); - gchar* oldvalue; gtk_tree_model_get ( model, &iter, NAME, &oldvalue, -1);
- gchar *striped = g_strstrip(g_strdup(new_text)); - + striped = g_strstrip(g_strdup(new_text)); if (!strlen(striped)) { /* if name is empty - offer to delete variable */ @@ -368,7 +370,7 @@ static void on_name_changed(GtkCellRendererText *renderer, gchar *path, gchar *n } } else if (strcmp(oldvalue, striped)) - { + { gtk_list_store_set(store, &iter, NAME, striped, -1); if (empty) { @@ -393,6 +395,10 @@ static void on_name_changed(GtkCellRendererText *renderer, gchar *path, gchar *n */ GtkWidget* envtree_init(void) { + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + GtkTreeSelection *selection; + store = gtk_list_store_new ( N_COLUMNS, G_TYPE_STRING, @@ -422,15 +428,15 @@ GtkWidget* envtree_init(void) gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column_value);
/* Last invisible column */ - GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); - GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes ("", renderer, "text", LAST_VISIBLE, NULL); + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("", renderer, "text", LAST_VISIBLE, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
/* add empty row */ add_empty_row();
/* set multiple selection */ - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
return tree;
Modified: debugger/src/keys.c 6 files changed, 4 insertions(+), 2 deletions(-) =================================================================== @@ -63,8 +63,10 @@ */ gboolean keys_init(void) { + int _index, count; + /* keys count */ - int count = 0; + count = 0; while (keys[count++].key_name) ; @@ -76,7 +78,7 @@ gboolean keys_init(void) keys_callback);
/* add keys */ - int _index = 0; + _index = 0; while (keys[_index].key_name) { keybindings_set_item(
Modified: debugger/src/plugin.c 6 files changed, 4 insertions(+), 2 deletions(-) =================================================================== @@ -89,6 +89,9 @@ void on_paned_mode_changed(GtkToggleButton *button, gpointer user_data) * Note: data is the same as geany_data. */ void plugin_init(GeanyData *data) { + GtkWidget* vbox; + int i; + keys_init(); pixbufs_init(); @@ -116,7 +119,7 @@ void plugin_init(GeanyData *data) dpaned_init(); tpage_pack_widgets(config_get_tabbed());
- GtkWidget* vbox = btnpanel_create(on_paned_mode_changed); + vbox = btnpanel_create(on_paned_mode_changed);
gtk_box_pack_start(GTK_BOX(hbox), dpaned_get_paned(), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); @@ -137,7 +140,6 @@ void plugin_init(GeanyData *data) );
/* set calltips for all currently opened documents */ - int i; foreach_document(i) { scintilla_send_message(document_index(i)->editor->sci, SCI_SETMOUSEDWELLTIME, 500, 0);
Modified: debugger/src/stree.c 81 files changed, 48 insertions(+), 33 deletions(-) =================================================================== @@ -106,12 +106,12 @@ static void on_frame_arrow_clicked(CellRendererFrameIcon *cell_renderer, gchar * */ static gboolean on_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip, gpointer user_data) { + GtkTreePath *tpath = NULL; + GtkTreeViewColumn *column = NULL; gboolean show = FALSE; int bx, by; gtk_tree_view_convert_widget_to_bin_window_coords(GTK_TREE_VIEW(widget), x, y, &bx, &by);
- GtkTreePath *tpath = NULL; - GtkTreeViewColumn *column = NULL; if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bx, by, &tpath, &column, NULL, NULL)) { if (2 == gtk_tree_path_get_depth(tpath)) @@ -121,10 +121,10 @@ static gboolean on_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean key if (column == gtk_tree_view_get_column(GTK_TREE_VIEW(widget), S_FILEPATH)) { + gchar *path = NULL; GtkTreeIter iter; gtk_tree_model_get_iter(model, &iter, tpath); - gchar *path = NULL; gtk_tree_model_get(model, &iter, S_FILEPATH, &path, -1); gtk_tooltip_set_text(tooltip, path); @@ -185,10 +185,11 @@ static void on_render_filename(GtkTreeViewColumn *tree_column, GtkCellRenderer * if (1 != gtk_tree_path_get_depth(tpath)) { + const gchar *name; gchar *path = NULL; gtk_tree_model_get(model, iter, S_FILEPATH, &path, -1);
- const gchar *name = path ? g_basename(path) : NULL; + name = path ? g_basename(path) : NULL; g_object_set(cell, "text", name ? name : path, NULL);
if (path) @@ -223,13 +224,13 @@ static gboolean on_msgwin_button_press(GtkWidget *widget, GdkEventButton *event,
if (!gtk_tree_path_compare(pressed_path, selected_path)) { + gboolean have_source; GtkTreeIter iter; gtk_tree_model_get_iter ( model, &iter, pressed_path);
- gboolean have_source; gtk_tree_model_get ( model, &iter, @@ -269,22 +270,26 @@ static gboolean on_msgwin_button_press(GtkWidget *widget, GdkEventButton *event, */ static void on_selection_changed(GtkTreeSelection *treeselection, gpointer user_data) { + GList *rows; + GtkTreePath *path; + if (!gtk_tree_selection_count_selected_rows(treeselection)) { return; } - GList *rows = gtk_tree_selection_get_selected_rows(treeselection, &model); - GtkTreePath *path = (GtkTreePath*)rows->data; + rows = gtk_tree_selection_get_selected_rows(treeselection, &model); + path = (GtkTreePath*)rows->data;
if (2 == gtk_tree_path_get_depth(path)) { + gboolean have_source; GtkTreeIter iter; + gtk_tree_model_get_iter ( model, &iter, path); - gboolean have_source; gtk_tree_model_get ( gtk_tree_view_get_model(GTK_TREE_VIEW(tree)), &iter, @@ -317,6 +322,9 @@ static void on_selection_changed(GtkTreeSelection *treeselection, gpointer user_ */ GtkWidget* stree_init(move_to_line_cb ml, select_frame_cb sf) { + GtkTreeViewColumn *column; + GtkCellRenderer *renderer; + move_to_line = ml; select_frame = sf;
@@ -350,8 +358,6 @@ GtkWidget* stree_init(move_to_line_cb ml, select_frame_cb sf) g_signal_connect(G_OBJECT(tree), "query-tooltip", G_CALLBACK (on_query_tooltip), NULL);
/* creating columns */ - GtkTreeViewColumn *column; - /* address */ column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, _("Address")); @@ -364,35 +370,35 @@ GtkWidget* stree_init(move_to_line_cb ml, select_frame_cb sf) gtk_tree_view_column_set_cell_data_func(column, renderer_arrow, on_render_arrow, NULL, NULL); g_signal_connect (G_OBJECT(renderer_arrow), "clicked", G_CALLBACK(on_frame_arrow_clicked), NULL);
- GtkCellRenderer *renderer_address = gtk_cell_renderer_text_new (); - gtk_tree_view_column_pack_start(column, renderer_address, TRUE); - gtk_tree_view_column_set_attributes(column, renderer_address, "text", S_ADRESS, NULL); + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_column_pack_start(column, renderer, TRUE); + gtk_tree_view_column_set_attributes(column, renderer, "text", S_ADRESS, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
/* function */ - GtkCellRenderer *renderer_function = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes (_("Function"), renderer_function, "text", S_FUNCTION, NULL); + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes (_("Function"), renderer, "text", S_FUNCTION, NULL); gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); /* file */ - GtkCellRenderer *renderer_file = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes (_("File"), renderer_file, NULL); + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes (_("File"), renderer, NULL); gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); - gtk_tree_view_column_set_cell_data_func(column, renderer_file, on_render_filename, NULL, NULL); + gtk_tree_view_column_set_cell_data_func(column, renderer, on_render_filename, NULL, NULL); /* line */ - GtkCellRenderer *renderer_line = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes (_("Line"), renderer_line, "text", S_LINE, NULL); - gtk_tree_view_column_set_cell_data_func(column, renderer_line, on_render_line, NULL, NULL); + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes (_("Line"), renderer, "text", S_LINE, NULL); + gtk_tree_view_column_set_cell_data_func(column, renderer, on_render_line, NULL, NULL); gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
/* Last invisible column */ - GtkCellRenderer *renderer_last = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("", renderer_last, "text", S_LAST_VISIBLE, NULL); + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("", renderer, "text", S_LAST_VISIBLE, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
/* create threads hash table */ @@ -412,12 +418,12 @@ GtkWidget* stree_init(move_to_line_cb ml, select_frame_cb sf) void stree_add(frame *f) { GtkTreeRowReference *reference = (GtkTreeRowReference*)g_hash_table_lookup(threads, (gpointer)active_thread_id); + GtkTreeIter frame_iter; GtkTreeIter thread_iter; GtkTreePath *path = gtk_tree_row_reference_get_path(reference); gtk_tree_model_get_iter(model, &thread_iter, path); gtk_tree_path_free(path);
- GtkTreeIter frame_iter; gtk_tree_store_insert_before(store, &frame_iter, &thread_iter, 0);
gtk_tree_store_set (store, &frame_iter, @@ -443,23 +449,28 @@ void stree_clear(void) */ void stree_select_first_frame(gboolean make_active) { + GtkTreeRowReference *reference; + GtkTreeIter thread_iter, frame_iter; + GtkTreePath *active_path; + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree)); - GtkTreeRowReference *reference = (GtkTreeRowReference*)g_hash_table_lookup(threads, (gpointer)active_thread_id); - GtkTreeIter thread_iter, frame_iter; - GtkTreePath *active_path = gtk_tree_row_reference_get_path(reference); + reference = (GtkTreeRowReference*)g_hash_table_lookup(threads, (gpointer)active_thread_id); + active_path = gtk_tree_row_reference_get_path(reference); gtk_tree_model_get_iter(model, &thread_iter, active_path); gtk_tree_path_free(active_path); if(gtk_tree_model_iter_children(model, &frame_iter, &thread_iter)) { + GtkTreePath* path; + if (make_active) { gtk_tree_store_set (store, &frame_iter, S_ACTIVE, TRUE, -1); active_frame_index = 0; }
- GtkTreePath* path = gtk_tree_model_get_path(model, &frame_iter); - + path = gtk_tree_model_get_path(model, &frame_iter); + gtk_tree_selection_select_path ( gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)), path); @@ -485,7 +496,11 @@ void stree_destroy(void) */ void stree_add_thread(int thread_id) { + gchar *thread_label; + GtkTreePath *tpath; + GtkTreeRowReference *reference; GtkTreeIter thread_iter, new_thread_iter; + if (gtk_tree_model_get_iter_first(model, &thread_iter)) { GtkTreeIter *consecutive = NULL; @@ -515,15 +530,15 @@ void stree_add_thread(int thread_id) gtk_tree_store_append (store, &new_thread_iter, NULL); }
- gchar *thread_label = g_strdup_printf(_("Thread %i"), thread_id); + thread_label = g_strdup_printf(_("Thread %i"), thread_id); gtk_tree_store_set (store, &new_thread_iter, S_ADRESS, thread_label, S_THREAD_ID, thread_id, -1); g_free(thread_label);
- GtkTreePath *tpath = gtk_tree_model_get_path(model, &new_thread_iter); - GtkTreeRowReference *reference = gtk_tree_row_reference_new(model, tpath); + tpath = gtk_tree_model_get_path(model, &new_thread_iter); + reference = gtk_tree_row_reference_new(model, tpath); g_hash_table_insert(threads, (gpointer)(long)thread_id,(gpointer)reference); gtk_tree_path_free(tpath); } @@ -552,12 +567,12 @@ void stree_remove_thread(int thread_id) void stree_remove_frames(void) { GtkTreeRowReference *reference = (GtkTreeRowReference*)g_hash_table_lookup(threads, (gpointer)active_thread_id); + GtkTreeIter child; GtkTreeIter thread_iter; GtkTreePath *tpath = gtk_tree_row_reference_get_path(reference); gtk_tree_model_get_iter(model, &thread_iter, tpath); gtk_tree_path_free(tpath);
- GtkTreeIter child; if (gtk_tree_model_iter_children(model, &child, &thread_iter)) { while(gtk_tree_store_remove(GTK_TREE_STORE(model), &child))
Modified: debugger/src/tpage.c 57 files changed, 36 insertions(+), 21 deletions(-) =================================================================== @@ -97,7 +97,11 @@ static void on_arguments_changed(GtkTextBuffer *textbuffer, gpointer user_data) */ static void on_target_browse_clicked(GtkButton *button, gpointer user_data) { + gchar path[FILENAME_MAX]; + const gchar *prevfile; + gchar *prevdir; GtkWidget *dialog; + dialog = gtk_file_chooser_dialog_new (_("Choose target file"), NULL, GTK_FILE_CHOOSER_ACTION_OPEN, @@ -105,10 +109,8 @@ static void on_target_browse_clicked(GtkButton *button, gpointer user_data) GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); - gchar path[FILENAME_MAX]; - - const gchar *prevfile = gtk_entry_get_text(GTK_ENTRY(target_name)); - gchar *prevdir = g_path_get_dirname(prevfile); + prevfile = gtk_entry_get_text(GTK_ENTRY(target_name)); + prevdir = g_path_get_dirname(prevfile); if (strcmp(".", prevdir)) strcpy(path, prevdir); else @@ -139,10 +141,12 @@ void tpage_pack_widgets(gboolean tabbed) GList *children = gtk_container_get_children(GTK_CONTAINER(tab_target)); if (children) { + int i; + oldroot = (GtkWidget*)children->data; /* unparent widgets */ - int i = 0; + i = 0; while (widgets[i]) { g_object_ref(*widgets[i]); @@ -155,11 +159,13 @@ void tpage_pack_widgets(gboolean tabbed) if (tabbed) { + GtkWidget *hbox, *rbox, *lbox; + root = gtk_vbox_new(FALSE, SPACING); gtk_container_set_border_width(GTK_CONTAINER(root), ROOT_BORDER_WIDTH); /* filename */ - GtkWidget *hbox = gtk_hbox_new(FALSE, SPACING); + hbox = gtk_hbox_new(FALSE, SPACING); gtk_box_pack_start(GTK_BOX(root), hbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), target_label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), target_name, TRUE, TRUE, 0); @@ -170,8 +176,8 @@ void tpage_pack_widgets(gboolean tabbed) gtk_box_pack_start(GTK_BOX(root), hbox, TRUE, TRUE, 0);
/* lower left and right vboxes */ - GtkWidget *lbox = gtk_vbox_new(FALSE, SPACING); - GtkWidget *rbox = gtk_vbox_new(FALSE, SPACING); + lbox = gtk_vbox_new(FALSE, SPACING); + rbox = gtk_vbox_new(FALSE, SPACING); gtk_box_pack_start(GTK_BOX(hbox), lbox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), rbox, TRUE, TRUE, 0);
@@ -188,11 +194,13 @@ void tpage_pack_widgets(gboolean tabbed) } else { + GtkWidget *lbox, *rbox, *hbox; + root = gtk_hbox_new(TRUE, SPACING); gtk_container_set_border_width(GTK_CONTAINER(root), ROOT_BORDER_WIDTH);
- GtkWidget *lbox = gtk_vbox_new(FALSE, SPACING); - GtkWidget *rbox = gtk_vbox_new(FALSE, SPACING); + lbox = gtk_vbox_new(FALSE, SPACING); + rbox = gtk_vbox_new(FALSE, SPACING); gtk_box_pack_start(GTK_BOX(root), lbox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(root), rbox, TRUE, TRUE, 0);
@@ -200,7 +208,7 @@ void tpage_pack_widgets(gboolean tabbed) gtk_box_pack_start(GTK_BOX(lbox), env_frame, TRUE, TRUE, 0);
/* target */ - GtkWidget *hbox = gtk_hbox_new(FALSE, SPACING); + hbox = gtk_hbox_new(FALSE, SPACING); gtk_box_pack_start(GTK_BOX(hbox), target_label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), target_name, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), target_button_browse, FALSE, FALSE, 0); @@ -234,6 +242,11 @@ void tpage_pack_widgets(gboolean tabbed) */ static void tpage_create_widgets(void) { + GList *modules, *iter; + GtkWidget *hbox; + GtkTextBuffer *buffer; + GtkWidget *tree; + /* target */ target_label = gtk_label_new(_("Target:")); target_name = gtk_entry_new (); @@ -245,23 +258,21 @@ static void tpage_create_widgets(void) /* debugger */ debugger_label = gtk_label_new(_("Debugger:")); debugger_cmb = gtk_combo_box_new_text(); - GList *modules = debug_get_modules(); - GList *iter = modules; - while (iter) + modules = debug_get_modules(); + for (iter = modules; iter; iter = iter->next) { gtk_combo_box_append_text(GTK_COMBO_BOX(debugger_cmb), (gchar*)iter->data); - iter = iter->next; } g_list_free(modules); gtk_combo_box_set_active(GTK_COMBO_BOX(debugger_cmb), 0);
/* arguments */ args_frame = gtk_frame_new(_("Command Line Arguments")); - GtkWidget *hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 5); args_textview = gtk_text_view_new (); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(args_textview), GTK_WRAP_CHAR); - GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(args_textview)); + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(args_textview)); g_signal_connect(G_OBJECT(buffer), "changed", G_CALLBACK (on_arguments_changed), NULL); gtk_container_add(GTK_CONTAINER(hbox), args_textview); gtk_container_add(GTK_CONTAINER(args_frame), hbox); @@ -270,7 +281,7 @@ static void tpage_create_widgets(void) env_frame = gtk_frame_new(_("Environment Variables")); hbox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 5); - GtkWidget *tree = envtree_init(); + tree = envtree_init(); gtk_container_add(GTK_CONTAINER(hbox), tree); gtk_container_add(GTK_CONTAINER(env_frame), hbox); } @@ -318,6 +329,8 @@ void tpage_add_environment(const gchar *name, const gchar *value) */ void tpage_clear(void) { + GtkTextBuffer *buffer; + /* target */ gtk_entry_set_text(GTK_ENTRY(target_name), ""); @@ -325,7 +338,7 @@ void tpage_clear(void) gtk_combo_box_set_active(GTK_COMBO_BOX(debugger_cmb), 0);
/* arguments */ - GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(args_textview)); + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(args_textview)); gtk_text_buffer_set_text(buffer, "", -1);
/* environment variables */ @@ -361,14 +374,16 @@ gchar* tpage_get_debugger(void) */ gchar* tpage_get_commandline(void) { + gchar *args; + gchar **lines; GtkTextIter start, end; GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(args_textview)); gtk_text_buffer_get_start_iter(buffer, &start); gtk_text_buffer_get_end_iter(buffer, &end); - gchar *args = gtk_text_buffer_get_text(buffer, &start, &end, FALSE); - gchar** lines = g_strsplit(args, "\n", 0); + args = gtk_text_buffer_get_text(buffer, &start, &end, FALSE); + lines = g_strsplit(args, "\n", 0); g_free(args); args = g_strjoinv(" ", lines); g_strfreev(lines);
Modified: debugger/src/vtree.c 10 files changed, 6 insertions(+), 4 deletions(-) =================================================================== @@ -91,9 +91,10 @@ void render_icon(GtkTreeViewColumn *tree_column,
if (VT_NONE != vt && VT_CHILD != vt) { + GdkPixbuf *pixbuf = NULL; + g_object_set(cell, "visible", TRUE, NULL);
- GdkPixbuf *pixbuf = NULL; if (VT_ARGUMENT == vt) pixbuf = argument_pixbuf; else if (VT_LOCAL == vt) @@ -137,6 +138,9 @@ void render_value(GtkTreeViewColumn *tree_column, GtkWidget* vtree_create(watch_render_name on_render_name, watch_expression_changed on_expression_changed) { /* create tree view */ + GtkCellRenderer *renderer; + GtkCellRenderer *icon_renderer; + GtkTreeViewColumn *column; GtkTreeStore* store = gtk_tree_store_new ( W_N_COLUMNS, G_TYPE_STRING, @@ -163,8 +167,6 @@ GtkWidget* vtree_create(watch_render_name on_render_name, watch_expression_chang }
/* create columns */ - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; /* Name */ column = gtk_tree_view_column_new(); @@ -174,7 +176,7 @@ GtkWidget* vtree_create(watch_render_name on_render_name, watch_expression_chang gtk_tree_view_column_pack_end(column, renderer, TRUE); gtk_tree_view_column_set_attributes(column, renderer, "text", W_NAME, NULL); - GtkCellRenderer *icon_renderer = gtk_cell_renderer_pixbuf_new (); + icon_renderer = gtk_cell_renderer_pixbuf_new (); g_object_set(icon_renderer, "follow-state", TRUE, NULL); gtk_tree_view_column_pack_end(column, icon_renderer, FALSE); gtk_tree_view_column_set_cell_data_func(column, icon_renderer, render_icon, NULL, NULL);
Modified: debugger/src/watch_model.c 27 files changed, 15 insertions(+), 12 deletions(-) =================================================================== @@ -89,13 +89,13 @@ inline static void add_stub(GtkTreeStore *store, GtkTreeIter *parent) inline static void append_variables(GtkTreeView *tree, GtkTreeIter *parent, GList *vars, gboolean mark_changed, gboolean expand) { + int current_position = 0; GtkTreeModel *model = gtk_tree_view_get_model(tree); GtkTreeStore *store = GTK_TREE_STORE(model); - GtkTreeIter child; + GHashTable *ht = NULL;
/* get existing rows */ - GHashTable *ht = NULL; if (gtk_tree_model_iter_n_children(model, parent)) { /* collect all existing rows */ @@ -117,7 +117,6 @@ inline static void append_variables(GtkTreeView *tree, GtkTreeIter *parent, GLis while(gtk_tree_model_iter_next(model, &child)); } - int current_position = 0; while (vars) { variable *v = vars->data; @@ -235,13 +234,13 @@ void expand_stub(GtkTreeView *tree, GtkTreeIter *parent, GList *vars) { GtkTreeModel *model = gtk_tree_view_get_model(tree); GtkTreeStore *store = GTK_TREE_STORE(model); + GtkTreeIter stub; + gboolean changed;
/* remember stub iterator */ - GtkTreeIter stub; gtk_tree_model_iter_children(model, &stub, parent);
/* check whether arent has been changed */ - gboolean changed; gtk_tree_model_get(model, parent, W_CHANGED, &changed, -1); @@ -306,11 +305,15 @@ void update_variables(GtkTreeView *tree, GtkTreeIter *parent, GList *vars) /* if have children - lets check and update their values */ while (TRUE) { - /* set variable value - 1. get the variable params */ gchar *name; gchar *internal; gchar *value; + GList *var; @@ Diff output truncated at 100000 characters. @@
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: TBD).
plugins-commits@lists.geany.org