From 547b89e39b4750436dc96e4baa78798e334f659e Mon Sep 17 00:00:00 2001 From: Alberto Garcia Date: Mon, 8 Jun 2009 12:51:31 +0200 Subject: [PATCH] Updated HildonBanner example * examples/hildon-banner-example.c: Several style updates (on_animation_clicked, on_animation_idle) (on_progress_clicked, on_progress_idle): Add additional reference for the cases when the parent window is destroyed. --- ChangeLog | 9 ++++++ examples/hildon-banner-example.c | 62 +++++++++++++++++++------------------- 2 files changed, 40 insertions(+), 31 deletions(-) diff --git a/ChangeLog b/ChangeLog index 274ae26..1080ac7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2009-06-08 Alberto Garcia + * examples/hildon-banner-example.c: + Several style updates + (on_animation_clicked, on_animation_idle) + (on_progress_clicked, on_progress_idle): + Add additional reference for the cases when the parent window is + destroyed. + +2009-06-08 Alberto Garcia + * doc/hildon-sections.txt * hildon/hildon-pannable-area.c * hildon/hildon-banner.h diff --git a/examples/hildon-banner-example.c b/examples/hildon-banner-example.c index 2cb399c..b5b13a6 100644 --- a/examples/hildon-banner-example.c +++ b/examples/hildon-banner-example.c @@ -1,7 +1,7 @@ /* * This file is a part of hildon examples * - * Copyright (C) 2005, 2006 Nokia Corporation, all rights reserved. + * Copyright (C) 2005, 2006, 2009 Nokia Corporation, all rights reserved. * * Author: Michael Dominic Kostrzewa * @@ -22,16 +22,13 @@ * */ -#include -#include -#include -#include #include static gboolean on_animation_idle (GtkWidget *banner) { gtk_widget_destroy (banner); + g_object_unref (banner); return FALSE; } @@ -39,13 +36,14 @@ static gboolean on_progress_idle (GtkWidget *banner) { gtk_widget_destroy (banner); + g_object_unref (banner); return FALSE; } static gboolean on_information_clicked (GtkWidget *widget) { - GtkWidget* banner = hildon_banner_show_information (widget, NULL, "Information banner"); + GtkWidget* banner = hildon_banner_show_information (widget, NULL, "Information banner"); hildon_banner_set_timeout (HILDON_BANNER (banner), 9000); return TRUE; } @@ -53,53 +51,55 @@ on_information_clicked (GtkWidget *widget) static gboolean on_animation_clicked (GtkWidget *widget) { - GtkWidget *banner = hildon_banner_show_animation (widget, NULL, "Animation banner"); - g_timeout_add (2000, (gpointer) on_animation_idle, banner); + GtkWidget *banner = hildon_banner_show_animation (widget, NULL, "Animation banner"); + g_object_ref (banner); + gdk_threads_add_timeout (5000, (GSourceFunc) on_animation_idle, banner); return TRUE; } static gboolean on_progress_clicked (GtkWidget *widget) { - GtkWidget *banner = hildon_banner_show_progress (widget, NULL, "Progress banner"); - g_timeout_add (2000, (gpointer) on_progress_idle, banner); + GtkWidget *banner = hildon_banner_show_progress (widget, NULL, "Progress banner"); + g_object_ref (banner); + gdk_threads_add_timeout (5000, (GSourceFunc) on_progress_idle, banner); return TRUE; } int -main (int argc, +main (int argc, char **argv) { + HildonProgram *program; + GtkWidget *window, *vbox, *button1, *button2, *button3; + hildon_gtk_init (&argc, &argv); - HildonProgram *program = hildon_program_get_instance (); + window = hildon_window_new (); + program = hildon_program_get_instance (); + hildon_program_add_window (program, HILDON_WINDOW (window)); - GtkWidget *window = hildon_window_new (); - hildon_program_add_window (program, HILDON_WINDOW (window)); + button1 = gtk_button_new_with_label ("Information"); + g_signal_connect (button1, "clicked", G_CALLBACK (on_information_clicked), NULL); - gtk_container_set_border_width (GTK_CONTAINER (window), 6); + button2 = gtk_button_new_with_label ("Animation"); + g_signal_connect (button2, "clicked", G_CALLBACK (on_animation_clicked), NULL); - GtkVBox *vbox = GTK_VBOX (gtk_vbox_new (6, FALSE)); - GtkButton *button1 = GTK_BUTTON (gtk_button_new_with_label ("Information")); - g_signal_connect (G_OBJECT (button1), "clicked", G_CALLBACK (on_information_clicked), NULL); + button3 = gtk_button_new_with_label ("Progress"); + g_signal_connect (button3, "clicked", G_CALLBACK (on_progress_clicked), NULL); - GtkButton *button2 = GTK_BUTTON (gtk_button_new_with_label ("Animation")); - g_signal_connect (G_OBJECT (button2), "clicked", G_CALLBACK (on_animation_clicked), NULL); + vbox = gtk_vbox_new (6, FALSE); + gtk_box_pack_start (GTK_BOX (vbox), button1, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (vbox), button2, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (vbox), button3, TRUE, TRUE, 0); - GtkButton *button3 = GTK_BUTTON (gtk_button_new_with_label ("Progress")); - g_signal_connect (G_OBJECT (button3), "clicked", G_CALLBACK (on_progress_clicked), NULL); + gtk_container_set_border_width (GTK_CONTAINER (window), 6); + gtk_container_add (GTK_CONTAINER (window), vbox); - g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (gtk_main_quit), NULL); + gtk_widget_show_all (window); - gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button1), TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button2), TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button3), TRUE, TRUE, 0); - gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (vbox)); + g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); - gtk_widget_show_all (GTK_WIDGET (window)); - gtk_main (); return 0; } - - -- 1.7.9.5