X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-dimming-rules-group.c;h=e848ae92091ff65d2cbc536aa3d2ec55f8ffb688;hp=a7459e3923b35ae7dc2a1a6eb20218aa99db4385;hb=755e518111fd7a392184651487338811efa47d14;hpb=38402a6550ee767271308f42ebfbfc81a1fa736b diff --git a/src/modest-dimming-rules-group.c b/src/modest-dimming-rules-group.c index a7459e3..e848ae9 100644 --- a/src/modest-dimming-rules-group.c +++ b/src/modest-dimming-rules-group.c @@ -37,7 +37,12 @@ static void modest_dimming_rules_group_class_init (ModestDimmingRulesGroupClass static void modest_dimming_rules_group_init (ModestDimmingRulesGroup *obj); static void modest_dimming_rules_group_finalize (GObject *obj); +#ifndef MODEST_TOOLKIT_GTK static void _insensitive_press_callback (GtkWidget *widget, gpointer user_data); +#endif + +static void on_window_destroy (gpointer data, + GObject *object); static void _add_rule (ModestDimmingRulesGroup *self, ModestDimmingRule *rule, @@ -62,9 +67,6 @@ static GObjectClass *parent_class = NULL; static void _execute_dimming_rule (gpointer key, gpointer value, gpointer user_data); static void _execute_widget_dimming_rule (gpointer data, gpointer user_data); -static void _insensitive_press_callback (GtkWidget *widget, gpointer user_data); - - GType modest_dimming_rules_group_get_type (void) @@ -189,11 +191,12 @@ _add_rule (ModestDimmingRulesGroup *self, priv->window = MODEST_WINDOW (window); widget = modest_dimming_rule_get_widget (rule); +#ifndef MODEST_TOOLKIT_GTK /* Connect insensitive-presss handler to show notifications */ g_signal_connect (G_OBJECT (widget), "insensitive-press", G_CALLBACK (_insensitive_press_callback), rule); - +#endif /* Register new dimming rule */ modest_dimming_rule_set_group (rule, self); action_path = modest_dimming_rule_get_action_path (rule); @@ -250,6 +253,7 @@ modest_dimming_rules_group_add_rules (ModestDimmingRulesGroup *self, /* Set window to process dimming rules */ priv->window = MODEST_WINDOW (window); + g_object_weak_ref (G_OBJECT (window), on_window_destroy, self); /* Add dimming rules */ for (i=0; i < n_elements; i++) { @@ -296,6 +300,9 @@ modest_dimming_rules_group_execute (ModestDimmingRulesGroup *self) g_return_if_fail (MODEST_IS_DIMMING_RULES_GROUP(self)); priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE(self); + if (!priv->window) + return; + /* Init dimming rules init data */ state = modest_ui_dimming_rules_define_dimming_state (priv->window); modest_window_set_dimming_state (priv->window, state); @@ -327,6 +334,7 @@ _execute_widget_dimming_rule (gpointer data, gpointer user_data) modest_dimming_rule_process (MODEST_DIMMING_RULE(data)); } +#ifndef MODEST_TOOLKIT_GTK static void _insensitive_press_callback (GtkWidget *widget, gpointer user_data) { @@ -346,10 +354,13 @@ _insensitive_press_callback (GtkWidget *widget, gpointer user_data) notification = modest_dimming_rule_get_notification (rule); if (notification == NULL) goto frees; - + + /* Notifications for dimmed items are not shown in Hildon2 */ +#ifndef MODEST_TOOLKIT_HILDON2 /* Show notification banner */ - modest_platform_information_banner (NULL, NULL, notification); - + modest_platform_information_banner (NULL, NULL, notification); +#endif + /* Free */ frees: if (group != NULL) @@ -357,3 +368,14 @@ _insensitive_press_callback (GtkWidget *widget, gpointer user_data) if (notification != NULL) g_free(notification); } +#endif + +static void +on_window_destroy (gpointer data, + GObject *object) +{ + ModestDimmingRulesGroup *self = MODEST_DIMMING_RULES_GROUP (data); + ModestDimmingRulesGroupPrivate *priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE (self); + + priv->window = NULL; +}