static void modest_dimming_rules_group_init (ModestDimmingRulesGroup *obj);
static void modest_dimming_rules_group_finalize (GObject *obj);
-#ifdef MODEST_PLATFORM_MAEMO
+#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,
ModestWindow *window);
priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE(obj);
+ if (priv->window)
+ g_object_weak_unref (G_OBJECT (priv->window), on_window_destroy, obj);
+
if (priv->name != NULL)
g_free(priv->name);
priv->window = MODEST_WINDOW (window);
widget = modest_dimming_rule_get_widget (rule);
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
/* Connect insensitive-presss handler to show notifications */
g_signal_connect (G_OBJECT (widget), "insensitive-press",
G_CALLBACK (_insensitive_press_callback),
/* 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++) {
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);
modest_dimming_rule_process (MODEST_DIMMING_RULE(data));
}
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
static void
_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)
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;
+}