diff options
Diffstat (limited to 'src/gtkext/gtkviewpanel.c')
-rw-r--r-- | src/gtkext/gtkviewpanel.c | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/src/gtkext/gtkviewpanel.c b/src/gtkext/gtkviewpanel.c index 43ab569..35cfa5c 100644 --- a/src/gtkext/gtkviewpanel.c +++ b/src/gtkext/gtkviewpanel.c @@ -104,7 +104,7 @@ static void gtk_view_panel_class_init(GtkViewPanelClass *class) static void gtk_view_panel_init(GtkViewPanel *panel) { - gtk_fixed_set_has_window(GTK_FIXED(panel), TRUE); + gtk_widget_set_has_window(GTK_WIDGET(panel), TRUE); } @@ -453,3 +453,48 @@ GOpenidaBinary *gtk_view_panel_get_binary(const GtkViewPanel *panel) return panel->binary; } + + +/****************************************************************************** +* * +* Paramètres : panel = composant GTK à manipuler. * +* addr = adresse à présenter à l'écran. * +* * +* Description : S'assure qu'une adresse donnée est visible à l'écran. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void gtk_view_panel_scroll_to_address(const GtkViewPanel *panel, vmpa_t addr) +{ + gint x; /* Abscisse à garantir */ + gint y; /* Ordonnée à garantir */ + GtkAdjustment *adj; /* Défilement à mettre à jour */ + + /* TODO + if (panel->define_address != NULL) + panel->define_address(panel, addr); + */ + + if (panel->get_coordinates(panel, addr, &x, &y)) + { + adj = panel->hadjustment; + + if (x > (adj->upper - adj->page_size)) + x = adj->upper - adj->page_size; + + gtk_adjustment_set_value(adj, x); + + adj = panel->vadjustment; + + if (y > (adj->upper - adj->page_size)) + y = adj->upper - adj->page_size; + + gtk_adjustment_set_value(adj, y); + + } + +} |