From 529e0079bc3d17ed856c13b2d623ee5a27815eb1 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Date: Wed, 20 May 2009 20:09:51 +0200 Subject: [PATCH] Redisplay HildonBanner if the screen is rotated * hildon/hildon-banner.c (hildon_banner_realize, +hildon_banner_unrealize) (+screen_size_changed, hildon_banner_class_init): Redisplay the banner if the screen is rotated. Fixes: NB#117870 ('Disconnect charger...' info banner is truncated on transition from landscape to portrait) --- ChangeLog | 10 ++++++++++ hildon/hildon-banner.c | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/ChangeLog b/ChangeLog index a82de1c..0dcacf2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2009-05-20 Alberto Garcia + + * hildon/hildon-banner.c + (hildon_banner_realize, +hildon_banner_unrealize) + (+screen_size_changed, hildon_banner_class_init): + Redisplay the banner if the screen is rotated. + + Fixes: NB#117870 ('Disconnect charger...' info banner is truncated + on transition from landscape to portrait) + 2009-05-20 Alejandro Pinheiro * hildon/hildon-banner.[ch]: diff --git a/hildon/hildon-banner.c b/hildon/hildon-banner.c index 47f0915..5ff9ccf 100644 --- a/hildon/hildon-banner.c +++ b/hildon/hildon-banner.c @@ -674,9 +674,18 @@ hildon_banner_check_position (GtkWidget *widget) } static void +screen_size_changed (GdkScreen *screen, + GtkWindow *banner) + +{ + gtk_window_reshow_with_initial_size (banner); +} + +static void hildon_banner_realize (GtkWidget *widget) { GdkWindow *gdkwin; + GdkScreen *screen; GdkAtom atom; guint32 portrait = 1; const gchar *notification_type = "_HILDON_NOTIFICATION_TYPE_BANNER"; @@ -710,6 +719,18 @@ hildon_banner_realize (GtkWidget *widget) hildon_banner_set_override_flag (HILDON_BANNER (widget)); priv->overrides_dnd = TRUE; } + + screen = gtk_widget_get_screen (widget); + g_signal_connect (screen, "size-changed", G_CALLBACK (screen_size_changed), widget); +} + +static void +hildon_banner_unrealize (GtkWidget *widget) +{ + GdkScreen *screen = gtk_widget_get_screen (widget); + g_signal_handlers_disconnect_by_func (screen, G_CALLBACK (screen_size_changed), widget); + + GTK_WIDGET_CLASS (hildon_banner_parent_class)->unrealize (widget); } static void @@ -733,6 +754,7 @@ hildon_banner_class_init (HildonBannerClass *klass) GTK_OBJECT_CLASS (klass)->destroy = hildon_banner_destroy; widget_class->map_event = hildon_banner_map_event; widget_class->realize = hildon_banner_realize; + widget_class->unrealize = hildon_banner_unrealize; widget_class->button_press_event = hildon_banner_button_press_event; #if defined(MAEMO_GTK) widget_class->map = hildon_banner_map; -- 1.7.9.5