summaryrefslogtreecommitdiff
path: root/src/gtkext/contentview.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gtkext/contentview.c')
-rw-r--r--src/gtkext/contentview.c532
1 files changed, 289 insertions, 243 deletions
diff --git a/src/gtkext/contentview.c b/src/gtkext/contentview.c
index 4b7f79d..77bbb7b 100644
--- a/src/gtkext/contentview.c
+++ b/src/gtkext/contentview.c
@@ -59,22 +59,51 @@ static void gtk_content_view_dispose(GtkContentView *);
/* Procède à la libération totale de la mémoire. */
static void gtk_content_view_finalize(GtkContentView *);
+
+
+
+
+/* --------------------- IMPLEMENTATION DES FONCTIONS DE CLASSE --------------------- */
+
+
+/* Définit une propriété du composant d'affichage. */
+static void gtk_content_view_set_property(GObject *, guint, const GValue *, GParamSpec *);
+
+/* Se débarrsse d'un ajustement pour un défilement donné. */
+static void _gtk_content_view_disconnect_adjustment(GtkContentView *, GtkOrientation);
+
+/* S'associe à un ajustement pour un défilement donné. */
+static void _gtk_content_view_set_adjustment(GtkContentView *, GtkOrientation, GtkAdjustment *);
+
+/* Réagit à un défilement chez une barre associée au composant. */
+static void _gtk_content_view_adjustment_value_changed(GtkAdjustment *, GtkContentView *);
+
+/* Fournit une propriété du composant d'affichage. */
+static void gtk_content_view_get_property(GObject *, guint, GValue *, GParamSpec *);
+
+/* Fournit les mesures mainimale et idéale du composant. */
+static void gtk_content_view_measure(GtkWidget *, GtkOrientation, int, int *, int *, int *, int *);
+
+
+
+
+
#if 0
/* Définit une propriété du composant d'affichage. */
-static void gtk_display_panel_set_property(GObject *, guint, const GValue *, GParamSpec *);
+//static void gtk_display_panel_set_property(GObject *, guint, const GValue *, GParamSpec *);
/* Fournit une propriété du composant d'affichage. */
-static void gtk_display_panel_get_property(GObject *, guint, GValue *, GParamSpec *);
+//static void gtk_display_panel_get_property(GObject *, guint, GValue *, GParamSpec *);
/* Détruit un composant d'affichage. */
-static void gtk_display_panel_destroy(GtkWidget *);
+//static void gtk_display_panel_destroy(GtkWidget *);
/* Encadre la construction graphique initiale de l'affichage. */
static void gtk_display_panel_realize(GtkWidget *);
/* S'adapte à la surface concédée par le composant parent. */
-static void gtk_display_panel_size_allocate(GtkWidget *, GtkAllocation *);
+//static void gtk_display_panel_size_allocate(GtkWidget *, GtkAllocation *);
/* Fournit la hauteur idéale pour le composant d'affichage. */
static void gtk_display_panel_get_preferred_height(GtkWidget *, gint *, gint *);
@@ -83,22 +112,22 @@ static void gtk_display_panel_get_preferred_height(GtkWidget *, gint *, gint *);
static void gtk_display_panel_get_preferred_width(GtkWidget *, gint *, gint *);
/* Détermine la taille des bonds lors de défilements. */
-static void gtk_display_panel_compute_scroll_inc(GtkDisplayPanel *, gint, GtkOrientation, gdouble *, gdouble *);
+//static void gtk_display_panel_compute_scroll_inc(GtkDisplayPanel *, gint, GtkOrientation, gdouble *, gdouble *);
/* Détermine la taille allouée pour le contenu. */
static void gtk_display_panel_compute_allocation(GtkDisplayPanel *, GtkAllocation *);
/* Se débarrsse d'un ajustement pour un défilement donné. */
-static void gtk_display_panel_disconnect_adjustment(GtkDisplayPanel *, GtkOrientation);
+//static void gtk_display_panel_disconnect_adjustment(GtkDisplayPanel *, GtkOrientation);
/* S'associe à un ajustement pour un défilement donné. */
-static void gtk_display_panel_set_adjustment(GtkDisplayPanel *, GtkOrientation, GtkAdjustment *);
+//static void gtk_display_panel_set_adjustment(GtkDisplayPanel *, GtkOrientation, GtkAdjustment *);
/* Ajuste les paramètres de défilement du composant. */
-static void gtk_display_panel_update_adjustment(GtkDisplayPanel *, GtkOrientation);
+//static void gtk_display_panel_update_adjustment(GtkDisplayPanel *, GtkOrientation);
/* Réagit à un défilement chez une barre associée au composant.*/
-static void gtk_display_panel_adjustment_value_changed(GtkAdjustment *, GtkDisplayPanel *);
+//static void gtk_display_panel_adjustment_value_changed(GtkAdjustment *, GtkDisplayPanel *);
@@ -136,8 +165,8 @@ G_DEFINE_TYPE_WITH_CODE(GtkDisplayPanel, gtk_display_panel, GTK_TYPE_FIXED,
/* Détermine le type du composant d'affichage générique. */
-G_DEFINE_TYPE(GtkContentView, gtk_content_view, GTK_TYPE_WIDGET);
-
+G_DEFINE_TYPE_WITH_CODE(GtkContentView, gtk_content_view, GTK_TYPE_WIDGET,
+ G_IMPLEMENT_INTERFACE(GTK_TYPE_SCROLLABLE, NULL));
/******************************************************************************
@@ -155,35 +184,43 @@ G_DEFINE_TYPE(GtkContentView, gtk_content_view, GTK_TYPE_WIDGET);
static void gtk_content_view_class_init(GtkContentViewClass *class)
{
GObjectClass *object; /* Plus haut niveau équivalent */
- //GtkWidgetClass *widget; /* Classe de haut niveau */
- //GtkContentViewClass *panel; /* Classe de lus bas niveau */
+ GtkWidgetClass *widget; /* Classe de haut niveau */
object = G_OBJECT_CLASS(class);
+ object->set_property = gtk_content_view_set_property;
+ object->get_property = gtk_content_view_get_property;
object->dispose = (GObjectFinalizeFunc/* ! */)gtk_content_view_dispose;
object->finalize = (GObjectFinalizeFunc)gtk_content_view_finalize;
+ /* Implémentation de l'interface "GtkScrollable" */
+ g_object_class_override_property(object, CVP_HADJUSTMENT, "hadjustment");
+ g_object_class_override_property(object, CVP_VADJUSTMENT, "vadjustment");
+ g_object_class_override_property(object, CVP_HSCROLL_POLICY, "hscroll-policy");
+ g_object_class_override_property(object, CVP_VSCROLL_POLICY, "vscroll-policy");
+
+
+
+
+
+ widget = GTK_WIDGET_CLASS(class);
+
+ widget->measure = gtk_content_view_measure;
+
+
+
+
#if 0
- object->set_property = gtk_display_panel_set_property;
- object->get_property = gtk_display_panel_get_property;
- /* Implémentation de l'interface "GtkScrollable" */
- g_object_class_override_property(object, VPP_HADJUSTMENT, "hadjustment");
- g_object_class_override_property(object, VPP_VADJUSTMENT, "vadjustment");
- g_object_class_override_property(object, VPP_HSCROLL_POLICY, "hscroll-policy");
- g_object_class_override_property(object, VPP_VSCROLL_POLICY, "vscroll-policy");
widget = GTK_WIDGET_CLASS(class);
- widget->destroy = gtk_display_panel_destroy;
+ //widget->destroy = gtk_display_panel_destroy;
widget->realize = gtk_display_panel_realize;
widget->size_allocate = gtk_display_panel_size_allocate;
widget->get_preferred_height = gtk_display_panel_get_preferred_height;
widget->get_preferred_width = gtk_display_panel_get_preferred_width;
- panel = GTK_DISPLAY_PANEL_CLASS(class);
-
- panel->compute_inc = gtk_display_panel_compute_scroll_inc;
/* Signaux */
@@ -214,8 +251,13 @@ static void gtk_content_view_class_init(GtkContentViewClass *class)
static void gtk_content_view_init(GtkContentView *view)
{
+ view->adjustments[GTK_ORIENTATION_HORIZONTAL] = NULL;
+ view->adjustments[GTK_ORIENTATION_VERTICAL] = NULL;
+
+ view->scroll_policies[GTK_ORIENTATION_HORIZONTAL] = GTK_POLICY_AUTOMATIC;
+ view->scroll_policies[GTK_ORIENTATION_VERTICAL] = GTK_POLICY_AUTOMATIC;
+
view->options = NULL;
- view->style = g_token_style_new(GTK_WIDGET(view));
@@ -272,13 +314,16 @@ static void gtk_display_panel_loaded_interface_init(GLoadedPanelInterface *iface
static void gtk_content_view_dispose(GtkContentView *view)
{
+ _gtk_content_view_disconnect_adjustment(view, GTK_ORIENTATION_HORIZONTAL);
+ _gtk_content_view_disconnect_adjustment(view, GTK_ORIENTATION_VERTICAL);
+
+ g_clear_object(&view->adjustments[GTK_ORIENTATION_HORIZONTAL]);
+ g_clear_object(&view->adjustments[GTK_ORIENTATION_VERTICAL]);
+
g_clear_object(&view->options);
- g_clear_object(&view->style);
/*
- g_clear_object(&panel->hadjustment);
- g_clear_object(&panel->vadjustment);
g_clear_object(&panel->options);
@@ -309,7 +354,16 @@ static void gtk_content_view_finalize(GtkContentView *view)
}
-#if 0
+
+
+
+
+
+/* ---------------------------------------------------------------------------------- */
+/* IMPLEMENTATION DES FONCTIONS DE CLASSE */
+/* ---------------------------------------------------------------------------------- */
+
+
/******************************************************************************
* *
* Paramètres : object = instance de composant GTK à manipuler. *
@@ -325,25 +379,25 @@ static void gtk_content_view_finalize(GtkContentView *view)
* *
******************************************************************************/
-static void gtk_display_panel_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+static void gtk_content_view_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
{
- GtkDisplayPanel *panel; /* Autre vision de l'instance */
+ GtkContentView *view; /* Autre vision de l'instance */
- panel = GTK_DISPLAY_PANEL(object);
+ view = GTK_CONTENT_VIEW(object);
switch (prop_id)
{
- case VPP_HADJUSTMENT:
- gtk_display_panel_set_adjustment(panel, GTK_ORIENTATION_HORIZONTAL, g_value_get_object(value));
+ case CVP_HADJUSTMENT:
+ _gtk_content_view_set_adjustment(view, GTK_ORIENTATION_HORIZONTAL, g_value_get_object(value));
break;
- case VPP_VADJUSTMENT:
- gtk_display_panel_set_adjustment(panel, GTK_ORIENTATION_VERTICAL, g_value_get_object(value));
+ case CVP_VADJUSTMENT:
+ _gtk_content_view_set_adjustment(view, GTK_ORIENTATION_VERTICAL, g_value_get_object(value));
break;
- case VPP_HSCROLL_POLICY:
+ case CVP_HSCROLL_POLICY:
//viewport->priv->hscroll_policy = g_value_get_enum (value);
//gtk_widget_queue_resize (GTK_WIDGET (viewport));
break;
- case VPP_VSCROLL_POLICY:
+ case CVP_VSCROLL_POLICY:
//viewport->priv->vscroll_policy = g_value_get_enum (value);
//gtk_widget_queue_resize (GTK_WIDGET (viewport));
break;
@@ -357,6 +411,105 @@ static void gtk_display_panel_set_property(GObject *object, guint prop_id, const
/******************************************************************************
* *
+* Paramètres : view = composant GTK d'affichage à mettre à jour. *
+* orientation = indication sur le défilement à traiter. *
+* *
+* Description : Se débarrsse d'un ajustement pour un défilement donné. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void _gtk_content_view_disconnect_adjustment(GtkContentView *view, GtkOrientation orientation)
+{
+ GtkAdjustment **adjp; /* Ajustement à manipuler */
+
+ adjp = &view->adjustments[orientation];
+
+ if (*adjp != NULL)
+ {
+ g_signal_handlers_disconnect_by_func(*adjp, _gtk_content_view_adjustment_value_changed, view);
+ g_clear_object(adjp);
+ }
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : view = composant GTK d'affichage à mettre à jour. *
+* orientation = indication sur le défilement à traiter. *
+* adj = nouvel ajustement à prendre en compte. *
+* *
+* Description : S'associe à un ajustement pour un défilement donné. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void _gtk_content_view_set_adjustment(GtkContentView *view, GtkOrientation orientation, GtkAdjustment *adj)
+{
+ GtkAdjustment **adjp; /* Ajustement à manipuler */
+
+ adjp = &view->adjustments[orientation];
+
+ /* S'il n'y a rien à faire... */
+ if (adj != NULL && adj == *adjp)
+ return;
+
+ if (adj == NULL)
+ adj = gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
+ else
+ ref_object(adj);
+
+ _gtk_content_view_disconnect_adjustment(view, orientation);
+
+ *adjp = adj;
+
+ g_signal_connect(adj, "value-changed", G_CALLBACK(_gtk_content_view_adjustment_value_changed), view);
+
+ gtk_widget_queue_allocate(GTK_WIDGET(view));
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : adj = défilement dont une valeur a changé. *
+* view = panneau d'affichage concerné. *
+* *
+* Description : Réagit à un défilement chez une barre associée au composant. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void _gtk_content_view_adjustment_value_changed(GtkAdjustment *adj, GtkContentView *view)
+{
+ GtkOrientation orientation; /* Indification de la barre */
+ GtkContentViewClass *class; /* Classe de l'instance */
+
+ if (adj == view->adjustments[GTK_ORIENTATION_HORIZONTAL])
+ orientation = GTK_ORIENTATION_HORIZONTAL;
+ else
+ orientation = GTK_ORIENTATION_VERTICAL;
+
+ class = GTK_CONTENT_VIEW_GET_CLASS(view);
+
+ if (class->adjust != NULL)
+ class->adjust(view, orientation, adj);
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : object = instance de composant GTK à manipuler. *
* prop_id = identifiant de la propriété concernée. *
* value = valeur à renvoyer. *
@@ -370,25 +523,25 @@ static void gtk_display_panel_set_property(GObject *object, guint prop_id, const
* *
******************************************************************************/
-static void gtk_display_panel_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+static void gtk_content_view_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
{
- GtkDisplayPanel *panel; /* Autre vision de l'instance */
+ GtkContentView *view; /* Autre vision de l'instance */
- panel = GTK_DISPLAY_PANEL(object);
+ view = GTK_CONTENT_VIEW(object);
switch (prop_id)
{
- case VPP_HADJUSTMENT:
- g_value_set_object(value, panel->hadjustment);
+ case CVP_HADJUSTMENT:
+ g_value_set_object(value, view->adjustments[GTK_ORIENTATION_HORIZONTAL]);
break;
- case VPP_VADJUSTMENT:
- g_value_set_object(value, panel->vadjustment);
+ case CVP_VADJUSTMENT:
+ g_value_set_object(value, view->adjustments[GTK_ORIENTATION_VERTICAL]);
break;
- case VPP_HSCROLL_POLICY:
- g_value_set_enum(value, panel->hscroll_policy);
+ case CVP_HSCROLL_POLICY:
+ g_value_set_enum(value, view->scroll_policies[GTK_ORIENTATION_HORIZONTAL]);
break;
- case VPP_VSCROLL_POLICY:
- g_value_set_enum(value, panel->vscroll_policy);
+ case CVP_VSCROLL_POLICY:
+ g_value_set_enum(value, view->scroll_policies[GTK_ORIENTATION_VERTICAL]);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
@@ -400,6 +553,88 @@ static void gtk_display_panel_get_property(GObject *object, guint prop_id, GValu
/******************************************************************************
* *
+* Paramètres : widget = composant GTK à examiner. *
+* orientation = direction à observer pour les calculs. *
+* for_size = taille de la direction opposée. *
+* minimum = taille minimale pour le composant. [OUT] *
+* natural = taille idéale pour le composant. [OUT] *
+* min_baseline = ligne de base minimale. [OUT] *
+* nat_baseline = ligne de base idéale. [OUT] *
+* *
+* Description : Fournit les mesures mainimale et idéale du composant. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void gtk_content_view_measure(GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *min_baseline, int *nat_baseline)
+{
+ GtkContentView *view; /* Version spécialisée */
+ size_t i; /* Boucle de parcours */
+ int min; /* Valeur minimale locale */
+ int nat; /* Valeur idéale locale */
+
+ view = GTK_CONTENT_VIEW(widget);
+
+ if (minimum != NULL) *minimum = 0;
+ if (natural != NULL) *natural = 0;
+
+ /* Demande de hauteur minimale / idéale */
+ if (orientation == GTK_ORIENTATION_VERTICAL)
+ {
+ for (i = 0; i < view->sub_count; i++)
+ {
+ gtk_widget_measure(view->sub_children[i], GTK_ORIENTATION_VERTICAL, -1, &min, &nat, NULL, NULL);
+
+ if (minimum != NULL && min > *minimum)
+ *minimum = min;
+
+ if (natural != NULL && nat > *natural)
+ *natural = nat;
+
+ }
+
+ }
+
+ /* Demande de largeur minimale / idéale */
+ else
+ {
+ for (i = 0; i < view->sub_count; i++)
+ {
+ gtk_widget_measure(view->sub_children[i], GTK_ORIENTATION_HORIZONTAL, -1, &min, &nat, NULL, NULL);
+
+ if (minimum != NULL) *minimum += min;
+ if (natural != NULL) *natural += nat;
+
+ }
+
+ }
+
+ if (min_baseline != NULL) *min_baseline = -1;
+ if (nat_baseline != NULL) *nat_baseline = -1;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#if 0
+
+
+/******************************************************************************
+* *
* Paramètres : widget = composant GTK à détruire. *
* *
* Description : Détruit un composant d'affichage. *
@@ -416,8 +651,11 @@ static void gtk_display_panel_destroy(GtkWidget *widget)
panel = GTK_DISPLAY_PANEL(widget);
- gtk_display_panel_disconnect_adjustment(panel, GTK_ORIENTATION_HORIZONTAL);
- gtk_display_panel_disconnect_adjustment(panel, GTK_ORIENTATION_VERTICAL);
+ GtkContentView *view; /* Autre vision de l'instance */
+
+ view = GTK_CONTENT_VIEW(widget);
+
+
GTK_WIDGET_CLASS(gtk_display_panel_parent_class)->destroy(widget);
@@ -471,32 +709,6 @@ static void gtk_display_panel_realize(GtkWidget *widget)
}
-/******************************************************************************
-* *
-* Paramètres : widget = composant GTK à mettre à jour. *
-* allocation = étendue accordée à la vue. *
-* *
-* Description : S'adapte à la surface concédée par le composant parent. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_display_panel_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
-{
- GtkDisplayPanel *panel; /* Autre version du composant */
-
- GTK_WIDGET_CLASS(gtk_display_panel_parent_class)->size_allocate(widget, allocation);
-
- panel = GTK_DISPLAY_PANEL(widget);
-
- gtk_display_panel_update_adjustment(panel, GTK_ORIENTATION_HORIZONTAL);
- gtk_display_panel_update_adjustment(panel, GTK_ORIENTATION_VERTICAL);
-
-}
-
/******************************************************************************
* *
@@ -560,29 +772,6 @@ static void gtk_display_panel_get_preferred_width(GtkWidget *widget, gint *minim
}
-/******************************************************************************
-* *
-* Paramètres : panel = composant GTK d'affichage à mettre à jour. *
-* size = taille de l'espace dans la direction donnée. *
-* orientation = indication sur le défilement à traiter. *
-* step = valeur d'un petit pas de défilement. [OUT] *
-* page = valeur d'un grand pas de défilement. [OUT] *
-* *
-* Description : Détermine la taille des bonds lors de défilements. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_display_panel_compute_scroll_inc(GtkDisplayPanel *panel, gint size, GtkOrientation orientation, gdouble *step, gdouble *page)
-{
- *step = size * 0.1;
- *page = size * 0.9;
-
-}
-
/******************************************************************************
* *
@@ -653,151 +842,8 @@ static void gtk_display_panel_compute_allocation(GtkDisplayPanel *panel, GtkAllo
}
-/******************************************************************************
-* *
-* Paramètres : panel = composant GTK d'affichage à mettre à jour. *
-* orientation = indication sur le défilement à traiter. *
-* *
-* Description : Se débarrsse d'un ajustement pour un défilement donné. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_display_panel_disconnect_adjustment(GtkDisplayPanel *panel, GtkOrientation orientation)
-{
- GtkAdjustment **adjp; /* Ajustement à manipuler */
-
- adjp = orientation == GTK_ORIENTATION_HORIZONTAL ? &panel->hadjustment : &panel->vadjustment;
-
- if (*adjp != NULL)
- {
- g_signal_handlers_disconnect_by_func(*adjp, gtk_display_panel_adjustment_value_changed, panel);
- g_object_unref(G_OBJECT(*adjp));
- *adjp = NULL;
- }
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : panel = composant GTK d'affichage à mettre à jour. *
-* orientation = indication sur le défilement à traiter. *
-* adj = nouvel ajustement à prendre en compte. *
-* *
-* Description : S'associe à un ajustement pour un défilement donné. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_display_panel_set_adjustment(GtkDisplayPanel *panel, GtkOrientation orientation, GtkAdjustment *adj)
-{
- GtkAdjustment **adjp; /* Ajustement à manipuler */
- adjp = orientation == GTK_ORIENTATION_HORIZONTAL ? &panel->hadjustment : &panel->vadjustment;
- /* S'il n'y a rien à faire... */
- if (adj != NULL && adj == *adjp)
- return;
-
- if (!adj)
- adj = gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
-
- gtk_display_panel_disconnect_adjustment(panel, orientation);
-
- *adjp = adj;
- g_object_ref_sink(adj);
-
- gtk_display_panel_update_adjustment(panel, orientation);
-
- g_signal_connect(adj, "value-changed", G_CALLBACK(gtk_display_panel_adjustment_value_changed), panel);
-
- gtk_display_panel_adjustment_value_changed(adj, panel);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : panel = composant GTK d'affichage à mettre à jour. *
-* orientation = indication sur le défilement à traiter. *
-* *
-* Description : Ajuste les paramètres de défilement du composant. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_display_panel_update_adjustment(GtkDisplayPanel *panel, GtkOrientation orientation)
-{
- GtkAllocation allocation; /* Emplacement du contenu */
- GtkAdjustment *adj; /* Ajustement à manipuler */
- gint req; /* Dimension requise */
- gint allocated; /* Dimension allouée */
- gdouble step_inc; /* Pas de défilement */
- gdouble page_inc; /* ENjambée de défilement */
-
- gtk_display_panel_compute_allocation(panel, &allocation);
-
- if (orientation == GTK_ORIENTATION_HORIZONTAL)
- {
- adj = panel->hadjustment;
-
- gtk_widget_get_preferred_width(GTK_WIDGET(panel), &req, NULL);
- allocated = allocation.width;
-
- }
- else
- {
- adj = panel->vadjustment;
-
- gtk_widget_get_preferred_height(GTK_WIDGET(panel), &req, NULL);
- allocated = allocation.height;
-
- }
-
- GTK_DISPLAY_PANEL_GET_CLASS(panel)->compute_inc(panel, allocated, orientation, &step_inc, &page_inc);
-
- gtk_adjustment_configure(adj, gtk_adjustment_get_value(adj),
- 0, MAX(req, allocated),
- step_inc,
- page_inc,
- allocated);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : adj = défilement dont une valeur a changé. *
-* panel = panneau d'affichage concerné. *
-* *
-* Description : Réagit à un défilement chez une barre associée au composant. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_display_panel_adjustment_value_changed(GtkAdjustment *adj, GtkDisplayPanel *panel)
-{
- GtkOrientation orientation; /* Indification de la barre */
-
- orientation = (adj == panel->hadjustment ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL);
-
- if (GTK_DISPLAY_PANEL_GET_CLASS(panel)->adjust != NULL)
- GTK_DISPLAY_PANEL_GET_CLASS(panel)->adjust(panel, adj, orientation);
-
-}
/******************************************************************************