summaryrefslogtreecommitdiff
path: root/src/gtkext/gtkviewpanel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gtkext/gtkviewpanel.c')
-rw-r--r--src/gtkext/gtkviewpanel.c67
1 files changed, 63 insertions, 4 deletions
diff --git a/src/gtkext/gtkviewpanel.c b/src/gtkext/gtkviewpanel.c
index 3c8febd..1496056 100644
--- a/src/gtkext/gtkviewpanel.c
+++ b/src/gtkext/gtkviewpanel.c
@@ -53,6 +53,12 @@ static void gtk_view_panel_size_allocate(GtkWidget *, GtkAllocation *);
/* Met à jour l'affichage du composant d'affichage. */
static gboolean gtk_view_panel_draw(GtkWidget *, cairo_t *);
+/* Fournit la hauteur idéale pour le composant d'affichage. */
+static void gtk_view_panel_get_preferred_height(GtkWidget *, gint *, gint *);
+
+/* Fournit la largeur idéale pour le composant d'affichage. */
+static void gtk_view_panel_get_preferred_width(GtkWidget *, gint *, gint *);
+
/* Détermine la taille des bonds lors de défilements. */
static void gtk_view_panel_compute_scroll_inc(GtkViewPanel *, gint, GtkOrientation, gdouble *, gdouble *);
@@ -116,6 +122,8 @@ static void gtk_view_panel_class_init(GtkViewPanelClass *class)
widget_class->realize = gtk_view_panel_realize;
widget_class->size_allocate = gtk_view_panel_size_allocate;
widget_class->draw = gtk_view_panel_draw;
+ widget_class->get_preferred_height = gtk_view_panel_get_preferred_height;
+ widget_class->get_preferred_width = gtk_view_panel_get_preferred_width;
panel_class->compute_inc = gtk_view_panel_compute_scroll_inc;
@@ -379,6 +387,58 @@ static gboolean gtk_view_panel_draw(GtkWidget *widget, cairo_t *cr)
/******************************************************************************
* *
+* Paramètres : widget = composant GTK à examiner. *
+* minimum = hauteur minimale à préciser ou NULL. [OUT] *
+* natural = hauteur idéale à préciser ou NULL. [OUT] *
+* *
+* Description : Fournit la hauteur idéale pour le composant d'affichage. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void gtk_view_panel_get_preferred_height(GtkWidget *widget, gint *minimum, gint *natural)
+{
+ gint req; /* Dimension requise */
+
+ GTK_VIEW_PANEL_GET_CLASS(widget)->compute_size(GTK_VIEW_PANEL(widget), NULL, &req);
+
+ if (minimum != NULL) *minimum = req;
+ if (natural != NULL) *natural = req;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : widget = composant GTK à examiner. *
+* minimum = largeur minimale à préciser ou NULL. [OUT] *
+* natural = largeur idéale à préciser ou NULL. [OUT] *
+* *
+* Description : Fournit la largeur idéale pour le composant d'affichage. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void gtk_view_panel_get_preferred_width(GtkWidget *widget, gint *minimum, gint *natural)
+{
+ gint req; /* Dimension requise */
+
+ GTK_VIEW_PANEL_GET_CLASS(widget)->compute_size(GTK_VIEW_PANEL(widget), &req, NULL);
+
+ if (minimum != NULL) *minimum = req;
+ if (natural != NULL) *natural = req;
+
+}
+
+
+/******************************************************************************
+* *
* 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. *
@@ -607,12 +667,11 @@ static void gtk_view_panel_update_adjustment(GtkViewPanel *panel, GtkOrientation
static void gtk_view_panel_adjustment_value_changed(GtkAdjustment *adj, GtkViewPanel *panel)
{
- GtkWidget *widget; /* Autre vision du composant */
+ GtkOrientation orientation; /* Indification de la barre */
- widget = GTK_WIDGET(panel);
+ orientation = (adj == panel->hadjustment ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL);
- if (gtk_widget_get_realized(widget))
- gdk_window_invalidate_rect(gtk_widget_get_window(widget), NULL, false);
+ GTK_VIEW_PANEL_GET_CLASS(panel)->adjust(panel, adj, orientation);
}