Можно ли использовать GtkPopover при написании плагина панели xfce4 - PullRequest
2 голосов
/ 21 февраля 2020

Я пытаюсь написать плагин для панели xfce4. Он должен показывать всплывающее окно со сложным контейнером, таким как GtkBox.

Мой код в vala:

using Xfce;

public class ButtonPlugin : Xfce.PanelPlugin {
    private Gtk.MenuButton button;
    private Gtk.Popover popover;
    public override void @construct () {

        button = new Gtk.MenuButton();
        popover = new Gtk.Popover(button);

        button.set_image(
            new Gtk.Image.from_icon_name (
                "open-menu-symbolic",
                Gtk.IconSize.LARGE_TOOLBAR
            )
        );
        var menu_container = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
        menu_container.pack_start(new Gtk.Label("Hello World 1"));
        menu_container.pack_start(new Gtk.Label("Hello World 2"));
        menu_container.pack_start(new Gtk.Label("Hello World 3"));
        popover.add(menu_container);
        popover.show_all ();
        popover.hide();
        button.popover = popover;
        add (button);
        //button.show ();

        add_action_widget (button);

        save.connect (() => { message ("save yourself"); });
        free_data.connect (() => { message ("free yourself"); });
        size_changed.connect (() => { message ("panel size changed"); return false; });

        menu_show_about ();
        about.connect (() => {
                Gtk.show_about_dialog (null,
                    "program-name", "Button",
                    "comments", "Test plugin for the Xfce 4.14 Panel",
                    null);
            });
        destroy.connect (() => { Gtk.main_quit (); });
        show_all();
    }
}

[ModuleInit]
public Type xfce_panel_module_init (TypeModule module) {
    return typeof (ButtonPlugin);
}

Плагин запускается, но не показывает всплывающее окно при нажатии.

Возможно ли использовать Popover или я должен переключиться на другой виджет?

1 Ответ

0 голосов
/ 26 марта 2020

Насколько я понимаю, нет, всплывающие окна не будут работать в плагинах панели Xfce.

Взгляните на эту суть: https://gist.github.com/andreldm/83c9b99e7aa133c924fb4165acc8427a

Автономный приложение правильно показывает поповер, но попробуйте сделать окно таким же маленьким, как кнопка, для поповера не осталось места, это та же проблема в плагине панели. Если я не ошибаюсь, контекстные меню работают, потому что они совершенно новые windows, а popover - нет.

В том же духе вы можете найти diff против xfce4-sample-plugin с кодом, аналогичным тому, что вы пытаемся.

...