summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2010-12-05 13:21:08 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2010-12-05 13:21:08 (GMT)
commit6ea8a46069a8b2c6d2fbf007496d0616f544d8d4 (patch)
tree110174b3c62715bd6cdf9f7fa8034e567f0cc367 /src
parent492f78fc955e181ff4ba7e7d6b578e5f76afb858 (diff)
Added scrolling capabilities to buffered view.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@198 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src')
-rw-r--r--src/gtkext/gtkbufferview.c56
1 files changed, 55 insertions, 1 deletions
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 */