summaryrefslogtreecommitdiff
path: root/src/gtkext
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-12-21 14:59:08 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-12-21 14:59:08 (GMT)
commit601d8f44d523a1f687393339f5767589ec84b682 (patch)
treefedad827cd8f535dcf9fcef1ec053830e8526202 /src/gtkext
parent223c2d906ccdb1ae680a474884448c799878a06f (diff)
Improved graph view content centering.
Diffstat (limited to 'src/gtkext')
-rw-r--r--src/gtkext/gtkgraphdisplay.c43
1 files changed, 39 insertions, 4 deletions
diff --git a/src/gtkext/gtkgraphdisplay.c b/src/gtkext/gtkgraphdisplay.c
index a991ace..4475c08 100644
--- a/src/gtkext/gtkgraphdisplay.c
+++ b/src/gtkext/gtkgraphdisplay.c
@@ -93,6 +93,9 @@ static void gtk_graph_display_finalize(GtkGraphDisplay *);
/* S'adapte à la surface concédée par le composant parent. */
static void gtk_graph_display_size_allocate(GtkWidget *, GtkAllocation *);
+/* Centre si possible le contenu du panneau d'affichage. */
+static void gtk_graph_display_update_support_margins(GtkGraphDisplay *, const GtkAllocation *);
+
/* Indique les dimensions de travail du composant d'affichage. */
static void gtk_graph_display_compute_requested_size(GtkGraphDisplay *, gint *, gint *);
@@ -291,15 +294,36 @@ static void gtk_graph_display_finalize(GtkGraphDisplay *display)
static void gtk_graph_display_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
{
GtkGraphDisplay *display; /* Autre version du composant */
- gint width; /* Largeur totale du support */
- gint height; /* Hauteur totale du support */
- gint start; /* Bordure horizontale */
- gint top; /* Bordure verticale */
GTK_WIDGET_CLASS(gtk_graph_display_parent_class)->size_allocate(widget, allocation);
display = GTK_GRAPH_DISPLAY(widget);
+ gtk_graph_display_update_support_margins(display, allocation);
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : display = panneau dont le contenu est à déplacer. *
+* allocation = étendue accordée à la vue. *
+* *
+* Description : Centre si possible le contenu du panneau d'affichage. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void gtk_graph_display_update_support_margins(GtkGraphDisplay *display, const GtkAllocation *allocation)
+{
+ gint width; /* Largeur totale du support */
+ gint height; /* Hauteur totale du support */
+ gint start; /* Bordure horizontale */
+ gint top; /* Bordure verticale */
+
gtk_graph_display_compute_requested_size(display, &width, &height);
if (width > allocation->width)
@@ -315,6 +339,8 @@ static void gtk_graph_display_size_allocate(GtkWidget *widget, GtkAllocation *al
gtk_widget_set_margin_start(display->support, start);
gtk_widget_set_margin_top(display->support, top);
+ gtk_widget_queue_resize(GTK_WIDGET(display));
+
}
@@ -605,6 +631,7 @@ static void gtk_graph_display_prepare_for_cursor(GtkGraphDisplay *display, const
GBlockList *list; /* Liste de blocs basiques */
gint right; /* Abscisse du coin droit */
gint bottom; /* Ordonnée du coin inférieur */
+ GtkAllocation allocation; /* Espace alloué au panneau */
GtkWidget *child; /* Composant sélectionné */
assert(G_IS_BINARY_CURSOR(cursor));
@@ -660,6 +687,14 @@ static void gtk_graph_display_prepare_for_cursor(GtkGraphDisplay *display, const
gtk_fixed_move(GTK_FIXED(display->support), display->extender, right - 1, bottom - 1);
/**
+ * Si possible, on centre le contenu obtenu.
+ */
+
+ gtk_widget_get_allocation(GTK_WIDGET(display), &allocation);
+
+ gtk_graph_display_update_support_margins(display, &allocation);
+
+ /**
* Première sélection...
*/