bamanzi 发表于 2005-11-23 11:55:28

Tear-off menu有什么不好?

(本来写在blog上的,但还是这里有讨论氛围:-)

半年前写过一篇tear-off menu,里面提到gnome2缺省没有打开这个功能,但可以通过一个gconf设置项打开。

但这并不适用与“开始”菜单,因为上述设置只影响gnome_menu_new()创建的菜单(由libgnomeui里面提供),而开始菜单gnome-panel是直接用gtk_menu_new()创建的。

对于这个功能的缺失我一直有点耿耿于怀。今天下载源代码看了看,发现要加这个并不难,效果图见下,尤其是Debian菜单现在用起来方便多了。

但我不明白的是,当初为什么要删除这个功能?




--- gnome-panel/menu.c.orig   2005-06-07 03:08:56.000000000 +0800
+++ gnome-panel/menu.c2005-11-23 00:07:22.000000000 +0800
@@ -257,6 +257,7 @@ GtkWidget *
panel_create_menu (void)
{
      GtkWidget       *retval;
+       GtkWidget       *tearoff;
      static gbooleanregistered_icon_theme_changer = FALSE;

      if (!registered_icon_theme_changer) {
@@ -267,7 +268,11 @@ panel_create_menu (void)
      }

      retval = gtk_menu_new ();
-      
+      
+      tearoff = gtk_tearoff_menu_item_new();
+      gtk_widget_show(tearoff);
+      gtk_menu_prepend(tearoff);
+
      panel_gconf_notify_add_while_alive ("/desktop/gnome/interface/menus_have_icons",
                                          (GConfClientNotifyFunc) menus_have_icons_changed,
                                          G_OBJECT (retval));

yangh 发表于 2005-11-23 13:05:23

没看到你的截图,不过在这里搜索到了。

http://blog.linux.org.tw/~jserv/archives/001120.html

确实记得以前有这样的功能。

苹果中的 tear-off menu:

http://developer.apple.com/documentation/mac/HIGuidelines/HIGuidelines-95.html

经验证, gnome 2.12 中仍然有这个选项:

/desktop/gnome/interface/menus_have_tearoff

打开之后 gconf-editor 的菜单就可以漂移了。不过我看了一下 gedit, nautilus 的都不行。

yangh 发表于 2005-11-23 13:10:24

原来楼主就是巴蛮子,赞一个。 :mrgreen::mrgreen:


-      
+      
+      tearoff = gtk_tearoff_menu_item_new();
+      gtk_widget_show(tearoff);
+      gtk_menu_prepend(tearoff);
+


这样创建的 tearoff 菜单受 gconf 里那个值的控制吗? :?:

bamanzi 发表于 2005-11-23 19:24:26

> 原来楼主就是巴蛮子,赞一个。
原来不是这个id, 刚换的。:-)

> 这样创建的 tearoff 菜单受 gconf 里那个值的控制吗?
不受,除非也写个监视回调,就想libgnomeui里面那样。

问题是诸位觉得这个特性怎么样啊,如果都觉得挺好的话给开发组提一下。

ggad 发表于 2005-11-23 20:47:35

我觉得这个功能挻有用的。

现在大部分程序都用 Gtk 中的 action-based 的工具和菜单,而 libgnome/ui 的东西逐渐被遗弃或者被放到 gtk 中,所以,不能指望开发组的人使用 libgnomeui, 只能是自己调用 gtk_ui_manager_set_add_tearoffs,然后处理 gconf 中的 /desktop/gnome/interface/menus_have_tearoff , 看了下 gconf-editor 就这么搞的。

bamanzi 发表于 2005-11-28 10:47:00


现在大部分程序都用 Gtk 中的 action-based 的工具和菜单,而 libgnome/ui 的东西逐渐被遗弃或者被放到 gtk 中,所以,不能指望开发组的人使用 libgnomeui, 只能是自己调用 gtk_ui_manager_set_add_tearoffs,然后处理 gconf 中的 /desktop/gnome/interface/menus_have_tearoff , 看了下 gconf-editor 就这么搞的。

翻了一下,发现现在即使是gnome桌面的标准程序,对于这个的处理也是相当混乱啊,gnome-terminal等等都不受这个配置项影响,死活没有这个功能
——按发展的眼光来看,libgnome/libgnomeui会被干掉或者迁移到gtk,但gnome_app_fill_menu这样的函数往何处去呢(因为涉及到一些gconf设置,显然是不应该移到gtk的)?

BOoRFGOnZ 发表于 2006-1-6 10:44:32

菜单中的虚线
页: [1]
查看完整版本: Tear-off menu有什么不好?