diff options
Diffstat (limited to 'src/gtkext/gtkviewpanel.c')
-rw-r--r-- | src/gtkext/gtkviewpanel.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/gtkext/gtkviewpanel.c b/src/gtkext/gtkviewpanel.c index 7f29574..e36da71 100644 --- a/src/gtkext/gtkviewpanel.c +++ b/src/gtkext/gtkviewpanel.c @@ -297,6 +297,7 @@ static void gtk_view_panel_realize(GtkWidget *widget) attributes.event_mask = gtk_widget_get_events(widget) | GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK + | GDK_FOCUS_CHANGE_MASK | GDK_SCROLL_MASK | GDK_SMOOTH_SCROLL_MASK; attributes_mask = GDK_WA_X | GDK_WA_Y; @@ -792,6 +793,8 @@ static void on_view_panel_binary_display_change(GLoadedBinary *binary, BinaryVie GLoadedBinary *gtk_view_panel_get_binary(const GtkViewPanel *panel) { + /* TODO : ref */ + return panel->binary; } @@ -836,6 +839,7 @@ bool gtk_view_panel_contain_address(const GtkViewPanel *panel, vmpa_t addr) void gtk_view_panel_scroll_to_address(GtkViewPanel *panel, const vmpa2t *addr, ScrollPositionTweak tweak) { + GtkWidget *parent; /* Support parent à valider */ gint x; /* Abscisse à garantir */ gint y; /* Ordonnée à garantir */ GtkWidget *viewport; /* Parent avec défilement */ @@ -844,6 +848,25 @@ void gtk_view_panel_scroll_to_address(GtkViewPanel *panel, const vmpa2t *addr, S gdouble page_size; /* Taille de l'affichage */ double value; /* Valeur courante */ + /** + * Si une vue partielle se déplacer via cette fonction, il faut potentiellement + * rediriger l'appel vers la vue en graphiques parente. + */ + + parent = gtk_widget_get_parent(GTK_WIDGET(panel)); + parent = gtk_widget_get_parent(GTK_WIDGET(parent)); + + printf(" Widgets : %s -> %s\n", + G_OBJECT_TYPE_NAME(parent), G_OBJECT_TYPE_NAME(panel)); + + if (GTK_IS_VIEW_PANEL(parent)) + { + printf("reparent !\n"); + panel = GTK_VIEW_PANEL(parent); + } + else + printf("no need reparent !\n"); + if (GTK_VIEW_PANEL_GET_CLASS(panel)->define != NULL) GTK_VIEW_PANEL_GET_CLASS(panel)->define(panel, addr); |