### Signal

# Gio SimpleAction::change-state

since: 2.30

#### Declaration

    void
    change_state (
      GSimpleAction* self,
      GVariant* value,
      gpointer user_data
    )

#### Description

Indicates that the action just received a request to change its state.

`value` will always be of the correct state type, i.e. the type of the initial state passed to g_simple_action_new_stateful(). If an incorrect type is given when requesting to change the state, this signal is not emitted.

If no handler is connected to this signal then the default behaviour is to call `g_simple_action_set_state()` to set the state to the requested value. If you connect a signal handler then no default action is taken. If the state should change then you must call `g_simple_action_set_state()` from the handler.

An example of a ‘change-state’ handler:

    static void
    change_volume_state (GSimpleAction *action,
                         GVariant      *value,
                         gpointer       user_data)
    {
      gint requested;

      requested = g_variant_get_int32 (value);

      // Volume only goes from 0 to 10
      if (0 <= requested && requested <= 10)
        g_simple_action_set_state (action, value);
    }

The handler need not set the state to the requested value. It could set it to any value at all, or take some other action.

Default handler: The default handler is called after the handlers added via `g_signal_connect()`.
Available since: 2.30

#### Parameters

`value`

  Type: `GVariant`

  The requested value for the state.

  The argument can be `NULL`.
  The data is owned by the caller of the function.