summaryrefslogtreecommitdiff
path: root/src/gtkext/gtkviewpanel.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2014-06-04 22:44:21 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2014-06-04 22:44:21 (GMT)
commit11395d684736467fb010b93b0eaeefcc06bf0f5e (patch)
treed9f9e06d27f5b8721f308b6b4636cd043e4f7d20 /src/gtkext/gtkviewpanel.c
parent83ba2204e700501023cb78dfd84978c611fe61b0 (diff)
Fixed bugs when dealing with views and updated the code for GTK3.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@378 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/gtkext/gtkviewpanel.c')
-rw-r--r--src/gtkext/gtkviewpanel.c85
1 files changed, 5 insertions, 80 deletions
diff --git a/src/gtkext/gtkviewpanel.c b/src/gtkext/gtkviewpanel.c
index f10713f..2b1aa97 100644
--- a/src/gtkext/gtkviewpanel.c
+++ b/src/gtkext/gtkviewpanel.c
@@ -35,12 +35,6 @@ static void gtk_view_panel_class_init(GtkViewPanelClass *);
/* Procède à l'initialisation de l'afficheur générique. */
static void gtk_view_panel_init(GtkViewPanel *);
-/* Enregistre les défilements à associer au composant GTK. */
-static void gtk_view_panel_set_scroll_adjustments(GtkViewPanel *, GtkAdjustment *, GtkAdjustment *);
-
-/* Prend acte d'un nouveau défilement. */
-static void gtk_view_panel_adj_value_changed(GtkAdjustment *, GtkViewPanel *);
-
/* Encadre la construction graphique initiale de l'affichage. */
static void gtk_view_panel_realize(GtkWidget *);
@@ -74,21 +68,6 @@ static void gtk_view_panel_class_init(GtkViewPanelClass *class)
widget_class->realize = gtk_view_panel_realize;
widget_class->draw = gtk_view_panel_draw;
- class->set_scroll_adjustments = gtk_view_panel_set_scroll_adjustments;
-
- /*
- widget_class->set_scroll_adjustments_signal =
- g_signal_new(("set_scroll_adjustments"),
- GTK_TYPE_VIEW_PANEL,
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET(GtkViewPanelClass, set_scroll_adjustments),
- NULL, NULL,
- g_cclosure_user_marshal_VOID__OBJECT_OBJECT,
- G_TYPE_NONE, 2,
- GTK_TYPE_ADJUSTMENT,
- GTK_TYPE_ADJUSTMENT);
- */
-
}
@@ -114,63 +93,6 @@ static void gtk_view_panel_init(GtkViewPanel *panel)
/******************************************************************************
* *
-* Paramètres : panel = vue à compléter. *
-* hadjustment = nouveau défilement horizontal à intégrer. *
-* vadjustment = nouveau défilement vertical à intégrer. *
-* *
-* Description : Enregistre les défilements à associer au composant GTK. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_view_panel_set_scroll_adjustments(GtkViewPanel *panel, GtkAdjustment *hadjustment, GtkAdjustment *vadjustment)
-{
- /* TODO : déconnecter les anciens ? */
-
- panel->hadjustment = hadjustment;
- panel->vadjustment = vadjustment;
-
- /**
- * On vérifie que le support n'est pas en train de nous libérer,
- * avant de se connecter...
- */
-
- if (hadjustment != NULL)
- g_signal_connect(hadjustment, "value_changed",
- G_CALLBACK(gtk_view_panel_adj_value_changed), panel);
-
- if (vadjustment != NULL)
- g_signal_connect(vadjustment, "value_changed",
- G_CALLBACK(gtk_view_panel_adj_value_changed), panel);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : adj = défilement à l'origine de l'action. *
-* panel = composant GTK à redessiner. *
-* *
-* Description : Prend acte d'un nouveau défilement. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_view_panel_adj_value_changed(GtkAdjustment *adj, GtkViewPanel *panel)
-{
- panel->scroll(panel);
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : adj = valeurs de défilement à consulter. *
* changed = note une mise à jour de valeur. [OUT] *
* *
@@ -549,6 +471,7 @@ void gtk_view_panel_scroll_to_address(GtkViewPanel *panel, vmpa_t addr)
{
gint x; /* Abscisse à garantir */
gint y; /* Ordonnée à garantir */
+ GtkWidget *viewport; /* Parent avec défilement */
GtkAdjustment *adj; /* Défilement à mettre à jour */
double limit; /* Limite à ne pas dépasser */
@@ -557,7 +480,9 @@ void gtk_view_panel_scroll_to_address(GtkViewPanel *panel, vmpa_t addr)
if (panel->get_coordinates(panel, addr, &x, &y))
{
- adj = panel->hadjustment;
+ viewport = gtk_widget_get_parent(GTK_WIDGET(panel));
+
+ g_object_get(G_OBJECT(viewport), "hadjustment", &adj, NULL);
limit = gtk_adjustment_get_upper(adj) - gtk_adjustment_get_page_size(adj);
if (x > limit)
@@ -565,7 +490,7 @@ void gtk_view_panel_scroll_to_address(GtkViewPanel *panel, vmpa_t addr)
gtk_adjustment_set_value(adj, x);
- adj = panel->vadjustment;
+ g_object_get(G_OBJECT(viewport), "vadjustment", &adj, NULL);
limit = gtk_adjustment_get_upper(adj) - gtk_adjustment_get_page_size(adj);
if (y > limit)