diff options
| author | Cyrille Bagard <nocbos@gmail.com> | 2017-11-12 20:03:12 (GMT) | 
|---|---|---|
| committer | Cyrille Bagard <nocbos@gmail.com> | 2017-11-12 20:03:12 (GMT) | 
| commit | 771f21b9d5dd2b394359304a660418bbc84befda (patch) | |
| tree | 60d6a9350d388f2db7ad571e6edddf46a99444f2 /src/gui/menus/edition.c | |
| parent | de62d34d2dc6135b42af7f8a103c8c7af09fd54f (diff) | |
Defined a new interface for displaying loaded contents.
Diffstat (limited to 'src/gui/menus/edition.c')
| -rw-r--r-- | src/gui/menus/edition.c | 35 | 
1 files changed, 23 insertions, 12 deletions
diff --git a/src/gui/menus/edition.c b/src/gui/menus/edition.c index 2491e3d..848d04c 100644 --- a/src/gui/menus/edition.c +++ b/src/gui/menus/edition.c @@ -313,7 +313,7 @@ static void mcb_edition_goto(GtkMenuItem *menuitem, GMenuBar *bar)      GObject *ref;                           /* Espace de référencements    */      GtkWidget *dialog;                      /* Boîte de dialogue à montrer */      vmpa2t *addr;                           /* Adresse de destination      */ -    GtkDisplayPanel *panel;                 /* Afficheur effectif de code  */ +    GLoadedPanel *panel;                    /* Afficheur effectif de code  */      ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(bar));      dialog = create_goto_dialog(GTK_WINDOW(ref)); @@ -323,7 +323,10 @@ static void mcb_edition_goto(GtkMenuItem *menuitem, GMenuBar *bar)          addr = get_address_from_goto_dialog(dialog);          panel = get_current_view(); -        gtk_display_panel_request_move(panel, addr); + +        if (GTK_IS_DISPLAY_PANEL(panel)) +            gtk_display_panel_request_move(GTK_DISPLAY_PANEL(panel), addr); +          g_object_unref(G_OBJECT(panel));          delete_vmpa(addr); @@ -351,7 +354,7 @@ static void mcb_edition_goto(GtkMenuItem *menuitem, GMenuBar *bar)  static void mcb_edition_switch_numeric_operand(GtkMenuItem *menuitem, gpointer unused)  {      ImmOperandDisplay display;              /* Type de basculement         */ -    GtkDisplayPanel *panel;                 /* Afficheur effectif de code  */ +    GLoadedPanel *panel;                    /* Afficheur effectif de code  */      GBufferLine *line;                      /* Ligne de position courante  */      GObject *creator;                       /* Créateur à l'orgine du seg. */      GDbSwitcher *switcher;                  /* Bascule à mettre en place   */ @@ -364,7 +367,8 @@ static void mcb_edition_switch_numeric_operand(GtkMenuItem *menuitem, gpointer u      panel = get_current_view(); -    if (gtk_display_panel_get_position(panel, &line, &creator)) +    if (GTK_IS_DISPLAY_PANEL(panel) +        && gtk_display_panel_get_position(GTK_DISPLAY_PANEL(panel), &line, &creator))      {          assert(G_IS_IMM_OPERAND(creator)); @@ -429,7 +433,7 @@ static void mcb_edition_go_back(GtkMenuItem *menuitem, GMenuBar *bar)  static void mcb_edition_follow_ref(GtkMenuItem *menuitem, gpointer unused)  { -    GtkDisplayPanel *panel;                 /* Afficheur effectif de code  */ +    GLoadedPanel *panel;                    /* Afficheur effectif de code  */      GBufferLine *line;                      /* Ligne de position courante  */      GObject *creator;                       /* Créateur à l'orgine du seg. */      bool defined;                           /* Adresse définie ?           */ @@ -438,7 +442,8 @@ static void mcb_edition_follow_ref(GtkMenuItem *menuitem, gpointer unused)      panel = get_current_view(); -    if (gtk_display_panel_get_position(panel, &line, &creator)) +    if (GTK_IS_DISPLAY_PANEL(panel) +        && gtk_display_panel_get_position(GTK_DISPLAY_PANEL(panel), &line, &creator))      {          assert(creator != NULL); @@ -460,7 +465,7 @@ static void mcb_edition_follow_ref(GtkMenuItem *menuitem, gpointer unused)          }          if (defined) -            gtk_display_panel_request_move(panel, &addr); +            gtk_display_panel_request_move(GTK_DISPLAY_PANEL(panel), &addr);          g_object_unref(creator);          g_object_unref(G_OBJECT(line)); @@ -487,7 +492,7 @@ static void mcb_edition_follow_ref(GtkMenuItem *menuitem, gpointer unused)  static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar)  { -    GtkDisplayPanel *panel;                 /* Afficheur effectif de code  */ +    GLoadedPanel *panel;                    /* Afficheur effectif de code  */      GBufferLine *line;                      /* Ligne de position courante  */      const mrange_t *range;                  /* Couverture en mémoire       */      GLoadedBinary *binary;                  /* Représentation binaire      */ @@ -499,7 +504,8 @@ static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar)      panel = get_current_view(); -    if (gtk_display_panel_get_position(panel, &line, NULL)) +    if (GTK_IS_DISPLAY_PANEL(panel) +        && gtk_display_panel_get_position(GTK_DISPLAY_PANEL(panel), &line, NULL))      {          range = g_buffer_line_get_range(line); @@ -524,7 +530,7 @@ static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar)          {              addr = get_address_from_gotox_dialog(dialog); -            gtk_display_panel_request_move(panel, addr); +            gtk_display_panel_request_move(GTK_DISPLAY_PANEL(panel), addr);              delete_vmpa(addr); @@ -562,7 +568,7 @@ static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar)  static void mcb_edition_bookmarks_toggle(GtkMenuItem *menuitem, GMenuBar *bar)  { -    GtkDisplayPanel *panel;                 /* Vue offrant l'affichage     */ +    GLoadedPanel *panel;                    /* Vue offrant l'affichage     */      const vmpa2t *curloc;                   /* Localisation d'un curseur   */      GLoadedBinary *binary;                  /* Binaire en cours d'étude    */      GDbCollection *collec;                  /* Collection à manipuler      */ @@ -576,7 +582,10 @@ static void mcb_edition_bookmarks_toggle(GtkMenuItem *menuitem, GMenuBar *bar)      panel = get_current_view(); -    curloc = gtk_display_panel_get_caret_location(panel); +    if (!GTK_IS_DISPLAY_PANEL(panel)) +        goto done_with_panel; + +    curloc = gtk_display_panel_get_caret_location(GTK_DISPLAY_PANEL(panel));      /* Accès à la collection */ @@ -638,6 +647,8 @@ static void mcb_edition_bookmarks_toggle(GtkMenuItem *menuitem, GMenuBar *bar)      g_object_unref(G_OBJECT(collec));      g_object_unref(G_OBJECT(binary)); + done_with_panel: +      g_object_unref(G_OBJECT(panel));  }  | 
