我正在处理用于显示上下文菜单的GTK代码中的缺陷。创建一个包含多个菜单项的菜单后,我使用gtk_menu_popup()
来显示菜单。该功能采用GtkMenuPositionFunc
类型的函数指针,可以让我定位菜单。除了告诉GTK保持当前位置外,我没有在这里做任何事情,但是如果菜单的一部分在监视器之外(使用函数的第四个参数),则将菜单推入。我的问题是,当GTK推入菜单时,菜单项的绝对位置不会改变。因此它们的滚动位置改变导致菜单中的滚动条。我希望菜单中菜单项的相对位置保持不变。有什么办法可以做到吗? GTK文档确实警告了这个问题,但没有说明如何解决这个问题。有链接以供参考:GTK:定位上下文菜单项w.r.t上下文菜单
http://library.gnome.org/devel/gtk/unstable/GtkMenu.html#GtkMenuPositionFunc
编辑:我本来希望包括一些代码,但逻辑太散了点。
传递'NULL'并不是真正的选择,因为它在某些情况下使用。我试过为这个特定的情况传递NULL,并解决了这个问题。这是否意味着我不能要求GTK重新定位菜单,并要求它将菜单推入屏幕之外?这似乎不大可能。 – 341008 2010-07-27 10:03:28
我包含了源代码的链接,以便您可以复制默认定位功能并从那里开始。如果GTK可以做你想做的事,那么你也可以做到。 – ptomato 2010-07-27 10:12:14