diff --git a/lib/wp/session-item.c b/lib/wp/session-item.c index cfe5291018889eaedda2e416d3e6f5fb75317b7a..9d4937c3753fcb37f56228f1f78bcaef4e369fc2 100644 --- a/lib/wp/session-item.c +++ b/lib/wp/session-item.c @@ -64,6 +64,15 @@ wp_session_item_finalize (GObject * object) G_OBJECT_CLASS (wp_session_item_parent_class)->finalize (object); } +static guint +wp_session_item_default_get_next_step (WpSessionItem * self, + WpTransition * transition, guint step) +{ + /* the default implementation just activates instantly, + without taking any action */ + return WP_TRANSITION_STEP_NONE; +} + static void wp_session_item_default_reset (WpSessionItem * self) { @@ -84,6 +93,8 @@ wp_session_item_class_init (WpSessionItemClass * klass) klass->reset = wp_session_item_default_reset; + klass->get_next_step = wp_session_item_default_get_next_step; + /** * WpSessionItem::flags-changed: * @self: the session item @@ -231,12 +242,15 @@ wp_si_transition_get_next_step (WpTransition * transition, guint step) g_return_val_if_fail ( WP_SESSION_ITEM_GET_CLASS (item)->get_next_step, WP_TRANSITION_STEP_ERROR); + + step = WP_SESSION_ITEM_GET_CLASS (item)->get_next_step (item, + transition, step); + g_return_val_if_fail ( + step == WP_TRANSITION_STEP_NONE || WP_SESSION_ITEM_GET_CLASS (item)->execute_step, WP_TRANSITION_STEP_ERROR); - - return WP_SESSION_ITEM_GET_CLASS (item)->get_next_step (item, - transition, step); + return step; } static void