Class WindowProperties

java.lang.Object
All Implemented Interfaces:
Proxy

@Generated("io.github.jwharm.JavaGI") public final class WindowProperties extends GObject
Window properties of a WebKitWebView.

The content of a WebKitWebView 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 WebKitWebView fullscreen.

The WebKitWebView::ready-to-show signal handler is the proper place to apply the initial window properties. Then you can monitor the WebKitWindowProperties 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);
 }