From 6ea8a46069a8b2c6d2fbf007496d0616f544d8d4 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Sun, 5 Dec 2010 13:21:08 +0000 Subject: Added scrolling capabilities to buffered view. git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@198 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a --- ChangeLog | 5 +++++ src/gtkext/gtkbufferview.c | 56 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 17d62f7..829f590 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +10-12-05 Cyrille Bagard + + * src/gtkext/gtkbufferview.c: + Add scrolling capabilities to buffered view. + 10-12-02 Cyrille Bagard * src/arch/dalvik/dop_const.c: diff --git a/src/gtkext/gtkbufferview.c b/src/gtkext/gtkbufferview.c index 485ed79..bad88fc 100644 --- a/src/gtkext/gtkbufferview.c +++ b/src/gtkext/gtkbufferview.c @@ -34,6 +34,12 @@ static void gtk_buffer_view_class_init(GtkBufferViewClass *); /* Procède à l'initialisation de l'afficheur de tampons. */ static void gtk_buffer_view_init(GtkBufferView *); +/* Transcrit les coordonnées à l'écran en coordonnées absolues. */ +static void gtk_buffer_view_compute_fake_coord(GtkBufferView *, gint *, gint *); + +/* Transcrit les coordonnées absolues en coordonnées à l'écran. */ +static void gtk_buffer_view_compute_real_coord(GtkBufferView *, gint *, gint *); + /* Fournit la taille de composant requise pour un plein rendu. */ static void gtk_buffer_view_size_request(GtkWidget *, GtkRequisition *); @@ -107,6 +113,54 @@ static void gtk_buffer_view_init(GtkBufferView *view) /****************************************************************************** * * +* Paramètres : view = composant GTK à consulter. * +* event = informations liées à l'événement. * +* * +* Description : Transcrit les coordonnées à l'écran en coordonnées absolues. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void gtk_buffer_view_compute_fake_coord(GtkBufferView *view, gint *x, gint *y) +{ + if (GTK_VIEW_PANEL(view)->hadjustment != NULL) + *x -= gtk_adjustment_get_value(GTK_VIEW_PANEL(view)->hadjustment); + + if (GTK_VIEW_PANEL(view)->vadjustment != NULL) + *y += gtk_adjustment_get_value(GTK_VIEW_PANEL(view)->vadjustment); + +} + + +/****************************************************************************** +* * +* Paramètres : view = composant GTK à consulter. * +* event = informations liées à l'événement. * +* * +* Description : Transcrit les coordonnées absolues en coordonnées à l'écran. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void gtk_buffer_view_compute_real_coord(GtkBufferView *view, gint *x, gint *y) +{ + if (x != NULL && GTK_VIEW_PANEL(view)->hadjustment != NULL) + *x += gtk_adjustment_get_value(GTK_VIEW_PANEL(view)->hadjustment); + + if (y != NULL && GTK_VIEW_PANEL(view)->vadjustment != NULL) + *y += gtk_adjustment_get_value(GTK_VIEW_PANEL(view)->vadjustment); + +} + + +/****************************************************************************** +* * * Paramètres : widget = composant GTK à consulter. * * requisition = dimensions souhaitées. [OUT] * * * @@ -244,7 +298,7 @@ static gboolean gtk_buffer_view_expose(GtkWidget *widget, GdkEventExpose *event) fake_x = 0; fake_y = 0; - //gtk_block_view_compute_fake_coord(view, &fake_x, &fake_y); + gtk_buffer_view_compute_fake_coord(view, &fake_x, &fake_y); /* Dessin de la marge gauche */ -- cgit v0.11.2-87-g4458