我正在试验Gtk库(用于D语言的GtkD ),并且已经创建了一个带有菜单的简单窗口。该菜单的代码如下:
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();
}
}窗口显示时没有问题,菜单栏上显示的是“文件”项,但当我单击“文件”项时,“退出”的菜单不会出现在它下面。无论主窗口位于何处,带有退出的菜单都会出现在屏幕位置0,0!
换句话说,每当我点击“文件”时,菜单就会出现在我电脑屏幕的左上角。
我是否在Gtk实现中发现了一个bug?我使用的是GtkD库的3.9.0版和Gtk运行时的3.24.8版。或者我在代码中遗漏了什么?如何正确显示菜单?
发布于 2020-07-28 09:47:33
我找到了菜单显示不正确的原因:
这显然是Windows库中的一个错误。我将相同的代码复制到Linux环境中,编译并运行。菜单在其正确位置正确显示。在Windows上,此代码将菜单放在屏幕的左上角(位置0,0)。
我已经找到了报告这个bug的位置。希望维护GtkD和Gtk for Windows的人员能够相对较快地修复它……
https://stackoverflow.com/questions/63118506
复制相似问题