QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2421|回复: 6

Tear-off menu有什么不好?

[复制链接]
发表于 2005-11-23 11:55:28 | 显示全部楼层 |阅读模式
(本来写在blog上的,但还是这里有讨论氛围:-)

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

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

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

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

[img src=http://blog.linuxeden.com/resserver.php?blogId=110848&resource=gnome-panel-tearoff-menu-s.gif&mode=medium][/img]


[code:1]--- gnome-panel/menu.c.orig     2005-06-07 03:08:56.000000000 +0800
+++ gnome-panel/menu.c  2005-11-23 00:07:22.000000000 +0800
@@ -257,6 +257,7 @@ GtkWidget *
panel_create_menu (void)
{
        GtkWidget       *retval;
+       GtkWidget       *tearoff;
        static gboolean  registered_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));
[/code:1]
发表于 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 的都不行。
回复

使用道具 举报

发表于 2005-11-23 13:10:24 | 显示全部楼层
原来楼主就是巴蛮子,赞一个。   

[code:1]
-      
+      
+        tearoff = gtk_tearoff_menu_item_new();
+        gtk_widget_show(tearoff);
+        gtk_menu_prepend(tearoff);
+
[/code:1]

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

使用道具 举报

 楼主| 发表于 2005-11-23 19:24:26 | 显示全部楼层
> 原来楼主就是巴蛮子,赞一个。
原来不是这个id, 刚换的。:-)

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

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

使用道具 举报

发表于 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 就这么搞的。
回复

使用道具 举报

 楼主| 发表于 2005-11-28 10:47:00 | 显示全部楼层
[quote:aaf8cb5339="ggad"]
现在大部分程序都用 Gtk 中的 action-based 的工具和菜单,而 libgnome/ui 的东西逐渐被遗弃或者被放到 gtk 中,所以,不能指望开发组的人使用 libgnomeui, 只能是自己调用 gtk_ui_manager_set_add_tearoffs,然后处理 gconf 中的 /desktop/gnome/interface/menus_have_tearoff , 看了下 gconf-editor 就这么搞的。[/quote]

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

使用道具 举报

发表于 2006-1-6 10:44:32 | 显示全部楼层
菜单中的虚线
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-28 00:53 , Processed in 0.047709 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表