[libhandy] Make symbols explicitly public, and implicitly private



commit 17eb68dfb7910d361e9c8582b5a1d6cdf5175601
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Mon Jun 8 10:30:46 2020 +0200

    Make symbols explicitly public, and implicitly private
    
    Fixes https://gitlab.gnome.org/GNOME/libhandy/-/issues/177

 debian/libhandy-1-0.symbols   | 115 ------------------------------------------
 meson.build                   |  22 ++++++--
 src/hdy-action-row.h          |  16 ++++++
 src/hdy-animation.h           |   4 ++
 src/hdy-application-window.h  |   4 ++
 src/hdy-avatar.h              |  13 +++++
 src/hdy-carousel.h            |  27 ++++++++++
 src/hdy-clamp.h               |   8 +++
 src/hdy-combo-row.h           |  14 +++++
 src/hdy-deck.h                |  24 +++++++++
 src/hdy-enum-value-object.h   |   7 +++
 src/hdy-enums.h.in            |   5 +-
 src/hdy-expander-row.h        |  20 ++++++++
 src/hdy-header-bar.h          |  25 +++++++++
 src/hdy-header-group.h        |  19 +++++++
 src/hdy-keypad.h              |  18 +++++++
 src/hdy-leaflet.h             |  27 ++++++++++
 src/hdy-main.h                |   3 ++
 src/hdy-preferences-group.h   |   8 +++
 src/hdy-preferences-page.h    |   8 +++
 src/hdy-preferences-row.h     |   8 +++
 src/hdy-preferences-window.h  |  10 ++++
 src/hdy-search-bar.h          |  10 ++++
 src/hdy-squeezer.h            |  16 ++++++
 src/hdy-swipe-group.h         |   7 +++
 src/hdy-swipe-tracker.h       |  12 +++++
 src/hdy-swipeable.h           |  11 ++++
 src/hdy-title-bar.h           |   6 +++
 src/hdy-value-object.h        |  11 ++++
 src/hdy-version.h.in          |   6 +++
 src/hdy-view-switcher-bar.h   |  12 +++++
 src/hdy-view-switcher-title.h |  17 +++++++
 src/hdy-view-switcher.h       |  12 +++++
 src/hdy-window-handle.h       |   4 ++
 src/hdy-window.h              |   4 ++
 35 files changed, 412 insertions(+), 121 deletions(-)
---
diff --git a/debian/libhandy-1-0.symbols b/debian/libhandy-1-0.symbols
index 28798619..ef38e67e 100644
--- a/debian/libhandy-1-0.symbols
+++ b/debian/libhandy-1-0.symbols
@@ -27,27 +27,6 @@ libhandy-1.so.0 libhandy-1-0 #MINVER#
  hdy_avatar_set_show_initials@LIBHANDY_1_0 0.80.0
  hdy_avatar_set_size@LIBHANDY_1_0 0.80.0
  hdy_avatar_set_text@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_get_closest_snap_point@LIBHANDY_1_0 0.81.0
- hdy_carousel_box_get_current_page_index@LIBHANDY_1_0 0.81.0
- hdy_carousel_box_get_distance@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_get_n_pages@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_get_nth_child@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_get_page_at_position@LIBHANDY_1_0 0.81.0
- hdy_carousel_box_get_position@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_get_range@LIBHANDY_1_0 0.81.0
- hdy_carousel_box_get_reveal_duration@LIBHANDY_1_0 0.81.0
- hdy_carousel_box_get_snap_points@LIBHANDY_1_0 0.81.0
- hdy_carousel_box_get_spacing@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_get_type@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_insert@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_is_animating@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_new@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_reorder@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_scroll_to@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_set_position@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_set_reveal_duration@LIBHANDY_1_0 0.81.0
- hdy_carousel_box_set_spacing@LIBHANDY_1_0 0.80.0
- hdy_carousel_box_stop_animation@LIBHANDY_1_0 0.80.0
  hdy_carousel_get_allow_mouse_drag@LIBHANDY_1_0 0.80.0
  hdy_carousel_get_animation_duration@LIBHANDY_1_0 0.80.0
  hdy_carousel_get_center_content@LIBHANDY_1_0 0.80.0
@@ -141,9 +120,6 @@ libhandy-1.so.0 libhandy-1-0 #MINVER#
  hdy_expander_row_set_title@LIBHANDY_1_0 0.80.0
  hdy_expander_row_set_use_underline@LIBHANDY_1_0 0.80.0
  hdy_get_enable_animations@LIBHANDY_1_0 0.0.11
- hdy_gtk_window_get_icon_for_size@LIBHANDY_1_0 0.0.10
- hdy_gtk_window_get_state@LIBHANDY_1_0 0.80.0
- hdy_gtk_window_toggle_maximized@LIBHANDY_1_0 0.0.10
  hdy_header_bar_get_centering_policy@LIBHANDY_1_0 0.0.10
  hdy_header_bar_get_custom_title@LIBHANDY_1_0 0.0.10
  hdy_header_bar_get_decoration_layout@LIBHANDY_1_0 0.0.10
@@ -186,12 +162,6 @@ libhandy-1.so.0 libhandy-1-0 #MINVER#
  hdy_header_group_remove_header_group@LIBHANDY_1_0 0.83.0
  hdy_header_group_set_decorate_all@LIBHANDY_1_0 0.83.0
  hdy_init@LIBHANDY_1_0 0.82.0
- hdy_init_public_types@LIBHANDY_1_0 0.0.5
- hdy_keypad_button_get_digit@LIBHANDY_1_0 0.0.12
- hdy_keypad_button_get_symbols@LIBHANDY_1_0 0.0.12
- hdy_keypad_button_get_type@LIBHANDY_1_0 0.0.12
- hdy_keypad_button_new@LIBHANDY_1_0 0.0.12
- hdy_keypad_button_show_symbols@LIBHANDY_1_0 0.0.12
  hdy_keypad_get_column_spacing@LIBHANDY_1_0 0.81.0
  hdy_keypad_get_end_action@LIBHANDY_1_0 0.85.0
  hdy_keypad_get_entry@LIBHANDY_1_0 0.0.12
@@ -234,22 +204,16 @@ libhandy-1.so.0 libhandy-1-0 #MINVER#
  hdy_leaflet_set_visible_child@LIBHANDY_1_0 0.0~git20180429
  hdy_leaflet_set_visible_child_name@LIBHANDY_1_0 0.0~git20180429
  hdy_leaflet_transition_type_get_type@LIBHANDY_1_0 0.0.12
- hdy_lerp@LIBHANDY_1_0 0.0.11
  hdy_navigation_direction_get_type@LIBHANDY_1_0 0.9.9
- hdy_nothing_get_type@LIBHANDY_1_0 0.80.0
- hdy_nothing_new@LIBHANDY_1_0 0.80.0
- hdy_preferences_group_add_preferences_to_model@LIBHANDY_1_0 0.0.10
  hdy_preferences_group_get_description@LIBHANDY_1_0 0.0.10
  hdy_preferences_group_get_title@LIBHANDY_1_0 0.0.10
  hdy_preferences_group_get_type@LIBHANDY_1_0 0.0.10
  hdy_preferences_group_new@LIBHANDY_1_0 0.0.10
  hdy_preferences_group_set_description@LIBHANDY_1_0 0.0.10
  hdy_preferences_group_set_title@LIBHANDY_1_0 0.0.10
- hdy_preferences_page_add_preferences_to_model@LIBHANDY_1_0 0.0.10
  hdy_preferences_page_get_icon_name@LIBHANDY_1_0 0.0.10
  hdy_preferences_page_get_title@LIBHANDY_1_0 0.0.10
  hdy_preferences_page_get_type@LIBHANDY_1_0 0.0.10
- hdy_preferences_page_get_vadjustment@LIBHANDY_1_0 0.81.0
  hdy_preferences_page_new@LIBHANDY_1_0 0.0.10
  hdy_preferences_page_set_icon_name@LIBHANDY_1_0 0.0.10
  hdy_preferences_page_set_title@LIBHANDY_1_0 0.0.10
@@ -275,10 +239,6 @@ libhandy-1.so.0 libhandy-1-0 #MINVER#
  hdy_search_bar_new@LIBHANDY_1_0 0.0.6
  hdy_search_bar_set_search_mode@LIBHANDY_1_0 0.0.6
  hdy_search_bar_set_show_close_button@LIBHANDY_1_0 0.0.6
- hdy_shadow_helper_clear_cache@LIBHANDY_1_0 0.0.12
- hdy_shadow_helper_draw_shadow@LIBHANDY_1_0 0.0.12
- hdy_shadow_helper_get_type@LIBHANDY_1_0 0.0.12
- hdy_shadow_helper_new@LIBHANDY_1_0 0.0.12
  hdy_squeezer_get_child_enabled@LIBHANDY_1_0 0.0.10
  hdy_squeezer_get_homogeneous@LIBHANDY_1_0 0.0.10
  hdy_squeezer_get_interpolate_size@LIBHANDY_1_0 0.0.10
@@ -294,64 +254,11 @@ libhandy-1.so.0 libhandy-1-0 #MINVER#
  hdy_squeezer_set_transition_duration@LIBHANDY_1_0 0.0.10
  hdy_squeezer_set_transition_type@LIBHANDY_1_0 0.0.10
  hdy_squeezer_transition_type_get_type@LIBHANDY_1_0 0.0.10
- hdy_stackable_box_add@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_direction_changed@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_draw@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_forall@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_adjacent_child@LIBHANDY_1_0 0.81.0
- hdy_stackable_box_get_can_swipe_back@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_can_swipe_forward@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_cancel_progress@LIBHANDY_1_0 0.81.0
- hdy_stackable_box_get_child_by_name@LIBHANDY_1_0 0.85.0
- hdy_stackable_box_get_child_name@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_child_navigatable@LIBHANDY_1_0 0.85.0
- hdy_stackable_box_get_child_transition_duration@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_child_transition_running@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_distance@LIBHANDY_1_0 0.81.0
- hdy_stackable_box_get_folded@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_homogeneous@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_interpolate_size@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_mode_transition_duration@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_orientation@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_progress@LIBHANDY_1_0 0.81.0
- hdy_stackable_box_get_snap_points@LIBHANDY_1_0 0.82.0
- hdy_stackable_box_get_swipe_area@LIBHANDY_1_0 0.85.0
- hdy_stackable_box_get_swipe_tracker@LIBHANDY_1_0 0.82.0
- hdy_stackable_box_get_transition_type@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_type@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_visible_child@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_get_visible_child_name@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_map@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_measure@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_navigate@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_new@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_realize@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_remove@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_can_swipe_back@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_can_swipe_forward@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_child_name@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_child_navigatable@LIBHANDY_1_0 0.85.0
- hdy_stackable_box_set_child_transition_duration@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_homogeneous@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_interpolate_size@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_mode_transition_duration@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_orientation@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_transition_type@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_visible_child@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_set_visible_child_name@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_size_allocate@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_switch_child@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_transition_type_get_type@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_unmap@LIBHANDY_1_0 0.80.0
- hdy_stackable_box_unrealize@LIBHANDY_1_0 0.80.0
  hdy_swipe_group_add_swipeable@LIBHANDY_1_0 0.0.12
  hdy_swipe_group_get_swipeables@LIBHANDY_1_0 0.0.12
  hdy_swipe_group_get_type@LIBHANDY_1_0 0.0.12
  hdy_swipe_group_new@LIBHANDY_1_0 0.0.12
  hdy_swipe_group_remove_swipeable@LIBHANDY_1_0 0.0.12
- hdy_swipe_tracker_emit_begin_swipe@LIBHANDY_1_0 0.82.0
- hdy_swipe_tracker_emit_end_swipe@LIBHANDY_1_0 0.82.0
- hdy_swipe_tracker_emit_update_swipe@LIBHANDY_1_0 0.82.0
  hdy_swipe_tracker_get_allow_mouse_drag@LIBHANDY_1_0 0.0.12
  hdy_swipe_tracker_get_enabled@LIBHANDY_1_0 0.0.11
  hdy_swipe_tracker_get_reversed@LIBHANDY_1_0 0.0.11
@@ -394,18 +301,6 @@ libhandy-1.so.0 libhandy-1-0 #MINVER#
  hdy_view_switcher_bar_set_policy@LIBHANDY_1_0 0.0.10
  hdy_view_switcher_bar_set_reveal@LIBHANDY_1_0 0.0.10
  hdy_view_switcher_bar_set_stack@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_get_icon_name@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_get_icon_size@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_get_label@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_get_needs_attention@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_get_size@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_get_type@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_new@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_set_icon_name@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_set_icon_size@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_set_label@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_set_narrow_ellipsize@LIBHANDY_1_0 0.0.10
- hdy_view_switcher_button_set_needs_attention@LIBHANDY_1_0 0.0.10
  hdy_view_switcher_get_icon_size@LIBHANDY_1_0 0.0.10
  hdy_view_switcher_get_narrow_ellipsize@LIBHANDY_1_0 0.0.10
  hdy_view_switcher_get_policy@LIBHANDY_1_0 0.0.10
@@ -433,16 +328,6 @@ libhandy-1.so.0 libhandy-1-0 #MINVER#
  hdy_view_switcher_title_set_title@LIBHANDY_1_0 0.80.0
  hdy_view_switcher_title_set_view_switcher_enabled@LIBHANDY_1_0 0.80.0
  hdy_window_get_type@LIBHANDY_1_0 0.80.0
- hdy_window_handle_controller_get_type@LIBHANDY_1_0 0.80.0
- hdy_window_handle_controller_new@LIBHANDY_1_0 0.80.0
  hdy_window_handle_get_type@LIBHANDY_1_0 0.80.0
  hdy_window_handle_new@LIBHANDY_1_0 0.80.0
- hdy_window_mixin_add@LIBHANDY_1_0 0.80.0
- hdy_window_mixin_buildable_add_child@LIBHANDY_1_0 0.80.0
- hdy_window_mixin_destroy@LIBHANDY_1_0 0.82.0
- hdy_window_mixin_draw@LIBHANDY_1_0 0.80.0
- hdy_window_mixin_forall@LIBHANDY_1_0 0.80.0
- hdy_window_mixin_get_type@LIBHANDY_1_0 0.80.0
- hdy_window_mixin_new@LIBHANDY_1_0 0.80.0
- hdy_window_mixin_remove@LIBHANDY_1_0 0.80.0
  hdy_window_new@LIBHANDY_1_0 0.80.0
diff --git a/meson.build b/meson.build
index 73bf88bc..228281ad 100644
--- a/meson.build
+++ b/meson.build
@@ -33,11 +33,6 @@ config_h = configuration_data()
 config_h.set_quoted('GETTEXT_PACKAGE', 'libhandy')
 config_h.set_quoted('LOCALEDIR', get_option('prefix') / get_option('localedir'))
 
-configure_file(
-         output: 'config.h',
-  configuration: config_h,
-)
-
 add_project_arguments([
   '-DHAVE_CONFIG_H',
   '-DHANDY_COMPILATION',
@@ -100,6 +95,18 @@ if get_option('profiling')
   test_c_args += '-pg'
 endif
 
+# Symbol visibility
+if target_system == 'windows'
+  config_h.set('DLL_EXPORT', true)
+  config_h.set('_HDY_EXTERN', '__declspec(dllexport) extern')
+  if cc.get_id() != 'msvc'
+    global_c_args += ['-fvisibility=hidden']
+  endif
+else
+  config_h.set('_HDY_EXTERN', '__attribute__((visibility("default"))) extern')
+  global_c_args += ['-fvisibility=hidden']
+endif
+
 foreach arg: test_c_args
   if cc.has_multi_arguments(arg)
     global_c_args += arg
@@ -131,6 +138,11 @@ introspection = introspection_feature.enabled() or introspection_feature.auto()
 
 gnome = import('gnome')
 
+configure_file(
+         output: 'config.h',
+  configuration: config_h,
+)
+
 subdir('src')
 subdir('po')
 subdir('examples')
diff --git a/src/hdy-action-row.h b/src/hdy-action-row.h
index 8459308b..8c37a500 100644
--- a/src/hdy-action-row.h
+++ b/src/hdy-action-row.h
@@ -10,12 +10,15 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include "hdy-preferences-row.h"
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_ACTION_ROW (hdy_action_row_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyActionRow, hdy_action_row, HDY, ACTION_ROW, HdyPreferencesRow)
 
 /**
@@ -30,31 +33,44 @@ struct _HdyActionRowClass
   void (*activate) (HdyActionRow *self);
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_action_row_new (void);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_action_row_get_title (HdyActionRow *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_action_row_set_title (HdyActionRow *self,
                                        const gchar  *title);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_action_row_get_subtitle (HdyActionRow *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_action_row_set_subtitle (HdyActionRow *self,
                                           const gchar  *subtitle);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_action_row_get_icon_name (HdyActionRow *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_action_row_set_icon_name (HdyActionRow *self,
                                            const gchar  *icon_name);
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_action_row_get_activatable_widget (HdyActionRow *self);
+HDY_AVAILABLE_IN_ALL
 void       hdy_action_row_set_activatable_widget (HdyActionRow *self,
                                                   GtkWidget    *widget);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_action_row_get_use_underline (HdyActionRow *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_action_row_set_use_underline (HdyActionRow *self,
                                            gboolean      use_underline);
 
+HDY_AVAILABLE_IN_ALL
 void hdy_action_row_add_prefix (HdyActionRow *self,
                                 GtkWidget    *widget);
 
+HDY_AVAILABLE_IN_ALL
 void hdy_action_row_activate (HdyActionRow *self);
 
 G_END_DECLS
diff --git a/src/hdy-animation.h b/src/hdy-animation.h
index 0b6277c8..5af34c07 100644
--- a/src/hdy-animation.h
+++ b/src/hdy-animation.h
@@ -10,12 +10,16 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_get_enable_animations (GtkWidget *widget);
 
+HDY_AVAILABLE_IN_ALL
 gdouble hdy_ease_out_cubic (gdouble t);
 
 G_END_DECLS
diff --git a/src/hdy-application-window.h b/src/hdy-application-window.h
index 6141a674..2a6853ec 100644
--- a/src/hdy-application-window.h
+++ b/src/hdy-application-window.h
@@ -10,12 +10,15 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_APPLICATION_WINDOW (hdy_application_window_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyApplicationWindow, hdy_application_window, HDY, APPLICATION_WINDOW, 
GtkApplicationWindow)
 
 struct _HdyApplicationWindowClass
@@ -23,6 +26,7 @@ struct _HdyApplicationWindowClass
   GtkApplicationWindowClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_application_window_new (void);
 
 G_END_DECLS
diff --git a/src/hdy-avatar.h b/src/hdy-avatar.h
index af7b782e..54f37877 100644
--- a/src/hdy-avatar.h
+++ b/src/hdy-avatar.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <gtk/gtk.h>
 
@@ -17,6 +19,7 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_AVATAR (hdy_avatar_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyAvatar, hdy_avatar, HDY, AVATAR, GtkDrawingArea)
 
 /**
@@ -34,23 +37,33 @@ typedef GdkPixbuf *(*HdyAvatarImageLoadFunc) (gint     size,
                                               gpointer user_data);
 
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget   *hdy_avatar_new                 (gint                    size,
                                              const gchar            *text,
                                              gboolean                show_initials);
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_avatar_get_icon_name       (HdyAvatar              *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_avatar_set_icon_name       (HdyAvatar              *self,
                                              const gchar            *icon_name);
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_avatar_get_text            (HdyAvatar              *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_avatar_set_text            (HdyAvatar              *self,
                                              const gchar            *text);
+HDY_AVAILABLE_IN_ALL
 gboolean     hdy_avatar_get_show_initials   (HdyAvatar              *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_avatar_set_show_initials   (HdyAvatar              *self,
                                              gboolean                show_initials);
+HDY_AVAILABLE_IN_ALL
 void         hdy_avatar_set_image_load_func (HdyAvatar              *self,
                                              HdyAvatarImageLoadFunc  load_image,
                                              gpointer                user_data,
                                              GDestroyNotify          destroy);
+HDY_AVAILABLE_IN_ALL
 gint         hdy_avatar_get_size            (HdyAvatar              *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_avatar_set_size            (HdyAvatar              *self,
                                              gint                    size);
 
diff --git a/src/hdy-carousel.h b/src/hdy-carousel.h
index 3d235876..50beba80 100644
--- a/src/hdy-carousel.h
+++ b/src/hdy-carousel.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 #include "hdy-enums.h"
 
@@ -17,6 +19,7 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_CAROUSEL (hdy_carousel_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyCarousel, hdy_carousel, HDY, CAROUSEL, GtkEventBox)
 
 typedef enum {
@@ -25,55 +28,79 @@ typedef enum {
   HDY_CAROUSEL_INDICATOR_STYLE_LINES,
 } HdyCarouselIndicatorStyle;
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget      *hdy_carousel_new (void);
 
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_prepend (HdyCarousel *self,
                                       GtkWidget   *child);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_insert (HdyCarousel *self,
                                      GtkWidget   *child,
                                      gint         position);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_reorder (HdyCarousel *self,
                                       GtkWidget   *child,
                                       gint         position);
 
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_scroll_to (HdyCarousel *self,
                                         GtkWidget   *widget);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_scroll_to_full (HdyCarousel *self,
                                              GtkWidget   *widget,
                                              gint64       duration);
 
+HDY_AVAILABLE_IN_ALL
 guint           hdy_carousel_get_n_pages (HdyCarousel *self);
+HDY_AVAILABLE_IN_ALL
 gdouble         hdy_carousel_get_position (HdyCarousel *self);
 
+HDY_AVAILABLE_IN_ALL
 gboolean        hdy_carousel_get_interactive (HdyCarousel *self);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_set_interactive (HdyCarousel *self,
                                               gboolean     interactive);
 
+HDY_AVAILABLE_IN_ALL
 HdyCarouselIndicatorStyle hdy_carousel_get_indicator_style (HdyCarousel *self);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_set_indicator_style (HdyCarousel               *self,
                                                   HdyCarouselIndicatorStyle  style);
 
+HDY_AVAILABLE_IN_ALL
 guint           hdy_carousel_get_indicator_spacing (HdyCarousel *self);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_set_indicator_spacing (HdyCarousel *self,
                                                     guint        spacing);
 
+HDY_AVAILABLE_IN_ALL
 gboolean        hdy_carousel_get_center_content (HdyCarousel *self);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_set_center_content (HdyCarousel *self,
                                                  gboolean     center_content);
 
+HDY_AVAILABLE_IN_ALL
 guint           hdy_carousel_get_spacing (HdyCarousel *self);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_set_spacing (HdyCarousel *self,
                                           guint        spacing);
 
+HDY_AVAILABLE_IN_ALL
 guint           hdy_carousel_get_animation_duration (HdyCarousel *self);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_set_animation_duration (HdyCarousel *self,
                                                      guint        duration);
 
+HDY_AVAILABLE_IN_ALL
 gboolean        hdy_carousel_get_allow_mouse_drag (HdyCarousel *self);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_set_allow_mouse_drag (HdyCarousel *self,
                                                    gboolean     allow_mouse_drag);
 
+HDY_AVAILABLE_IN_ALL
 guint           hdy_carousel_get_reveal_duration (HdyCarousel *self);
+HDY_AVAILABLE_IN_ALL
 void            hdy_carousel_set_reveal_duration (HdyCarousel *self,
                                                   guint        reveal_duration);
 G_END_DECLS
diff --git a/src/hdy-clamp.h b/src/hdy-clamp.h
index bb317769..46ad6ddf 100644
--- a/src/hdy-clamp.h
+++ b/src/hdy-clamp.h
@@ -10,19 +10,27 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_CLAMP (hdy_clamp_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyClamp, hdy_clamp, HDY, CLAMP, GtkBin)
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_clamp_new (void);
+HDY_AVAILABLE_IN_ALL
 gint hdy_clamp_get_maximum_size (HdyClamp *self);
+HDY_AVAILABLE_IN_ALL
 void hdy_clamp_set_maximum_size (HdyClamp *self,
                                  gint      maximum_size);
+HDY_AVAILABLE_IN_ALL
 gint hdy_clamp_get_tightening_threshold (HdyClamp *self);
+HDY_AVAILABLE_IN_ALL
 void hdy_clamp_set_tightening_threshold (HdyClamp *self,
                                          gint      tightening_threshold);
 
diff --git a/src/hdy-combo-row.h b/src/hdy-combo-row.h
index ad2f2e74..312e4888 100644
--- a/src/hdy-combo-row.h
+++ b/src/hdy-combo-row.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 #include "hdy-enum-value-object.h"
 #include "hdy-action-row.h"
@@ -18,6 +20,7 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_COMBO_ROW (hdy_combo_row_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyComboRow, hdy_combo_row, HDY, COMBO_ROW, HdyActionRow)
 
 /**
@@ -55,40 +58,51 @@ struct _HdyComboRowClass
   HdyActionRowClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_combo_row_new (void);
 
+HDY_AVAILABLE_IN_ALL
 GListModel *hdy_combo_row_get_model (HdyComboRow *self);
 
+HDY_AVAILABLE_IN_ALL
 void hdy_combo_row_bind_model      (HdyComboRow                *self,
                                     GListModel                 *model,
                                     GtkListBoxCreateWidgetFunc  create_list_widget_func,
                                     GtkListBoxCreateWidgetFunc  create_current_widget_func,
                                     gpointer                    user_data,
                                     GDestroyNotify              user_data_free_func);
+HDY_AVAILABLE_IN_ALL
 void hdy_combo_row_bind_name_model (HdyComboRow            *self,
                                     GListModel             *model,
                                     HdyComboRowGetNameFunc  get_name_func,
                                     gpointer                user_data,
                                     GDestroyNotify          user_data_free_func);
+HDY_AVAILABLE_IN_ALL
 void hdy_combo_row_set_for_enum    (HdyComboRow                     *self,
                                     GType                            enum_type,
                                     HdyComboRowGetEnumValueNameFunc  get_name_func,
                                     gpointer                         user_data,
                                     GDestroyNotify                   user_data_free_func);
 
+HDY_AVAILABLE_IN_ALL
 gint hdy_combo_row_get_selected_index (HdyComboRow *self);
+HDY_AVAILABLE_IN_ALL
 void hdy_combo_row_set_selected_index (HdyComboRow *self,
                                        gint         selected_index);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_combo_row_get_use_subtitle (HdyComboRow *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_combo_row_set_use_subtitle (HdyComboRow *self,
                                          gboolean     use_subtitle);
 
+HDY_AVAILABLE_IN_ALL
 void hdy_combo_row_set_get_name_func (HdyComboRow            *self,
                                       HdyComboRowGetNameFunc  get_name_func,
                                       gpointer                user_data,
                                       GDestroyNotify          user_data_free_func);
 
+HDY_AVAILABLE_IN_ALL
 gchar *hdy_enum_value_row_name (HdyEnumValueObject *value,
                                 gpointer            user_data);
 
diff --git a/src/hdy-deck.h b/src/hdy-deck.h
index f7be6c9a..1b1607a5 100644
--- a/src/hdy-deck.h
+++ b/src/hdy-deck.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 #include "hdy-navigation-direction.h"
 
@@ -17,6 +19,7 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_DECK (hdy_deck_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyDeck, hdy_deck, HDY, DECK, GtkContainer)
 
 typedef enum {
@@ -34,41 +37,62 @@ struct _HdyDeckClass
   GtkContainerClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_deck_new (void);
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_deck_get_visible_child (HdyDeck *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_deck_set_visible_child (HdyDeck   *self,
                                              GtkWidget *visible_child);
+HDY_AVAILABLE_IN_ALL
 const gchar     *hdy_deck_get_visible_child_name (HdyDeck *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_deck_set_visible_child_name (HdyDeck     *self,
                                                   const gchar *name);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_deck_get_homogeneous (HdyDeck        *self,
                                            GtkOrientation  orientation);
+HDY_AVAILABLE_IN_ALL
 void             hdy_deck_set_homogeneous (HdyDeck        *self,
                                            GtkOrientation  orientation,
                                            gboolean        homogeneous);
+HDY_AVAILABLE_IN_ALL
 HdyDeckTransitionType hdy_deck_get_transition_type (HdyDeck *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_deck_set_transition_type (HdyDeck               *self,
                                                HdyDeckTransitionType  transition);
 
+HDY_AVAILABLE_IN_ALL
 guint            hdy_deck_get_transition_duration (HdyDeck *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_deck_set_transition_duration (HdyDeck *self,
                                                    guint    duration);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_deck_get_transition_running (HdyDeck *self);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_deck_get_interpolate_size (HdyDeck *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_deck_set_interpolate_size (HdyDeck  *self,
                                                 gboolean  interpolate_size);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_deck_get_can_swipe_back (HdyDeck *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_deck_set_can_swipe_back (HdyDeck  *self,
                                               gboolean  can_swipe_back);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_deck_get_can_swipe_forward (HdyDeck *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_deck_set_can_swipe_forward (HdyDeck  *self,
                                                  gboolean  can_swipe_forward);
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_deck_get_adjacent_child (HdyDeck                *self,
                                               HdyNavigationDirection  direction);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_deck_navigate (HdyDeck                *self,
                                     HdyNavigationDirection  direction);
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_deck_get_child_by_name (HdyDeck     *self,
                                              const gchar *name);
 
diff --git a/src/hdy-enum-value-object.h b/src/hdy-enum-value-object.h
index 36edadb1..b961a623 100644
--- a/src/hdy-enum-value-object.h
+++ b/src/hdy-enum-value-object.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gio/gio.h>
 #include <glib-object.h>
 
@@ -17,12 +19,17 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_ENUM_VALUE_OBJECT (hdy_enum_value_object_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyEnumValueObject, hdy_enum_value_object, HDY, ENUM_VALUE_OBJECT, GObject)
 
+HDY_AVAILABLE_IN_ALL
 HdyEnumValueObject *hdy_enum_value_object_new (GEnumValue *enum_value);
 
+HDY_AVAILABLE_IN_ALL
 gint         hdy_enum_value_object_get_value (HdyEnumValueObject *self);
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_enum_value_object_get_name  (HdyEnumValueObject *self);
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_enum_value_object_get_nick  (HdyEnumValueObject *self);
 
 G_END_DECLS
diff --git a/src/hdy-enums.h.in b/src/hdy-enums.h.in
index a4cbf77e..7b398502 100644
--- a/src/hdy-enums.h.in
+++ b/src/hdy-enums.h.in
@@ -5,6 +5,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <glib-object.h>
 
 G_BEGIN_DECLS
@@ -16,7 +18,8 @@ G_BEGIN_DECLS
 /*** END file-production ***/
 
 /*** BEGIN value-header ***/
-GType @enum_name@_get_type (void);
+
+HDY_AVAILABLE_IN_ALL GType @enum_name@_get_type (void);
 #define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
 /*** END value-header ***/
 
diff --git a/src/hdy-expander-row.h b/src/hdy-expander-row.h
index f56a6010..7587be16 100644
--- a/src/hdy-expander-row.h
+++ b/src/hdy-expander-row.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 #include "hdy-preferences-row.h"
 
@@ -17,6 +19,7 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_EXPANDER_ROW (hdy_expander_row_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyExpanderRow, hdy_expander_row, HDY, EXPANDER_ROW, HdyPreferencesRow)
 
 /**
@@ -28,38 +31,55 @@ struct _HdyExpanderRowClass
   HdyPreferencesRowClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget   *hdy_expander_row_new (void);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_expander_row_get_title (HdyExpanderRow *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_expander_row_set_title (HdyExpanderRow *self,
                                          const gchar    *title);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_expander_row_get_subtitle (HdyExpanderRow *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_expander_row_set_subtitle (HdyExpanderRow *self,
                                             const gchar    *subtitle);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_expander_row_get_use_underline (HdyExpanderRow *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_expander_row_set_use_underline (HdyExpanderRow *self,
                                              gboolean        use_underline);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_expander_row_get_icon_name (HdyExpanderRow *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_expander_row_set_icon_name (HdyExpanderRow *self,
                                              const gchar    *icon_name);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_expander_row_get_expanded (HdyExpanderRow *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_expander_row_set_expanded (HdyExpanderRow *self,
                                         gboolean        expanded);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_expander_row_get_enable_expansion (HdyExpanderRow *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_expander_row_set_enable_expansion (HdyExpanderRow *self,
                                                 gboolean        enable_expansion);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_expander_row_get_show_enable_switch (HdyExpanderRow *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_expander_row_set_show_enable_switch (HdyExpanderRow *self,
                                                   gboolean        show_enable_switch);
 
+HDY_AVAILABLE_IN_ALL
 void     hdy_expander_row_add_action (HdyExpanderRow *self,
                                       GtkWidget      *widget);
+HDY_AVAILABLE_IN_ALL
 void     hdy_expander_row_add_prefix (HdyExpanderRow *self,
                                       GtkWidget      *widget);
 
diff --git a/src/hdy-header-bar.h b/src/hdy-header-bar.h
index c2052148..26ebab1a 100644
--- a/src/hdy-header-bar.h
+++ b/src/hdy-header-bar.h
@@ -25,12 +25,15 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_HEADER_BAR (hdy_header_bar_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyHeaderBar, hdy_header_bar, HDY, HEADER_BAR, GtkContainer)
 
 typedef enum {
@@ -47,48 +50,70 @@ struct _HdyHeaderBarClass
   GtkContainerClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget   *hdy_header_bar_new (void);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_header_bar_get_title (HdyHeaderBar *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_header_bar_set_title (HdyHeaderBar *self,
                                        const gchar  *title);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_header_bar_get_subtitle      (HdyHeaderBar *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_header_bar_set_subtitle      (HdyHeaderBar *self,
                                                const gchar  *subtitle);
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget   *hdy_header_bar_get_custom_title  (HdyHeaderBar *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_header_bar_set_custom_title  (HdyHeaderBar *self,
                                                GtkWidget    *title_widget);
 
+HDY_AVAILABLE_IN_ALL
 void         hdy_header_bar_pack_start        (HdyHeaderBar *self,
                                                GtkWidget    *child);
+HDY_AVAILABLE_IN_ALL
 void         hdy_header_bar_pack_end          (HdyHeaderBar *self,
                                                GtkWidget    *child);
 
+HDY_AVAILABLE_IN_ALL
 gboolean     hdy_header_bar_get_show_close_button (HdyHeaderBar *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_header_bar_set_show_close_button (HdyHeaderBar *self,
                                                    gboolean      setting);
 
+HDY_AVAILABLE_IN_ALL
 gboolean     hdy_header_bar_get_has_subtitle (HdyHeaderBar *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_header_bar_set_has_subtitle (HdyHeaderBar *self,
                                               gboolean      setting);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_header_bar_get_decoration_layout (HdyHeaderBar *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_header_bar_set_decoration_layout (HdyHeaderBar *self,
                                                    const gchar  *layout);
 
+HDY_AVAILABLE_IN_ALL
 HdyCenteringPolicy hdy_header_bar_get_centering_policy (HdyHeaderBar *self);
+HDY_AVAILABLE_IN_ALL
 void               hdy_header_bar_set_centering_policy (HdyHeaderBar       *self,
                                                         HdyCenteringPolicy  centering_policy);
 
+HDY_AVAILABLE_IN_ALL
 guint hdy_header_bar_get_transition_duration (HdyHeaderBar *self);
+HDY_AVAILABLE_IN_ALL
 void  hdy_header_bar_set_transition_duration (HdyHeaderBar *self,
                                               guint         duration);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_header_bar_get_transition_running (HdyHeaderBar *self);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_header_bar_get_interpolate_size (HdyHeaderBar *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_header_bar_set_interpolate_size (HdyHeaderBar *self,
                                               gboolean      interpolate_size);
 
diff --git a/src/hdy-header-group.h b/src/hdy-header-group.h
index c3e533ce..dc20a762 100644
--- a/src/hdy-header-group.h
+++ b/src/hdy-header-group.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 #include "hdy-header-bar.h"
 
@@ -17,10 +19,12 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_HEADER_GROUP_CHILD (hdy_header_group_child_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyHeaderGroupChild, hdy_header_group_child, HDY, HEADER_GROUP_CHILD, GObject)
 
 #define HDY_TYPE_HEADER_GROUP (hdy_header_group_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyHeaderGroup, hdy_header_group, HDY, HEADER_GROUP, GObject)
 
 typedef enum {
@@ -29,33 +33,48 @@ typedef enum {
   HDY_HEADER_GROUP_CHILD_TYPE_HEADER_GROUP,
 } HdyHeaderGroupChildType;
 
+HDY_AVAILABLE_IN_ALL
 HdyHeaderBar   *hdy_header_group_child_get_header_bar     (HdyHeaderGroupChild *self);
+HDY_AVAILABLE_IN_ALL
 GtkHeaderBar   *hdy_header_group_child_get_gtk_header_bar (HdyHeaderGroupChild *self);
+HDY_AVAILABLE_IN_ALL
 HdyHeaderGroup *hdy_header_group_child_get_header_group   (HdyHeaderGroupChild *self);
 
+HDY_AVAILABLE_IN_ALL
 HdyHeaderGroupChildType hdy_header_group_child_get_child_type (HdyHeaderGroupChild *self);
 
+HDY_AVAILABLE_IN_ALL
 HdyHeaderGroup *hdy_header_group_new (void);
 
+HDY_AVAILABLE_IN_ALL
 void hdy_header_group_add_header_bar     (HdyHeaderGroup *self,
                                           HdyHeaderBar   *header_bar);
+HDY_AVAILABLE_IN_ALL
 void hdy_header_group_add_gtk_header_bar (HdyHeaderGroup *self,
                                           GtkHeaderBar   *header_bar);
+HDY_AVAILABLE_IN_ALL
 void hdy_header_group_add_header_group   (HdyHeaderGroup *self,
                                           HdyHeaderGroup *header_group);
 
+HDY_AVAILABLE_IN_ALL
 GSList *hdy_header_group_get_children (HdyHeaderGroup *self);
 
+HDY_AVAILABLE_IN_ALL
 void hdy_header_group_remove_header_bar     (HdyHeaderGroup *self,
                                              HdyHeaderBar   *header_bar);
+HDY_AVAILABLE_IN_ALL
 void hdy_header_group_remove_gtk_header_bar (HdyHeaderGroup *self,
                                              GtkHeaderBar   *header_bar);
+HDY_AVAILABLE_IN_ALL
 void hdy_header_group_remove_header_group   (HdyHeaderGroup *self,
                                              HdyHeaderGroup *header_group);
+HDY_AVAILABLE_IN_ALL
 void hdy_header_group_remove_child          (HdyHeaderGroup      *self,
                                              HdyHeaderGroupChild *child);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_header_group_get_decorate_all (HdyHeaderGroup *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_header_group_set_decorate_all (HdyHeaderGroup *self,
                                             gboolean        decorate_all);
 
diff --git a/src/hdy-keypad.h b/src/hdy-keypad.h
index 77b3f74b..79535de3 100644
--- a/src/hdy-keypad.h
+++ b/src/hdy-keypad.h
@@ -10,12 +10,15 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_KEYPAD (hdy_keypad_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyKeypad, hdy_keypad, HDY, KEYPAD, GtkBin)
 
 /**
@@ -27,28 +30,43 @@ struct _HdyKeypadClass
   GtkBinClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_keypad_new                     (gboolean symbols_visible,
                                                      gboolean letters_visible);
+HDY_AVAILABLE_IN_ALL
 void             hdy_keypad_set_row_spacing         (HdyKeypad *self,
                                                      guint      spacing);
+HDY_AVAILABLE_IN_ALL
 guint            hdy_keypad_get_row_spacing         (HdyKeypad *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_keypad_set_column_spacing      (HdyKeypad *self,
                                                      guint      spacing);
+HDY_AVAILABLE_IN_ALL
 guint            hdy_keypad_get_column_spacing      (HdyKeypad *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_keypad_set_letters_visible     (HdyKeypad *self,
                                                      gboolean   letters_visible);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_keypad_get_letters_visible     (HdyKeypad *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_keypad_set_symbols_visible     (HdyKeypad *self,
                                                      gboolean   symbols_visible);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_keypad_get_symbols_visible     (HdyKeypad *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_keypad_set_entry               (HdyKeypad *self,
                                                      GtkEntry  *entry);
+HDY_AVAILABLE_IN_ALL
 GtkEntry        *hdy_keypad_get_entry               (HdyKeypad *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_keypad_set_start_action        (HdyKeypad *self,
                                                      GtkWidget *start_action);
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_keypad_get_start_action        (HdyKeypad *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_keypad_set_end_action          (HdyKeypad *self,
                                                      GtkWidget *end_action);
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_keypad_get_end_action          (HdyKeypad *self);
 
 
diff --git a/src/hdy-leaflet.h b/src/hdy-leaflet.h
index b9ff4157..d54f46b6 100644
--- a/src/hdy-leaflet.h
+++ b/src/hdy-leaflet.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 #include "hdy-enums.h"
 #include "hdy-navigation-direction.h"
@@ -18,6 +20,7 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_LEAFLET (hdy_leaflet_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyLeaflet, hdy_leaflet, HDY, LEAFLET, GtkContainer)
 
 typedef enum {
@@ -35,48 +38,72 @@ struct _HdyLeafletClass
   GtkContainerClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_leaflet_new (void);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_leaflet_get_folded (HdyLeaflet *self);
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_leaflet_get_visible_child (HdyLeaflet *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_leaflet_set_visible_child (HdyLeaflet *self,
                                                 GtkWidget  *visible_child);
+HDY_AVAILABLE_IN_ALL
 const gchar     *hdy_leaflet_get_visible_child_name (HdyLeaflet *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_leaflet_set_visible_child_name (HdyLeaflet  *self,
                                                      const gchar *name);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_leaflet_get_homogeneous (HdyLeaflet     *self,
                                               gboolean        folded,
                                               GtkOrientation  orientation);
+HDY_AVAILABLE_IN_ALL
 void             hdy_leaflet_set_homogeneous (HdyLeaflet     *self,
                                               gboolean        folded,
                                               GtkOrientation  orientation,
                                               gboolean        homogeneous);
+HDY_AVAILABLE_IN_ALL
 HdyLeafletTransitionType hdy_leaflet_get_transition_type (HdyLeaflet *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_leaflet_set_transition_type (HdyLeaflet               *self,
                                                   HdyLeafletTransitionType  transition);
 
+HDY_AVAILABLE_IN_ALL
 guint            hdy_leaflet_get_mode_transition_duration (HdyLeaflet *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_leaflet_set_mode_transition_duration (HdyLeaflet *self,
                                                            guint       duration);
 
+HDY_AVAILABLE_IN_ALL
 guint            hdy_leaflet_get_child_transition_duration (HdyLeaflet *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_leaflet_set_child_transition_duration (HdyLeaflet *self,
                                                             guint       duration);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_leaflet_get_child_transition_running (HdyLeaflet *self);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_leaflet_get_interpolate_size (HdyLeaflet *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_leaflet_set_interpolate_size (HdyLeaflet *self,
                                                    gboolean    interpolate_size);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_leaflet_get_can_swipe_back (HdyLeaflet *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_leaflet_set_can_swipe_back (HdyLeaflet *self,
                                                  gboolean    can_swipe_back);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_leaflet_get_can_swipe_forward (HdyLeaflet *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_leaflet_set_can_swipe_forward (HdyLeaflet *self,
                                                     gboolean    can_swipe_forward);
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_leaflet_get_adjacent_child (HdyLeaflet             *self,
                                                  HdyNavigationDirection  direction);
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_leaflet_navigate (HdyLeaflet             *self,
                                        HdyNavigationDirection  direction);
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget       *hdy_leaflet_get_child_by_name (HdyLeaflet  *self,
                                                 const gchar *name);
 
diff --git a/src/hdy-main.h b/src/hdy-main.h
index 5b2f3846..f960a692 100644
--- a/src/hdy-main.h
+++ b/src/hdy-main.h
@@ -9,10 +9,13 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <glib.h>
 
 G_BEGIN_DECLS
 
+HDY_AVAILABLE_IN_ALL
 void hdy_init (void);
 
 G_END_DECLS
diff --git a/src/hdy-preferences-group.h b/src/hdy-preferences-group.h
index 9aac161c..0e272d5e 100644
--- a/src/hdy-preferences-group.h
+++ b/src/hdy-preferences-group.h
@@ -10,12 +10,15 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_PREFERENCES_GROUP (hdy_preferences_group_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyPreferencesGroup, hdy_preferences_group, HDY, PREFERENCES_GROUP, GtkBin)
 
 /**
@@ -27,13 +30,18 @@ struct _HdyPreferencesGroupClass
   GtkBinClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget   *hdy_preferences_group_new (void);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_preferences_group_get_title (HdyPreferencesGroup *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_preferences_group_set_title (HdyPreferencesGroup *self,
                                               const gchar         *title);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_preferences_group_get_description (HdyPreferencesGroup *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_preferences_group_set_description (HdyPreferencesGroup *self,
                                                     const gchar         *description);
 
diff --git a/src/hdy-preferences-page.h b/src/hdy-preferences-page.h
index 8491d3c6..2509109b 100644
--- a/src/hdy-preferences-page.h
+++ b/src/hdy-preferences-page.h
@@ -10,12 +10,15 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_PREFERENCES_PAGE (hdy_preferences_page_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyPreferencesPage, hdy_preferences_page, HDY, PREFERENCES_PAGE, GtkBin)
 
 /**
@@ -27,13 +30,18 @@ struct _HdyPreferencesPageClass
   GtkBinClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget   *hdy_preferences_page_new (void);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_preferences_page_get_icon_name (HdyPreferencesPage *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_preferences_page_set_icon_name (HdyPreferencesPage *self,
                                                  const gchar        *icon_name);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_preferences_page_get_title (HdyPreferencesPage *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_preferences_page_set_title (HdyPreferencesPage *self,
                                              const gchar        *title);
 
diff --git a/src/hdy-preferences-row.h b/src/hdy-preferences-row.h
index 516dd8de..7ffb17b8 100644
--- a/src/hdy-preferences-row.h
+++ b/src/hdy-preferences-row.h
@@ -10,12 +10,15 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_PREFERENCES_ROW (hdy_preferences_row_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyPreferencesRow, hdy_preferences_row, HDY, PREFERENCES_ROW, GtkListBoxRow)
 
 /**
@@ -27,13 +30,18 @@ struct _HdyPreferencesRowClass
   GtkListBoxRowClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget   *hdy_preferences_row_new (void);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_preferences_row_get_title (HdyPreferencesRow *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_preferences_row_set_title (HdyPreferencesRow *self,
                                             const gchar       *title);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_preferences_row_get_use_underline (HdyPreferencesRow *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_preferences_row_set_use_underline (HdyPreferencesRow *self,
                                                 gboolean           use_underline);
 
diff --git a/src/hdy-preferences-window.h b/src/hdy-preferences-window.h
index af4119f7..20eb3742 100644
--- a/src/hdy-preferences-window.h
+++ b/src/hdy-preferences-window.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 #include "hdy-window.h"
 
@@ -17,6 +19,7 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_PREFERENCES_WINDOW (hdy_preferences_window_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyPreferencesWindow, hdy_preferences_window, HDY, PREFERENCES_WINDOW, HdyWindow)
 
 /**
@@ -28,18 +31,25 @@ struct _HdyPreferencesWindowClass
   HdyWindowClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_preferences_window_new (void);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_preferences_window_get_search_enabled (HdyPreferencesWindow *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_preferences_window_set_search_enabled (HdyPreferencesWindow *self,
                                                     gboolean              search_enabled);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_preferences_window_get_can_swipe_back (HdyPreferencesWindow *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_preferences_window_set_can_swipe_back (HdyPreferencesWindow *self,
                                                     gboolean              can_swipe_back);
 
+HDY_AVAILABLE_IN_ALL
 void hdy_preferences_window_present_subpage (HdyPreferencesWindow *self,
                                              GtkWidget            *subpage);
+HDY_AVAILABLE_IN_ALL
 void hdy_preferences_window_close_subpage (HdyPreferencesWindow *self);
 
 G_END_DECLS
diff --git a/src/hdy-search-bar.h b/src/hdy-search-bar.h
index b420ae5e..a9e88d17 100644
--- a/src/hdy-search-bar.h
+++ b/src/hdy-search-bar.h
@@ -10,12 +10,15 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_SEARCH_BAR (hdy_search_bar_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdySearchBar, hdy_search_bar, HDY, SEARCH_BAR, GtkBin)
 
 struct _HdySearchBarClass
@@ -23,15 +26,22 @@ struct _HdySearchBarClass
   GtkBinClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget      *hdy_search_bar_new                      (void);
+HDY_AVAILABLE_IN_ALL
 void            hdy_search_bar_connect_entry            (HdySearchBar *self,
                                                          GtkEntry     *entry);
+HDY_AVAILABLE_IN_ALL
 gboolean        hdy_search_bar_get_search_mode          (HdySearchBar *self);
+HDY_AVAILABLE_IN_ALL
 void            hdy_search_bar_set_search_mode          (HdySearchBar *self,
                                                          gboolean      search_mode);
+HDY_AVAILABLE_IN_ALL
 gboolean        hdy_search_bar_get_show_close_button    (HdySearchBar *self);
+HDY_AVAILABLE_IN_ALL
 void            hdy_search_bar_set_show_close_button    (HdySearchBar *self,
                                                          gboolean      visible);
+HDY_AVAILABLE_IN_ALL
 gboolean        hdy_search_bar_handle_event             (HdySearchBar *self,
                                                          GdkEvent     *event);
 
diff --git a/src/hdy-squeezer.h b/src/hdy-squeezer.h
index e0f21006..251b7910 100644
--- a/src/hdy-squeezer.h
+++ b/src/hdy-squeezer.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 #include "hdy-enums.h"
 
@@ -17,6 +19,7 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_SQUEEZER (hdy_squeezer_get_type ())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdySqueezer, hdy_squeezer, HDY, SQUEEZER, GtkContainer)
 
 typedef enum {
@@ -24,30 +27,43 @@ typedef enum {
   HDY_SQUEEZER_TRANSITION_TYPE_CROSSFADE,
 } HdySqueezerTransitionType;
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_squeezer_new (void);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_squeezer_get_homogeneous (HdySqueezer *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_squeezer_set_homogeneous (HdySqueezer *self,
                                        gboolean     homogeneous);
 
+HDY_AVAILABLE_IN_ALL
 guint hdy_squeezer_get_transition_duration (HdySqueezer *self);
+HDY_AVAILABLE_IN_ALL
 void  hdy_squeezer_set_transition_duration (HdySqueezer *self,
                                             guint        duration);
 
+HDY_AVAILABLE_IN_ALL
 HdySqueezerTransitionType hdy_squeezer_get_transition_type (HdySqueezer *self);
+HDY_AVAILABLE_IN_ALL
 void                      hdy_squeezer_set_transition_type (HdySqueezer               *self,
                                                             HdySqueezerTransitionType  transition);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_squeezer_get_transition_running (HdySqueezer *self);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_squeezer_get_interpolate_size (HdySqueezer *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_squeezer_set_interpolate_size (HdySqueezer *self,
                                             gboolean     interpolate_size);
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_squeezer_get_visible_child (HdySqueezer *self);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_squeezer_get_child_enabled (HdySqueezer *self,
                                          GtkWidget   *child);
+HDY_AVAILABLE_IN_ALL
 void     hdy_squeezer_set_child_enabled (HdySqueezer *self,
                                          GtkWidget   *child,
                                          gboolean     enabled);
diff --git a/src/hdy-swipe-group.h b/src/hdy-swipe-group.h
index 2eb0d450..791962ea 100644
--- a/src/hdy-swipe-group.h
+++ b/src/hdy-swipe-group.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <glib-object.h>
 #include "hdy-swipeable.h"
 
@@ -17,13 +19,18 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_SWIPE_GROUP (hdy_swipe_group_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdySwipeGroup, hdy_swipe_group, HDY, SWIPE_GROUP, GObject)
 
+HDY_AVAILABLE_IN_ALL
 HdySwipeGroup *hdy_swipe_group_new (void);
 
+HDY_AVAILABLE_IN_ALL
 void           hdy_swipe_group_add_swipeable    (HdySwipeGroup *self,
                                                  HdySwipeable  *swipeable);
+HDY_AVAILABLE_IN_ALL
 GSList *       hdy_swipe_group_get_swipeables   (HdySwipeGroup *self);
+HDY_AVAILABLE_IN_ALL
 void           hdy_swipe_group_remove_swipeable (HdySwipeGroup *self,
                                                  HdySwipeable  *swipeable);
 
diff --git a/src/hdy-swipe-tracker.h b/src/hdy-swipe-tracker.h
index fe77e04b..20fe751f 100644
--- a/src/hdy-swipe-tracker.h
+++ b/src/hdy-swipe-tracker.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 #include "hdy-swipeable.h"
 
@@ -17,24 +19,34 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_SWIPE_TRACKER (hdy_swipe_tracker_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdySwipeTracker, hdy_swipe_tracker, HDY, SWIPE_TRACKER, GObject)
 
+HDY_AVAILABLE_IN_ALL
 HdySwipeTracker *hdy_swipe_tracker_new (HdySwipeable *swipeable);
 
+HDY_AVAILABLE_IN_ALL
 HdySwipeable    *hdy_swipe_tracker_get_swipeable (HdySwipeTracker *self);
 
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_swipe_tracker_get_enabled (HdySwipeTracker *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_swipe_tracker_set_enabled (HdySwipeTracker *self,
                                                 gboolean         enabled);
 
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_swipe_tracker_get_reversed (HdySwipeTracker *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_swipe_tracker_set_reversed (HdySwipeTracker *self,
                                                  gboolean         reversed);
 
+HDY_AVAILABLE_IN_ALL
 gboolean         hdy_swipe_tracker_get_allow_mouse_drag (HdySwipeTracker *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_swipe_tracker_set_allow_mouse_drag (HdySwipeTracker *self,
                                                          gboolean         allow_mouse_drag);
 
+HDY_AVAILABLE_IN_ALL
 void             hdy_swipe_tracker_shift_position (HdySwipeTracker *self,
                                                    gdouble          delta);
 
diff --git a/src/hdy-swipeable.h b/src/hdy-swipeable.h
index 85fa7a4e..3871e81c 100644
--- a/src/hdy-swipeable.h
+++ b/src/hdy-swipeable.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 #include "hdy-navigation-direction.h"
 #include "hdy-types.h"
@@ -18,6 +20,7 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_SWIPEABLE (hdy_swipeable_get_type ())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_INTERFACE (HdySwipeable, hdy_swipeable, HDY, SWIPEABLE, GtkWidget)
 
 /**
@@ -55,20 +58,28 @@ struct _HdySwipeableInterface
                                             GdkRectangle           *rect);
 };
 
+HDY_AVAILABLE_IN_ALL
 void hdy_swipeable_switch_child (HdySwipeable *self,
                                  guint         index,
                                  gint64        duration);
 
+HDY_AVAILABLE_IN_ALL
 void hdy_swipeable_emit_child_switched (HdySwipeable *self,
                                         guint         index,
                                         gint64        duration);
 
+HDY_AVAILABLE_IN_ALL
 HdySwipeTracker *hdy_swipeable_get_swipe_tracker   (HdySwipeable *self);
+HDY_AVAILABLE_IN_ALL
 gdouble          hdy_swipeable_get_distance        (HdySwipeable *self);
+HDY_AVAILABLE_IN_ALL
 gdouble         *hdy_swipeable_get_snap_points     (HdySwipeable *self,
                                                     gint         *n_snap_points);
+HDY_AVAILABLE_IN_ALL
 gdouble          hdy_swipeable_get_progress        (HdySwipeable *self);
+HDY_AVAILABLE_IN_ALL
 gdouble          hdy_swipeable_get_cancel_progress (HdySwipeable *self);
+HDY_AVAILABLE_IN_ALL
 void             hdy_swipeable_get_swipe_area      (HdySwipeable           *self,
                                                     HdyNavigationDirection  navigation_direction,
                                                     gboolean                is_drag,
diff --git a/src/hdy-title-bar.h b/src/hdy-title-bar.h
index 1a555bd9..275f4ea7 100644
--- a/src/hdy-title-bar.h
+++ b/src/hdy-title-bar.h
@@ -10,17 +10,23 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_TITLE_BAR (hdy_title_bar_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyTitleBar, hdy_title_bar, HDY, TITLE_BAR, GtkBin)
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_title_bar_new (void);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_title_bar_get_selection_mode (HdyTitleBar *self);
+HDY_AVAILABLE_IN_ALL
 void hdy_title_bar_set_selection_mode (HdyTitleBar *self,
                                        gboolean     selection_mode);
 
diff --git a/src/hdy-value-object.h b/src/hdy-value-object.h
index 8eaed1ed..b44f106d 100644
--- a/src/hdy-value-object.h
+++ b/src/hdy-value-object.h
@@ -10,6 +10,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gio/gio.h>
 #include <glib-object.h>
 
@@ -17,18 +19,27 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_VALUE_OBJECT (hdy_value_object_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyValueObject, hdy_value_object, HDY, VALUE_OBJECT, GObject)
 
+HDY_AVAILABLE_IN_ALL
 HdyValueObject *hdy_value_object_new             (const GValue *value);
+HDY_AVAILABLE_IN_ALL
 HdyValueObject *hdy_value_object_new_collect     (GType         type,
                                                   ...);
+HDY_AVAILABLE_IN_ALL
 HdyValueObject *hdy_value_object_new_string      (const gchar  *string);
+HDY_AVAILABLE_IN_ALL
 HdyValueObject *hdy_value_object_new_take_string (gchar        *string);
 
+HDY_AVAILABLE_IN_ALL
 const GValue*   hdy_value_object_get_value  (HdyValueObject *value);
+HDY_AVAILABLE_IN_ALL
 void            hdy_value_object_copy_value (HdyValueObject *value,
                                              GValue         *dest);
+HDY_AVAILABLE_IN_ALL
 const gchar*    hdy_value_object_get_string (HdyValueObject *value);
+HDY_AVAILABLE_IN_ALL
 gchar*          hdy_value_object_dup_string (HdyValueObject *value);
 
 G_END_DECLS
diff --git a/src/hdy-version.h.in b/src/hdy-version.h.in
index 46936807..0cb923f1 100644
--- a/src/hdy-version.h.in
+++ b/src/hdy-version.h.in
@@ -79,3 +79,9 @@
          (HDY_MAJOR_VERSION == (major) && HDY_MINOR_VERSION > (minor)) || \
          (HDY_MAJOR_VERSION == (major) && HDY_MINOR_VERSION == (minor) && \
           HDY_MICRO_VERSION >= (micro)))
+
+#ifndef _HDY_EXTERN
+#define _HDY_EXTERN extern
+#endif
+
+#define HDY_AVAILABLE_IN_ALL _HDY_EXTERN
diff --git a/src/hdy-view-switcher-bar.h b/src/hdy-view-switcher-bar.h
index 88e26fa0..80873dc0 100644
--- a/src/hdy-view-switcher-bar.h
+++ b/src/hdy-view-switcher-bar.h
@@ -11,6 +11,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 #include "hdy-view-switcher.h"
@@ -19,23 +21,33 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_VIEW_SWITCHER_BAR (hdy_view_switcher_bar_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyViewSwitcherBar, hdy_view_switcher_bar, HDY, VIEW_SWITCHER_BAR, GtkBin)
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_view_switcher_bar_new (void);
 
+HDY_AVAILABLE_IN_ALL
 HdyViewSwitcherPolicy hdy_view_switcher_bar_get_policy (HdyViewSwitcherBar *self);
+HDY_AVAILABLE_IN_ALL
 void                  hdy_view_switcher_bar_set_policy (HdyViewSwitcherBar    *self,
                                                         HdyViewSwitcherPolicy  policy);
 
+HDY_AVAILABLE_IN_ALL
 GtkIconSize hdy_view_switcher_bar_get_icon_size (HdyViewSwitcherBar *self);
+HDY_AVAILABLE_IN_ALL
 void        hdy_view_switcher_bar_set_icon_size (HdyViewSwitcherBar *self,
                                                  GtkIconSize         icon_size);
 
+HDY_AVAILABLE_IN_ALL
 GtkStack *hdy_view_switcher_bar_get_stack (HdyViewSwitcherBar *self);
+HDY_AVAILABLE_IN_ALL
 void      hdy_view_switcher_bar_set_stack (HdyViewSwitcherBar *self,
                                            GtkStack           *stack);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_view_switcher_bar_get_reveal (HdyViewSwitcherBar *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_view_switcher_bar_set_reveal (HdyViewSwitcherBar *self,
                                            gboolean            reveal);
 
diff --git a/src/hdy-view-switcher-title.h b/src/hdy-view-switcher-title.h
index 0f48f674..69d95571 100644
--- a/src/hdy-view-switcher-title.h
+++ b/src/hdy-view-switcher-title.h
@@ -11,6 +11,8 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 #include "hdy-view-switcher.h"
@@ -19,34 +21,49 @@ G_BEGIN_DECLS
 
 #define HDY_TYPE_VIEW_SWITCHER_TITLE (hdy_view_switcher_title_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyViewSwitcherTitle, hdy_view_switcher_title, HDY, VIEW_SWITCHER_TITLE, GtkBin)
 
+HDY_AVAILABLE_IN_ALL
 HdyViewSwitcherTitle *hdy_view_switcher_title_new (void);
 
+HDY_AVAILABLE_IN_ALL
 HdyViewSwitcherPolicy hdy_view_switcher_title_get_policy (HdyViewSwitcherTitle *self);
+HDY_AVAILABLE_IN_ALL
 void                  hdy_view_switcher_title_set_policy (HdyViewSwitcherTitle  *self,
                                                           HdyViewSwitcherPolicy  policy);
 
+HDY_AVAILABLE_IN_ALL
 GtkIconSize hdy_view_switcher_title_get_icon_size (HdyViewSwitcherTitle *self);
+HDY_AVAILABLE_IN_ALL
 void        hdy_view_switcher_title_set_icon_size (HdyViewSwitcherTitle *self,
                                                    GtkIconSize           icon_size);
 
+HDY_AVAILABLE_IN_ALL
 GtkStack *hdy_view_switcher_title_get_stack (HdyViewSwitcherTitle *self);
+HDY_AVAILABLE_IN_ALL
 void      hdy_view_switcher_title_set_stack (HdyViewSwitcherTitle *self,
                                              GtkStack             *stack);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_view_switcher_title_get_title (HdyViewSwitcherTitle *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_view_switcher_title_set_title (HdyViewSwitcherTitle *self,
                                                 const gchar          *title);
 
+HDY_AVAILABLE_IN_ALL
 const gchar *hdy_view_switcher_title_get_subtitle (HdyViewSwitcherTitle *self);
+HDY_AVAILABLE_IN_ALL
 void         hdy_view_switcher_title_set_subtitle (HdyViewSwitcherTitle *self,
                                                    const gchar          *subtitle);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_view_switcher_title_get_view_switcher_enabled (HdyViewSwitcherTitle *self);
+HDY_AVAILABLE_IN_ALL
 void     hdy_view_switcher_title_set_view_switcher_enabled (HdyViewSwitcherTitle *self,
                                                             gboolean              enabled);
 
+HDY_AVAILABLE_IN_ALL
 gboolean hdy_view_switcher_title_get_title_visible (HdyViewSwitcherTitle *self);
 
 G_END_DECLS
diff --git a/src/hdy-view-switcher.h b/src/hdy-view-switcher.h
index 937d5969..011e485e 100644
--- a/src/hdy-view-switcher.h
+++ b/src/hdy-view-switcher.h
@@ -11,12 +11,15 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_VIEW_SWITCHER (hdy_view_switcher_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyViewSwitcher, hdy_view_switcher, HDY, VIEW_SWITCHER, GtkBin)
 
 typedef enum {
@@ -25,21 +28,30 @@ typedef enum {
   HDY_VIEW_SWITCHER_POLICY_WIDE,
 } HdyViewSwitcherPolicy;
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_view_switcher_new (void);
 
+HDY_AVAILABLE_IN_ALL
 HdyViewSwitcherPolicy hdy_view_switcher_get_policy (HdyViewSwitcher *self);
+HDY_AVAILABLE_IN_ALL
 void                  hdy_view_switcher_set_policy (HdyViewSwitcher       *self,
                                                     HdyViewSwitcherPolicy  policy);
 
+HDY_AVAILABLE_IN_ALL
 GtkIconSize hdy_view_switcher_get_icon_size (HdyViewSwitcher *self);
+HDY_AVAILABLE_IN_ALL
 void        hdy_view_switcher_set_icon_size (HdyViewSwitcher *self,
                                              GtkIconSize      icon_size);
 
+HDY_AVAILABLE_IN_ALL
 PangoEllipsizeMode hdy_view_switcher_get_narrow_ellipsize (HdyViewSwitcher *self);
+HDY_AVAILABLE_IN_ALL
 void               hdy_view_switcher_set_narrow_ellipsize (HdyViewSwitcher    *self,
                                                            PangoEllipsizeMode  mode);
 
+HDY_AVAILABLE_IN_ALL
 GtkStack *hdy_view_switcher_get_stack (HdyViewSwitcher *self);
+HDY_AVAILABLE_IN_ALL
 void      hdy_view_switcher_set_stack (HdyViewSwitcher *self,
                                        GtkStack        *stack);
 
diff --git a/src/hdy-window-handle.h b/src/hdy-window-handle.h
index 8877cbad..d7835f94 100644
--- a/src/hdy-window-handle.h
+++ b/src/hdy-window-handle.h
@@ -10,14 +10,18 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_WINDOW_HANDLE (hdy_window_handle_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (HdyWindowHandle, hdy_window_handle, HDY, WINDOW_HANDLE, GtkEventBox)
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_window_handle_new (void);
 
 G_END_DECLS
diff --git a/src/hdy-window.h b/src/hdy-window.h
index 63dbd63c..718a65e3 100644
--- a/src/hdy-window.h
+++ b/src/hdy-window.h
@@ -10,12 +10,15 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
+#include "hdy-version.h"
+
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
 #define HDY_TYPE_WINDOW (hdy_window_get_type())
 
+HDY_AVAILABLE_IN_ALL
 G_DECLARE_DERIVABLE_TYPE (HdyWindow, hdy_window, HDY, WINDOW, GtkWindow)
 
 struct _HdyWindowClass
@@ -23,6 +26,7 @@ struct _HdyWindowClass
   GtkWindowClass parent_class;
 };
 
+HDY_AVAILABLE_IN_ALL
 GtkWidget *hdy_window_new (void);
 
 G_END_DECLS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]