From 6ea8a46069a8b2c6d2fbf007496d0616f544d8d4 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
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 <nocbos@gmail.com>
+
+	* src/gtkext/gtkbufferview.c:
+	Add scrolling capabilities to buffered view.
+
 10-12-02  Cyrille Bagard <nocbos@gmail.com>
 
 	* 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