140
140
case PROP_VSCROLLBAR_POLICY:
141
141
g_value_set_enum (value, priv->vscrollbar_policy);
143
case PROP_HSCROLLBAR_VISIBLE:
144
g_value_set_boolean (value, priv->hscrollbar_visible);
146
case PROP_VSCROLLBAR_VISIBLE:
147
g_value_set_boolean (value, priv->vscrollbar_visible);
143
149
case PROP_MOUSE_SCROLL:
144
150
g_value_set_boolean (value, priv->mouse_scroll);
147
g_value_set_boolean (value, priv->vfade);
150
153
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
155
* st_scroll_view_set_vfade:
158
* st_scroll_view_update_vfade_effect:
156
159
* @self: a #StScrollView
157
* @vfade: Whether to enable the vertical fade effect
160
* @fade_offset: The length of the fade effect, in pixels.
159
* Sets whether to fade the content at the top and bottom of the area when not
160
* fully scrolled to that edge.
162
* Sets the height of the fade area area in pixels. A value of 0
163
* disables the effect.
163
st_scroll_view_set_vfade (StScrollView *self,
166
st_scroll_view_update_vfade_effect (StScrollView *self,
166
169
StScrollViewPrivate *priv = ST_SCROLL_VIEW (self)->priv;
168
vfade = vfade != FALSE;
169
if (priv->vfade == vfade)
171
/* A fade amount of more than 0 enables the effect. */
172
if (fade_offset > 0.)
176
if (priv->vfade_effect == NULL)
174
if (priv->vfade_effect == NULL) {
177
175
priv->vfade_effect = g_object_new (ST_TYPE_SCROLL_VIEW_FADE, NULL);
179
clutter_actor_add_effect_with_name (CLUTTER_ACTOR (self), "vfade",
180
CLUTTER_EFFECT (priv->vfade_effect));
177
clutter_actor_add_effect_with_name (CLUTTER_ACTOR (self), "vfade",
178
CLUTTER_EFFECT (priv->vfade_effect));
181
g_object_set (priv->vfade_effect,
182
"fade-offset", fade_offset,
184
clutter_actor_remove_effect (CLUTTER_ACTOR (self), CLUTTER_EFFECT (priv->vfade_effect));
185
priv->vfade_effect = NULL;
187
if (priv->vfade_effect != NULL) {
188
clutter_actor_remove_effect (CLUTTER_ACTOR (self), CLUTTER_EFFECT (priv->vfade_effect));
189
priv->vfade_effect = NULL;
188
193
clutter_actor_queue_redraw (CLUTTER_ACTOR (self));
190
g_object_notify (G_OBJECT (self), "vfade");
655
655
clutter_actor_allocate (priv->child, &child_box, flags);
657
priv->hscrollbar_visible = hscrollbar_visible;
658
priv->vscrollbar_visible = vscrollbar_visible;
657
if (priv->hscrollbar_visible != hscrollbar_visible)
659
g_object_freeze_notify (G_OBJECT (actor));
660
priv->hscrollbar_visible = hscrollbar_visible;
661
g_object_notify (G_OBJECT (actor), "hscrollbar-visible");
662
g_object_thaw_notify (G_OBJECT (actor));
665
if (priv->vscrollbar_visible != vscrollbar_visible)
667
g_object_freeze_notify (G_OBJECT (actor));
668
priv->vscrollbar_visible = vscrollbar_visible;
669
g_object_notify (G_OBJECT (actor), "vscrollbar-visible");
670
g_object_thaw_notify (G_OBJECT (actor));
662
676
st_scroll_view_style_changed (StWidget *widget)
664
StScrollViewPrivate *priv = ST_SCROLL_VIEW (widget)->priv;
678
StScrollView *self = ST_SCROLL_VIEW (widget);
679
StScrollViewPrivate *priv = self->priv;
681
StThemeNode *theme_node = st_widget_get_theme_node (widget);
682
gdouble fade_offset = st_theme_node_get_length (theme_node, "-st-vfade-offset");
683
st_scroll_view_update_vfade_effect (self, fade_offset);
666
685
st_widget_style_changed (ST_WIDGET (priv->hscroll));
667
686
st_widget_style_changed (ST_WIDGET (priv->vscroll));
789
808
G_PARAM_READWRITE);
790
809
g_object_class_install_property (object_class, PROP_HSCROLLBAR_POLICY, pspec);
811
pspec = g_param_spec_boolean ("hscrollbar-visible",
812
"Horizontal Scrollbar Visibility",
813
"Whether the horizontal scrollbar is visible",
816
g_object_class_install_property (object_class, PROP_HSCROLLBAR_VISIBLE, pspec);
818
pspec = g_param_spec_boolean ("vscrollbar-visible",
819
"Vertical Scrollbar Visibility",
820
"Whether the vertical scrollbar is visible",
823
g_object_class_install_property (object_class, PROP_VSCROLLBAR_VISIBLE, pspec);
792
825
pspec = g_param_spec_boolean ("enable-mouse-scrolling",
793
826
"Enable Mouse Scrolling",
794
827
"Enable automatic mouse wheel scrolling",