diff options
Diffstat (limited to 'src/gtkext/gtkviewpanel.c')
-rw-r--r-- | src/gtkext/gtkviewpanel.c | 85 |
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) |