diff options
| author | Cyrille Bagard <nocbos@gmail.com> | 2015-02-25 21:57:42 (GMT) | 
|---|---|---|
| committer | Cyrille Bagard <nocbos@gmail.com> | 2015-02-25 21:57:42 (GMT) | 
| commit | 4724b73c5161140222cab3c61bb5b3d0c8dde360 (patch) | |
| tree | d341f43bacdad465ddae8c8b6c076a573c53e43d /src/project.c | |
| parent | 9ff8702e5c51c7916e239caee13b974dccff6413 (diff) | |
Provided tweaks about positions when looking for address coordinates.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@480 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/project.c')
| -rw-r--r-- | src/project.c | 30 | 
1 files changed, 21 insertions, 9 deletions
| diff --git a/src/project.c b/src/project.c index f3a2702..c8d23f7 100644 --- a/src/project.c +++ b/src/project.c @@ -324,24 +324,36 @@ const char *g_study_project_get_filename(const GStudyProject *project)  void g_study_project_add_loaded_binary(GLoadedBinary *binary, GStudyProject *project)  {      size_t index;                           /* Indice du nouveau binaire   */ -    GBinFormat *format;                     /* Format associé au binaire   */ -    GBinSymbol *symbol;                     /* Point d'entrée trouvé       */ -    const mrange_t *range;                  /* Emplacement de ce point     */      index = g_study_project_attach_binary(project, binary); -    g_panel_item_dock(G_PANEL_ITEM(project->binaries[index]->item)); +    gboolean scroll_for_the_first_time(GtkWidget *widget, GdkEvent *event, GLoadedBinary *binary) +    { +        GBinFormat *format;                 /* Format associé au binaire   */ +        GBinSymbol *symbol;                 /* Point d'entrée trouvé       */ +        const mrange_t *range;              /* Emplacement de ce point     */ -    format = G_BIN_FORMAT(g_loaded_binary_get_format(binary)); +        g_signal_handlers_disconnect_by_func(widget, G_CALLBACK(scroll_for_the_first_time), binary); -    if (g_binary_format_find_symbol_by_label(format, "entry_point", &symbol)) -    { -        range = g_binary_symbol_get_range(symbol); +        format = G_BIN_FORMAT(g_loaded_binary_get_format(binary)); -        gtk_view_panel_scroll_to_address(project->binaries[index]->views[BVW_BLOCK], get_mrange_addr(range)); +        if (g_binary_format_find_symbol_by_label(format, "entry_point", &symbol)) +        { +            range = g_binary_symbol_get_range(symbol); + +            gtk_view_panel_scroll_to_address(GTK_VIEW_PANEL(widget), get_mrange_addr(range), SPT_CENTER); + +        } + +        return FALSE;      } +    g_signal_connect(project->binaries[index]->views[BVW_BLOCK], "size-allocate", +                     G_CALLBACK(scroll_for_the_first_time), binary); + +    g_panel_item_dock(G_PANEL_ITEM(project->binaries[index]->item)); +  } | 
