summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-12-21 14:58:27 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-12-21 14:58:27 (GMT)
commit223c2d906ccdb1ae680a474884448c799878a06f (patch)
tree7da08923299dfd950e34f4041e6967d1000c8f99 /src
parent6a444b273cf812c080c57d36a43436bf4aa4d55e (diff)
Updated the graph view when updating the current location.
Diffstat (limited to 'src')
-rw-r--r--src/glibext/gloadedpanel-int.h4
-rw-r--r--src/glibext/gloadedpanel.c24
-rw-r--r--src/glibext/gloadedpanel.h3
-rw-r--r--src/gtkext/gtkblockdisplay.c28
-rw-r--r--src/gtkext/gtkdisplaypanel-int.h10
-rw-r--r--src/gtkext/gtkdisplaypanel.c35
-rw-r--r--src/gtkext/gtkgraphdisplay.c51
-rw-r--r--src/gui/menus/view.c2
8 files changed, 22 insertions, 135 deletions
diff --git a/src/glibext/gloadedpanel-int.h b/src/glibext/gloadedpanel-int.h
index 36a1437..f9c451c 100644
--- a/src/glibext/gloadedpanel-int.h
+++ b/src/glibext/gloadedpanel-int.h
@@ -38,9 +38,6 @@ typedef GLoadedContent * (* get_loaded_panel_content_fc) (const GLoadedPanel *);
/* Fournit le position courante dans un panneau de chargement. */
typedef GLineCursor * (* get_loaded_cursor_fc) (const GLoadedPanel *);
-/* Définit le position courante dans un panneau de chargement. */
-typedef void (* set_loaded_cursor_fc) (GLoadedPanel *, const GLineCursor *);
-
/* S'assure qu'un emplacement donné est visible à l'écran. */
typedef void (* scroll_loaded_to_cursor_fc) (GLoadedPanel *, const GLineCursor *, ScrollPositionTweak, bool);
@@ -59,7 +56,6 @@ struct _GLoadedPanelIface
get_loaded_panel_content_fc get_content;/* Récupération du contenu */
get_loaded_cursor_fc get_cursor; /* Fourniture d'une position */
- set_loaded_cursor_fc set_cursor; /* Application d'une position */
scroll_loaded_to_cursor_fc scroll; /* Défilement de la vue */
cache_loaded_glance_fc cache_glance; /* Cache de la mignature */
diff --git a/src/glibext/gloadedpanel.c b/src/glibext/gloadedpanel.c
index ead34b7..76af0d6 100644
--- a/src/glibext/gloadedpanel.c
+++ b/src/glibext/gloadedpanel.c
@@ -151,30 +151,6 @@ GLineCursor *g_loaded_panel_get_cursor(const GLoadedPanel *panel)
/******************************************************************************
* *
-* Paramètres : panel = composant GTK à mettre à jour. *
-* cursor = informations relatives à la position du curseur. *
-* *
-* Description : Définit le position courante dans un panneau de chargement. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_loaded_panel_set_cursor(GLoadedPanel *panel, const GLineCursor *cursor)
-{
- GLoadedPanelIface *iface; /* Interface utilisée */
-
- iface = G_LOADED_PANEL_GET_IFACE(panel);
-
- iface->set_cursor(panel, cursor);
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : panel = composant GTK à manipuler. *
* cursor = emplacement à cibler pour un déplacement. *
* save = le changement est-il majeur ? *
diff --git a/src/glibext/gloadedpanel.h b/src/glibext/gloadedpanel.h
index 50ea058..9d460c7 100644
--- a/src/glibext/gloadedpanel.h
+++ b/src/glibext/gloadedpanel.h
@@ -62,9 +62,6 @@ GLoadedContent *g_loaded_panel_get_content(const GLoadedPanel *);
/* Fournit le position courante dans un panneau de chargement. */
GLineCursor *g_loaded_panel_get_cursor(const GLoadedPanel *);
-/* Définit le position courante dans un panneau de chargement. */
-void g_loaded_panel_set_cursor(GLoadedPanel *, const GLineCursor *);
-
/* Demande à qui veut répondre un déplacement du curseur. */
void g_loaded_panel_request_move(GLoadedPanel *, const GLineCursor *, gboolean);
diff --git a/src/gtkext/gtkblockdisplay.c b/src/gtkext/gtkblockdisplay.c
index c8d12ea..97136c9 100644
--- a/src/gtkext/gtkblockdisplay.c
+++ b/src/gtkext/gtkblockdisplay.c
@@ -72,9 +72,6 @@ static gboolean gtk_block_display_query_tooltip(GtkWidget *, gint, gint, gboolea
/* Redessine l'affichage suite à un changement visuel. */
static gboolean gtk_block_display_need_redraw(GtkBlockDisplay *, GBufferView *);
-/* Définit le position courante dans un panneau de chargement. */
-static void gtk_block_display_set_cursor(GtkBlockDisplay *, const GLineCursor *);
-
/* Réagit à un déplacement de curseur. */
static bool gtk_block_display_notify_caret_relocation(GtkBlockDisplay *, const GdkRectangle *);
@@ -100,7 +97,6 @@ static void gtk_block_display_class_init(GtkBlockDisplayClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GtkWidgetClass *widget_class; /* Classe version Widget */
- GtkDisplayPanelClass *panel_class; /* Classe parente */
GtkBufferDisplayClass *buffer_class; /* Classe supérieure */
object = G_OBJECT_CLASS(class);
@@ -113,10 +109,6 @@ static void gtk_block_display_class_init(GtkBlockDisplayClass *class)
widget_class->button_press_event = gtk_block_display_button_press;
widget_class->query_tooltip = gtk_block_display_query_tooltip;
- panel_class = GTK_DISPLAY_PANEL_CLASS(class);
-
- panel_class->set_cursor = (set_cursor_fc)gtk_block_display_set_cursor;
-
buffer_class = GTK_BUFFER_DISPLAY_CLASS(class);
buffer_class->notify_caret = (notify_caret_relocation_fc)gtk_block_display_notify_caret_relocation;
@@ -381,26 +373,6 @@ static gboolean gtk_block_display_need_redraw(GtkBlockDisplay *display, GBufferV
/******************************************************************************
* *
-* Paramètres : display = composant GTK à mettre à jour. *
-* cursor = informations relatives à la position du curseur. *
-* *
-* Description : Définit le position courante dans un panneau de chargement. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_block_display_set_cursor(GtkBlockDisplay *display, const GLineCursor *cursor)
-{
-
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : display = composant GTK à manipuler. *
* area = emplacement pour le dessin d'un curseur. *
* *
diff --git a/src/gtkext/gtkdisplaypanel-int.h b/src/gtkext/gtkdisplaypanel-int.h
index 90b146c..7d64925 100644
--- a/src/gtkext/gtkdisplaypanel-int.h
+++ b/src/gtkext/gtkdisplaypanel-int.h
@@ -46,8 +46,8 @@ typedef void (* compute_scroll_inc_fc) (GtkDisplayPanel *, gint, GtkOrientation,
/* Réagit à un défilement chez une barre associée au composant. */
typedef void (* adjust_scroll_value_fc) (GtkDisplayPanel *, GtkAdjustment *, GtkOrientation);
-/* Réagit à la sélection externe d'une adresse. */
-typedef void (* define_address_fc) (GtkDisplayPanel *, const vmpa2t *);
+/* Ajuste au besoin la zone affichée pour un curseur. */
+typedef void (* prepare_for_cursor_fc) (GtkDisplayPanel *, const GLineCursor *);
/* Indique la position d'affichage d'une adresse donnée. */
typedef bool (* get_coordinates_fc) (const GtkDisplayPanel *, const GLineCursor *, gint *, gint *, ScrollPositionTweak);
@@ -64,9 +64,6 @@ typedef bool (* move_caret_to_fc) (GtkDisplayPanel *, gint, gint);
/* Fournit le position courante dans un panneau de chargement. */
typedef GLineCursor * (* get_cursor_fc) (const GtkDisplayPanel *);
-/* Définit le position courante dans un panneau de chargement. */
-typedef void (* set_cursor_fc) (GtkDisplayPanel *, const GLineCursor *);
-
/* Place en cache un rendu destiné à l'aperçu graphique rapide. */
typedef void (* cache_glance_fc) (GtkDisplayPanel *, cairo_t *, const GtkAllocation *, double);
@@ -98,13 +95,12 @@ struct _GtkDisplayPanelClass
compute_requested_size_fc compute_size; /* Calcul de la taille requise */
compute_scroll_inc_fc compute_inc; /* Calcul des bonds */
adjust_scroll_value_fc adjust; /* Réaction à un défilement */
- define_address_fc define; /* Centrage sur une partie */
+ prepare_for_cursor_fc prepare; /* Préparation de zone affichée*/
get_coordinates_fc get_coordinates; /* Conversion adresse <-> pos. */
get_active_object_fc get_active; /* Infos sur l'objet actif */
move_caret_to_fc move_caret_to; /* Déplacement du curseur */
get_cursor_fc get_cursor; /* Fourniture d'une position */
- set_cursor_fc set_cursor; /* Application d'une position */
cache_glance_fc cache_glance; /* Cache de la mignature */
};
diff --git a/src/gtkext/gtkdisplaypanel.c b/src/gtkext/gtkdisplaypanel.c
index b937e2e..e548bf7 100644
--- a/src/gtkext/gtkdisplaypanel.c
+++ b/src/gtkext/gtkdisplaypanel.c
@@ -108,9 +108,6 @@ static GLoadedContent *gtk_display_panel_get_content(const GtkDisplayPanel *);
/* Fournit le position courante dans un panneau de chargement. */
static GLineCursor *gtk_display_panel_get_cursor(const GtkDisplayPanel *);
-/* Définit le position courante dans un panneau de chargement. */
-static void gtk_display_panel_set_cursor(GtkDisplayPanel *, const GLineCursor *);
-
/* S'assure qu'un emplacement donné est visible à l'écran. */
static void gtk_display_panel_scroll_to_cursor(GtkDisplayPanel *, const GLineCursor *, ScrollPositionTweak, bool);
@@ -209,7 +206,6 @@ static void gtk_display_panel_loaded_interface_init(GLoadedPanelInterface *iface
iface->get_content = (get_loaded_panel_content_fc)gtk_display_panel_get_content;
iface->get_cursor = (get_loaded_cursor_fc)gtk_display_panel_get_cursor;
- iface->set_cursor = (set_loaded_cursor_fc)gtk_display_panel_set_cursor;
iface->scroll = (scroll_loaded_to_cursor_fc)gtk_display_panel_scroll_to_cursor;
iface->cache_glance = (cache_loaded_glance_fc)gtk_display_panel_cache_glance;
@@ -1126,26 +1122,6 @@ static GLineCursor *gtk_display_panel_get_cursor(const GtkDisplayPanel *panel)
/******************************************************************************
* *
-* Paramètres : panel = composant GTK à mettre à jour. *
-* cursor = informations relatives à la position du curseur. *
-* *
-* Description : Définit le position courante dans un panneau de chargement. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_display_panel_set_cursor(GtkDisplayPanel *panel, const GLineCursor *cursor)
-{
- GTK_DISPLAY_PANEL_GET_CLASS(panel)->set_cursor(panel, cursor);
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : panel = composant GTK à manipuler. *
* cursor = emplacement à présenter à l'écran. *
* tweak = adaptation finale à effectuer. *
@@ -1162,6 +1138,7 @@ static void gtk_display_panel_set_cursor(GtkDisplayPanel *panel, const GLineCurs
static void gtk_display_panel_scroll_to_cursor(GtkDisplayPanel *panel, const GLineCursor *cursor, ScrollPositionTweak tweak, bool move)
{
GtkWidget *parent; /* Support parent à valider */
+ GtkDisplayPanelClass *class; /* Classe de l'instance */
gint x; /* Abscisse à garantir */
gint y; /* Ordonnée à garantir */
GtkWidget *viewport; /* Parent avec défilement */
@@ -1181,10 +1158,10 @@ static void gtk_display_panel_scroll_to_cursor(GtkDisplayPanel *panel, const GLi
if (GTK_IS_DISPLAY_PANEL(parent))
panel = GTK_DISPLAY_PANEL(parent);
- /*
- if (GTK_DISPLAY_PANEL_GET_CLASS(panel)->define != NULL)
- GTK_DISPLAY_PANEL_GET_CLASS(panel)->define(panel, addr);
- */
+ class = GTK_DISPLAY_PANEL_GET_CLASS(panel);
+
+ if (class->prepare != NULL)
+ class->prepare(panel, cursor);
if (gtk_display_panel_get_cursor_coordinates(panel, cursor, &x, &y, tweak))
{
@@ -1221,7 +1198,7 @@ static void gtk_display_panel_scroll_to_cursor(GtkDisplayPanel *panel, const GLi
/* Déplacement du curseur */
if (move && gtk_display_panel_get_cursor_coordinates(panel, cursor, &x, &y, SPT_RAW))
- GTK_DISPLAY_PANEL_GET_CLASS(panel)->move_caret_to(panel, x, y);
+ class->move_caret_to(panel, x, y);
}
diff --git a/src/gtkext/gtkgraphdisplay.c b/src/gtkext/gtkgraphdisplay.c
index 0aee486..a991ace 100644
--- a/src/gtkext/gtkgraphdisplay.c
+++ b/src/gtkext/gtkgraphdisplay.c
@@ -111,8 +111,8 @@ static gboolean gtk_graph_display_button_release(GtkWidget *, GdkEventButton *,
/* Assure la suivi des déplacements de souris sur le composant. */
static gboolean gtk_graph_display_motion_notify(GtkWidget *, GdkEventMotion *, GtkGraphDisplay *);
-/* Réagit à la sélection externe d'une adresse. */
-static void gtk_graph_display_define_main_address(GtkGraphDisplay *, const vmpa2t *);
+/* Ajuste au besoin la zone affichée pour un curseur. */
+static void gtk_graph_display_prepare_for_cursor(GtkGraphDisplay *, const GLineCursor *);
/* Indique la position d'affichage d'un emplacement donné. */
static bool gtk_graph_display_get_cursor_coordinates(const GtkGraphDisplay *, const GLineCursor *, gint *, gint *, ScrollPositionTweak);
@@ -123,9 +123,6 @@ static bool gtk_graph_display_move_caret_to(GtkGraphDisplay *, gint, gint);
/* Fournit le position courante dans un panneau de chargement. */
static GLineCursor *gtk_graph_display_get_cursor(const GtkGraphDisplay *);
-/* Définit le position courante dans un panneau de chargement. */
-static void gtk_graph_display_set_cursor(GtkGraphDisplay *, const GLineCursor *);
-
/* Place en cache un rendu destiné à l'aperçu graphique rapide. */
static void gtk_graph_display_cache_glance(GtkGraphDisplay *, cairo_t *, const GtkAllocation *, double);
@@ -175,12 +172,11 @@ static void gtk_graph_display_class_init(GtkGraphDisplayClass *class)
panel_class->compute_size = (compute_requested_size_fc)gtk_graph_display_compute_requested_size;
panel_class->adjust = (adjust_scroll_value_fc)gtk_graph_display_adjust_scroll_value;
- panel_class->define = (define_address_fc)gtk_graph_display_define_main_address;
+ panel_class->prepare = (prepare_for_cursor_fc)gtk_graph_display_prepare_for_cursor;
panel_class->get_coordinates = (get_coordinates_fc)gtk_graph_display_get_cursor_coordinates;
panel_class->move_caret_to = (move_caret_to_fc)gtk_graph_display_move_caret_to;
panel_class->get_cursor = (get_cursor_fc)gtk_graph_display_get_cursor;
- panel_class->set_cursor = (set_cursor_fc)gtk_graph_display_set_cursor;
panel_class->cache_glance = (cache_glance_fc)gtk_graph_display_cache_glance;
}
@@ -587,9 +583,9 @@ static gboolean gtk_graph_display_motion_notify(GtkWidget *widget, GdkEventMotio
/******************************************************************************
* *
* Paramètres : display = composant GTK à mettre à jour. *
-* addr = adresse sélectionnée de manière externe. *
+* cursor = emplacement à présenter à l'écran. *
* *
-* Description : Réagit à la sélection externe d'une adresse. *
+* Description : Ajuste au besoin la zone affichée pour un curseur. *
* *
* Retour : - *
* *
@@ -597,8 +593,9 @@ static gboolean gtk_graph_display_motion_notify(GtkWidget *widget, GdkEventMotio
* *
******************************************************************************/
-static void gtk_graph_display_define_main_address(GtkGraphDisplay *display, const vmpa2t *addr)
+static void gtk_graph_display_prepare_for_cursor(GtkGraphDisplay *display, const GLineCursor *cursor)
{
+ vmpa2t addr; /* Adresse ciblée */
bool need_update; /* Mise à jour du contenu ? */
const mrange_t *range; /* Couverture courante */
GExeFormat *format; /* Type de fichier chargé */
@@ -610,12 +607,16 @@ static void gtk_graph_display_define_main_address(GtkGraphDisplay *display, cons
gint bottom; /* Ordonnée du coin inférieur */
GtkWidget *child; /* Composant sélectionné */
+ assert(G_IS_BINARY_CURSOR(cursor));
+
+ g_binary_cursor_get_info(G_BINARY_CURSOR(cursor), &addr);
+
if (display->routine == NULL)
need_update = true;
else
{
range = g_binary_symbol_get_range(display->routine);
- need_update = !mrange_contains_addr(range, addr);
+ need_update = !mrange_contains_addr(range, &addr);
}
if (need_update)
@@ -624,7 +625,7 @@ static void gtk_graph_display_define_main_address(GtkGraphDisplay *display, cons
format = g_loaded_binary_get_format(GTK_DISPLAY_PANEL(display)->binary);
- found = g_binary_format_find_symbol_for(G_BIN_FORMAT(format), addr, &symbol);
+ found = g_binary_format_find_symbol_for(G_BIN_FORMAT(format), &addr, &symbol);
if (!found)
goto ggddma_done;
@@ -826,32 +827,6 @@ static GLineCursor *gtk_graph_display_get_cursor(const GtkGraphDisplay *display)
/******************************************************************************
* *
-* Paramètres : display = composant GTK à mettre à jour. *
-* cursor = informations relatives à la position du curseur. *
-* *
-* Description : Définit le position courante dans un panneau de chargement. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_graph_display_set_cursor(GtkGraphDisplay *display, const GLineCursor *cursor)
-{
- vmpa2t addr; /* Adresse ciblée */
-
- assert(G_IS_BINARY_CURSOR(cursor));
-
- g_binary_cursor_get_info(G_BINARY_CURSOR(cursor), &addr);
-
- gtk_graph_display_define_main_address(display, &addr);
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : display = composant GTK à manipuler. *
* cr = assistant pour la création de rendus. *
* area = taille de la surface réduite à disposition. *
diff --git a/src/gui/menus/view.c b/src/gui/menus/view.c
index 059a598..6bbd484 100644
--- a/src/gui/menus/view.c
+++ b/src/gui/menus/view.c
@@ -825,8 +825,6 @@ static void change_current_view_support(unsigned int wanted)
if (cursor != NULL)
{
- g_loaded_panel_set_cursor(new, cursor);
-
/**
* A ce stade, le nouveau composant d'affichage n'a pas encore connu son
* premier gtk_widget_size_allocate(). Cela viendra avec un événement ultérieur