Почему не отображается Webkit.WebView, если он является дочерним элементом Gtk.Grid? - PullRequest
3 голосов
/ 27 января 2020

В первом учебнике g js показано, как создать 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.

Что я скучаю?

1 Ответ

2 голосов
/ 27 января 2020

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

Попробуйте:

        this._page.set_hexpand(true);
        this._page.set_vexpand(true);
...