WindowProperties

class WindowProperties(**properties: Any)

Superclasses: Object

Window properties of a WebView.

The content of a WebView can request to change certain properties of the window containing the view. This can include the x, y position of the window, the width and height but also if a toolbar, scrollbar, statusbar, locationbar should be visible to the user, and the request to show the WebView fullscreen.

The WebView::ready-to-show signal handler is the proper place to apply the initial window properties. Then you can monitor the WindowProperties by connecting to ::notify signal.

static void ready_to_show_cb (WebKitWebView *web_view, gpointer user_data)
{
    GtkWidget *window;
    WebKitWindowProperties *window_properties;
    gboolean visible;

    // Create the window to contain the WebKitWebView.
    window = browser_window_new ();
    gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (web_view));
    gtk_widget_show (GTK_WIDGET (web_view));

    // Get the WebKitWindowProperties of the web view and monitor it.
    window_properties = webkit_web_view_get_window_properties (web_view);
    g_signal_connect (window_properties, "notify::geometry",
                      G_CALLBACK (window_geometry_changed), window);
    g_signal_connect (window_properties, "notify::toolbar-visible",
                      G_CALLBACK (window_toolbar_visibility_changed), window);
    g_signal_connect (window_properties, "notify::menubar-visible",
                      G_CALLBACK (window_menubar_visibility_changed), window);

    // Apply the window properties before showing the window.
    visible = webkit_window_properties_get_toolbar_visible (window_properties);
    browser_window_set_toolbar_visible (BROWSER_WINDOW (window), visible);
    visible = webkit_window_properties_get_menubar_visible (window_properties);
    browser_window_set_menubar_visible (BROWSER_WINDOW (window), visible);

    if (webkit_window_properties_get_fullscreen (window_properties)) {
        gtk_window_fullscreen (GTK_WINDOW (window));
    } else {
        GdkRectangle geometry;

        gtk_window_set_resizable (GTK_WINDOW (window),
                                  webkit_window_properties_get_resizable (window_properties));
        webkit_window_properties_get_geometry (window_properties, &geometry);
        gtk_window_move (GTK_WINDOW (window), geometry.x, geometry.y);
        gtk_window_resize (GTK_WINDOW (window), geometry.width, geometry.height);
    }

    gtk_widget_show (window);
}

Methods

class WindowProperties
get_fullscreen() bool

Get whether the window should be shown in fullscreen state or not.

get_geometry() Rectangle

Get the geometry the window should have on the screen when shown.

get_locationbar_visible() bool

Get whether the window should have the locationbar visible or not.

get_menubar_visible() bool

Get whether the window should have the menubar visible or not.

get_resizable() bool

Get whether the window should be resizable by the user or not.

get_scrollbars_visible() bool

Get whether the window should have the scrollbars visible or not.

get_statusbar_visible() bool

Get whether the window should have the statusbar visible or not.

get_toolbar_visible() bool

Get whether the window should have the toolbar visible or not.

Properties

class WindowProperties
props.fullscreen: bool

Whether window will be displayed fullscreen.

props.geometry: Rectangle

The size and position of the window on the screen.

props.locationbar_visible: bool

Whether the locationbar should be visible for the window.

props.menubar_visible: bool

Whether the menubar should be visible for the window.

props.resizable: bool

Whether the window can be resized.

props.scrollbars_visible: bool

Whether the scrollbars should be visible for the window.

props.statusbar_visible: bool

Whether the statusbar should be visible for the window.

props.toolbar_visible: bool

Whether the toolbar should be visible for the window.