diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/dialogs/about.c | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/src/gui/dialogs/about.c b/src/gui/dialogs/about.c index 7868e19..b594d06 100644 --- a/src/gui/dialogs/about.c +++ b/src/gui/dialogs/about.c @@ -41,6 +41,9 @@ /* Réagit à l'appui d'une touche sur la fenêtre 'A propos'. */ static gboolean close_about_window_on_escape(GtkWidget *, GdkEventKey *, gpointer); +/* Dessine un fond adapté pour la fenêtre sans toucher au thème. */ +static gboolean draw_black_background(GtkWidget *, cairo_t *, gpointer); + /****************************************************************************** @@ -58,7 +61,6 @@ static gboolean close_about_window_on_escape(GtkWidget *, GdkEventKey *, gpointe GtkWidget *create_about_dialog(GtkWindow *parent) { GtkWidget *result; /* Fenêtre à renvoyer */ - GdkRGBA color; /* Couleur de fond noire */ GtkWidget *fixed; /* Support global */ gchar *filename; /* Chemin d'accès au fichier */ GtkWidget *image; /* Image chargée */ @@ -79,13 +81,12 @@ GtkWidget *create_about_dialog(GtkWindow *parent) g_signal_connect(result, "key_press_event", G_CALLBACK(close_about_window_on_escape), NULL); - gdk_rgba_parse(&color, "black"); - gtk_widget_override_background_color(GTK_WIDGET(result), GTK_STATE_FLAG_NORMAL, &color); - fixed = gtk_fixed_new(); gtk_widget_show(fixed); gtk_container_add(GTK_CONTAINER(result), fixed); + g_signal_connect(fixed, "draw", G_CALLBACK(draw_black_background), NULL); + /* Images principales */ filename = find_pixmap_file("chrysalide-full.png"); @@ -138,13 +139,13 @@ GtkWidget *create_about_dialog(GtkWindow *parent) /****************************************************************************** * * -* Paramètres : window = fenêtre visée par la procédure. * +* Paramètres : widget = fenêtre visée par la procédure. * * event = informations liées à l'événement. * * dummy = donnée non utilisée ici. * * * * Description : Réagit à l'appui d'une touche sur la fenêtre 'A propos'. * * * -* Retour : TRUE pour poursuivre la propagation, FALSE autrement. * +* Retour : TRUE pour interrompre la propagation, FALSE autrement. * * * * Remarques : - * * * @@ -164,3 +165,35 @@ static gboolean close_about_window_on_escape(GtkWidget *widget, GdkEventKey *eve return result; } + + +/****************************************************************************** +* * +* Paramètres : widget = fenêtre visée par la procédure. * +* event = informations liées à l'événement. * +* dummy = donnée non utilisée ici. * +* * +* Description : Dessine un fond adapté pour la fenêtre sans toucher au thème.* +* * +* Retour : TRUE pour interrompre la propagation, FALSE autrement. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static gboolean draw_black_background(GtkWidget *widget, cairo_t *cr, gpointer dummy) +{ + int width; /* Largeur du composant */ + int height; /* Hauteur du composant */ + + width = gtk_widget_get_allocated_width(widget); + height = gtk_widget_get_allocated_height(widget); + + cairo_set_source_rgb(cr, 0.0, 0.0, 0.0); + + cairo_rectangle(cr, 0, 0, width, height); + cairo_fill(cr); + + return FALSE; + +} |