From 4265b9c73f3cfbb745759ceb62b723957c67d65e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 23 Jan 2025 19:26:36 +0100 Subject: [PATCH] st: Add getter/setters for (almost) all properties Traditionally, getter/setter functions have been considered a C convenience, and we therefore didn't bother to add them for many properties that are only consumed from JS. However now that gjs optimizes property accesses by calling the appropriate getter/setter instead, it makes sense to add them. Leave out ScrollView's [vh]scrollbar-policy properties, as they have a combined `set_policy()` setter that is consistent with GTK's ScrolledWindow. Part-of: --- src/st/st-adjustment.c | 187 +++++++++++++++++++++++++++++------ src/st/st-adjustment.h | 19 ++++ src/st/st-button.c | 21 +++- src/st/st-button.h | 1 + src/st/st-image-content.c | 70 ++++++++++--- src/st/st-image-content.h | 10 +- src/st/st-scroll-view-fade.c | 47 +++++++-- src/st/st-scroll-view-fade.h | 12 +++ src/st/st-scroll-view.c | 22 +++++ src/st/st-scroll-view.h | 3 + src/st/st-settings.c | 112 ++++++++++++++++++--- src/st/st-settings.h | 17 ++++ src/st/st-theme.c | 39 ++++++++ src/st/st-theme.h | 4 + src/st/st-viewport.c | 20 +++- src/st/st-viewport.h | 4 + 16 files changed, 525 insertions(+), 63 deletions(-) diff --git a/src/st/st-adjustment.c b/src/st/st-adjustment.c index 05384e879..504d88c76 100644 --- a/src/st/st-adjustment.c +++ b/src/st/st-adjustment.c @@ -97,32 +97,16 @@ typedef struct _TransitionClosure gulong completed_id; } TransitionClosure; -static void st_adjustment_set_lower (StAdjustment *adjustment, - double lower); -static void st_adjustment_set_upper (StAdjustment *adjustment, - double upper); -static void st_adjustment_set_step_increment (StAdjustment *adjustment, - double step); -static void st_adjustment_set_page_increment (StAdjustment *adjustment, - double page); -static void st_adjustment_set_page_size (StAdjustment *adjustment, - double size); - static ClutterActor * -st_adjustment_get_actor (ClutterAnimatable *animatable) +animatable_get_actor (ClutterAnimatable *animatable) { - StAdjustment *adjustment = ST_ADJUSTMENT (animatable); - StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); - - g_warn_if_fail (priv->actor); - - return priv->actor; + return st_adjustment_get_actor (ST_ADJUSTMENT (animatable)); } static void animatable_iface_init (ClutterAnimatableInterface *iface) { - iface->get_actor = st_adjustment_get_actor; + iface->get_actor = animatable_get_actor; } static void @@ -201,12 +185,40 @@ actor_destroyed (gpointer user_data, g_object_notify_by_pspec (G_OBJECT (adj), props[PROP_ACTOR]); } -static void +/** + * st_adjustment_get_actor: + * @adjustment: a #StAdjustment + * + * Retrieves the actor used for transitions. + * + * Returns: (transfer none): + */ +ClutterActor * +st_adjustment_get_actor (StAdjustment *adjustment) +{ + StAdjustmentPrivate *priv; + + g_return_val_if_fail (ST_IS_ADJUSTMENT (adjustment), NULL); + + priv = st_adjustment_get_instance_private (adjustment); + return priv->actor; +} + +/** + * st_adjustment_set_actor: + * @adjustment: a #StAdjustment + * @actor: a #ClutterActor + * + * Sets the actor used for transitions. + */ +void st_adjustment_set_actor (StAdjustment *adj, ClutterActor *actor) { StAdjustmentPrivate *priv; + g_return_if_fail (ST_IS_ADJUSTMENT (adj)); + priv = st_adjustment_get_instance_private (adj); if (priv->actor == actor) @@ -562,6 +574,25 @@ st_adjustment_clamp_page (StAdjustment *adjustment, g_object_notify_by_pspec (G_OBJECT (adjustment), props[PROP_VALUE]); } +/** + * st_adjustment_get_lower: + * @adjustment: a #StAdjustment + * + * Retrieves the minimum value of the adjustment. + * + * Returns: the minimum value + */ +double +st_adjustment_get_lower (StAdjustment *adjustment) +{ + StAdjustmentPrivate *priv; + + g_return_val_if_fail (ST_IS_ADJUSTMENT (adjustment), -1); + + priv = st_adjustment_get_instance_private (adjustment); + return priv->lower; +} + /** * st_adjustment_set_lower: * @adjustment: a #StAdjustment @@ -579,11 +610,15 @@ st_adjustment_clamp_page (StAdjustment *adjustment, * Alternatively, [method@St.Adjustment.set_values] can be used to compress * #GObject::notify and [signal@St.Adjustment::changed] emissions. */ -static void +void st_adjustment_set_lower (StAdjustment *adjustment, gdouble lower) { - StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); + StAdjustmentPrivate *priv; + + g_return_if_fail (ST_IS_ADJUSTMENT (adjustment)); + + priv = st_adjustment_get_instance_private (adjustment); if (priv->lower != lower) { @@ -597,6 +632,25 @@ st_adjustment_set_lower (StAdjustment *adjustment, } } +/** + * st_adjustment_get_upper: + * @adjustment: a #StAdjustment + * + * Retrieves the maximum value of the adjustment. + * + * Returns: the maximum value + */ +double +st_adjustment_get_upper (StAdjustment *adjustment) +{ + StAdjustmentPrivate *priv; + + g_return_val_if_fail (ST_IS_ADJUSTMENT (adjustment), -1); + + priv = st_adjustment_get_instance_private (adjustment); + return priv->upper; +} + /** * st_adjustment_set_upper: * @adjustment: a #StAdjustment @@ -610,11 +664,15 @@ st_adjustment_set_lower (StAdjustment *adjustment, * See [method@St.Adjustment.set_lower] about how to compress multiple * signal emissions when setting multiple adjustment properties. */ -static void +void st_adjustment_set_upper (StAdjustment *adjustment, gdouble upper) { - StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); + StAdjustmentPrivate *priv; + + g_return_if_fail (ST_IS_ADJUSTMENT (adjustment)); + + priv = st_adjustment_get_instance_private (adjustment); if (priv->upper != upper) { @@ -628,6 +686,25 @@ st_adjustment_set_upper (StAdjustment *adjustment, } } +/** + * st_adjustment_get_step_increment: + * @adjustment: a #StAdjustment + * + * Retrieves the step increment of the adjustment. + * + * Returns: the step increment + */ +double +st_adjustment_get_step_increment (StAdjustment *adjustment) +{ + StAdjustmentPrivate *priv; + + g_return_val_if_fail (ST_IS_ADJUSTMENT (adjustment), -1); + + priv = st_adjustment_get_instance_private (adjustment); + return priv->step_increment; +} + /** * st_adjustment_set_step_increment: * @adjustment: a #StAdjustment @@ -638,11 +715,15 @@ st_adjustment_set_upper (StAdjustment *adjustment, * See [method@St.Adjustment.set_lower] about how to compress multiple * signal emissions when setting multiple adjustment properties. */ -static void +void st_adjustment_set_step_increment (StAdjustment *adjustment, gdouble step) { - StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); + StAdjustmentPrivate *priv; + + g_return_if_fail (ST_IS_ADJUSTMENT (adjustment)); + + priv = st_adjustment_get_instance_private (adjustment); if (priv->step_increment != step) { @@ -652,6 +733,25 @@ st_adjustment_set_step_increment (StAdjustment *adjustment, } } +/** + * st_adjustment_get_page_increment: + * @adjustment: a #StAdjustment + * + * Retrieves the page increment of the adjustment. + * + * Returns: the page increment + */ +double +st_adjustment_get_page_increment (StAdjustment *adjustment) +{ + StAdjustmentPrivate *priv; + + g_return_val_if_fail (ST_IS_ADJUSTMENT (adjustment), -1); + + priv = st_adjustment_get_instance_private (adjustment); + return priv->page_increment; +} + /** * st_adjustment_set_page_increment: * @adjustment: a #StAdjustment @@ -662,11 +762,15 @@ st_adjustment_set_step_increment (StAdjustment *adjustment, * See [method@St.Adjustment.set_lower] about how to compress multiple * signal emissions when setting multiple adjustment properties. */ -static void +void st_adjustment_set_page_increment (StAdjustment *adjustment, gdouble page) { - StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); + StAdjustmentPrivate *priv; + + g_return_if_fail (ST_IS_ADJUSTMENT (adjustment)); + + priv = st_adjustment_get_instance_private (adjustment); if (priv->page_increment != page) { @@ -676,6 +780,25 @@ st_adjustment_set_page_increment (StAdjustment *adjustment, } } +/** + * st_adjustment_get_page_size: + * @adjustment: a #StAdjustment + * + * Retrieves the page size of the adjustment. + * + * Returns: the page size + */ +double +st_adjustment_get_page_size (StAdjustment *adjustment) +{ + StAdjustmentPrivate *priv; + + g_return_val_if_fail (ST_IS_ADJUSTMENT (adjustment), -1); + + priv = st_adjustment_get_instance_private (adjustment); + return priv->page_size; +} + /** * st_adjustment_set_page_size: * @adjustment: a #StAdjustment @@ -686,11 +809,15 @@ st_adjustment_set_page_increment (StAdjustment *adjustment, * See [method@St.Adjustment.set_lower] about how to compress multiple * signal emissions when setting multiple adjustment properties. */ -static void +void st_adjustment_set_page_size (StAdjustment *adjustment, gdouble size) { - StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); + StAdjustmentPrivate *priv; + + g_return_if_fail (ST_IS_ADJUSTMENT (adjustment)); + + priv = st_adjustment_get_instance_private (adjustment); if (priv->page_size != size) { diff --git a/src/st/st-adjustment.h b/src/st/st-adjustment.h index 68e7a330b..caa2ab4f0 100644 --- a/src/st/st-adjustment.h +++ b/src/st/st-adjustment.h @@ -57,6 +57,21 @@ StAdjustment *st_adjustment_new (ClutterActor *actor, gdouble st_adjustment_get_value (StAdjustment *adjustment); void st_adjustment_set_value (StAdjustment *adjustment, gdouble value); +double st_adjustment_get_lower (StAdjustment *adjustment); +void st_adjustment_set_lower (StAdjustment *adjustment, + gdouble lower); +double st_adjustment_get_upper (StAdjustment *adjustment); +void st_adjustment_set_upper (StAdjustment *adjustment, + gdouble upper); +double st_adjustment_get_step_increment (StAdjustment *adjustment); +void st_adjustment_set_step_increment (StAdjustment *adjustment, + gdouble step); +double st_adjustment_get_page_increment (StAdjustment *adjustment); +void st_adjustment_set_page_increment (StAdjustment *adjustment, + gdouble page); +double st_adjustment_get_page_size (StAdjustment *adjustment); +void st_adjustment_set_page_size (StAdjustment *adjustment, + gdouble size); void st_adjustment_clamp_page (StAdjustment *adjustment, gdouble lower, gdouble upper); @@ -86,4 +101,8 @@ void st_adjustment_add_transition (StAdjustment *adjustme void st_adjustment_remove_transition (StAdjustment *adjustment, const char *name); +ClutterActor * st_adjustment_get_actor (StAdjustment *adjustment); +void st_adjustment_set_actor (StAdjustment *adjustment, + ClutterActor *actor); + G_END_DECLS diff --git a/src/st/st-button.c b/src/st/st-button.c index d0e4caf37..683af7f0a 100644 --- a/src/st/st-button.c +++ b/src/st/st-button.c @@ -449,7 +449,7 @@ st_button_get_property (GObject *gobject, g_value_set_boolean (value, priv->is_checked); break; case PROP_PRESSED: - g_value_set_boolean (value, priv->pressed != 0 || priv->press_sequence != NULL); + g_value_set_boolean (value, st_button_get_pressed (ST_BUTTON (gobject))); break; @@ -879,6 +879,25 @@ st_button_set_checked (StButton *button, g_object_notify_by_pspec (G_OBJECT (button), props[PROP_CHECKED]); } +/** + * st_button_get_pressed: + * @button: a #StButton + * + * Get the #StButton:pressed property of a #StButton + * + * Returns: %TRUE if the button is pressed, or %FALSE if not + */ +gboolean +st_button_get_pressed (StButton *button) +{ + StButtonPrivate *priv; + + g_return_val_if_fail (ST_IS_BUTTON (button), FALSE); + + priv = st_button_get_instance_private (button); + return priv->pressed != 0 || priv->press_sequence != NULL; +} + /** * st_button_fake_release: * @button: an #StButton diff --git a/src/st/st-button.h b/src/st/st-button.h index 74aa391e4..11a4f5138 100644 --- a/src/st/st-button.h +++ b/src/st/st-button.h @@ -56,6 +56,7 @@ gboolean st_button_get_toggle_mode (StButton *button); void st_button_set_checked (StButton *button, gboolean checked); gboolean st_button_get_checked (StButton *button); +gboolean st_button_get_pressed (StButton *button); void st_button_fake_release (StButton *button); diff --git a/src/st/st-image-content.c b/src/st/st-image-content.c index 97cca5f1f..8c47af3cd 100644 --- a/src/st/st-image-content.c +++ b/src/st/st-image-content.c @@ -37,10 +37,15 @@ struct _StImageContent enum { PROP_0, + PROP_PREFERRED_WIDTH, PROP_PREFERRED_HEIGHT, + + N_PROPS, }; +static GParamSpec *props[N_PROPS] = { NULL, }; + static void clutter_content_interface_init (ClutterContentInterface *iface); static void g_icon_interface_init (GIconIface *iface); static void g_loadable_icon_interface_init (GLoadableIconIface *iface); @@ -103,11 +108,11 @@ st_image_content_set_property (GObject *object, switch (prop_id) { case PROP_PREFERRED_WIDTH: - self->width = g_value_get_int (value); + st_image_content_set_preferred_width (self, g_value_get_int (value)); break; case PROP_PREFERRED_HEIGHT: - self->height = g_value_get_int (value); + st_image_content_set_preferred_height (self, g_value_get_int (value)); break; default: @@ -129,7 +134,6 @@ st_image_content_finalize (GObject *gobject) static void st_image_content_class_init (StImageContentClass *klass) { - GParamSpec *pspec; GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->constructed = st_image_content_constructed; @@ -137,15 +141,17 @@ st_image_content_class_init (StImageContentClass *klass) object_class->set_property = st_image_content_set_property; object_class->finalize = st_image_content_finalize; - pspec = g_param_spec_int ("preferred-width", NULL, NULL, - -1, G_MAXINT, -1, - G_PARAM_CONSTRUCT_ONLY | ST_PARAM_READWRITE); - g_object_class_install_property (object_class, PROP_PREFERRED_WIDTH, pspec); + props[PROP_PREFERRED_WIDTH] = + g_param_spec_int ("preferred-width", NULL, NULL, + -1, G_MAXINT, -1, + G_PARAM_CONSTRUCT_ONLY | ST_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); - pspec = g_param_spec_int ("preferred-height", NULL, NULL, - -1, G_MAXINT, -1, - G_PARAM_CONSTRUCT_ONLY | ST_PARAM_READWRITE); - g_object_class_install_property (object_class, PROP_PREFERRED_HEIGHT, pspec); + props[PROP_PREFERRED_HEIGHT] = + g_param_spec_int ("preferred-height", NULL, NULL, + -1, G_MAXINT, -1, + G_PARAM_CONSTRUCT_ONLY | ST_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); + + g_object_class_install_properties (object_class, N_PROPS, props); } static gboolean @@ -360,6 +366,48 @@ st_image_content_new_with_preferred_size (int width, NULL); } +void +st_image_content_set_preferred_width (StImageContent *content, + int width) +{ + g_return_if_fail (ST_IS_IMAGE_CONTENT (content)); + + if (content->width == width) + return; + + content->width = width; + g_object_notify_by_pspec (G_OBJECT (content), props[PROP_PREFERRED_WIDTH]); +} + +int +st_image_content_get_preferred_width (StImageContent *content) +{ + g_return_val_if_fail (ST_IS_IMAGE_CONTENT (content), -1); + + return content->width; +} + +void +st_image_content_set_preferred_height (StImageContent *content, + int height) +{ + g_return_if_fail (ST_IS_IMAGE_CONTENT (content)); + + if (content->height == height) + return; + + content->height = height; + g_object_notify_by_pspec (G_OBJECT (content), props[PROP_PREFERRED_HEIGHT]); +} + +int +st_image_content_get_preferred_height (StImageContent *content) +{ + g_return_val_if_fail (ST_IS_IMAGE_CONTENT (content), -1); + + return content->height; +} + void st_image_content_set_is_symbolic (StImageContent *content, gboolean is_symbolic) diff --git a/src/st/st-image-content.h b/src/st/st-image-content.h index e8115f9af..fbed7f3e8 100644 --- a/src/st/st-image-content.h +++ b/src/st/st-image-content.h @@ -29,6 +29,14 @@ G_DECLARE_FINAL_TYPE (StImageContent, st_image_content, ClutterContent *st_image_content_new_with_preferred_size (int width, int height); +void st_image_content_set_preferred_width (StImageContent *content, + int width); +int st_image_content_get_preferred_width (StImageContent *content); + +void st_image_content_set_preferred_height (StImageContent *content, + int height); +int st_image_content_get_preferred_height (StImageContent *content); + gboolean st_image_content_set_data (StImageContent *content, CoglContext *cogl_context, const guint8 *data, @@ -47,4 +55,4 @@ gboolean st_image_content_set_bytes (StImageContent *content, guint row_stride, GError **error); -CoglTexture * st_image_content_get_texture (StImageContent *content); \ No newline at end of file +CoglTexture * st_image_content_get_texture (StImageContent *content); diff --git a/src/st/st-scroll-view-fade.c b/src/st/st-scroll-view-fade.c index d666b7cb8..fbc5311d1 100644 --- a/src/st/st-scroll-view-fade.c +++ b/src/st/st-scroll-view-fade.c @@ -253,10 +253,12 @@ st_scroll_view_fade_dispose (GObject *gobject) G_OBJECT_CLASS (st_scroll_view_fade_parent_class)->dispose (gobject); } -static void -st_scroll_view_set_fade_margins (StScrollViewFade *self, - ClutterMargin *fade_margins) +void +st_scroll_view_fade_set_fade_margins (StScrollViewFade *self, + ClutterMargin *fade_margins) { + g_return_if_fail (ST_IS_SCROLL_VIEW_FADE (self)); + if (self->fade_margins.left == fade_margins->left && self->fade_margins.right == fade_margins->right && self->fade_margins.top == fade_margins->top && @@ -271,10 +273,25 @@ st_scroll_view_set_fade_margins (StScrollViewFade *self, g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FADE_MARGINS]); } -static void +/** + * st_scroll_view_fade_get_fade_margins: + * + * Returns: (transfer none): The fade margins + */ +ClutterMargin * +st_scroll_view_fade_get_fade_margins (StScrollViewFade *self) +{ + g_return_val_if_fail (ST_IS_SCROLL_VIEW_FADE (self), NULL); + + return &self->fade_margins; +} + +void st_scroll_view_fade_set_fade_edges (StScrollViewFade *self, gboolean fade_edges) { + g_return_if_fail (ST_IS_SCROLL_VIEW_FADE (self)); + if (self->fade_edges == fade_edges) return; @@ -289,10 +306,20 @@ st_scroll_view_fade_set_fade_edges (StScrollViewFade *self, g_object_thaw_notify (G_OBJECT (self)); } -static void +gboolean +st_scroll_view_fade_get_fade_edges (StScrollViewFade *self) +{ + g_return_val_if_fail (ST_IS_SCROLL_VIEW_FADE (self), FALSE); + + return self->fade_edges; +} + +void st_scroll_view_fade_set_extend_fade_area (StScrollViewFade *self, gboolean extend_fade_area) { + g_return_if_fail (ST_IS_SCROLL_VIEW_FADE (self)); + if (self->extend_fade_area == extend_fade_area) return; @@ -304,6 +331,14 @@ st_scroll_view_fade_set_extend_fade_area (StScrollViewFade *self, g_object_notify_by_pspec (G_OBJECT (self), props[PROP_EXTEND_FADE_AREA]); } +gboolean +st_scroll_view_fade_get_extend_fade_area (StScrollViewFade *self) +{ + g_return_val_if_fail (ST_IS_SCROLL_VIEW_FADE (self), FALSE); + + return self->extend_fade_area; +} + static void st_scroll_view_fade_set_property (GObject *object, guint prop_id, @@ -315,7 +350,7 @@ st_scroll_view_fade_set_property (GObject *object, switch (prop_id) { case PROP_FADE_MARGINS: - st_scroll_view_set_fade_margins (self, g_value_get_boxed (value)); + st_scroll_view_fade_set_fade_margins (self, g_value_get_boxed (value)); break; case PROP_FADE_EDGES: st_scroll_view_fade_set_fade_edges (self, g_value_get_boolean (value)); diff --git a/src/st/st-scroll-view-fade.h b/src/st/st-scroll-view-fade.h index 92d5c2450..907b88cfe 100644 --- a/src/st/st-scroll-view-fade.h +++ b/src/st/st-scroll-view-fade.h @@ -30,4 +30,16 @@ G_DECLARE_FINAL_TYPE (StScrollViewFade, st_scroll_view_fade, ClutterEffect *st_scroll_view_fade_new (void); +void st_scroll_view_fade_set_fade_margins (StScrollViewFade *fade, + ClutterMargin *margins); +ClutterMargin * st_scroll_view_fade_get_fade_margins (StScrollViewFade *fade); + +void st_scroll_view_fade_set_fade_edges (StScrollViewFade *fade, + gboolean fade_edges); +gboolean st_scroll_view_fade_get_fade_edges (StScrollViewFade *fade); + +void st_scroll_view_fade_set_extend_fade_area (StScrollViewFade *fade, + gboolean extend_fade_area); +gboolean st_scroll_view_fade_get_extend_fade_area (StScrollViewFade *fade); + G_END_DECLS diff --git a/src/st/st-scroll-view.c b/src/st/st-scroll-view.c index dbd631df5..b9ff05567 100644 --- a/src/st/st-scroll-view.c +++ b/src/st/st-scroll-view.c @@ -1427,3 +1427,25 @@ st_scroll_view_get_bar_offsets (StScrollView *scroll, : 0.; } } + +gboolean +st_scroll_view_get_hscrollbar_visible (StScrollView *scroll) +{ + StScrollViewPrivate *priv; + + g_return_val_if_fail (ST_IS_SCROLL_VIEW (scroll), FALSE); + + priv = st_scroll_view_get_instance_private (scroll); + return priv->hscrollbar_visible; +} + +gboolean +st_scroll_view_get_vscrollbar_visible (StScrollView *scroll) +{ + StScrollViewPrivate *priv; + + g_return_val_if_fail (ST_IS_SCROLL_VIEW (scroll), FALSE); + + priv = st_scroll_view_get_instance_private (scroll); + return priv->vscrollbar_visible; +} diff --git a/src/st/st-scroll-view.h b/src/st/st-scroll-view.h index 19bae3ebc..32e1df0d6 100644 --- a/src/st/st-scroll-view.h +++ b/src/st/st-scroll-view.h @@ -56,6 +56,9 @@ void st_scroll_view_set_child (StScrollView *scroll, StAdjustment *st_scroll_view_get_hadjustment (StScrollView *scroll); StAdjustment *st_scroll_view_get_vadjustment (StScrollView *scroll); +gboolean st_scroll_view_get_hscrollbar_visible (StScrollView *scroll); +gboolean st_scroll_view_get_vscrollbar_visible (StScrollView *scroll); + gfloat st_scroll_view_get_column_size (StScrollView *scroll); void st_scroll_view_set_column_size (StScrollView *scroll, gfloat column_size); diff --git a/src/st/st-settings.c b/src/st/st-settings.c index 235a2b5bf..5fe1842dd 100644 --- a/src/st/st-settings.c +++ b/src/st/st-settings.c @@ -82,17 +82,6 @@ G_DEFINE_TYPE (StSettings, st_settings, G_TYPE_OBJECT) #define EPSILON (1e-10) -static void -st_settings_set_slow_down_factor (StSettings *settings, - double factor) -{ - if (fabs (settings->slow_down_factor - factor) < EPSILON) - return; - - settings->slow_down_factor = factor; - g_object_notify_by_pspec (G_OBJECT (settings), props[PROP_SLOW_DOWN_FACTOR]); -} - static gboolean get_enable_animations (StSettings *settings) { @@ -102,6 +91,107 @@ get_enable_animations (StSettings *settings) return settings->enable_animations; } +gboolean +st_settings_get_enable_animations (StSettings *settings) +{ + g_return_val_if_fail (ST_IS_SETTINGS (settings), FALSE); + + return get_enable_animations (settings); +} + +gboolean +st_settings_get_primary_paste (StSettings *settings) +{ + g_return_val_if_fail (ST_IS_SETTINGS (settings), FALSE); + + return settings->primary_paste; +} + +int +st_settings_get_drag_threshold (StSettings *settings) +{ + g_return_val_if_fail (ST_IS_SETTINGS (settings), -1); + + return settings->drag_threshold; +} + +const char * +st_settings_get_font_name (StSettings *settings) +{ + g_return_val_if_fail (ST_IS_SETTINGS (settings), NULL); + + return settings->font_name; +} + +const char * +st_settings_get_gtk_icon_theme (StSettings *settings) +{ + g_return_val_if_fail (ST_IS_SETTINGS (settings), NULL); + + return settings->gtk_icon_theme; +} + +StSystemColorScheme +st_settings_get_color_scheme (StSettings *settings) +{ + g_return_val_if_fail (ST_IS_SETTINGS (settings), ST_SYSTEM_COLOR_SCHEME_DEFAULT); + + return settings->color_scheme; +} + +StSystemAccentColor +st_settings_get_accent_color (StSettings *settings) +{ + g_return_val_if_fail (ST_IS_SETTINGS (settings), ST_SYSTEM_ACCENT_COLOR_BLUE); + + return settings->accent_color; +} + +gboolean +st_settings_get_high_contrast (StSettings *settings) +{ + g_return_val_if_fail (ST_IS_SETTINGS (settings), FALSE); + + return settings->high_contrast; +} + +gboolean +st_settings_get_magnifier_active (StSettings *settings) +{ + g_return_val_if_fail (ST_IS_SETTINGS (settings), FALSE); + + return settings->magnifier_active; +} + +gboolean +st_settings_get_disable_show_password (StSettings *settings) +{ + g_return_val_if_fail (ST_IS_SETTINGS (settings), FALSE); + + return settings->disable_show_password; +} + +double +st_settings_get_slow_down_factor (StSettings *settings) +{ + g_return_val_if_fail (ST_SETTINGS (settings), -1); + + return settings->slow_down_factor; +} + +void +st_settings_set_slow_down_factor (StSettings *settings, + double factor) +{ + g_return_if_fail (ST_IS_SETTINGS (settings)); + + if (fabs (settings->slow_down_factor - factor) < EPSILON) + return; + + settings->slow_down_factor = factor; + g_object_notify_by_pspec (G_OBJECT (settings), props[PROP_SLOW_DOWN_FACTOR]); +} + void st_settings_inhibit_animations (StSettings *settings) { diff --git a/src/st/st-settings.h b/src/st/st-settings.h index c871c4884..4c0018895 100644 --- a/src/st/st-settings.h +++ b/src/st/st-settings.h @@ -55,4 +55,21 @@ void st_settings_inhibit_animations (StSettings *settings); void st_settings_uninhibit_animations (StSettings *settings); +gboolean st_settings_get_enable_animations (StSettings *settings); +gboolean st_settings_get_primary_paste (StSettings *settings); +int st_settings_get_drag_threshold (StSettings *settings); + +const char * st_settings_get_font_name (StSettings *settings); +const char * st_settings_get_gtk_icon_theme (StSettings *settings); +StSystemColorScheme st_settings_get_color_scheme (StSettings *settings); +StSystemAccentColor st_settings_get_accent_color (StSettings *settings); +gboolean st_settings_get_high_contrast (StSettings *settings); + +gboolean st_settings_get_magnifier_active (StSettings *settings); +gboolean st_settings_get_disable_show_password (StSettings *settings); + +double st_settings_get_slow_down_factor (StSettings *settings); +void st_settings_set_slow_down_factor (StSettings *settings, + double factor); + G_END_DECLS diff --git a/src/st/st-theme.c b/src/st/st-theme.c index 9ad99e2b1..afff58db1 100644 --- a/src/st/st-theme.c +++ b/src/st/st-theme.c @@ -1097,3 +1097,42 @@ _st_theme_resolve_url (StTheme *theme, return resource; } + +/** + * st_theme_get_application_stylesheet: + * + * Returns: (transfer none): the stylesheet + */ +GFile * +st_theme_get_application_stylesheet (StTheme *theme) +{ + g_return_val_if_fail (ST_IS_THEME (theme), NULL); + + return theme->application_stylesheet; +} + +/** + * st_theme_get_theme_stylesheet: + * + * Returns: (transfer none): the stylesheet + */ +GFile * +st_theme_get_theme_stylesheet (StTheme *theme) +{ + g_return_val_if_fail (ST_IS_THEME (theme), NULL); + + return theme->theme_stylesheet; +} + +/** + * st_theme_get_default_stylesheet: + * + * Returns: (transfer none): the stylesheet + */ +GFile * +st_theme_get_default_stylesheet (StTheme *theme) +{ + g_return_val_if_fail (ST_IS_THEME (theme), NULL); + + return theme->default_stylesheet; +} diff --git a/src/st/st-theme.h b/src/st/st-theme.h index f9d0ecca1..9186334c1 100644 --- a/src/st/st-theme.h +++ b/src/st/st-theme.h @@ -46,4 +46,8 @@ gboolean st_theme_load_stylesheet (StTheme *theme, GFile *file, GError * void st_theme_unload_stylesheet (StTheme *theme, GFile *file); GSList *st_theme_get_custom_stylesheets (StTheme *theme); +GFile * st_theme_get_application_stylesheet (StTheme *theme); +GFile * st_theme_get_theme_stylesheet (StTheme *theme); +GFile * st_theme_get_default_stylesheet (StTheme *theme); + G_END_DECLS diff --git a/src/st/st-viewport.c b/src/st/st-viewport.c index 4f77b6c6c..259429546 100644 --- a/src/st/st-viewport.c +++ b/src/st/st-viewport.c @@ -174,12 +174,15 @@ st_viewport_scrollable_interface_init (StScrollableInterface *iface) iface->get_adjustments = scrollable_get_adjustments; } -static void +void st_viewport_set_clip_to_view (StViewport *viewport, gboolean clip_to_view) { - StViewportPrivate *priv = - st_viewport_get_instance_private (viewport); + StViewportPrivate *priv; + + g_return_if_fail (ST_IS_VIEWPORT (viewport)); + + priv = st_viewport_get_instance_private (viewport); if (!!priv->clip_to_view != !!clip_to_view) { @@ -189,6 +192,17 @@ st_viewport_set_clip_to_view (StViewport *viewport, } } +gboolean +st_viewport_get_clip_to_view (StViewport *viewport) +{ + StViewportPrivate *priv; + + g_return_val_if_fail (ST_IS_VIEWPORT (viewport), FALSE); + + priv = st_viewport_get_instance_private (viewport); + return priv->clip_to_view; +} + static void st_viewport_get_property (GObject *object, guint property_id, diff --git a/src/st/st-viewport.h b/src/st/st-viewport.h index 8f0b16b45..2fed793e4 100644 --- a/src/st/st-viewport.h +++ b/src/st/st-viewport.h @@ -37,4 +37,8 @@ struct _StViewportClass StWidgetClass parent_class; }; +void st_viewport_set_clip_to_view (StViewport *viewport, + gboolean clip_to_view); +gboolean st_viewport_get_clip_to_view (StViewport *viewport); + G_END_DECLS