gi-atk-2.0.18: Atk bindings

Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com)
Safe Haskell | None
Language | Haskell2010

GI.Atk.Objects.Socket

Contents

- Exported types
- Methods
  - embed
  - isOccupied
  - new

Description

Together with `Plug`, `Socket` provides the ability to embed accessibles from one process into another in a fashion that is transparent to assistive technologies. `Socket` works as the container of `Plug`, embedding it using the method `socketEmbed`. Any accessible contained in the `Plug` will appear to the assistive technologies as being inside the application that created the `Socket`.

The communication between a `Socket` and a `Plug` is done by the IPC layer of the accessibility framework, normally implemented by the D-Bus based implementation of AT-SPI (at-spi2). If that is the case, at-spi-atk2 is the responsible to implement the abstract methods `plugGetId` and `socketEmbed`, so an ATK implementor shouldn't reimplement them. The process that contains the `Plug` is responsible to send the ID returned by `atk_plug_id()` to the process that contains the `Socket`, so it could call the method `socketEmbed` in order to embed it.

For the same reasons, an implementor doesn't need to implement `objectGetNAccessibleChildren` and `objectRefAccessibleChild`. All the logic related to those functions will be implemented by the IPC layer.

Synopsis

- newtype Socket = Socket (ManagedPtr Socket)
- class GObject o => IsSocket o
- toSocket :: (MonadIO m, IsSocket o) => o -> m Socket
- noSocket :: Maybe Socket
- socketEmbed :: (HasCallStack, MonadIO m, IsSocket a) => a -> Text -> m ()
- socketIsOccupied :: (HasCallStack, MonadIO m, IsSocket a) => a -> m Bool
- socketNew :: (HasCallStack, MonadIO m) => m Socket

# Exported types

newtype Socket Source #

Memory-managed wrapper type.

Constructors

Socket (ManagedPtr Socket) |

Instances

GObject Socket Source # |
Instance details Defined in GI.Atk.Objects.Socket Methods gobjectType :: Socket -> IO GType Source #
IsObject Socket Source # |
Instance details Defined in GI.Atk.Objects.Socket
IsComponent Socket Source # |
Instance details Defined in GI.Atk.Objects.Socket
IsObject Socket Source # |
Instance details Defined in GI.Atk.Objects.Socket
IsSocket Socket Source # |
Instance details Defined in GI.Atk.Objects.Socket

class GObject o => IsSocket o Source #

Type class for types which can be safely cast to `Socket`, for instance with `toSocket`.

Instances

(GObject a, (UnknownAncestorError Socket a :: Constraint)) => IsSocket a Source # |
Instance details Defined in GI.Atk.Objects.Socket
IsSocket Socket Source # |
Instance details Defined in GI.Atk.Objects.Socket

toSocket :: (MonadIO m, IsSocket o) => o -> m Socket Source #

Cast to `Socket`, for types for which this is known to be safe. For general casts, use `castTo`.

noSocket :: Maybe Socket Source #

A convenience alias for `Nothing` :: `Maybe` `Socket`.

# Methods

## embed

socketEmbed Source #

Arguments

:: (HasCallStack, MonadIO m, IsSocket a) |
=> a | `obj`: an `Socket`
-> Text | `plugId`: the ID of an `Plug`
-> m () |

Embeds the children of an `Plug` as the children of the `Socket`. The plug may be in the same process or in a different process.

The class item used by this function should be filled in by the IPC layer (usually at-spi2-atk). The implementor of the AtkSocket should call this function and pass the id for the plug as returned by `plugGetId`. It is the responsibility of the application to pass the plug id on to the process implementing the `Socket` as needed.

Since: 1.30

## isOccupied

socketIsOccupied Source #

Arguments

:: (HasCallStack, MonadIO m, IsSocket a) |
=> a | `obj`: an `Socket`
-> m Bool | Returns: TRUE if a plug is embedded in the socket

Determines whether or not the socket has an embedded plug.

Since: 1.30

## new

socketNew Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> m Socket | Returns: the newly created `Socket` instance

Creates a new `Socket`.