wall_john 发表于 2006-8-3 23:50:40

如何让gnome-panel也有收缩的系统托盘

如题,我已写了一部分代码了,见下面贴图,点击蓝色的按键,
就收缩system tray。虽然还不十分美观:)

npcomet 发表于 2006-8-4 01:02:27


好东西

yangh 发表于 2006-8-4 08:40:14

呵呵,不错啊。

对自动隐藏图标的想法: 为每个图标加一个时钟,30 秒内如果这个图标上没有 expose 事件,则隐藏这个图标,一但某个图标有 expose 事件,则立刻显示出来。目前的图标也是在 expose 才显示出来的,不过没有自动隐藏。

谁有兴趣实现自动隐藏?

http://www.gnome-cn.org/documents/tutorial/system-tray-icon-application/1-intro.html

mandrakechina 发表于 2006-8-4 16:12:20

egg好像要被丢弃了吧。

yangh 发表于 2006-8-4 17:08:52

egg好像要被丢弃了吧。

是的,gtk+ 2.10 里自带了。

http://developer.gnome.org/doc/API/2.0/gtk/GtkStatusIcon.html

GtkStatusIcon — Display an icon in the system tray

wall_john 发表于 2006-8-4 17:40:00

GtkStatusIcon这个东东,完全不能替代EggTrayIcon,因为
GtkStatusIcon只是在system tray中放置一个图标,而EggTrayIcon
在system tray中放置的是一个container,作用根本不一样。后者
可以新建一个widget放到托盘中,而前者只能放图标充其量加一个
菜单。

至于egg是否被丢弃了,看看gaim、stardict中的代码,不存在丢不
丢弃的问题,好用就pick up:)

wall_john 发表于 2006-8-6 21:42:05

gnome-panel-2.14.2 patch

rt.

wall_john 发表于 2006-8-6 21:46:45

那个收缩的图标是用cairo画的,如果有图片的话,用图片可能会好看一些。

yangh, 有兴趣可已加一个timer来控制定时自动缩放。 :lol:

xLoneStar 发表于 2006-8-7 13:14:37

能不能有平滑效果?

wall_john 发表于 2006-8-7 13:54:01

在toggle_button_clicked函数中隐藏(或显示)图标时加一个时钟延迟,
应该可以实现,不过好像没有太多意思。

wall_john 发表于 2006-8-13 21:48:07

将几个常用applet加入系统托盘的补丁

RT,从cocreate的几个包里刮过来的补丁,注意现在还未实现从托盘中删除,
本来想在gnome-panel中实现一个通用的将applet加入托盘的功能,到目前
还未有很好的方案因为gnome-panel中的applet有三种讨厌的分类,还不知
道怎么很好的融合,另外bonobo的调用方面也遇到一些麻烦,所以只得将就
将就了。

jcome 发表于 2006-8-13 22:00:14

》》有三种讨厌的分类
applet 以后都会变成“类系统托盘的applet”了

wall_john 发表于 2006-8-13 22:43:58

good news!!!

黑企鹅 发表于 2006-8-14 09:40:04

》》有三种讨厌的分类
applet 以后都会变成“类系统托盘的applet”了

哪儿得知的? 我没订阅 gnome-panel 的邮件列表。

wall_john 发表于 2006-8-23 09:54:20

修改上面补丁取控件画图区大小的bug

这个bug导致窗口重画时,图标变形的问题。

--- gnome-panel-2.14.2-toggle-system-tray.patch.old   2006-08-22 21:51:31.000000000 +0800
+++ gnome-panel-2.14.2-toggle-system-tray.patch 2006-08-22 21:54:32.000000000 +0800
@@ -427,10 +427,10 @@
+
+    gdk_color_parse("#4d86c9", &color);
+
-+    x = area->x;
-+    y = area->y;
-+    width = area->width;
-+    height = area->height;
++    x = widget->allocation.x;
++    y = widget->allocation.y;
++    width = widget->allocation.width;
++    height = widget->allocation.height;
+
+    radius = (MIN(width, height) - 2) / 2;
+    x += width - (width - radius * 2) / 2;
页: [1] 2
查看完整版本: 如何让gnome-panel也有收缩的系统托盘