Почему Webkit.WebView не отображается, если он является потомком Gtk.Grid?

В первом руководстве по gjs показано как создать Gtk.ApplicationWindow, который содержит только WebKit.WebView. Код примера, приведенный на этой странице, отлично работает для меня.

Но если я изменю этот код, чтобы создать Gtk.Grid, и вставлю в него WebView, он будет отображаться пустым, а не HTML.

Этот код:

 _buildUI() {

    this._window = new Gtk.ApplicationWindow  ({
            application: this.application,
            title: "example",
            window_position: Gtk.WindowPosition.CENTER });

    this._label = new Gtk.Label({label:"This is a label"});

    this._page = new Webkit.WebView ();
    this._page.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +
            "/something.html", null));

    this._grid = new Gtk.Grid();
    this._grid.attach(this._label, 0, 0, 1, 1);
    this._grid.attach(this._page,  0, 1, 1, 1);

    this._window.add (this._grid);

    this._window.show_all();
 }

дает окно, содержащее только метку, где this._page занимает нулевое место. Если вместо этого я установлю this._page на новый Gtk.Label, я увижу оба элемента.

strace показывает, что программа загружает HTML.

Что мне не хватает?


person Marnanel Thurman    schedule 26.01.2020    source источник


Ответы (1)


Предпочтительная и естественная ширина и высота WebView равны 0 пикселей, и он не настроен на расширение по горизонтали или вертикали, поэтому ему не выделяется пространство.

Пытаться:

        this._page.set_hexpand(true);
        this._page.set_vexpand(true);
person wjt    schedule 27.01.2020
comment
Гений. Большое спасибо! (О хай. Рад тебя видеть.) - person Marnanel Thurman; 27.01.2020