since: 2.30


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


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



Type: GVariant

The requested value for the state.

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