1

我正在试验 GtkD UI 库(用于 D 语言的 Gtk)并创建了一个带有菜单的简单窗口。菜单代码如下:

class TopView : Box
{
   MainMenu theBar;

    this()
    {
        super(Orientation.VERTICAL,10);
        theBar = new MainMenu();
    
        packStart(theBar,false,false,0);
   }
}

class MainMenu : MenuBar
{
    private MenuItem fileItem;
    private FileMenu fileMenu;

    this()
    {
        super();

        fileItem = new MenuItem("File");
        fileMenu = new FileMenu();
 
        fileItem.setSubmenu(fileMenu);
        append(fileItem);
    }
}

class FileMenu : Menu
{
    private MenuItem exitItem;

    this()
    {
        super();

        exitItem = new MenuItem("Exit");
        exitItem.addOnActivate(&closeApp);
        append(exitItem);
    }

    private void closeApp(MenuItem anItem)
    {
        Main.quit();
    }
}

窗口显示没有问题,菜单栏出现“文件”项,但是当我单击“文件”项时,其下方没有出现“退出”菜单。无论主窗口位于何处,带有 Exit 的菜单都会出现在屏幕位置 0,0!

换句话说,只要我点击“文件”,菜单就会出现在我电脑屏幕的左上角。

我是否在 Gtk 实现中发现了错误?我正在使用 GtkD 库的 3.9.0 版和 Gtk 运行时的 3.24.8 版。或者我在我的代码中遗漏了什么?如何让菜单正确显示?

4

1 回答 1

2

我发现了菜单显示不正确的原因:

这显然是 Windows 库中的一个错误。我将相同的代码复制到 Linux 环境中,编译并运行它。菜单在适当的位置正确显示。在 Windows 上,此代码将菜单放在屏幕的左上角(位置 0,0)。

我找到了报告这个错误的地方。希望为 Windows 维护 GtkD 和 Gtk 的人能够相对快速地修复它……

于 2020-07-28T01:47:33.490 回答