diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2012-03-25 12:36:16 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2012-03-25 12:36:16 (GMT) |
commit | a174ee784f5d9e554ed09181b8e6d8c0205f8ef5 (patch) | |
tree | f5ccfb4c41fcb1f237bc285e8e71bc188b7c8b57 /src/gtkext/gtkviewpanel.c | |
parent | bbad297e902022ecac9fab21c01dc109560db8eb (diff) |
Scrolled to the selected symbol.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@241 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
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); + + } + +} |