X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-dimming-rule.c;h=45951645973b6750ed96a0fabf5ce04248bae5bc;hb=c6720b00ddc000f6a0b9a11408e5a18fb605d12a;hp=49621cf0ea59f97052cec9b9068f13a3b9668121;hpb=38402a6550ee767271308f42ebfbfc81a1fa736b;p=modest diff --git a/src/modest-dimming-rule.c b/src/modest-dimming-rule.c index 49621cf..4595164 100644 --- a/src/modest-dimming-rule.c +++ b/src/modest-dimming-rule.c @@ -28,10 +28,12 @@ */ #include "modest-dimming-rule.h" +#include "modest-ui-dimming-manager.h" static void modest_dimming_rule_class_init (ModestDimmingRuleClass *klass); static void modest_dimming_rule_init (ModestDimmingRule *obj); static void modest_dimming_rule_finalize (GObject *obj); +static void modest_dimming_rule_dispose (GObject *obj); typedef struct _ModestDimmingRulePrivate ModestDimmingRulePrivate; struct _ModestDimmingRulePrivate { @@ -82,6 +84,7 @@ modest_dimming_rule_class_init (ModestDimmingRuleClass *klass) parent_class = g_type_class_peek_parent (klass); gobject_class->finalize = modest_dimming_rule_finalize; + gobject_class->dispose = modest_dimming_rule_dispose; g_type_class_add_private (gobject_class, sizeof(ModestDimmingRulePrivate)); } @@ -117,6 +120,21 @@ modest_dimming_rule_finalize (GObject *obj) G_OBJECT_CLASS(parent_class)->finalize (obj); } +static void +modest_dimming_rule_dispose (GObject *obj) +{ + ModestDimmingRulePrivate *priv; + + priv = MODEST_DIMMING_RULE_GET_PRIVATE(obj); + + if (priv->group != NULL) { + g_object_unref (priv->group); + priv->group = NULL; + } + + G_OBJECT_CLASS(parent_class)->dispose (obj); +} + ModestDimmingRule* modest_dimming_rule_new(ModestWindow *win, @@ -187,7 +205,22 @@ modest_dimming_rule_process (ModestDimmingRule *self) else g_printerr ("modest: action path '%s' has not associatd action\n", priv->action_path); } else if (priv->widget != NULL) { - gtk_widget_set_sensitive (priv->widget, !dimmed); + ModestUIDimmingMode mode; + + mode = modest_ui_dimming_manager_get_widget_dimming_mode (priv->widget); + switch (mode) { + case MODEST_UI_DIMMING_MODE_HIDE: + if (dimmed) { + gtk_widget_hide (GTK_WIDGET (priv->widget)); + } else { + gtk_widget_show (GTK_WIDGET (priv->widget)); + } + break; + case MODEST_UI_DIMMING_MODE_DIM: + default: + gtk_widget_set_sensitive (priv->widget, !dimmed); + break; + } } }