diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gtkext/gtkgraphview.c | 30 | ||||
| -rw-r--r-- | src/gtkext/gtklinkrenderer.c | 26 | ||||
| -rw-r--r-- | src/gtkext/gtklinkrenderer.h | 5 | 
3 files changed, 56 insertions, 5 deletions
| diff --git a/src/gtkext/gtkgraphview.c b/src/gtkext/gtkgraphview.c index 88210f5..543f2d7 100644 --- a/src/gtkext/gtkgraphview.c +++ b/src/gtkext/gtkgraphview.c @@ -192,9 +192,9 @@ static void gtk_graph_view_size_request(GtkWidget *widget, GtkRequisition *requi  {      gpointer fixed_class;                   /* Classe parente              */      GtkGraphView *view;                     /* Autre vision du composant   */ +    size_t i;                               /* Boucle de parcours          */      gint left_corner;                       /* Abscisse minimale           */      gint top_corner;                        /* Ordonnée minimale           */ -    size_t i;                               /* Boucle de parcours          */      fixed_class = g_type_class_peek_parent(GTK_GRAPH_VIEW_GET_CLASS(widget));      fixed_class = g_type_class_peek_parent(fixed_class); @@ -203,6 +203,21 @@ static void gtk_graph_view_size_request(GtkWidget *widget, GtkRequisition *requi      view = GTK_GRAPH_VIEW(widget); +    requisition->width += GTK_VIEW_PANEL(widget)->hadjustment->value; +    requisition->height += GTK_VIEW_PANEL(widget)->vadjustment->value; + +    /** +     * On s'assure de ne couper aucun lien. +     */ + +    for (i = 0; i < view->links_count; i++) +        gtk_link_renderer_size_request(view->links[i], requisition); + +    /** +     * Traitement purement cosmétique : on ajoute la même bordure aux bords +     * droit et bas. +     */ +      left_corner = G_MAXINT;      top_corner = G_MAXINT; @@ -215,9 +230,6 @@ static void gtk_graph_view_size_request(GtkWidget *widget, GtkRequisition *requi      if (left_corner != G_MAXINT) requisition->width += left_corner;      if (top_corner != G_MAXINT) requisition->height += top_corner; -    requisition->width += GTK_VIEW_PANEL(widget)->hadjustment->value; -    requisition->height += GTK_VIEW_PANEL(widget)->vadjustment->value; -  } @@ -240,6 +252,8 @@ static void gtk_graph_view_size_allocate(GtkWidget *widget, GtkAllocation *alloc      GtkViewPanel *panel;                    /* Autre version du composant  */      GtkAllocation valloc;                   /* Surface utilisable          */      GtkRequisition req;                     /* Taille demandée             */ +    GtkGraphView *view;                     /* Autre vision du composant   */ +    GdkWindow *window;                      /* Fenêtre associée au support */      gboolean changed;                       /* Changement de valeur ?      */      /* Mise à jour GTK */ @@ -258,6 +272,14 @@ static void gtk_graph_view_size_allocate(GtkWidget *widget, GtkAllocation *alloc      gtk_widget_size_request(widget, &req); +    /* Correction de la taille du support */ + +    view = GTK_GRAPH_VIEW(widget); +    window = GTK_WIDGET(view->support)->window; + +    if (gdk_window_get_width(window) != req.width || gdk_window_get_height(window) != req.height) +        gdk_window_resize(window, req.width, req.height); +      /* Défilement horizontal */      panel->hadjustment->page_size = valloc.width; diff --git a/src/gtkext/gtklinkrenderer.c b/src/gtkext/gtklinkrenderer.c index 8b43fa8..e37a5f1 100644 --- a/src/gtkext/gtklinkrenderer.c +++ b/src/gtkext/gtklinkrenderer.c @@ -134,6 +134,32 @@ GtkObject *gtk_link_renderer_new(LinkColor color, GdkPoint *points, size_t count  /******************************************************************************  *                                                                             * +*  Paramètres  : renderer    = moteur de rendu à manipuler.                   * +*                requisition = dimensions adaptées validées. [OUT]            * +*                                                                             * +*  Description : S'assure qu'une zone sera assez grande pour tout contenir.   * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +void gtk_link_renderer_size_request(const GtkLinkRenderer *renderer, GtkRequisition *requisition) +{ +    size_t i;                               /* Boucle de parcours          */ + +    for (i = 0; i < renderer->count; i++) +    { +        requisition->width = MAX(requisition->width, renderer->points[i].x); +        requisition->height = MAX(requisition->height, renderer->points[i].y); +    } + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : renderer = moteur de rendu à manipuler.                      *  *                drawable = surface de rendu à utiliser.                      *  *                gc       = contexte graphique du dessin.                     * diff --git a/src/gtkext/gtklinkrenderer.h b/src/gtkext/gtklinkrenderer.h index 3f6442c..ed2699e 100644 --- a/src/gtkext/gtklinkrenderer.h +++ b/src/gtkext/gtklinkrenderer.h @@ -27,7 +27,7 @@  #include <stdbool.h>  #include <gdk/gdk.h> -#include <gtk/gtkobject.h> +#include <gtk/gtk.h> @@ -65,6 +65,9 @@ GType gtk_link_renderer_get_type(void);  /* Crée un nouveau moteur de rendu pour les liens graphiques. */  GtkObject *gtk_link_renderer_new(LinkColor, GdkPoint *, size_t); +/* S'assure qu'une zone sera assez grande pour tout contenir. */ +void gtk_link_renderer_size_request(const GtkLinkRenderer *, GtkRequisition *); +  /* Dessine les liens graphiques enregistrés dans le moteur. */  void gtk_link_renderer_draw(const GtkLinkRenderer *, GdkDrawable *, GdkGC *); | 
