summaryrefslogtreecommitdiff
path: root/src/gtkext/gtkviewpanel.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2012-03-25 12:36:16 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2012-03-25 12:36:16 (GMT)
commita174ee784f5d9e554ed09181b8e6d8c0205f8ef5 (patch)
treef5ccfb4c41fcb1f237bc285e8e71bc188b7c8b57 /src/gtkext/gtkviewpanel.c
parentbbad297e902022ecac9fab21c01dc109560db8eb (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.c47
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);
+
+ }
+
+}