diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gtkext/gtkgraphdisplay.c | 43 | 
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...           */  | 
