## GtkWindowGroup GtkWindowGroup — Limit the effect of grabs |

## Functions

GtkWindowGroup * | gtk_window_group_new ()
void | gtk_window_group_add_window ()
void | gtk_window_group_remove_window ()
GList * | gtk_window_group_list_windows ()
GtkWidget * | gtk_window_group_get_current_grab ()
GtkWidget * | gtk_window_group_get_current_device_grab ()

## Types and Values

| GtkWindowGroup

## Object Hierarchy

        GObject
        ╰── GtkWindowGroup

## Includes

    #include <gtk/gtk.h>

## Description

A GtkWindowGroup restricts the effect of grabs to windows in the same group, thereby making window groups almost behave like separate applications.

A window can be a member in at most one window group at a time. Windows that have not been explicitly assigned to a group are implicitly treated like windows of the default window group.

GtkWindowGroup objects are referenced by each window in the group, so once you have added all windows to a GtkWindowGroup, you can drop the initial reference to the window group with `g_object_unref()`. If the windows in the window group are subsequently destroyed, then they will be removed from the window group and drop their references on the window group; when all window have been removed, the window group will be freed.

## Functions

### gtk_window_group_new ()

    GtkWindowGroup *
    gtk_window_group_new (void);

Creates a new GtkWindowGroup object. Grabs added with `gtk_grab_add()` only affect windows within the same GtkWindowGroup.

#### Returns

a new GtkWindowGroup.

### gtk_window_group_add_window ()

    void
    gtk_window_group_add_window (GtkWindowGroup *window_group,
                                 GtkWindow *window);

Adds a window to a GtkWindowGroup.

#### Parameters

window_group | a GtkWindowGroup |
window | the GtkWindow to add |

### gtk_window_group_remove_window ()

    void
    gtk_window_group_remove_window (GtkWindowGroup *window_group,
                                    GtkWindow *window);

Removes a window from a GtkWindowGroup.

#### Parameters

window_group | a GtkWindowGroup |
window | the GtkWindow to remove |

### gtk_window_group_list_windows ()

    GList *
    gtk_window_group_list_windows (GtkWindowGroup *window_group);

Returns a list of the GtkWindows that belong to `window_group` .

#### Parameters

window_group | a GtkWindowGroup |

#### Returns

A newly-allocated list of windows inside the group.

[element-type GtkWindow][transfer container]

Since: 2.14

### gtk_window_group_get_current_grab ()

    GtkWidget *
    gtk_window_group_get_current_grab (GtkWindowGroup *window_group);

Gets the current grab widget of the given group, see `gtk_grab_add()`.

#### Parameters

window_group | a GtkWindowGroup |

#### Returns

the current grab widget of the group.

[transfer none]

Since: 2.22

### gtk_window_group_get_current_device_grab ()

    GtkWidget *
    gtk_window_group_get_current_device_grab
                                   (GtkWindowGroup *window_group,
                                    GdkDevice *device);

Returns the current grab widget for `device` , or `NULL` if none.

#### Parameters

window_group | a GtkWindowGroup |
device | a GdkDevice |

#### Returns

The grab widget, or `NULL`.

[nullable][transfer none]

Since: 3.0

## Types and Values

### GtkWindowGroup

    typedef struct _GtkWindowGroup GtkWindowGroup;